Computer Science (CS)

Courses

CS 100. Discovering Computer Science. 3 hours.

Fundamentals of computing; history of computation; computer organization; program design, testing and debugging; web design; computer animation; software tools; societal and legal issues in computing. Course Information: Credit is not given for CS 100 if the student has credit in CS 111 or CS 112 or CS 113 or CS 107 or CS 109 or MCS 260. No graduation credit given to students enrolled in Engineering. No graduation credit for students enrolled in a major offered by the Departments of Biomedical Engineering, Chemical Engineering, Civil Materials and Environmental Engineering, Computer Science, Electrical and Computer Engineering, or Mechanical and Industrial Engineering. Extensive computer use required. Class Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture-Discussion. Natural World - No Lab course.

CS 107. Introduction to Computing and Programming. 4 hours.

Access and use of computing resources. Programming and program design. Problem solving. Data types, control structures, modularity, information hiding. Course Information: Credit is not given for CS 107 if the student has credit for CS 141. Previously listed as EECS 171. Prerequisite(s): Credit or concurrent registration in MATH 180. Class Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture.

CS 109. Programming for Engineers with MatLab. 3 hours.

Develop an understanding of program design using data types, operators, control structures, functions, file I/O, arrays and structures. Demonstrate the understanding through computer projects with engineering applications. Course Information: Credit is not given for CS 109 if the student has credit for CS 111 or CS 112 or CS 113. Extensive computer use required. Prerequisite(s): Credit or concurrent registration in MATH 180. Class Schedule Information: To be properly registered, students must enroll in one Laboratory-Discussion and one Lecture-Discussion.

CS 111. Program Design I. 3 hours.

Introduction to programming: control structures; variables and data types; problem decomposition and procedural programming; input and output; aggregate data structures including arrays; programming exercises. Course Information: 3 hours. Extensive computer use required. Credit is not given for CS 111 if student has credit in CS 107 or CS 109 or CS 112 or CS 113. Class Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture-Discussion.

CS 112. Program Design I in the Context of Biological Problems. 3 hours.

Introduction to programming using Biology as the context for programming in a high-level language; control structures, variables, simple and aggregate data types; problem-solving techniques; biology topics include central dogma and genetics. Course Information: Same as BIOS 112. Credits is not given for CS 112, if student has credit in CS 111 or CS 113. Course Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture-Discussion.

CS 113. Program Design I in the Context of Law and Public Policy. 3 hours.

Introduction to programming using law and public policy as the context for programming; control structures, variables, simple and aggregate data types; problem-solving techniques; legal topics: security, privacy, encryption, and predictive policing. Course Information: Credit is not given for CS 113 of student has credit in CS 107 or CS 109 or CS 111 or CS 112. Class Schedule Information: To be properly registered, students must enroll in on Laboratory and one Lecture-Discussion.

CS 141. Program Design II. 3 hours.

Data abstraction and modular design; recursion; lists and stacks; dynamic memory allocation; file manipulation; programming exercises. Course Information: 3 hours. Previously listed as CS 102. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 111 or Grade of C or better in CS 112 or Grade of C or better in CS 113 or Grade of C or better in CS 107 or Grade of C or better in CS 109; and Credit or concurrent registration in MATH 180. Class Schedule Information: To be properly registered, students must enroll in one Laboratory-Discussion and one Lecture-Discussion.

CS 151. Mathematical Foundations of Computing. 3 hours.

Discrete mathematics concepts fundamental to computing: propositional logic, predicates and quantifiers; proofs; sets; recursive definitions and induction; functions, relations and graphs; combinatorics and discrete probability; applications. Course Information: 3 hours. Credit is not given for CS 151 if the student has credit in MCS 361. Prerequisite(s): Grade of C or better in CS 111 or Grade of C or better in CS 112 or Grade of C or better in CS 113 or Grade of C or better in CS 107 or Grade of C or better in CS 109; and Credit or concurrent registration in MATH 180; or appropriate score on the department placement test. Class Schedule Information: To be properly registered, students must enroll in one Lecture and one Discussion.

CS 194. Special Topics in Computer Science. 1-3 hours.

Multidisciplinary computer science topics at first-year level that vary from term to term depending on current student and instructor interests.

CS 211. Programming Practicum. 3 hours.

Software development tools and practices; debugging and testing; advanced language features; standard libraries; code management. Course Information: 2 hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 141; or Grade of C or better in CS 107. The option to use CS 107 as a prerequisite (in place of CS 141) is only for Computer Engineering majors or students doing a Computer Engineering minor. Class Schedule Information: To be properly registered, students must enroll in one Lecture-Discussion and one Laboratory-Discussion.

CS 251. Data Structures. 4 hours.

