Course Listing

Courses

Please be sure to check that you have completed all pre-requisites before attempting to enroll in a course.

Course ID Name Description
CS 1308 Computer Literacy and the Internet A study of the uses of computers and their effects on society. Text processing, spreadsheets, databases, and Web programming. Does not count for computer science credits toward a minor, or a BS or a BA in computer science.
CS 1319 Fundamentals of Computer Science Provides fundamental knowledge of the six layers of computer science as per the ACM CS0 curriculum. The information, hardware, programming, operating system, applications, and communications layers are presented plus appropriate open computer laboratory exercises. Does not count for computer science credit towards a minor, BS, or BA in computer science.
CS 1428 Foundations of Computer Science I Introductory course for computer science majors, minors and others desiring technical introduction to computer science. Contains overview of history and structure of the digital computer, including binary data representation. Problem solving, algorithm development, structured programming, good coding style, and control structures of C++ are emphasized.
CS 2308 Foundations of Computer Science II The course is an introduction to Abstract Data Types (ADTs) including lists, stacks, and queues. Searching and sorting, pointers and dynamic memory allocation, and simple classes and objects also will be covered. The course is a continuation of CS 1428.
CS 2315 Computer Ethics This course is primarily for computer science majors, focusing on the ethical codes of the professional societies, the philosophical bases of ethical decision-making, and the examination of several contemporary case studies. (WI)
CS 2318 Assembly Language A course covering assembly language programming, including instruction sets, addressing modes, instruction formats, looping, logic, data representation, subroutines and recursion; and the interface between hardware and software.
CS 3320 Internet Software Development A course providing foundations for the construction and design of static and dynamic Web pages with database applications. This will include server-side and client-side software development.
CS 3339 Computer Architecture Use of fundamental hardware components. Topics include ALUs, single and multiple cycle datapath and control, RISC vs. CISC, pipelining, caches, I/O, virtual memory, and related performance issues.
CS 3354 Object-Oriented Design and Programming The course covers object-oriented design principles and programming for students with prior programming experience. The topics include inheritance and polymorphism, object-oriented design process, UML diagrams, design patterns, exception handling and multithreading. Students will design and implement programs in Java. Cannot receive credit if the student has taken CS 4354.
CS 3358 Data Structures and Algorithms This is a course covering classic data structures and the analysis of algorithms.
CS 3369 Embedded Computer Systems This course studies the architecture of embedded systems, micro-controllers, their peripherals, languages, and operating systems and the special techniques required to use them.
CS 3378 Theory of Automata An introduction to automata theory, computability, and formal languages.
CS 3398 Software Engineering The study of software design, implementation, and validation techniques through team projects. Structured analysis, programming style, and project documentation are emphasized in large software projects.
CS 4100 Computer Science Internship Provides on-the-job training supervised by computer scientists in industry internship programs approved by the department. May be repeated once but not for credit and requires approval of the department chair.
CS 4298 Undergraduate Research I Supervised individual research project in a mentor-student relationship with a computer science faculty member. Cannot be given degree credit until the satisfactory completion of CS 4299.
CS 4299 Undergraduate Research II Supervised individual research projects in a mentor-student relationship with a computer science faculty member.
CS 4310 Computer Networks A survey of network architectures and their components. Emphasis will be on media access, network and transport layer protocols.
CS 4315 Introduction to Data Mining This course covers fundamental concepts and techniques in data mining and information retrieval. Data mining topics include classification, cluster analysis and pattern mining. Information retrieval topics include Boolean retrieval, vector space model, and Web search.
CS 4318 Compiler Construction This course investigates theoretical and practical issues in the design and construction of modern compilers. Topics covered include lexical and syntactic analysis, syntax-directed translation, type checking, intermediate representation, code generation, and runtime systems. A major portion of the course involves implementing a compiler from scratch for a C-like programming language.
CS 4326 Human Factors of Computer Systems Principles and methods in human factors and ergonomics applied to the design and use of computer systems.
CS 4328 Operating Systems This course covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management.
CS 4332 Introduction to Database Systems Introduction to database concepts, data models, file structures, query languages, database management systems.
CS 4346 Introduction to Artificial Intelligence An introduction to the basic concepts of artificial intelligence; search techniques, knowledge representation, problem solving.
CS 4347 Introduction to Machine Learning Provides systematic introduction to machine learning, covering basic theoretical as well as practical aspects of the use of machine learning methods. Topics include learning theory, learning methods, recent learning models, etc. Application examples include multimedia information retrieval, text recognition, computer vision, etc.
CS 4350 Unix Systems Programming Fundamentals of Unix operating systems, Unix file system and environment, C memory allocation, development tools, processes and signals, threads, device drivers, and programming for security.
CS 4368 Survey of Computer Languages A survey of computer languages. Criteria for choosing languages to be covered include history, important development paradigms and environments, and language implementations.
CS 4371 Computer System Security Course covers practical aspects of computer system security including managing and producing code for secure systems. Theory, such as cryptography, is introduced as needed.
CS 4372 Introduction to Digital Multimedia The course covers concepts, problems and techniques in digital multimedia. Topics include digital representation and data compression of text, speech, audio, natural and synthetic images, and video, as well as multimedia applications, transmission, and standards. In addition, the course introduces perceptual aspects of multimedia signals and sources.
CS 4378W Introduction to Human Computer Interaction (HCI) Introduces HCI topics specifically highlighted by new input modalities such as eye-tracking. Considers new input modalities as new channels for data gathering including multimedia compression, interface design, usability evaluation, biometrics. Application of HCI as interdisciplinary research tool also will be discussed.
CS 4378Z Practical Game Development Course teaches practical aspects of computer game design and implementation. Topics include graphics game engines, game physics, AI methods applied to games, and software architectures for computer games. Students will gain knowledge and skills needed for game development via team projects.
CS 4379A Software Testing The concepts used in a formal testing of safety critical and high-quality software applications are investigated. Topics include, but are not limited to, test design, static and dynamic testing tools, and formal testing documentation.
CS 4379B Introduction to Graphical User Interfaces This course covers abstract and practical foundations of graphical user interface design, evaluation, and implementation. It discusses the fundamentals of computer graphics and interactive computer/human interfaces. The course includes a survey of usability measures, the major GUI standards, and GUI tools.
CS 4379Q Introduction to Recommender Systems This course covers the basic concepts of recommender systems, including personalization algorithms, evaluation tools, and user experiences. We will discuss how recommender systems are deployed in e-commerce sites, social networks, and many other online systems. Additionally, we will review current research in the field.
CS 4379Y Introduction to Green Computing Reducing energy consumption of mobile devices, cloud computing platforms, and supercomputers is a paramount but daunting problem. This course covers fundamental concepts and techniques in green computing, including a hardware energy efficiency roadmap; energy efficient software design, resource management, and storage solutions; and green data centers and mobile computing.
CS 4380 Parallel Programming This course teaches practical aspects of parallel programming. The covered topics include multi-core processors and shared-memory programming, hardware accelerator programming, and distributed-memory machines and message-passing programming. The students will gain the knowledge and skills needed for developing parallel software by writing programs for a variety of parallel computers.
CS 4388 Computer Graphics A study of the hardware and software used in graphic representation and interpretation of data.
CS 4395 Independent Study in Computer Science Open to undergraduate students on an independent basis by arrangement with the faculty member concerned. Requires department chair approval. Course is not repeatable for credit.
CS 4398 Software Engineering Project Students undertake a software development project. They work in teams, developing requirements and designs which they will implement and test.
CS 5100 Advanced Computer Science Internship This course provides advanced training supervised by computer scientists in internship programs approved by the department. Course cannot be counted toward any graduate degree, is open only to majors in the Department of Computer Science. May be repeated once but not for credit and requires approval of the department Chair.
CS 5199B Thesis This course represents a student’s continuing thesis enrollment. The student continues to enroll in a Thesis B course until the thesis is submitted for binding. Graded on a credit (CR), progress (PR), no-credit (F) basis.
CS 5299B Thesis This course represents the continuing thesis enrollments for a student. The student continues to enroll in this course until the thesis is submitted for binding. Graded on a credit (CR), no-credit (F) basis.
CS 5300 Professional Development of Graduate Assistants This course is designed to develop and enhance the professional and technical skills of graduate teaching and instructional assistants. Topics covered may include, but are not limited to, teaching skills, technical skills, ethical and legal issues, and laboratory management. This course cannot be counted toward any degree.
CS 5301 Programming Practicum Intensive review of programming through data structures. Includes syntax, semantics, problem solving, algorithm development, and in-class exercises. May be repeated once. Does not count for credit toward any graduate degree.
CS 5302 Foundations of Data Structures and Algorithm Design This course serves as a foundation course for computer science master's degree students who need reinforcement of fundamental concepts covered by CS 3358. May be repeated once. This course does not earn graduate degree credit.
CS 5303 Foundations of Computer Architecture This foundation course for CS master's degree students who need CS 3339 concept reinforcement covers fundamental hardware components. Topics include ALUs, single and multiple cycle datapath and control, RISC vs. CISC, pipelining, caches, I/O, virtual memory, and related performance issues. It may be repeated once and is non-graduate degree credit.
CS 5305 Foundations of Operating Systems This foundation course is for CS master's students who need CS 4328 fundamental concept reinforcement. It covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management. It may be repeated once. This course does not earn graduate degree credit.
CS 5306 Advanced Operating Systems A study of modern operating systems including network, distributed, or real-time systems.
CS 5310 Network and Communication Systems A study of network and communication systems. Verification and/or implementation of protocols will be required.
CS 5316 Data Mining This course covers fundamental concepts and techniques plus recent developments in data mining and information retrieval. Provides relevant research training and practice opportunities. May not be taken for credit if student received credit for CS 4315.
CS 5318 Principles of Programming Languages This course focuses on the principles of programming languages. Topics covered include programming paradigms, concepts of programming languages, formal syntax and semantics, and language implementation issues.
CS 5326 Advanced Studies in Human Factors of Computer Science Professional level presentation of techniques and research findings related to human-computer interaction.
CS 5329 Algorithm Design and Analysis Introduction to algorithm design and analysis, computational complexity, and NP-completeness theory.
CS 5331 Crafting Compilers Overview of the internal structure of modern compilers. Research on compilation techniques. Topics include lexical scanning, parsing techniques, static type checking, code generation, dataflow analysis, storage management, and execution environments.
CS 5332 Data Base Theory and Design Computer system organization for the management of data; data models, data model theory, optimization and normalization; integrity constraints; query languages; intelligent database systems.
CS 5334 Advanced Internet Information Processing Integration of popular scripting languages (Perl, Javascript, PHP, and other CGI capable languages) and database programming languages (embedded database programming languages, JavaServlets, and PHP) to provide advanced information processing for Internet applications that demand both database support and sophisticated, application specific information processing.
CS 5335 Research in Object-Oriented System Development The course covers the object-oriented methodologies for system analysis, design, implementation, testing, and other aspects of systems development. Emphasis will be on using OO methodologies to manage the complexity of complicated software. Other topics like modeling, OODB, and OO languages will also be covered.
CS 5338 Formal Languages Advanced topics in automata theory, grammars, Turing machines, decidability, and algorithmic complexity.
CS 5341 Advanced Network Programming Study of advanced concepts and programming skills in computer networks: advanced TCP/IP API, multicasting and broadcasting, reliable communications, advanced I/O functions and options.
CS 5343 Wireless Communications and Networks Study of the fundamental aspects of wireless communications and wireless/mobile networks, introduction of wireless/mobile networking APIs.
CS 5346 Advanced Artificial Intelligence Knowledge representation; knowledge engineering; reasoning; parallel and distributed AI; connectionist models; machine learning and intelligent databases; implementation of systems in high-level AI languages.
CS 5348 Computer Organization and Design This course covers the dynamic interaction of the computer system building blocks and their management. Course topics include the design of the instruction set, high speed arithmetic, memory hierarchy, and control units. Computer system performance evaluation methodology and techniques are also covered.
CS 5351 Parallel Processing Introduction to the design and analysis of parallel algorithms, parallel architectures and computers.
CS 5352 Distributed Computing Study of advanced topics in distributed systems: concurrency control and failure recovery, management of replicated data, distributed consensus and fault tolerance, remote procedure calls, naming and security.
CS 5369G Web Service Engineering This course introduces concepts, principles, and methodology enabling development of a software as a service according to Service-Oriented Architecture; methodology of SOA-based systems development; main technologies used in achieving SOA; and challenges and opportunities that SOA provide. In SOA, software applications are constructed based on independent component services with standard interfaces.
CS 5369J Advanced Human Computer Interaction This course will cover state of the art Human Computer Interaction topics such as perceptual compression, eye-gaze, and brain computer interfaces with emphasis on the human visual system, eye-tracking, and electroencephalography.
CS 5369L Machine Learning and Applications Provides broad introduction to machine learning, including learning theory, and recent topics like support vector machines and feature selection. Covers basic ideas, intuition, and understanding behind modern machine learning methods. Discusses applications like face recognition, text recognition, biometrics, bioinformatics, and multimedia retrieval.
CS 5369M Software Evolution and Maintenance Software evolution and maintenance is one of the most important and complex activities in software engineering. Programmers rarely build software from scratch but often modify existing software to fix defects or add new features. This course studies the fundamentals of cutting-edge techniques and tools for software evolution and maintenance.
CS 5369Q Recommender Systems This course covers various concepts of recommender systems, including personalization algorithms, evaluation tools, and user experiences. Discussion of how recommender systems are deployed in business applications, design of new recommender experiences, and how to conduct and evaluate research in recommender systems. Cannot take for credit if already took CS 4379Q.
CS 5369Y Green Computing Reducing mobile device, cloud computing platform, and supercomputer energy consumption is a paramount, daunting problem. This course covers state-of-the-art green computing research, including energy-efficient hardware and software design, power-aware resource management and storage solutions, green data centers and mobile computing. Cannot be taken for credit if received CS 4379Y credit.
CS 5374 Neural Networks A study of neural computing, including basic concepts, algorithms, and applications; back propagation and counter propagation networks; Hopfield networks; associative memories; massively parallel neural architectures; adaptive resonance theory; optical neural networks; connectionist approaches.
CS 5375 Multimedia Computing A study of digital representation and processing of the major multimedia data types: image, audio, and video. Compression techniques for the three data types, standards, and storage media.
CS 5376 Enterprise Application Integration Introduction to the integration of all services available on the Web. It emphasizes component-based integration frameworks based on J2EE specification (EJB, Servlets, JMS), inter-organization workflow integration frameworks, and XML framework. Students must have knowledge of object-oriented design, object-oriented programming language, databases, and networking.
CS 5378 Advanced Computer Security This course covers various aspects of producing secure computer information systems that provide guaranteed controlled sharing. Emphasis is on software models and design, including discovery and prevention of computing systems security vulnerabilities. Current systems and methods are examined and critiqued.
CS 5388 Advanced Computer Graphics A study of the algorithms and data structures used in representing and processing visual data.
CS 5389 Graphical User Interfaces Covers both abstract and practical treatments of using graphics to implement interactive computer/human interfaces. Includes a survey of the major GUI standards and tools.
CS 5391 Survey of Software Engineering A study of the software life cycle with emphasis on system analysis and design. Methodologies based on data flows and on objects will be surveyed. A component on professional ethics is included.
CS 5392 Formal Methods in Software Engineering The use of design and specification languages in producing software systems. Emphasis is placed on proving correctness of designs and implementations.
CS 5393 Software Quality The latter half of the software life cycle is discussed. Topics include testing, performance evaluation, and software metrics. Appropriate software tools are studied and used.
CS 5394 Advanced Software Engineering Project Students produce a software project of significant size in a team environment. All aspects of the software engineering course sequence are integrated and put into practice.
CS 5395 Independent Study in Advanced Computer Science Open to graduate students on an independent basis by arrangement with the faculty member concerned. Course is not repeatable for credit.
CS 5396 Advanced Software Engineering Processes and Methods The essentials of software engineering processes methods, and tools for the evolutionary design of complex interactive software are discussed. Overviews of other topics like quality concepts, the SEI CMM, information technology, and network technology are covered. Student completes a literature survey of the latest software engineering analysis and design processes, methods, and tools.
CS 5399A Thesis This course represents the initial thesis enrollment for the student. No thesis credit is awarded until student has completed the thesis in CS 5399B. Graded on a credit (CR), no-credit (F) basis. Requires approval of department advisor and/or department Chair.
CS 5399B Thesis This course represents the continuing thesis enrollments for a student. The student continues to enroll in this course until the thesis is submitted for binding. Graded on a credit (CR), no-credit (F) basis. Requires approval of department advisor and/or department Chair.
CS 5599B Thesis This course represents the continuing thesis enrollments for a student. The student continues to enroll in this course until the thesis is submitted for binding. Graded on a credit (CR), no-credit (F) basis. Requires approval of department advisor and/or department Chair.
CS 5999B Thesis This course represents a student’s continuing thesis enrollment. The student continues to enroll in a Thesis B course until the thesis is submitted for binding. Graded on a credit (CR), progress (PR), no-credit (F) basis. Requires approval of department advisor and/or department Chair.
CS 7199 Dissertation Original research and writing in computer science is to be accomplished under the direct supervision of the Ph.D. research advisor. While conducting dissertation research and writing, the student must be continuously enrolled each long semester. Graded on a credit (CR), progress (PR), no–credit (F) basis. Repeatable for credit.
CS 7299 Dissertation Original research and writing in computer science is to be accomplished under the direct supervision of the Ph.D. research advisor. While conducting dissertation research and writing, the student must be continuously enrolled each long semester. Graded on a credit (CR), progress (PR), no–credit (F) basis. Repeatable for credit.
CS 7300 Introduction to Research in Computer Science This credit/no credit course is designed to develop research and communication skills for Ph.D. students. Topics covered include research processes, research methods, ethics, conducting literature review, critiquing papers, preparing research proposals, faculty research presentations, and the software tools and platforms available for conducting applied computing research.
CS 7308 Computer Science Studies This course provides foundations in computer science for students entering the doctoral program who may need certain background or leveling coursework. The course does not earn graduate degree credit and is graded on a credit (CR), progress (PR), no–credit (F) basis. It is repeatable with a different emphasis.
CS 7309 Professional Development of Doctoral Assistants This course is designed to equip the doctoral students with skills and an understanding of the proper procedures to be effective doctoral instructional and teaching assistants. This course does not earn graduate credit and is graded on a credit (CR), progress (PR), no-credit (F) basis.
CS 7311 Data-Driven Computational Methods and Infrastructure This course covers computational and statistical methods for using large-scale data sets (‘big data’) to answer scientific and business questions. It focuses on framing research questions, understanding how data can answer them, and using modern software tools such as Spark and Hadoop for scalable data storage, processing, and analysis.
CS 7312 Advanced Data Mining This course provides in-depth coverage of advanced data mining and information retrieval principles and techniques. It also offers extensive training and practice opportunities in frontier research directions.
CS 7313 Advanced Machine Learning and Pattern Recognition This course provides students advanced theoretical and practical skills to learn, design, implement, and apply machine learning and pattern recognition approaches. The students will gain analytical and problem-solving skills by studying machine learning and pattern recognition techniques and applying them to solve real problems.
CS 7314 Bioinformatics This course introduces advanced algorithms for data-intensive computational analysis targeting biological applications such as drug response prediction, gene network analysis, and protein/RNA structure prediction. Main techniques include greedy search, linear regression, clustering, network analysis, expectation maximization, and Hidden Markov models, which are widely applicable beyond biological data.
CS 7321 Human Computer Interaction: Concepts, Models, and Methodologies This course provides an introduction to Human Computer Interaction (HCI) research, methods, and topics, including fundamentals of user interface and experimental design, usability, evaluation methods, software toolkits for interactive applications, graphics, visualization, mobile design, collaborative and social computing, biological factors, and human computation.
CS 7322 Human Factors and Ergonomics This course combines knowledge in the fields of intelligent user interfaces, human factors, ergonomics, and environmental psychology. Topics include HCI principles, human information processing, anthropometry, principles of eye tracking and their effects on human factors research, as well as operations of biometrics systems and human factors influencing those systems.
CS 7323 Image Processing and Computer Vision This course covers fundamentals and advanced topics of image processing and principles of computer vision. Topics include image formation, acquisition, filtering, segmentation, compression and shape representation, as well as computer analysis and understanding of still/motion images, methods for facial and gesture recognition and image retrieval from image databases.
CS 7324 HCI Paradigms for Animation, Visualization, and Virtual/Augmented Reality This course introduces advanced methods for enhancing user experience and presents effective HCI models via computer graphics, imaging, animation, simulation, visualization, augmented reality, and immersive virtual reality. Additionally, the course presents related science and engineering foundations as well as graphic design, cognitive science, and perceptual psychology theories and models.
CS 7331 High-Performance Computing This course covers the advanced design, analysis, and optimization of high-performance applications. Topics include high-performance computer architectures, including accelerators and systems-on-chip, performance modeling and benchmarking, data and control dependence analysis, data locality estimation, memory hierarchy management, techniques for exposing parallelism, and code transformations. Different workloads are studied.
CS 7332 Advanced Parallel Computing This course covers advanced design of parallel algorithms, performance modeling, parallel hardware, language support for parallel programming, and programming models for shared- and distributed-memory systems ranging from handheld multicore devices to large-scale clusters and accelerators. The students will gain applied knowledge and skills by developing parallel software for multiple platforms.
CS 7333 Advanced Green Computing This course covers hardware and software techniques to improve the energy-efficiency of computing systems. Topics include best practices in building energy-efficient data centers and mobile devices, current trends in reducing the energy consumption of processors and storage components, energy-aware resource management, software optimizations, and hands-on experience on power-measurable systems.
CS 7341 Cyberspace Security This course presents recent advances in methodologies, models, systems and applications of cyberspace security research. Topics include in-depth coverage of the state-of-the-art security technologies and research issues on information security, software security, network security, secure system design, secure programming, applied cryptography, vulnerability, and threats.
CS 7342 Advanced Computer Networking This course covers recent research ideas, methodologies and approaches in networking research. The course focuses on the development of protocols and the analysis of related algorithms. Topics include new network architectures, cloud computing, software defined networking, wireless systems, social networks, and security and privacy.
CS 7343 Mobile Networks and Computing This course provides an in-depth study of wireless mobile communication networks, wireless network measurements and modeling, channel assignments and coverage, wireless network protocols, mobile data management, wireless security, and various wireless network applications including ad hoc, sensor networks, delay-tolerant networks, and mobile social networks.
CS 7351 Advanced Software Engineering Software engineering is the application of scientific methods to software development and maintenance. This course provides an in-depth study of advanced concepts and techniques of automatic software generation and analysis. Topics include software process programming, symbolic execution, model checking, property generation and checking, and runtime verification of complex software systems.
CS 7387 Research in Computer Science This course covers up-to-date research topics in computer science under the direction of a supervising professor. The course can be repeated once for additional credit with a different emphasis.
CS 7389A Service Computing This course introduces concepts and principles for enabling the development of software as a service based on Service-Oriented Architecture (SOA), methodology of SOA systems development, the main technologies used in achieving SOA, and state of the art techniques and advances in emerging cloud and edge (Internet of Things) services.
CS 7389B Advanced Software Evolution This topics course provides an in-depth study of state-of-the-art software evolution techniques and tools based on the current research literature. Software evolution has become increasingly important in software development. Software systems often evolve to fix defects, to improve performance, or to adapt to various other requirements.
CS 7399 Dissertation Original research and writing in computer science is to be accomplished under the direct supervision of the Ph.D. research advisor. While conducting dissertation research and writing, the student must be continuously enrolled each long semester. Graded on a credit (CR), progress (PR), no–credit (F) basis. Repeatable for credit.
CS 7599 Dissertation Original research and writing in computer science is to be accomplished under the direct supervision of the Ph.D. research advisor. While conducting dissertation research and writing, the student must be continuously enrolled each long semester. Graded on a credit (CR), progress (PR), no–credit (F) basis. Repeatable for credit.
CS 7699 Dissertation Original research and writing in computer science is to be accomplished under the direct supervision of the Ph.D. research advisor. While conducting dissertation research and writing, the student must be continuously enrolled each long semester. Graded on a credit (CR), progress (PR), no–credit (F) basis. Repeatable for credit.
CS 7999 Dissertation Original research and writing in computer science is to be accomplished under the direct supervision of the Ph.D. research advisor. While conducting dissertation research and writing, the student must be continuously enrolled each long semester. Graded on a credit (CR), progress (PR), no–credit (F) basis. Repeatable for credit.