Courses
The online catalog includes the most recent changes to courses and degree requirements that have been approved by the Faculty Senate, including changes that are not yet effective. Courses showing two entries of the same number indicate that the course information is changing. The most recently approved version is shown first, followed by the older version, in gray, with its last-effective term preceding the course title. Courses shown in gray with only one entry of the course number are being discontinued. Course offerings by term can be accessed by clicking on the term links when viewing a specific campus catalog.
Computer Science (CPT_S)
With the exception of the Computer Skills and Literacy courses, enrollment in 300-400-level computer science courses is restricted to admitted majors or minors in EECS, and to juniors and seniors admitted to other degree programs requiring these computer science courses.
101 Introduction to Electrical Engineering and Computer Science 1 Introduction to programs within the School of Electrical Engineering and Computer Science discussing resources, opportunities, and knowledge and skills necessary to succeed within EECS majors.
111 [QUAN] Introduction to Computer Programming 3 (2-3) Course Prerequisite: MATH 101 with a C or better, MATH 103 with a C or better, or higher level MATH course with a C or better, or a minimum ALEKS math placement score of 45%. Elementary algorithmic problem solving, computational models, sequential, iterative and conditional operations, parameterized procedures, array and list structures and basic efficiency analysis.
121 Program Design and Development C/C++ 4 (3-3) Course Prerequisite: MATH 108, 171, 172, 182, 201, 202, 206, or 220, each with a C or better, CPT S 111 with a B+ or better, a min ALEKS math placement score of 78%, or by permission with an AP Exam in Cpt S Principles or Cpt Sci A with a 4 or better. Formulation of problems and top-down design of programs in a modern structured language (C/C++) for their solution on a digital computer.
122 Data Structures C/C++ 4 (3-3) Course Prerequisite: CPT S 121 with a C or better. Advanced programming techniques: data structures, recursion, sorting and searching, and basics of algorithm analysis taught in C/C++ programming language.
131 Program Design and Development Java 4 (3-3) Course Prerequisite: MATH 108, 171, 172, 182, 201, 202, 206, or 220, each with a C or better, CPT S 111 with a B+ or better, a min ALEKS math placement score of 78%, or by permission with an AP Exam in Cpt S Principles or Cpt Sci A with a 4 or better. Formulation of problems and top-down design of programs in a modern structured language for their solution on a digital computer. Taught in Java programming language.
132 Data Structures Java 4 (3-3) Course Prerequisite: CPT S 131 with a C or better. Advanced programming techniques: data structures, recursion, sorting and searching, and basics of algorithm analysis. Taught in Java programming language.
215 Data Analytics Systems and Algorithms 3 Course Prerequisite: CPT S 122, CPT S 132, or CS 122. Exploration of fundamental concepts, constructs, and techniques of modern data analytics systems. (Crosslisted course offered as CPT S 215, CS 215.)
223 Advanced Data Structures C/C++ 3 Course Prerequisite: CPT S 122 with a C or better; MATH 216 with a C or better or concurrent enrollment. Advanced data structures, object oriented programming concepts, concurrency, and program design principles taught in C/C++ programming language.
224 Programming Tools 2 Course Prerequisite: CPT S 122 with a C or better, or CPT S 132 with a C or better. Debugging tools, scripting languages, UNIX programming tools.
233 Advanced Data Structures Java 3 Course Prerequisite: CPT S 132 with a C or better; MATH 216 with a C or better or concurrent enrollment. Advanced data structures, object oriented programming concepts, concurrency, and program design principles. Taught in Java programming language.
260 Introduction to Computer Architecture 3 Course Prerequisite: CPT S 223 with a C or better or concurrent enrollment, or CPT S 233 with a C or better or concurrent enrollment. Computer systems architecture; logic, data representation, assembly language, memory organization and trends.
302 Professional Skills in Computing and Engineering 3 Course Prerequisite: CPT S 223 or 233 with a C or better, OR CPT S 121 or 131 and E E 261 with C or better; admitted to a major in EECS or Data Analytics; junior standing. Professional development; ethical and professional responsibilities in computing and engineering. (Crosslisted course offered as CPT S 302, E E 302.) Credit not granted for both CPT S/E E 302 and CPT S 401.
302 (Effective through Fall 2024) Professional Skills in Computing and Engineering 3 Course Prerequisite: CPT S 122 or 132, OR CPT S 121 or 131 and E E 261; admitted to a major in EECS or Data Analytics; junior standing. Foundation in computing and engineering professional development. (Crosslisted course offered as CPT S 302, E E 302.) Credit not granted for both CPT S/E E 302 and CPT S 401.
315 Introduction to Data Mining 3 Course Prerequisite: CPT S 215, 223, 233, or CS 215, with a C or better; admitted to the major or minor in Computer Science, Computer Engineering, Electrical Engineering, Software Engineering, Data Analytics, or Cybersecurity. The process of automatically extracting valid, useful, and previously unknown information from large repositories. Recommended preparation: prior Python programming. (Crosslisted course offered as CPT S 315, CS 315.)
317 Automata and Formal Languages 3 Course Prerequisite: CPT S 122 or 132, with a C or better; MATH 216 with a C or better; admitted to a major or minor in EECS or Data Analytics. Finite automata, regular sets, pushdown automata, context-free language, Turing machines and the halting problem.
321 Object-Oriented Software Principles 3 Course Prerequisite: CPT S 223 or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. Object-oriented programming for flexibility, efficiency, and maintainability; logic and UI decoupling; complexity analysis, data structures, and algorithms for industry-quality software.
322 [M] Software Engineering Principles I 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics, or major in Neuroscience. Introduction to software engineering; requirements analysis, definition, specification including formal methods; prototyping; design including object and function oriented design.
323 Software Design 3 Course Prerequisite: CPT S 223 or 233, with a C or better; CPT S 322 with a C or better or concurrent enrollment; admitted to a major or minor in EECS or Data Analytics. Enrollment not allowed if credit earned in CPT S 487. Practical aspects of software design and implementation using object-oriented, aspect-oriented and procedural programming. Credit not granted for both CPT S 323 and 487.
327 Fundamentals of Cyber Security and Cryptography 3 Course Prerequisite: CPT S 223 or 233 with a C or better; CPT S 260 or E E 234 with a C or better; CPT S 360 or 370 with a C or better or concurrent enrollment; MATH 216 with a C or better; admitted to a major or minor in EECS or Data Analytics. Security and privacy principles in modern computers and network communications covering various security protection mechanisms, including cryptography, secure communication protocols, and anonymity techniques.
350 Design and Analysis of Algorithms 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; CPT S 317 with a C or better; admitted to a major or minor in EECS or Data Analytics. Analysis of data structures and algorithms; computational complexity and design of efficient data-handling procedures.
355 Programming Language Design 3 Course Prerequisite: CPT S 223 or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. Design concepts of high-level programming languages; survey of existing languages, experience using some languages.
360 Systems Programming C/C++ 4 (3-3) Course Prerequisite: CPT S 223 with a C or better; CPT S 260 with a C or better or E E 234 with a C or better; admitted to a major or minor in EECS or Data Analytics. Implementation of systems programs, concepts of computer operating systems; laboratory experience in using operating system facilities taught in C/C++ programming language.
370 Systems Programming Java 4 (3-3) Course Prerequisite: CPT S 233 with a C or better; CPT S 260 with a C or better or E E 234 with a C or better; admitted to a major or minor in EECS or Data Analytics. Implementation of systems programs, concepts of computer operating systems; laboratory experience in using operating system facilities. Taught in Java programming language.
401 Computers and Society 3 Course Prerequisite: CPT S 215, 223, or 233; admitted to a major in EECS or Data Analytics; junior standing. Skills and literacy course. Ethical and societal issues related to computers and computer networks; computers as enabling technology; computer crime, software theft, privacy, viruses, worms. Credit not granted for both CPT S 401 and CPT S/E E 302.
411 Introduction to Parallel Computing 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. Fundamental principles of parallel computing, parallel programming experience on multicore machines and cluster computers, and design of algorithms and applications in parallel computing. Recommended preparation: CPT S 350.
415 Big Data 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; admitted to the major or minor in Computer Science, Computer Engineering, Electrical Engineering, Software Engineering, Data Analytics, or Cybersecurity. Big data models, databases and query languages, modern distributed database systems and algorithms. (Crosslisted course offered as CPT S 415, CS 415.)
421 Software Design Project I 3 (1-6) Course Prerequisite: C or better in each of CPT S 322; CPT S 360 or 370; one 400-level CPT S course taken at WSU; admitted to a major in EECS; senior standing. Large-scale software development including requirements analysis, estimation, design, verification and project management.
421 (Effective through Fall 2024) Software Design Project I 3 (1-6) Course Prerequisite: C or better in CPT S 321 and 322; or C or better in CPT S 322 and CPT S 360 or 370; or C or better CPT S 322 and concurrent enrollment in CPT S 360 or 370; admitted major or minor in Cpt S, Cpt Engr, E E, Sftwr Engr, or Data Anlytc. Large-scale software development including requirements analysis, estimation, design, verification and project management.
422 [M] Software Engineering Principles II 3 Course Prerequisite: CPT S 321 with a C or better or CPT S 323 with a C or better; CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Dependable software systems; software verification and validation, testing; CASE environments; software management and evolution.
423 [CAPS] [M] Software Design Project II 3 (1-6) Course Prerequisite: CPT S 421 with a C or better; admitted to a major in EECS. Laboratory/group design project for large-scale software development, requirements analysis, estimation, design, verification techniques.
423 (Effective through Fall 2024) [CAPS] [M] Software Design Project II 3 (1-6) Course Prerequisite: CPT S 421 with a C or better; admitted to a major or minor in EECS or Data Analytics; junior standing. Laboratory/group design project for large-scale software development, requirements analysis, estimation, design, verification techniques.
424 Cyber Law, Ethics, Rights, and Policies 3 Course Prerequisite: CPT S 327 with a C or better; admitted to a major or minor in EECS or Data Analytics. Laws, ethics, rights, and governmental regulations as applied to the field of cybersecurity from technological and social perspectives.
425 Cyber Forensics and Anti-Forensics 3 Course Prerequisite: CPT S 327 with a C or better; admitted to a major or minor in EECS or Data Analytics. Recovery and investigation of material found in various cyber environments (e.g., device, memory, operating systems, etc.) and ways to defeat forensic processes and tools.
426 Hardware, Hardware Security, and Hardware Reverse Engineering 3 Course Prerequisite: CPT S 327 with a C or better; CPT S 439 with a C or better or concurrent enrollment; admitted to a major or minor in EECS or Data Analytics. Hardware hacking and reverse engineering approaches routinely used against electronic devices and embedded systems; introduction to the basic procedures necessary to perform reverse engineering of hardware components to determine their functionality, inputs, outputs, and stored data.
427 Cyber Security of Wireless and Distributed Systems 3 Course Prerequisite: CPT S 327 with a C or better; admitted to a major or minor in EECS or Data Analytics. Cellular and wireless system security, incidence response cycles, fault tolerance, and distributed computer security.
428 Software Security and Reverse Engineering 3 Course Prerequisite: CPT S 327 with a C or better; admitted to a major or minor in EECS or Data Analytics. Key aspects of cyber security with an emphasis on software and systems security focusing on concepts, principles, methodologies, and techniques for measuring and defending the various security properties of both operating systems and application software. Credit not granted for both CPT S 428 and CPT S 528. Offered at 400 and 500 level.
429 Virtualization and Offensive Cyber Operations 3 Course Prerequisite: CPT S 327 with a C or better; admitted to a major or minor in EECS or Data Analytics. Virtualization and offensive cyber operations including the building of multiple software systems that operate as independent systems running on multiple native hardware items and conducting campaigns aimed at compromising computational capacities of an adversary.
430 Numerical Analysis 3 Course Prerequisite: MATH 315 with a C or better; one of CPT S 121, 131, or MATH 300, with a C or better. Fundamentals of numerical computation; finding zeroes of functions, approximation and interpolation; numerical integration (quadrature); numerical solution of ordinary differential equations. Required preparation must include differential equations and a programming course. (Crosslisted course offered as MATH 448, MATH 548, CPT S 430, CPT S 530.) Offered at 400 and 500 level.
431 Security Analytics and DevSecOps 3 Course Prerequisite: CPT S 327 with a C or better; admitted to a major or minor in EECS or Data Analytics. Security analytics at an enterprise deployment scale using social, data, graph avenues of evaluation, and topics of supply chain cybersecurity, risk management frameworks, and security of developer operation pipelines.
432 [CAPS] [M] Cybersecurity Capstone Project 3 Course Prerequisite: CPT S 327; CPT S 427; CPT S 428; CPT S 455, each with a C or better; admitted to the major in Cybersecurity; senior standing. Group design project for large-scale cybersecurity development incorporating analysis, application ability, industrial skills, and adherence to cybersecurity standards.
434 Neural Network Design and Application 3 Course Prerequisite: CPT S 121, 131, or E E 221, with a C or better; STAT 360 with a C or better; admitted to a major or minor in EECS or Data Analytics, or major in Neuroscience. Hands-on experience with neural network modeling of nonlinear phenomena; application to classification, forecasting, identification and control. Credit not granted for both CPT S 434 and CPT S 534. Offered at 400 and 500 level.
437 Introduction to Machine Learning 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. Topics in machine learning including linear models for regression and classification, generative models, support vector machines and kernel methods, neural networks and deep learning, decision trees, unsupervised learning, and dimension reduction. Recommended preparation: E E 221; linear algebra; multivariate calculus; probability and statistics.
438 Scientific Visualization 3 Course Prerequisite: CPT S 223 or 233, with a C or better; CPT S 224 with a C or better; MATH 172 or 182, with a C or better; admitted to a major or minor in EECS or Data Analytics. Data taxonomy, sampling, plotting, using and extending a visualization package, designing visualization and domain-specific techniques.
439 Cybersecurity of Critical Infrastructure Systems 3 Course Prerequisite: CPT S 327 and 426 with a C or better or concurrent enrollment; admitted major or minor in EECS or Data Analytics; OR E E 234 and 361; admitted major or minor in E E; OR CPT S 327 and E E 234; admitted major or minor in Cpt Engr. Security topics as they relate to critical infrastructure systems vital to any nation including industrial control systems, cyber physical systems, SCADA, DCS, IoT, IIoT, and the knowledge to secure such systems. (Crosslisted course offered as E E 439, CPT S 439.)
440 Artificial Intelligence 3 Course Prerequisite: CPT S 223 or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics, or major in Neuroscience. An introduction to the field of artificial intelligence including heuristic search, knowledge representation, deduction, uncertainty reasoning, learning, and symbolic programming languages. Credit not granted for both CPT S 440 and CPT S 540. Offered at 400 and 500 level.
442 Computer Graphics 3 Course Prerequisite: CPT S 223 with a C or better; CPT S 224 with a C or better or CPT S 360 with a C or better; MATH 220 with a C or better; admitted to a major or minor in EECS or Data Analytics. Raster operations; transformations and viewing; geometric modeling; visibility and shading; color. Credit not granted for both CPT S 442 and CPT S 542. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
443 Human-Computer Interaction 3 Course Prerequisite: CPT S 223 or 233; admitted to a major or minor in EECS or Data Analytics, or major in Neuroscience; junior standing. Concepts and methodologies of engineering, social and behavioral sciences to address ergonomic, cognitive, social and cultural factors in the design and evaluation of human-computer systems. Credit not granted for both CPT S 443 and CPT S 543. Offered at 400 and 500 level.
451 Introduction to Database Systems 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. Introduction to database concepts, data models, database languages, database design, implementation issues.
452 Compiler Design 3 Course Prerequisite: CPT S 317 with a C or better; CPT S 355 with a C or better; admitted to a major or minor in EECS or Data Analytics. Design of lexical analyzers, syntactic analyzers, intermediate code generators, code optimizers and object code generators.
453 Graph Theory 3 Course Prerequisite: MATH 220, 225, or 230. Graphs and their applications, directed graphs, trees, networks, Eulerian and Hamiltonian paths, matrix representations, construction of algorithms. Required preparation must include linear algebra. Recommended preparation: MATH 301. (Crosslisted course offered as MATH 453, CPT S 453.) Cooperative: Open to UI degree-seeking students.
453 (Effective through Summer 2024) Graph Theory 3 Course Prerequisite: MATH 220, 225, or 230. Graphs and their applications, directed graphs, trees, networks, Eulerian and Hamiltonian paths, matrix representations, construction of algorithms. (Crosslisted course offered as MATH 453, MATH 553, CPT S 453, CPT S 553). Required preparation must include linear algebra. Recommended preparation: MATH 301. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
455 Introduction to Computer Networks and Security 3 Course Prerequisite: CPT S 360, 370, or E E 234, with a C or better; admitted to a major or minor in EECS or Data Analytics. Concepts and implementations of computer networks; architectures, protocol layers, internetworking, addressing case studies, and discussion of security constraints at all layers of the OSI stack from attacker and defender perspectives. (Crosslisted course offered as CPT S 455, E E 455.)
460 Operating Systems and Computer Architecture 3 Course Prerequisite: CPT S 360 with a C or better; admitted to a major or minor in EECS or Data Analytics. Operating systems, computer architectures, and their interrelationships in micro, mini, and large computer systems.
464 Distributed Systems Concepts and Programming 3 Course Prerequisite: CPT S 223, 233, or E E 234, with a C or better; admitted to a major or minor in EECS or Data Analytics. Concepts of distributed systems; naming, security, networking, replication, synchronization, quality of service; programming middleware. Credit not granted for both CPT S 464 and CPT S 564. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
466 Embedded Systems 3 (2-3) Course Prerequisite: CPT S 360 with a C or better; admitted to a major or minor in EECS or Data Analytics. The design and development of real-time and dedicated software systems with an introduction to sensors and actuators. Credit not granted for both CPT S 466 and CPT S 566. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
471 Computational Genomics 3 Course Prerequisite: CPT S 223 or 233, with a C or better; CPT S 350 with a C or better or concurrent enrollment; admitted to a major or minor in EECS or Data Analytics. Fundamental algorithms, techniques and applications. Credit not granted for both CPT S 471 and CPT S 571. Offered at 400 and 500 level.
475 Data Science 3 Course Prerequisite: CPT S 215, CPT S 223, or CPT S 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. The data science process, data wrangling, exploratory data analysis, linear regression, classification, clustering, principal components analysis, recommender systems, data visualization, data and ethics, and effective communication. Recommended preparation for 575: Familiarity with algorithm design and analysis, basic linear algebra, and basic probability and statistics. Credit not granted for both CPT S 475 and CPT S 575. Offered at 400 and 500 level.
476 (Effective through Summer 2025) Software Construction and Maintenance 3 Course Prerequisite: CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Software quality, construction (API design and use, object-oriented runtime issues), and maintenance (refactoring, reengineering, reverse engineering).
478 Software Process and Management 3 Course Prerequisite: CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Software Engineering Process (definition, assessment, and improvement); Software Engineering Management; Software Configuration Management.
479 Mobile Application Development 3 Course Prerequisite: CPT S 223 or 233, with a C or better; admitted to a major or minor in EECS or Data Analytics. Mobile application development; user interface; location and maps; sensor; camera; cross platform mobile application development tools.
480 Python Software Construction 3 Course Prerequisite: CPT S 223 with a C or better; CPT S 224 or CPT S 360 with a C or better; admitted to a major or minor in EECS or Data Analytics. Intensive introduction to the python language; user interface, building and using extension modules; C interfacing; construction of a major project. (Formerly CPT S 481.)
481 (Effective through Summer 2024) Python Software Construction 3 Course Prerequisite: CPT S 223 with a C or better; CPT S 224 or CPT S 360 with a C or better; admitted to a major or minor in EECS or Data Analytics. Intensive introduction to the python language; user interface, building and using extension modules; C interfacing; construction of a major project.
483 Topics in Computer Science V 1-4 May be repeated for credit. Course Prerequisite: Admitted to a major or minor in EECS or Data Analytics. Required background preparation varies with course offering, see instructor. Current topics in computer science or software engineering.
484 Software Requirements 3 Course Prerequisite: CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Elicitation, analysis, specification, and validation of software requirements as well as the management of requirements during the software life cycle.
485 Gerontechnology I 3 Course Prerequisite: CPT S 215, 223, or 233; admitted to a major or minor in EECS or Data Analytics, or major in Psychology. Introduction to the field of gerontechnology, including aging and senses, mobility and exercise, data analysis, and research methods. (Crosslisted course offered as CPT S 485, PSYCH 485.)
486 Gerontechnology II 3 Course Prerequisite: CPT S 215, 223, or 233; admitted to a major or minor in EECS or Data Analytics, or major in Psychology. In-depth exploration of gerontechnology, including socialization, caregiver issues, dementia, app design and data visualization. (Crosslisted course offered as CPT S 486, PSYCH 486.)
487 Software Design and Architecture 3 Course Prerequisite: CPT S 321 with a C or better; CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Enrollment not allowed if credit already earned for CPT S 323. Software design; design principles, patterns, and anti-patterns; design quality attributes and evaluation; architectural styles, architectural patterns and anti-patterns. Credit not granted for both CPT S 487 and CPT S 587, or for both CPT S 487 and 323. Offered at 400 and 500 level.
488 Professional Practice Coop/Internship I V 1-2 May be repeated for credit; cumulative maximum 6 credits. Course Prerequisite: By department permission. Practicum for students admitted to the VCEA Professional Practice and Experiential Learning Program; integration of coursework with on-the-job professional experience. (Crosslisted course offered as ENGR 488, BIO ENG 488, CHE 488, CE 488, CPT S 488, E E 488, ME 488, MSE 488, SDC 488.) S, F grading.
488 (Effective through Spring 2024) Professional Practice Coop/Internship I V 1-2 May be repeated for credit; cumulative maximum 6 credits. Course Prerequisite: By department permission. Practicum for students admitted to the VCEA Professional Practice and Experiential Learning Program; integration of coursework with on-the-job professional experience. (Crosslisted course offered as ENGR 488, BIO ENG 488, CHE 488, CE 488, CPT S 488, E E 488, ME 488, MSE 488, SDC 488). S, F grading.
489 Web Development 3 Course Prerequisite: CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Web development using markup languages, style sheet language, and scripting languages; developing and consuming web services; testing web applications.
490 Work Study Internship V 1-9 May be repeated for credit; cumulative maximum 9 credits. Course Prerequisite: By department permission only; Computer Science major. Experience in programming and systems analysis in a working environment under supervision of industrial or governmental professionals and faculty. S, F grading.
499 Special Problems V 1-4 May be repeated for credit. Course Prerequisite: By department permission. Independent study conducted under the jurisdiction of an approving faculty member; may include independent research studies in technical or specialized problems; selection and analysis of specified readings; development of a creative project; or field experiences. S, F grading.
500 Proseminar 1 Faculty research interests, departmental computer systems, computer science research, report preparation. S, F grading.
515 Advanced Algorithms 3 Advanced algorithms and data structures, design and analysis, intractability. (Crosslisted course offered as CPT S 515, CS 515.)
516 Algorithmics 3 Discrete structures, automata, formal languages, recursive functions, algorithms, and computability.
527 Computer Security 3 Examines cyber vulnerabilities and attacks against computer systems and networks; includes security protection mechanisms, cryptography, secure communication protocols, information flow enforcement, network monitoring, and anonymity techniques.
528 Software Security and Reverse Engineering 3 Key aspects of cyber security with an emphasis on software and systems security focusing on concepts, principles, methodologies, and techniques for measuring and defending the various security properties of both operating systems and application software. Credit not granted for both CPT S 428 and CPT S 528. Offered at 400 and 500 level.
530 Numerical Analysis 3 Fundamentals of numerical computation; finding zeroes of functions, approximation and interpolation; numerical integration (quadrature); numerical solution of ordinary differential equations. Required preparation must include differential equations and a programming course. (Crosslisted course offered as MATH 448, MATH 548, CPT S 430, CPT S 530.) Offered at 400 and 500 level.
531 Advanced Matrix Computations 3 Advanced topics in the solution of linear systems, singular value decomposition, and computation of eigenvalues and eigenvectors (Francis's algorithm). (Crosslisted course offered as MATH 544, CPT S 531.) Required preparation must include numerical analysis. Cooperative: Open to UI degree-seeking students.
534 Neural Network Design and Application 3 Hands-on experience with neural network modeling of nonlinear phenomena; application to classification, forecasting, identification and control. Credit not granted for both CPT S 434 and CPT S 534. Offered at 400 and 500 level.
538 Scientific Visualization 3 Data taxonomy; sampling; plotting; using and extending a visualization package; designing visualizations; domain-specific techniques.
540 Artificial Intelligence 3 An introduction to the field of artificial intelligence including heuristic search, knowledge representation, deduction, uncertainty reasoning, learning, and symbolic programming languages. Credit not granted for both CPT S 440 and CPT S 540. Offered at 400 and 500 level.
542 Computer Graphics 3 Raster operations; transformations and viewing; geometric modeling; visibility and shading; color. Credit not granted for both CPT S 442 and CPT S 542. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
543 Human-Computer Interaction 3 Concepts and methodologies of engineering, social and behavioral sciences to address ergonomic, cognitive, social and cultural factors in the design and evaluation of human-computer systems. Credit not granted for both CPT S 443 and CPT S 543. Offered at 400 and 500 level.
548 Advanced Computer Graphics 3 Solid modeling, visual realism, light and color models, advanced surface generation techniques.
550 Parallel Computation 3 Parallel machine models, principles for the design of parallel algorithms, interconnection networks, systolic arrays, computational aspects to VLSI. Required preparation must include differential equations and a programming course.
553 (Effective through Summer 2024) Graph Theory 3 Graphs and their applications, directed graphs, trees, networks, Eulerian and Hamiltonian paths, matrix representations, construction of algorithms. (Crosslisted course offered as MATH 453, MATH 553, CPT S 453, CPT S 553). Required preparation must include linear algebra. Recommended preparation: MATH 301. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
554 Advanced Graph Theory 3 Advanced treatment of the theory of graphs including matchings, colorings, extremal graph theory, graph algorithms, algebraic and spectral methods, and random graph models. Required preparation: MATH 453 or equivalent. (Crosslisted course offered as MATH 554, CPT S 554.) Cooperative: Open to UI degree-seeking students.
555 Computer Communication Networks 3 Packet switching networks; multi-access and local-area networks; delay models in data networks; routing and flow control. (Crosslisted course offered as E E 555, CPT S 555.)
557 Advanced Computer Networks 3 ATM networks, optical WDM networks, and wireless/mobile networks; access, transport, and routing protocols.
560 Operating Systems 3 Structure of multiprogramming and multiprocessing; efficient allocation of systems resources; design implementation and performance measurement.
561 Advanced Computer Architecture 3 Instruction set architectures, pipelining and super pipelining, instruction level parallelism, superscalar and VLIW processors, cache memory, thread-level parallelism and VLSI. (Crosslisted course offered as E E 524, CPT S 561.)
562 Fault Tolerant Computer Systems 3 Fault tolerance aspects involved in design and evaluation of systems; methods of detection and recovery; multicast, middleware, and reconfiguration. (Crosslisted course offered as CPT S 562, E E 562.)
564 Distributed Systems Concepts and Programming 3 Concepts of distributed systems; naming, security, networking, replication, synchronization, quality of service; programming middleware. Credit not granted for both CPT S 464 and CPT S 564. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
566 Embedded Systems 3 (2-3) The design and development of real-time and dedicated software systems with an introduction to sensors and actuators. Credit not granted for both CPT S 466 and CPT S 566. Offered at 400 and 500 level. Cooperative: Open to UI degree-seeking students.
570 Machine Learning 3 Introduction to building computer systems that learn from their experience; classification and regression problems; unsupervised and reinforcement learning.
571 Computational Genomics 3 Fundamental algorithms, techniques and applications. Credit not granted for both CPT S 471 and CPT S 571. Offered at 400 and 500 level.
572 Numerical Methods in Computational Biology 3 Computational methods for solving scientific problems related to information processing in biological systems at the molecular and cellular levels.
573 Bioinformatics Software Development 3 Provides programming skills needed to address current computational problems in bioinformatics; emphasis on mathematical development and software design.
575 Data Science 3 The data science process, data wrangling, exploratory data analysis, linear regression, classification, clustering, principal components analysis, recommender systems, data visualization, data and ethics, and effective communication. Recommended preparation for 575: Familiarity with algorithm design and analysis, basic linear algebra, and basic probability and statistics. Credit not granted for both CPT S 475 and CPT S 575. Offered at 400 and 500 level.
577 Structured Prediction: Algorithms and Applications 3 Machine learning algorithms to predict structured outputs from structured inputs for diverse applications, including: natural language processing, computer vision, social networks, smart environments, and computer engineering.
580 Advanced Topics in Computer Science 3 May be repeated for credit.
581 Software Maintenance 3 Software maintenance, refactoring, reengineering, reverse engineering.
582 Software Testing 3 Software testing, testing levels, testing objectives, testing techniques.
583 Software Quality 3 Software quality, quality assurance, process and product quality, software measures, quality attributes, quality management.
587 Software Design and Architecture 3 Software design; design principles, patterns, and anti-patterns; design quality attributes and evaluation; architectural styles, architectural patterns and anti-patterns. Credit not granted for both CPT S 487 and CPT S 587, or for both CPT S 487 and 323. Offered at 400 and 500 level.
591 Elements of Network Science 3 Fundamental elements of the emerging science of complex networks, with emphasis on social and information networks. Recommended preparation: CPT S 350 with a C or better.
595 Directed Study in Computer Science V 1 (0-3) to 3 (0-9) May be repeated for credit; cumulative maximum 6 credits. Current topics in computer science.
600 Special Projects or Independent Study V 1-18 May be repeated for credit. Independent study, special projects, and/or internships. Students must have graduate degree-seeking status and should check with their major advisor before enrolling in 600 credit, which cannot be used toward the core graded credits required for a graduate degree. S, F grading.
700 Master's Research, Thesis, and/or Examination V 1-18 May be repeated for credit. Independent research and advanced study for students working on their master's research, thesis and/or final examination. Students must have graduate degree-seeking status and should check with their major advisor/committee chair before enrolling for 700 credit. S, U grading.
702 Master's Special Problems, Directed Study, and/or Examination V 1-18 May be repeated for credit. Course Prerequisite: By department permission. Independent research in special problems, directed study, and/or examination credit for students in a non-thesis master's degree program. Students must have graduate degree-seeking status and should check with their major advisor/committee chair before enrolling for 702 credit. S, U grading.
800 Doctoral Research, Dissertation, and/or Examination V 1-18 May be repeated for credit. Course Prerequisite: Admitted to the Computer Science PhD program. Independent research and advanced study for students working on their doctoral research, dissertation and/or final examination. Students must have graduate degree-seeking status and should check with their major advisor/committee chair before enrolling for 800 credit. (Crosslisted course offered as CPT S 800, CS 800.) S, U grading.