Design, usage and analysis of data structures: review of lists, stacks and queues; hash tables, priority queues, search trees, introduction to graphs; searching and sorting; runtime analysis; programming projects and lab exercises. Course Information: 4 hours. Prerequisite (s): Grade of C or better in CS 141 or Grade of C or better in CS 107; and Grade of C or better in CS 151; and Credit or concurrent registration in CS 211 or Credit or concurrent registration in ECE 266. To be properly registered, students must enroll in one Lecture-Discussion and one Laboratory.

CS 261. Machine Organization. 4 hours.

Data representation and computer arithmetic; machine language; addressing; memory hierarchy; subroutines; data structures; processor architecture: hardware components, pipelining. Course Information: Credit is not given for CS 261 if the student has credit for ECE 267 or ECE 366. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 141; and Credit or concurrent registration in CS 211. Class Schedule Information: To be properly registered, students must enroll in one Lecture-Discussion and one Laboratory.

CS 277. Technical and Professional Communication in Computer Science. 3 hours.

Communication skills for computing students and professionals in various contexts: technical writing, portfolios, job interviews, demos, sales, with speech organization, visuals, and delivery. Attendance, participation, and presentations required. Course Information: Prerequisite(s): CS 141. Class Schedule Information: To be properly registered, students must enroll in one Lecture-Discussion and one Discussion.

CS 294. Special Topics in Computer Science. 1-3 hours.

Multidisciplinary computer science topics at sophomore level that vary from term to term depending on current student and instructor interests. Course Information: Prerequisite(s): Consent of the instructor.

CS 301. Languages and Automata. 3 hours.

Regular sets and finite automata. Context-free languages and push-down automata. Parsing. Computability theory including Turing machines and decidability. Course Information: Previously listed as EECS 361. Prerequisite(s): Grade of C or better in CS 151; and Credit or concurrent registration in CS 251. Class Schedule Information: To be properly registered, students must enroll in one Discussion/Recitation and one Lecture.

CS 341. Programming Language Design and Implementation. 3 hours.

Programming language paradigms, design and implementation: syntax and semantics; parsing; runtime systems; control; data types; subroutines and exceptions; data and procedural abstraction; functional programming. Course Information: Extensive computer use required. Prerequisite(s): Grade of C or better in CS 211 and Grade of C or better in CS 251; and CS 261.

CS 342. Software Design. 3 hours.

Software design principles and practices: Object-oriented design; design patterns; software reuse; testing; event driven programming and concurrency; graphical user interface design and development; Team development. Course Information: Extensive computer use required. Credit is not given for CS 342 if the student has credit for CS 340. Prerequisite(s): Grade of C or better in CS 251 and Grade of C or better in CS 211.

CS 351. Advanced Data Structure Practicum. 3 hours.

Design and implementation details of advanced data structure and non-trivial algorithms with an emphasis on amortized analysis. Course Information: Prerequisite(s): CS 251.

CS 361. Systems Programming. 4 hours.

Study of computer systems emphasizing impact on application level programming. Virtual memory and memory management; code optimization; system-level I/O; concurrency: processes, threads, synchronization; introduction to network programming. Course Information: Extensive computer use required. Prerequisite(s): Grade of C or better in CS 251 and Grade of C or better in CS 211; and CS 261. Class Schedule Information: To be properly registered, students must enroll in one Lecture-Discussion and one Laboratory.

CS 362. Computer Design. 4 hours.

Computer hardware building blocks. logic gates; combinational circuits; arithmetic circuits; flip flops and sequential circuits; registers and memory; CPU design; I/O design. Course Information: 3 hours. Extensive computer use required. Credit is not given for CS 362 if the student has credit in ECE 265. Prerequisite(s): Grade of C or better in CS 211; and CS 261. Class Schedule Information: To be properly registered, students must enroll in one Lecture-Discussion and one Laboratory.

CS 377. Ethical Issues in Computing. 3 hours.

Communication skills for computing professionals: presentation organization, visual aides, delivery techniques, argument support. Ethical and societal issues in computing: privacy, intellectual property and ownership, crime. Course Information: 3 hours. Extensive computer use required. Prerequisite(s): Credit or concurrent registration in CS 251. Class Schedule Information: To be properly registered, students must enroll in one Lecture-Discussion and one Discussion.

CS 378. Framework-based Software Development for Hand-held Devices. 3 hours.

Multi-platform app development using software frameworks; the integration of framework-generated code with native code of mobile operating systems; numerous programming assignments in multiple programming languages. Course Information: Prerequisite(s): CS 342.

CS 391. Computer Science Practicum. 1 hour.

Provides students with the opportunity to apply the skills and knowledge gained in previous engineering courses within a professional, working environment. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. A maximum of 3 hour awarded toward degree requirements. Prerequisite(s): Approval of the Department.

