Computer Science (CS)
Courses
CS 102. Fundamentals of Computer and Information Security. 4 Credits.
This course introduces fundamental concepts, terminologies, principles, methods, and scenarios of computer and information security.
Additional Information:
Science Area
CS 110. Fluency with Information Technology. 4 Credits.
Introduction to the study of computer-based information systems (information technology). Overview of computing, including basics of the internet and world wide web and issues such as security and privacy. Students create websites using HTML and CSS.
Additional Information:
Science Area
CS 111. Introduction to Web Programming. 4 Credits.
Project-based approach to learning computer programming by building interactive web pages using JavaScript and HTML. Programming concepts including structured and object-oriented program design. CS 110 recommended preparation.
Requisites: Prereq: MATH 101 or equivalent.
Additional Information:
BS Math or Science Area
CS 122. Introduction to Programming and Problem Solving. 4 Credits.
Computational problem solving, algorithm design, data structures, and programming using a multi-paradigm programming language. Introduces techniques for program design, testing, and debugging.
Requisites: Prereq: MATH 101 or equivalent.
Additional Information:
BS Math or Science Area
CS 196. Field Studies: [Topic]. 1-2 Credits.
Repeatable.
Repeatable 99 times
CS 198. Workshop: [Topic]. 1-2 Credits.
Repeatable.
Repeatable 99 times
CS 199. Special Studies: [Topic]. 1-5 Credits.
Repeatable.
Repeatable 99 times
CS 199L. Special Studies in Computer Science: [Topic]. 1-5 Credits.
Repeatable.
Repeatable 99 times
CS 210. Computer Science I. 4 Credits.
Basic concepts and practices of computer science. Topics include algorithmic problem solving, levels of abstraction, object-oriented design and programming, software organization, analysis of algorithm and data structures. Sequence with CS 211, CS 212.
Requisites: Prereq: MATH 112Z. Prior programming experience strongly encouraged.
Additional Information:
BS Math or Science Area
CS 211. Computer Science II. 4 Credits.
Basic concepts and practices of computer science. Topics include algorithmic problem solving, levels of abstraction, object-oriented design and programming, software organization, analysis of algorithm and data structures. Sequence with CS 210, CS 212.
Requisites: Prereq: CS 210.
Additional Information:
BS Math or Science Area
CS 212. Computer Science III. 4 Credits.
Basic concepts and practices of computer science. Topics include algorithmic problem solving, levels of abstraction, object-oriented design and programming, software organization, analysis of algorithm and data structures. Sequence with CS 210, CS 211.
Requisites: Prereq: CS 211.
Additional Information:
BS Math or Science Area
CS 299. Special Studies: [Topic]. 1-5 Credits.
Repeatable.
Repeatable 99 times
CS 313. Intermediate Data Structures. 4 Credits.
Design and analysis of data structures as means of engineering efficient software; attention to data abstraction and encapsulation. Lists, trees, heaps, stacks, queues, dictionaries, priority queues.
Requisites: Prereq: CS 210, CS 211, CS 212, MATH 231, MATH 232 with grades of B- or better.
CS 314. Computer Organization. 4 Credits.
Introduction to computer organization and instruction-set architecture -- digital logic design, binary arithmetic, design of central processing unit and memory, machine-level programming.
Requisites: Prereq: CS 210, CS 211, CS 212 with grades of B- or better.
CS 315. Intermediate Algorithms. 4 Credits.
Algorithm design, worst-case and average-behavior analysis, correctness, computational complexity.
Requisites: Prereq: CS 313.
CS 322. Introduction to Software Engineering. 4 Credits.
A project-intensive introduction to software engineering intended to build skills, knowledge, and habits of mind that prepare students for 400-level computer science courses, internships, and other software.
Requisites: Prereq: CS 210, CS 211, CS 212 with grades of B- or better.
CS 330. C/C++ and Unix. 4 Credits.
Practical software design and programming activities in a C/C++ and Unix environment, with emphasis on the details of C/C++ and good programming style and practices.
Requisites: Prereq: CS 314.
CS 332. System and Security Administration Lab. 4 Credits.
This lab course is designed to help students develop hands-on skills in system and security administration, based on the following relevant Cyber Defense knowledge units defined by the National Security Agency (NSA) National Centers of Academic Excellence in Cybersecurity (NCAE-C): Operating System Administration (OSA), which provides students with skill to perform basic operations involved in system administration of operating systems; and Operating Systems Hardening (OSH), which provides students with the ability to apply methods such as managing applications, services, and network ports to improve the security and robustness of operating systems.
Requisites: Prereq: CS 330.
CS 333. Applied Cryptography. 4 Credits.
This course provides a systematic study of cryptography and its application. It covers cryptographic algorithms, including symmetric-key cryptography, public-key cryptography, cryptanalysis, cryptographic hash functions, and their usage toward message authentication codes, digital signatures, key management and distribution, and user authentication protocols.
Requisites: Prereq: CS 212.
CS 372M. Machine Learning for Data Science. 4 Credits.
Introduction to Machine Learning, with an emphasis on topics relevant for data science. Multilisted with DSCI 372M.
Requisites: Prereq: CS 212, DSCI 345M, MATH 342.
Equivalent to: DSCI 372M
CS 399. Special Studies: [Topic]. 1-5 Credits.
Repeatable when the topic changes.
Repeatable 99 times when topic changes
CS 400M. Temporary Multilisted Course. 1-5 Credits.
Repeatable
Repeatable 99 times
CS 401. Research: [Topic]. 1-16 Credits.
Repeatable.
Requisites: Prereq: CS 313.
Repeatable 99 times
CS 402. Supervised College Teaching. 1-2 Credits.
Repeatable.
Requisites: Prereq: CS 313.
Repeatable 99 times
CS 403. Thesis. 1-12 Credits.
Repeatable.
Requisites: Prereq: CS 313.
Repeatable 99 times
CS 404. Internship: [Topic]. 1-4 Credits.
Repeatable.
Requisites: Prereq: CS 313.
Repeatable 99 times
CS 405. Reading and Conference: [Topic]. 1-12 Credits.
Repeatable up to five times.
Requisites: Prereq: CS 313.
Repeatable 5 times
CS 406. Practicum: [Topic]. 1-2 Credits.
Supervised consulting. Students provide learning assistance in computer science courses. Repeatable for a maximum of 4 credits.
Requisites: Prereq: CS 313.
Repeatable 3 times for a maximum of 4 credits
CS 407. Seminar: [Topic]. 1-5 Credits.
Repeatable when the topic changes. Opportunity to study in greater depth specific topics arising out of other courses.
Requisites: Prereq: CS 313.
Repeatable 99 times when topic changes
CS 408. Workshop: [Topic]. 1-21 Credits.
Repeatable.
Requisites: Prereq: CS 313.
Repeatable 99 times
CS 409. Terminal Project. 1-12 Credits.
Repeatable.
Requisites: Prereq: CS 313.
Repeatable 99 times
CS 410. Experimental Course: [Topic]. 1-5 Credits.
Repeatable when the topic changes.
Repeatable 99 times when topic changes
CS 413. Advanced Data Structures. 4 Credits.
Complex structures, storage management, sorting and searching, hashing, storage of texts, and information compression.
Requisites: Prereq: CS 315.
CS 415. Operating Systems. 4 Credits.
Principles of operating system design. Process and memory management, concurrency, scheduling, input-output and file systems, security.
Requisites: Prereq: CS 330.
CS 420. Automata Theory. 4 Credits.
Provides a mathematical basis for computability and complexity. Models of computation, formal languages, Turing machines, solvability. Nondeterminism and complexity classes.
Requisites: Prereq: CS 315.
CS 422. Software Methodology I. 4 Credits.
Technical and nontechnical aspects of software development, including specification, planning, design, development, management and maintenance of software projects. Student teams complete projects.
Requisites: Prereq: CS 313.
CS 423. Software Methodology II. 4 Credits.
Application of concepts and methodologies covered in CS 422. Student teams complete a large system design and programming project. Final system specification, test plan, user documentation, and system walk throughs.
Requisites: Prereq: CS 422 with a grade of B- or better.
CS 425. Principles of Programming Languages. 4 Credits.
Syntax and semantics. Scope rules, environments, stores, denoted and expressed values, procedures, and parameters. Definitional interpreters. Types, overloading, parametric polymorphism, and inheritance. Varieties of abstraction.
Requisites: Prereq: CS 315.
CS 429. Computer Architecture. 4 Credits.
RISC (reduced instruction-set computer) and CISC (complex instruction-set computer) design, storage hierarchies, high-performance processor design, pipelining, vector processing, networks, performance analysis.
Requisites: Prereq: CS 313, CS 314, CS 330.
CS 431. Introduction to Parallel Computing. 4 Credits.
Parallel architecture, theory, algorithms, and programming with emphasis on parallel programming, focusing on models, languages, libraries, and runtime systems.
Requisites: Prereq: CS 330.
CS 432. Introduction to Networks. 4 Credits.
Principles of computer network design. Link technologies, packet switching, routing, inter-networking, reliability. Internet protocols. Programming assignments focus on protocol design.
Requisites: Prereq: CS 330. CS 415 recommended.
CS 433. Computer and Network Security. 4 Credits.
Security for various aspects of computers and networks. Elementary cryptography, program security, trusted operating systems, network security, privacy, and legal and ethical issues.
Requisites: Prereq: CS 415.
CS 434. Computer and Network Security II. 4 Credits.
This course covers security threats and solutions for distributed systems and networks, particularly the Internet, the Internet of Things, and distributed systems based on them.
Requisites: Prereq: CS 433.
CS 436. Secure Software Development. 4 Credits.
This course establishes a foundation for applying security principles to the lifecycle of software development in order to minimize software vulnerabilities and counter cyber threats.
Requisites: Prereq: CS 330.
CS 437. Computer and Network Security Practicum. 4 Credits.
This course is designed to help students solidify knowledge and develop hands-on skills in computer network security. Students will practice various attack and defense techniques. Specifically, we will systematically study each layer of the Internet, discuss the design and implementation vulnerabilities at each layer, and demonstrate how attacks may exploit the vulnerabilities. This course will cover many classic attacks in great technical detail in addition to high-level concepts and theories, to help students deeply understand why and how each attack works. We'll also discuss how each attack may be handled, and students will learn defense techniques such as firewalls, etc.
Requisites: Prereq: CS 433.
CS 441. Introduction to Computer Graphics. 4 Credits.
Introduction to the hardware, geometrical transforms, interaction techniques, and shape representation schemes that are important in interactive computer graphics. Programming assignments using contemporary graphics hardware and software systems.
Requisites: Prereq: CS 330.
CS 443. User Interfaces. 4 Credits.
Introduction to user interface software engineering. Emphasis on theory of interface design, understanding the behavior of the user, and implementing programs on advanced systems.
Requisites: Prereq: CS 313.
CS 445. Modeling and Simulation. 4 Credits.
Theoretical foundations and practical problems for the modeling and computer simulation of discrete and continuous systems. Simulation languages, empirical validation, applications in computer science.
Requisites: Prereq: CS 315, CS 330.
CS 451. Database Processing. 4 Credits.
Fundamental concepts of DBMS. Data modeling, relational models and normal forms. File organization and index structures. SQL, embedded SQL, and concurrency control.
Requisites: Prereq: CS 313, CS 314.
CS 453. Data Mining. 4 Credits.
Databases, machine learning, artificial intelligence, statistics, and data visualization. Examines data warehouses, data preprocessing, association and classification rule mining, and cluster analysis.
Requisites: Prereq: CS 451.
CS 461. Introduction to Compilers. 4 Credits.
Lexical analysis, parsing, attribution, code generation.
Requisites: Prereq: CS 314, CS 425. CS 420 strongly recommended.
CS 471. Introduction to Artificial Intelligence. 4 Credits.
Basic themes, issues, and techniques of artificial intelligence, including agent architecture, knowledge representation and reasoning, problem solving and planning, game playing, and learning.
Requisites: Prereq: CS 315.
CS 472. Machine Learning. 4 Credits.
A broad introduction to machine learning and its established algorithms. Topics include concept learning, decision trees, neural network.
Requisites: Prereq: CS 315.
CS 473. Probabilistic Methods for Artificial Intelligence. 4 Credits.
Fundamental techniques for representing problems as probability distributions, performing inference, and learning from data. Topics include Bayesian and Markov networks, variable elimination, loopy belief propagation, and parameter.
Requisites: Prereq: CS 315.
CS 500M. Temporary Multilisted Course. 1-5 Credits.
Repeatable.
Repeatable 99 times
CS 503. Thesis. 1-16 Credits.
Repeatable.
Repeatable 99 times
CS 507. Seminar: [Topic]. 1-5 Credits.
Repeatable. Opportunity to study in greater depth specific topics arising out of other courses.
Repeatable 99 times
CS 508. Workshop: [Topic]. 1-21 Credits.
Repeatable.
Repeatable 99 times
CS 510. Experimental Course: [Topic]. 1-5 Credits.
Repeatable.
Repeatable 99 times
CS 513. Advanced Data Structures. 4 Credits.
Complex structures, storage management, sorting and searching, hashing, storage of texts, and information compression.
CS 520. Automata Theory. 4 Credits.
Provides a mathematical basis for computability and complexity. Models of computation, formal languages, Turing machines, solvability. Nondeterminism and complexity classes.
CS 522. Software Methodology I. 4 Credits.
Technical and nontechnical aspects of software development, including specification, planning, design, development, management and maintenance of software projects. Student teams complete projects.
CS 523. Software Methodology II. 4 Credits.
Student teams complete a large system design and programming project. Final system specifications, test plan, user documentation, and system walk-through.
Requisites: Prereq: CS 522.
CS 529. Computer Architecture. 4 Credits.
RISC (reduced instruction-set computer) and CISC (complex instruction-set computer) design, storage hierarchies, high-performance processor design, pipelining, vector processing, networks, performance analysis.
CS 531. Introduction to Parallel Computing. 4 Credits.
Parallel architecture, theory, algorithms, and programming with emphasis on parallel programming, focusing on models, languages, libraries, and runtime systems.
CS 532. Introduction to Networks. 4 Credits.
Principles of computer network design. Link technologies, packet switching, routing, inter-networking, reliability. Internet protocols. Programming assignments focus on protocol design.
CS 533. Computer and Network Security. 4 Credits.
Security for various aspects of computers and networks. Elementary cryptography,program security, trusted operating systems, network security, privacy, and legal and ethical issues.
CS 534. Computer and Network Security II. 1-4 Credits.
This course covers security threats and solutions for distributed systems and networks, particularly the Internet, the Internet of Things, and distributed systems based on them.
Requisites: Prereq: CS 532, CS 533.
CS 536. Secure Software Development. 4 Credits.
This course establishes a foundation for applying security principles to the lifecycle of software development in order to minimize software vulnerabilities and counter cyber threats.
CS 537. Computer and Network Security Practicum. 4 Credits.
This course is designed to help students solidify knowledge and develop hands-on skills in computer network security. Students will practice various attack and defense techniques. Specifically, we will systematically study each layer of the Internet, discuss the design and implementation vulnerabilities at each layer, and demonstrate how attacks may exploit the vulnerabilities. This course will cover many classic attacks in great technical detail in addition to high-level concepts and theories, to help students deeply understand why and how each attack works. We'll also discuss how each attack may be handled, and students will learn defense techniques such as firewalls, etc.
CS 541. Introduction to Computer Graphics. 4 Credits.
Introduction to the hardware, geometrical transforms, interaction techniques, and shape representation schemes that are important in interactive computer graphics. Programming assignments using contemporary graphics hardware and software systems.
CS 543. User Interfaces. 4 Credits.
Introduction to user interface software engineering. Emphasis on theory of interface design, understanding the behavior of the user, and implementing programs on advanced systems.
CS 545. Modeling and Simulation. 4 Credits.
Theoretical foundations and practical problems for the modeling and computer simulation of discrete and continuous systems. Simulation languages, empirical validation, applications in computer science.
CS 551. Database Processing. 4 Credits.
Fundamental concepts of DBMS. Data modeling, relational models and normal forms. File organization and index structures. SQL, embedded SQL, and concurrency control.
CS 553. Data Mining. 4 Credits.
Databases, machine learning, artificial intelligence, statistics, and data visualization. Examines data warehouses, data preprocessing, association and classification rule mining, and cluster analysis.
Requisites: Prereq: CS 551.
CS 561. Introduction to Compilers. 4 Credits.
Lexical analysis, parsing, attribution, code generation.
Requisites: Prereq: CS 520 strongly recommended.
CS 571. Introduction to Artificial Intelligence. 4 Credits.
Basic themes, issues, and techniques of artificial intelligence, including agent architecture, knowledge representation and reasoning, problem solving and planning, game playing, and learning.
CS 572. Machine Learning. 4 Credits.
A broad introduction to machine learning and its established algorithms. Topics include concept learning, decision trees, neural network.
CS 573. Probabilistic Methods for Artificial Intelligence. 4 Credits.
Fundamental techniques for representing problems as probability distributions, performing inference, and learning from data. Topics include Bayesian and Markov networks, variable elimination, loopy belief propagation, and parameter.
CS 601. Research: [Topic]. 1-16 Credits.
Repeatable.
Repeatable 99 times
CS 603. Dissertation. 1-16 Credits.
Repeatable.
Repeatable 99 times
CS 604. Internship: [Topic]. 1-4 Credits.
Repeatable.
Repeatable 99 times
CS 605. Reading and Conference: [Topic]. 1-16 Credits.
Repeatable.
Repeatable 99 times
CS 606. Field Studies: [Topic]. 1-16 Credits.
Repeatable.
Repeatable 99 times
CS 607. Seminar: [Topic]. 1-5 Credits.
Repeatable. Research topics are presented.
Repeatable 99 times
CS 608. Workshop: [Topic]. 1-16 Credits.
Repeatable.
Repeatable 99 times
CS 609. Terminal Project. 1-16 Credits.
Repeatable. Final project for master's degree without thesis.
Repeatable 99 times
CS 610. Experimental Course: [Topic]. 1-5 Credits.
Repeatable.
Repeatable 99 times
CS 621. Algorithms and Complexity. 4 Credits.
Design and analysis of algorithms, strategies for efficient algorithms, introduction to complexity theory including NP-completeness.
Requisites: Prereq: CS 520 recommended.
CS 624. Structure of Programming Languages. 4 Credits.
Introduction to axiomatic, operational, and denotational semantics. Environments, stores, and continuations. Type theory, subtypes, polymorphism, and inheritance. Functional and logic programming.
CS 630. Distributed Systems. 4 Credits.
Principles of distributed computer systems: interprocess communication, distributed file systems, distributed timing and synchronization, distributed programming, transactions, process scheduling, distributed shared memory.
Requisites: Prereq: CS 529.
CS 631. Parallel Processing. 4 Credits.
Advanced topics in parallel processing including massively parallel computer architecture, supercomputers, parallelizing compiler technology, performance evaluation, parallel programming languages, parallel applications.
Requisites: Prereq: CS 529.
CS 632. Computer Networks. 4 Credits.
Advanced issues in computer networks, focusing on research to extend the services offered by the Internet.
Requisites: Prereq: CS 532.
CS 633. Advanced Network Security. 4 Credits.
Classic and state-of-the-art research topics in network security; threats and attacks, defense algorithms and mechanisms, measurement and evaluation of both security problems and solutions. Offered alternate years.
Requisites: Prereq: CS 533.
CS 640. Writing in Computer Research. 2 Credits.
Students learn to provide and accept constructive criticism of writing samples in a workshop format.
CS 670. Data Science. 4 Credits.
Data science is the development of methods to study large and complex data sets. Methods that scale to very large data sets are of particular interest. This course introduces state-of-art data science methods focused on processing very large data sets of real-world data.
Requisites: Prereq: CS 551.