CS 394. Special Topics in Computer Science. 1-3 hours.

Multidisciplinary computer science topics at junior-senior level that vary from term to term depending on current student and instructor interests. Course Information: Prerequisite(s): Consent of the instructor.

CS 398. Undergraduate Design/Research. 1-3 hours.

Design and/or research experience for undergraduate Computer Science majors under close supervision of a CS faculty member. Course Information: Previously listed as EECS 398. Prerequisite(s): Consent of the instructor.

CS 401. Computer Algorithms I. 3 or 4 hours.

Design and analysis of computer algorithms. Divide-and-conquer, dynamic programming, greedy method, backtracking. Algorithms for sorting, searching, graph computations, pattern matching, NP-complete problems. Course Information: Same as MCS 401. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MCS 360; or Grade of C or better in CS 251.

CS 402. Algorithms in Practice. 3 or 4 hours.

Design, implementation and presentation of algorithms and data structures emphasizing dynamic programming and both exact and heuristic approaches to NP-hard problems; problem solving sessions, programming projects and presentations. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 401; and consent of the instructor.

CS 407. Economics and Computation. 3 or 4 hours.

Techniques for analysis of markets, making decisions with other strategic agents, and understanding how algorithms affect the incentives of market participants. These include game theory, mechanism design, auction theory, and social choice theory. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 251.

CS 411. Artificial Intelligence I. 3 or 4 hours.

Problem representation; rule-based problem-solving methods; heuristic search techniques. Application to expert systems, theorem proving, language understanding. Individual projects. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 251.

CS 412. Introduction to Machine Learning. 3 or 4 hours.

Mechanism, implementation, and application of systems that improve automatically based on past experience, including classification, density estimation, clustering, and online learning tasks and solutions. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. MATLAB will be used for some of the homework assignments, but prior experience with it is not required. Prerequisite(s): Grade of C or better in CS 251; and IE 342 or STAT 381 or ECE 341.

CS 415. Computer Vision I. 3 or 4 hours.

Computer vision system design. Segmentation and representation of regions and boundaries; image filtering; object recognition; advanced topics (examples: texture, stereo, color); applications. Programming assignments. Course Information: 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 487. Prerequisite(s): CS 202 or MCS 360; or consent of the instructor.

CS 418. Introduction to Data Science. 3 or 4 hours.

Provides an in-depth overview of data science in engineering. Topics include modeling, storage, manipulation, integration, classification, analysis, visualization, information extraction, and big data in the engineering domain. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 251; and STAT 381 or IE 342 or ECE 341.

CS 421. Natural Language Processing. 3 or 4 hours.

Design of natural language processing systems; part-of speech tagging, statistical and symbolic parsers; semantic interpretation; discourse and dialogue processing; natural language generation; applications. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 301 or MCS 441.

CS 422. User Interface Design and Programming. 3 or 4 hours.

User interface design, implementation, and evaluation: user-centered design methodologies, windowing systems, I/O devices and techniques, event-loop programming, user studies. Programming projects. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 342.

CS 423. Natural User Interactions. 3 or 4 hours.

Introduces students to the field of natural user interactions, including topics such as design principles, hardware-to-software development pipeline (including various existing platforms, toolkits and APIs), as well as effective evaluation techniques. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 342. Recommended background: CS 422 or CS 522.

CS 424. Visualization and Visual Analytics. 3 or 4 hours.

Geospatial visualization, scientific visualization, medical visualization, information visualization, and social network visualization, interaction, data analysis, human factors, dynamic data, privacy, uncertainty, data transforms. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 251.

CS 425. Computer Graphics I. 0-4 hours.

Principles of interactive computer graphics. Raster and vector display, techniques and hardware considerations. Introduction to two-dimensional and three dimensional rendering. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 251. Class Schedule Information: To be properly registered, students must enroll in one Laboratory-Discussion and one Lecture-Discussion.

CS 426. Video Game Design and Development. 3 or 4 hours.

Theory and practice of video game design and programming. Students will form interdisciplinary teams, to design, build and demonstrate video games or related interactive simulation environments. Course Information: Same as DES 426. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 251.

CS 427. Creative Coding. 3 or 4 hours.

Creative Coding investigates how contemporary computational techniques can inspire novel forms of art making, providing students with the skills to make use of technology for expressive purposes. Course Information: Same as DES 427. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 251.

CS 428. Virtual, Augmented and Mixed Reality. 3 or 4 hours.

Virtual reality, augmented reality, and mixed reality environments, display devices, input devices, tracking, navigation, interaction, collaboration, generating visuals and sounds, software tools, applications, evaluation, safety. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 342; or consent of the instructor.

CS 440. Software Engineering I. 3 or 4 hours.

Software life-cycle model, requirement specification techniques, large-scale software design techniques and tools, implementation issues, testing and debugging techniques, software maintenance. Course Information: 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 470. Prerequisite(s): CS 342.

CS 441. Engineering Distributed Objects For Cloud Computing. 3 or 4 hours.

Provides a broad but solid overview of engineering distributed object for cloud computing. Students will learn the theory and principles of engineering distributed objects for cloud environments. Programming assignments required. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 341 or Grade of C or better in CS 342; and Grade of C or better in CS 361.

CS 442. Software Engineering II. 3 or 4 hours.

Advanced concepts in software development: requirements engineering, cost estimation, risk analysis, extreme programming, regression test case selection, and design patterns. Software lab assignments required. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 440.

CS 450. Introduction to Networking. 3 or 4 hours.

Network protocols, algorithms, and software issues. Topics include the Open Systems Interconnect model, data link, network and transport layers, TCP/IP, ATM, mobile networks. Course Information: 3 undergraduate hours. 4 graduate hours. Credit is not given for CS 450 if the student has credit for ECE 433. Prerequisite(s): CS 361.

CS 453. Introduction to Parallel and Distributed Processing. 3 or 4 hours.

Foundations of parallel and distributed processing; clusters and parallel systems; communication primitives; programming with MPI; scalability; distributed graph algorithms; distributed mutual exclusion, deadlock detection, peer-to-peer systems. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 251. Recommended background: CS 401.

CS 454. Principles of Concurrent Programming. 3 or 4 hours.

Focuses on the foundations and basic principles of concurrent programming, covering high-level notions of concurrent correctness and connecting those abstract concepts to real-world programming constructs and algorithms used in practice. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 361.

CS 455. Design and Implementation of Network Protocols. 3 or 4 hours.

Network protocols and their software, Examines OS network interface through network layers. Topics include routing, congestion control, fault tolerance, security, name servers, multicast, and performance. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 340 and CS 450.

CS 461. Operating Systems Design and Implementation. 3 or 4 hours.

Kernel design and implementation; process management; effective management of machine resources: resource allocation and scheduling, mutual exclusion, deadlock avoidance, memory management policies, devices and file systems, and client-server systems. Course Information: 3 undergraduate hours; 4 graduate hours. Previously listed as CS 385. Extensive computer use required. Prerequisite(s): CS 361.

CS 463. Systems Performance and Concurrent Computing. 3 or 4 hours.

Understanding the many systems factors that affect program performance, including program design for concurrent computing, profiling and program optimization. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 361. Recommended Background: CS 461.

CS 466. Computer Architecture. 3 or 4 hours.

Design principles of computer architecture. Topics include: instruction set architecture, pipelining, instruction-level parallelism, caches, main memory, and thread-level parallelism. Course Information: Same as ECE 466. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): ECE 366 or CS 261.

CS 468. Network Security. 3 or 4 hours.

Introduces basic concepts of security and privacy, and covers the principles and practice of network security. Given the ubiquitousness of network communications, this course explores a range of systems and applications, and the threats they face. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 361.

CS 472. Provably Correct Programming. 3 or 4 hours.

Introduction to interactive theorem proving and program logics, with the goal of specifying and proving the correctness of programs. Learn to develop machine-assisted formal mathematical proofs and prove that programs satisfy their specifications. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 341. Recommended background: CS 341 or experience with functional programming.

CS 473. Compiler Design. 3 or 4 hours.

Language translation: lexical analysis, parsing schemes, symbol table management, syntax and semantic error detection, and code generation. Development of fully-functional compiler. Course Information: Same as MCS 411. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 301 or Grade of C or better in MCS 441; and Grade of C or better in CS 251 or Grade of C or better in MCS 360; and Grade of C or better in CS 261.

CS 474. Object-Oriented Languages and Environments. 3 or 4 hours.

Data abstraction, classes and objects, messages and methods, polymorphism and dynamic binding, inheritance. Object-oriented design. Pure and hybrid object-oriented languages. Course Information: 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 474. Prerequisite(s): CS 342.

CS 475. Object-Oriented Programming. 3 or 4 hours.

OO Paradigm: classes, messages, methods, variables, inheritance, polymorphism; the C++ and Java languages; programming labs required. Course Information: 3 undergraduate hours. 4 graduate hours. Credit is not given for CS 475 if the student has credit for CS 340 or CS 474. Extensive computer use required. Prerequisite(s): CS 202; and consent of the instructor.

CS 476. Programming Language Design. 3 or 4 hours.

Definition, design, and implementation of programming languages. Syntactic and semantic description; variable bindings, control and data structures, parsing, code generation, optimization; exception handling; data abstraction. Course Information: Same as MCS 415. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 476. Prerequisite(s): MCS 360; or CS 341.

CS 477. Public Policy, Legal, and Ethical Issues in Computing, Privacy, and Security. 3 or 4 hours.

Contemporary topics involving legal, public policy, and/or ethical issues in computing, especially privacy, security, and surveillance. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Consent of the instructor.

CS 478. Software Development for Mobile Platforms. 3 or 4 hours.

Design and implementation of mobile applications; operating systems, object-oriented languages and programming environments for mobile platforms; integration with hardware components; and location-aware applications. Programming assignments required. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 342.

CS 479. Wearables and Nearables Technology Laboratory. 3 or 4 hours.

Practical experience in design and development of wearable and nearable devices. Acquisition and processing of sensors data. Design and development of user-friendly user interface. Course Information: Same as BME 479. 3 undergraduate hours; 4 graduate hours. Extensive computer use required. Prerequisite(s): BME 240; or CS 251; or consent of the instructor. Recommended background: ECE 210 and CS 109.

CS 480. Database Systems. 3 or 4 hours.

Database design, logical design, physical design. Relational databases. Recovery, concurrency control. Normalization. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 251.

CS 483. Big Data Mining. 3 or 4 hours.

Data mining for very large datasets from a foundational and practical standpoint including similarity search, data-stream processing, advanced technology for search engines, recommendation systems, and graph analytics. Course Information: 3 undergraduate hours; 4 graduate hours. Credit is not given for CS 483 if the student has credit in CS 583. Prerequisite(s): Grade of C or better in CS 251; and ECE 341 or IE 342 or STAT 381. Recommended background: CS 401 and CS 480.

CS 484. Secure Web Application Development. 3 or 4 hours.

Web applications integrate concepts from software engineering, systems programming, and computer security. Teaches security through web development, enabling students to design, deploy, scale, attack, and defend modern web applications. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Credit or concurrent registration in CS 341.

CS 485. Networked Operating Systems Programming. 4 or 5 hours.

Concepts, design, and programming of multi-process and distributed systems; inter-process communications; fault tolerance; distributed programming semantics. Programming assignments and project required. Course Information: 4 undergraduate hours. 5 graduate hours. Previously listed as EECS 471. Prerequisite(s): CS 385.

CS 487. Building Secure Computer Systems. 3 or 4 hours.

Building and programming secure systems; protecting systems from threats and reduction of vulnerabilities; Includes application, host and network security. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 385; and senior standing or above; or consent of the instructor.

CS 488. Introduction to Cryptography. 3 or 4 hours.

Foundational concepts: encryption schemes, hash functions, message authentication codes, digital signatures. Practical systems: stream and block ciphers, SHA. Advanced topics: secure computation, zero-knowledge proofs, blockchain. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Prerequisite(s): Grade of C or better in CS 251; and IE 342 or STAT 381 or STAT 401.

CS 489. Human Augmentics. 3 or 4 hours.

Study of technologies for augmentation of human capabilities; human limitations; implants and wearable technologies; implants; brain-computer interfaces; exoskeletons; sensors and networks. Includes project work. Course Information: Same as BME 489. 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 251; or consent of the instructor.

CS 491. Seminar. 1-4 hours.

Topics of mutual interest to a faculty member and a group of students. Offered as announced by department bulletin or the Timetable. Course Information: May be repeated. Previously listed as EECS 491. Prerequisite(s): Consent of the instructor.

CS 494. Special Topics in Computer Science. 1-4 hours.

Multidisciplinary computer science topics for undergrad seniors and graduate student that vary from term to term depending on current student and instructor interests. Course Information: 1 to 3 undergraduate hours; 2 to 4 graduate hours. Prerequisite(s): Consent of the instructor.

CS 499. Professional Development Seminar. 0 hours.

Graduating seniors will be provided with information regarding future career paths and will provide information regarding the program to be used for assessment purposes. Students take the CS Major Field Exam as part of this course. Course Information: Satisfactory/Unsatisfactory grading only. Prerequisite(s): Open only to seniors; and approval of the department. Must be taken in the student's last semester of study.

CS 501. Computer Algorithms II. 4 hours.

Continuation of MCS 401 (same as CS 401). Advanced topics in algorithms. Lower bounds. Union-find problems. Fast Fourier transform. Complexity of arithmetic, polynomial, and matrix calculations. Approximation algorithms. Parallel algorithms. Course Information: Same as MCS 501. Prerequisite(s): MCS 401 or CS 401.

CS 502. Design and Analysis of Efficient Algorithms in Computational Molecular Biology. 4 hours.

Design and analysis of efficient algorithms for computational problems in molecular biology such as genome sequencing and construction of evolutionary trees. Course Information: Prerequisite(s): Grade of B or better in CS 401; or consent of the instructor. Recommended background: CS 501 and some exposure to basic chemistry and biology.

CS 505. Computability and Complexity Theory. 4 hours.

Turing machines, undecidability, Rice's theorem, recursively enumerable sets, complexity theory, hierarchy theorems, alternation, parallel complexity classes, complete problems. Course Information: Previously listed as EECS 561. Prerequisite(s): CS 301.

CS 506. An Introduction to Quantum Computing. 4 hours.

Quantum computing models and their algorithmic applications. Course Information: Prerequisite(s): CS 401; or consent of the instructor. Recommended background: CS 501 and background in linear algebra at advanced undergraduate level.

CS 511. Artificial Intelligence II. 4 hours.

Predicate logic and resolution strategies, reasoning under uncertainty, incomplete information reasoning, state and change, planning, temporal reasoning knowledge representation, learning, advanced search techniques and current topics. Course Information: Previously listed as EECS 584. Prerequisite(s): CS 411.

CS 512. Advanced Machine Learning. 4 hours.

Course studies theoretical principle and analysis of systems that make sense of data, along with scalable implementations in computation. Covers structured data modeling, probabilistic inference for big data, deep learning and large scale optimization. Course Information: Extensive computer use required. Prerequisite(s): CS 412; and MATH 310 or MATH 320; or consent of the instructor.

CS 514. Applied Artificial Intelligence. 4 hours.

Anatomy of applied AI systems, rule-based expert systems and their theoretical foundation, fuzzy logic with applications, Bayesian networks and automated probabilistic reasoning, influence diagrams and automated optimal decision-making, and neural networks. Course Information: Previously listed as EECS 585. Prerequisite(s): CS 411.

CS 515. Advanced Computer Vision. 4 hours.

Analysis of 3-D scene images. Shape from shading, texture, line drawings, and surface orientation. Surface representation methods and reconstruction of 3-D scenes. Design of knowledge-based vision systems and 3-D applications. Course Information: Previously listed as EECS 587. Prerequisite(s): CS 415.

CS 516. Responsible Data Science and Algorithmic Fairness. 4 hours.

Views data-driven and algorithmic decision making through the lens of data ethics and societal impacts. It empowers the students with necessary tools to conduct research in this area. Course Information: Prerequisite(s): CS 412 and CS 401; or consent of the instructor.

CS 518. Deep Learning for Computer Vision. 4 hours.

Covers convolutional neural networks for object recognition, recurrent neural networks for video modeling, generative adversarial networks for image generation and translation, and attention models and their applications. Course Information: Prerequisite(s): CS 251; and MATH 310 or MATH 320; or consent of the instructor. Recommended background: CS 412 or CS 415 or CS 512 or CS 515.

CS 519. Machine Learning on Graphs. 4 hours.

Current machine learning and AI-based techniques on analyzing and learning complex networked data for real-world problems in multiple domains such as infrastructure, healthcare, and the Web. Course Information: Extensive computer use required. Prerequisite(s): CS 401; and CS 418 or CS 412 or CS 512; or consent of the instructor. Recommended background: Basic background in Graphs, Linear Algebra, Algorithms, and Machine Learning.

CS 520. Causal Inference and Learning. 4 hours.

Causal reasoning, structural causal models, interventions and counterfactuals, identification, mediation, attribution, dealing with confounding, selection, and interference bias. Course Information: Prerequisite(s): CS 412; or consent of the instructor.

CS 521. Statistical Natural Language Processing. 4 hours.

Statistical techniques for Natural Language Processing, including maximum likelihood estimation, Hidden Markov Models, and probabilistic grammars; and their applications, including parsing, semantic inference, dialogue processing and summarization. Course Information: Prerequisite(s): CS 421; or consent of the instructor.

CS 522. Human-Computer Interaction. 4 hours.

The computer-user interface: media, languages, interaction techniques, user modeling. Human factors in software development. Theory, experimental methods, evaluation, tools. Project required. Course Information: Same as PSCH 522 and COMM 522. Previously listed as EECS 578. Prerequisite(s): CS 422; or consent of the instructor.

CS 523. Multi-Media Systems. 4 hours.

Principles of multi-media interface design for computer applications. Multi-disciplinary approaches to integrating text, still images, animation, and sound into human-computer interfaces. Course Information: Previously listed as EECS 579. Prerequisite(s): CS 422; or consent of the instructor.

CS 524. Big Data Visualization and Analytics. 4 hours.

Introduces students to big data visualization and analytics, focusing on the design and implementation of visual analytics systems capable of handling large data, by combining visualization, data management and mining techniques. Course Information: Extensive computer use required. Prerequisite(s): CS 424; or consent of the instructor. Recommended background: CS 342 and CS 401 and programming experience in C/C++, Java, Python or Javascript.

CS 526. Computer Graphics II. 4 hours.

State of the art in computer graphics, visualization and interactive techniques. Course Information: Same as AD 588. Prerequisite(s): CS 488; or consent of the instructor. Class Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture-Discussion.

CS 528. Virtual Reality. 4 hours.

Principles of virtual reality and virtual environments: hardware, software, input and control devices, design issues, and quantitative assessment of user performance. Course Information: Prerequisite(s): CS 488 or consent of the instructor.

CS 529. Visual Data Science. 4 hours.

Introduction to key design principles and techniques for interactively visualizing and analyzing data; including visual encodings, geometric modeling, and scientific workflows. Course Information: Recommended Background: CS 342, CS 401, Computer graphics experience.

CS 530. Advanced Topics in Human-Computer Interaction. 4 hours.

Investigation of advanced contemporary topics, including analyses of research principles, methodologies, and evaluation techniques. Course topics evolve in concert with key advances and trending themes in human-computer interaction research. Course Information: Prerequisite(s): CS 422; and consent of the instructor. Recommended background: CS 522.

CS 531. Social Robotics and Human-Robot Interaction. 4 hours.

CS 532. Advanced Topics in Natural Language Processing. 4 hours.

Investigation of advanced contemporary topics in natural language processing, including analyses of research principles, methodologies, and evaluation techniques. Course topics evolve in concert with key advances and trending themes in NLP research. Course Information: Prerequisite(s): CS 421 or CS 521 or CS 582 or CS 583; or consent of the instructor. Recommended background: At least one natural language processing course and at least one AI or machine learning course.

CS 533. Deep Learning for Natural Language Processing. 4 hours.

Provides an introduction to research in deep learning applied to natural language processing, including analyses of research principles, methodologies, and evaluation techniques. Includes project work. Course Information: Prerequisite(s): CS 412; and CS 421 or CS 521; or consent of the instructor. Recommended background: Linear algebra and calculus, machine learning, natural language processing.

CS 535. User Experience Research Methods. 4 hours.

Introduction to qualitative and quantitative methods, e.g., interviews, surveys, and controlled experiments, to study the use; experience of computing applications and develop actionable insights. Generative and evaluative user experience research. Course Information: Prerequisite(s): CS 422 or CS 522; or consent of the instructor or an introductory course in human-computer interaction or user interface design; or equivalent practical experience.

CS 540. Advanced Topics in Software Engineering. 4 hours.

Formal methods; requirements and specification languages; program flow analysis; validation and verification; software metrics; program representations; software tools; software testing; software process. Course Information: Previously listed as EECS 570. Prerequisite(s): CS 440; or consent of the instructor.

CS 550. Advanced Computer Networks. 4 hours.

Queuing theory, datacenter networks, topologies, congestion control, load balancing, software-defined networking (SDN), and, wireless and cellular networks, supplemented by extensive discussion of current topics. Includes project work. Course Information: Extensive computer use required. Prerequisite(s): CS 450; or consent of the instructor or CS 450 equivalent.

CS 553. Distributed Computing Systems. 4 hours.

Distributed Computing systems terminology and design issues. Data communications protocols; distributed operating systems, resource management, and synchronization; security; database systems. Course Information: Previously listed as EECS 573. Prerequisite(s): CS 366 and CS 385.

CS 554. Advanced Topics in Concurrent Computing Systems. 4 hours.

Petri nets, methods and their applications to concurrent, distributed, parallel, and data-flow systems; and logic programming and rule-based systems. Course Information: Previously listed as EECS 564. Prerequisite(s): Consent of the instructor.

CS 559. Neural Networks. 4 hours.

Mathematical neuron models, learning methods, the perceptron, basic nonlinear optimization, backpropagation algorithm, associative memory, hopfield networks, SVM, vector quantization, SOM, PCA, convolutional networks, deep learning. Course Information: Same as ECE 559. Prerequisite(s): Consent of the instructor. - Knowledge of calculus, linear algebra, and the ability to write computer programs are assumed.

CS 565. Physical Design Automation. 4 hours.

Computer-aided physical design of integrated circuits; circuit partitioning and placement; floorplanning; global and detailed routing; timing optimization; general optimization tools: local search, constraint relaxation. Course Information: Same as ECE 565. Prerequisite(s): CS 401; and CS 466 or ECE 465.

CS 566. Parallel Processing. 4 hours.

Parallel processing from the computer science perspective. Includes Architecture (bus based, lockstep, SIMD), Programming Languages (Functional, traditional and extensions), compilers, interconnection networks, and algorithms. Course Information: Same as ECE 566. Prerequisite(s): CS 466 or ECE 466; and CS 401.

CS 568. Advanced Computer Security and Online Privacy. 4 hours.

Foundational and contemporary research principles, methods, and results in network security, systems security, empirical security and privacy studies, and human-centered security. Includes project work. Course Information: Extensive computer use required. Recommended Background: CS 361 or equivalent.

CS 569. High-Performance Processors and Systems. 4 hours.

Instruction-level parallelism, multiple-instruction issue, branch prediction, instruction and data prefetching, novel cache and DRAM organization, high-performance interconnect, compilation issues, case studies. Course Information: Same as ECE 569. Prerequisite(s): CS 466 or ECE 466; and graduate standing.

CS 580. Query Processing in Database Systems. 4 hours.

Query processing in deductive databases and in distributed/parallel databases systems. Course Information: Same as IDS 511. Previously listed as EECS 580. Prerequisite(s): CS 480.

CS 581. Database Management Systems. 4 hours.

Concurrency control; reliability, recovery, data integrity, database machines and current topics. Course Information: Previously listed as EECS 581. Prerequisite(s): CS 480.

CS 582. Information Retrieval. 4 hours.

Document retrieval, office automation. Optimal retrieval, relevance feedback, clustered search, construction of clusters, model of term weighting, thesaurus construction, multimedia data, handling of audio and video. Course Information: Previously listed as EECS 582. Prerequisite(s): CS 480.

CS 583. Data Mining and Text Mining. 4 hours.

Provide students with a sound knowledge in data and text mining tasks and techniques, as well as, ensure students ability to use this technology. Course Information: Prerequisite(s): CS 401. Recommended background: Algorithm Probability.

CS 584. Advanced Data Mining. 4 hours.

Data stream mining - including stream clustering, classification and frequent pattern mining. And, relation/link/graph mining - including frequent subgraphs, relational clustering and classification. Course Information: Prerequisite(s): CS 583 and graduate standing; or consent of the instructor.

CS 586. Data and Web Semantics. 4 hours.

Data modeling and semantics; knowledge representation, querying, and reasoning for the semantic web; metadata; data integration and interoperation; web services; applications. Course Information: Extensive computer use required. Prerequisite(s): CS 480 or equivalent.

CS 587. Computer Systems Security. 4 hours.

Security policies; security properties; protection mechanisms for single systems, networked systems, and distributed computing; trust; attacks on computer systems. Course Information: Extensive computer use required. Prerequisite(s): CS 485 or CS 450; or consent of the instructor.

CS 588. Security and Privacy in Networked and Distributed Systems. 4 hours.

Introduction to cryptographic principles; network authentication; confidentiality; integrity; distributed denial of service; certificates and distributed architectures for security; multiorganization trust; privacy, anonymity in distributed systems. Course Information: Prerequisite(s): CS 401; and CS 450 or CS 485; or consent of the instructor.

CS 590. Research Methods in Computer Science. 4 hours.

Introduces a variety of issues pertaining to doing research in computer science: exposure to methods in different areas of computer science; bibliographic search; producing research papers and oral presentations; evaluating the work of others; ethics. Course Information: Satisfactory/Unsatisfactory grading only. Prerequisite(s): Open only to Ph.D. degree students; and consent of the instructor.

CS 591. Computer Science Internship. 1 hour.

Provides an opportunity for students to apply their learning in a practical real-world setting. Students can work on a computer science project in a business or a non-profit organization. Involves interaction with the industry and professionals. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. A maximum of 3 hours awarded toward degree requirements. Prerequisite(s): Approval of the Department.

CS 594. Special Topics. 4 hours.

Subject matter varies from term to term and section to section, depending on the specialities of the instructor. Course Information: May be repeated. Students may register in more than one section per term. Previously listed as EECS 594. Prerequisite(s): Consent of the instructor.

CS 595. Departmental Seminar. 0 hours.

Seminar by faculty and invited speakers. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Previously listed as EECS 595.

CS 597. Project Research. 0-9 hours.

A research design or reading project approved by the committee appointed by the director of graduate studies. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Previously listed as EECS 597. Prerequisite(s): Consent of the instructor. For CS majors only.

CS 598. M.S. Thesis Research. 0-16 hours.

M.S. thesis work under the supervision of a graduate advisor. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Previously listed as EECS 598. Prerequisite(s): Consent of the instructor. For CS majors only.

CS 599. Ph.D. Thesis Research. 0-16 hours.

Ph.D. thesis work under supervision of a graduate advisor. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Previously listed as EECS 599. Prerequisite(s): Consent of the instructor. For CS students only.