Computer Science (CS)
CS 101, COMPUTERS: APPLICATIONS AND IMPLICATIONS, 4 Credits
The varieties of computer hardware and software. The effects, positive and negative, of computers on human lives. Ethical implications of information technology. Hands-on experience with a variety of computer applications. Lec/lab.
Available via Ecampus
CS 161, INTRODUCTION TO COMPUTER SCIENCE I, 4 Credits
Overview of fundamental concepts of computer science. Introduction to problem solving, software engineering, and object-oriented programming. Includes algorithm design and program development.
Prerequisite: MTH 112 (may be taken concurrently) with C or better or MTH 112Z (may be taken concurrently) with C or better or Math Placement Test with a score of 33 or Math Placement - ALEKS with a score of 061
Available via Ecampus
CS 162, INTRODUCTION TO COMPUTER SCIENCE II, 4 Credits
Provides an overview of the fundamental concepts of computer science. Studies basic data structures, computer programming techniques and application of software engineering principles. Introduces analysis of programs.
Prerequisite: CS 161 with C or better or EECS 161 with C or better or ENGR 103 with C or better or ENGR 103H with C or better
Equivalent to: CS 162H
Available via Ecampus
CS 162H, INTRODUCTION TO COMPUTER SCIENCE II, 4 Credits
Provides an overview of the fundamental concepts of computer science. Studies basic data structures, computer programming techniques and application of software engineering principles. Introduces analysis of programs.
Attributes: HNRS – Honors Course Designator
Prerequisite: CS 161 with C or better or EECS 161 with C or better or ENGR 103 with C or better or ENGR 103H with C or better
Equivalent to: CS 162
Available via Ecampus
CS 175, *COMMUNICATIONS SECURITY AND SOCIAL MOVEMENTS, 3 Credits
Equipping students with the theory and practice of communications security, this course explores how social movements can remain effective in the context of mass surveillance and state repression.
Attributes: CPDP – Bacc Core, Perspectives, Difference/Power/Discrimination
Available via Ecampus
CS 199, SPECIAL TOPICS/COMPUTER SCIENCE, 1-16 Credits
This course is repeatable for 16 credits.
CS 201, COMPUTER PROGRAMMING FOR NON-CS MAJORS, 3 Credits
Covers a variety of fundamental topics in computer programming relevant to anyone who wants to write or work with computer code in their work or studies. Teaches basic computational thinking and programming skills which will allow students to solve a variety of real-world problems. In addition, students will learn more advanced topics such as how some basic algorithms work and can be written in computer code.
Prerequisite: MTH 111 with C- or better or MTH 111Z with C- or better or MTH 112 with C- or better or MTH 112Z with C- or better or MTH 227 with C- or better or MTH 231 with C- or better or MTH 231H with C- or better or MTH 241 with C- or better or MTH 245 with C- or better or MTH 251 with C- or better or MTH 251H with C- or better
Available via Ecampus
CS 225, DISCRETE STRUCTURES IN COMPUTER SCIENCE, 4 Credits
An introduction to the discrete mathematics of computer science, including logic, set and set operations, methods of proof, recursive definitions, combinatorics, and graph theory.
Prerequisite: MTH 111 with C or better or MTH 111Z with C or better or MTH 112 (may be taken concurrently) with C or better or MTH 112Z (may be taken concurrently) with C or better or Math Placement Test with a score of 24 or Math Placement - ALEKS with a score of 061
Available via Ecampus
CS 261, DATA STRUCTURES, 4 Credits
Abstract data types, dynamic arrays, linked lists, trees and graphs, binary search trees, hash tables, storage management, complexity analysis of data structures.
Prerequisite: (CS 162 with C or better or CS 162H with C or better or CS 165 with C or better) and (CS 225 [C] or MTH 231 [C] or MTH 231H [C])
Available via Ecampus
CS 271, COMPUTER ARCHITECTURE AND ASSEMBLY LANGUAGE, 4 Credits
Introduces functional organization and operation of digital computers. Coverage of assembly language; addressing, stacks, argument passing, arithmetic operations, decisions, macros, modularization, linkers, and debuggers.
Prerequisite: CS 151 with C or better or CS 161 with C or better or CS 165 with C or better or ENGR 103 with C or better or ENGR 103H with C or better
Available via Ecampus
CS 274, INTRODUCTION TO SYSTEMS PROGRAMMING, 4 Credits
Explores systems-level programming using compiled languages such as C and C++. Explores terminals, shells, C and C++ syntax, pointers, memory models, and more. Learn to design and implement C and C++ programs, navigate language build pipelines, use terminals and shells, solve problems with different memory models, and manage dynamic memory. Gains practical skills for real-world coding challenges.
Prerequisite: CS 162 with C or better or CS 162H with C or better
CS 290, WEB DEVELOPMENT, 4 Credits
How to design and implement a multi-tier application using web technologies: Creation of extensive custom client- and server-side code, consistent with achieving a high-quality software architecture.
Prerequisite: CS 162 with C or better or CS 162H with C or better or CS 165 with C or better
Available via Ecampus
CS 299, SPECIAL TOPICS, 0-4 Credits
This course is repeatable for 99 credits.
CS 312, SYSTEM ADMINISTRATION, 4 Credits
Introduction to system administration. Network administration and routing. Security issues. Computer, server, and network hardware.
Prerequisite: (CS 311 with C or better or CS 344 with C or better or CS 374 with C or better) and (CS 372 [C] or ECE 372 [C])
CS 321, INTRODUCTION TO THEORY OF COMPUTATION, 3 Credits
Survey of models of computation including finite automata, formal grammars, and Turing machines.
Prerequisite: CS 261 with C or better and (CS 225 [C] or MTH 231 [C] or MTH 231H [C])
Equivalent to: CS 321H
Available via Ecampus
CS 321H, INTRODUCTION TO THEORY OF COMPUTATION, 3 Credits
Survey of models of computation including finite automata, formal grammars, and Turing machines.
Attributes: HNRS – Honors Course Designator
Prerequisite: CS 261 with C or better and (CS 225 [C] or MTH 231 [C] or MTH 231H [C])
Equivalent to: CS 321
CS 325, ANALYSIS OF ALGORITHMS, 4 Credits
Recurrence relations, combinatorics, recursive algorithms, proofs of correctness.
Prerequisite: CS 261 with C or better and (CS 225 [C] or MTH 231 [C] or MTH 231H [C])
Equivalent to: CS 325H
Available via Ecampus
CS 325H, ANALYSIS OF ALGORITHMS, 4 Credits
Recurrence relations, combinatorics, recursive algorithms, proofs of correctness.
Attributes: HNRS – Honors Course Designator
Prerequisite: CS 261 with C or better and (CS 225 [C] or MTH 231 [C] or MTH 231H [C])
Equivalent to: CS 325
CS 331, INTRODUCTION TO ARTIFICIAL INTELLIGENCE, 4 Credits
Fundamental concepts in artificial intelligence using the unifying theme of an intelligent agent. Topics include agent architectures, search, games, logic and reasoning, and Bayesian networks.
Prerequisite: CS 325 with C or better or CS 325H with C or better
Equivalent to: CS 331H
CS 331H, INTRODUCTION TO ARTIFICIAL INTELLIGENCE, 4 Credits
Fundamental concepts in artificial intelligence using the unifying theme of an intelligent agent. Topics include agent architectures, search, games, logic and reasoning, and Bayesian networks.
Attributes: HNRS – Honors Course Designator
Prerequisite: CS 325 with C or better or CS 325H with C or better
Equivalent to: CS 331
CS 340, INTRODUCTION TO DATABASES, 4 Credits
Design and implementation of relational databases, including data modeling with ER or UML, diagrams, relational schema, SQL queries, relational algebra, user interfaces, and administration.
Prerequisite: CS 290 with C or better
Equivalent to: CS 275
Available via Ecampus
CS 344, OPERATING SYSTEMS I, 4 Credits
Introduction to operating systems using UNIX as the case study. System calls and utilities, fundamentals of processes and interprocess communication.
Prerequisite: CS 261 with C or better and (CS 271 [C] or ECE 271 [C])
Equivalent to: CS 311, CS 374
Recommended: Experience programming in the C language
Available via Ecampus
CS 352, INTRODUCTION TO USABILITY ENGINEERING, 4 Credits
Explores basic principles of usability engineering methods for the design and evaluation of software systems. Includes the study of human-machine interactions, user interface characteristics and design strategies, software evaluation methods, and related guidelines and standards.
Prerequisite: CS 151 with C or better or CS 161 with C or better or CS 165 with C or better or CS 295 with C or better or ECE 151 with C or better or ENGR 103 with C or better or ENGR 103H with C or better
Available via Ecampus
CS 361, SOFTWARE ENGINEERING I, 4 Credits
Introduction to the "front end" of the software engineering lifecycle; requirements analysis and specification; design techniques; project management.
Prerequisite: CS 261 with C or better
Available via Ecampus
CS 362, SOFTWARE ENGINEERING II, 4 Credits
Introduction to the "back end" of the software engineering lifecycle implementation; verification and validation; debugging; maintenance.
Prerequisite: CS 261 with C or better
Equivalent to: CS 362H
Recommended: Experience with object-oriented programming and data structures (eg. CS 161, CS 162, CS 361)
Available via Ecampus
CS 362H, SOFTWARE ENGINEERING II, 4 Credits
Introduction to the "back end" of the software engineering lifecycle implementation; verification and validation; debugging; maintenance.
Attributes: HNRS – Honors Course Designator
Prerequisite: CS 261 with C or better
Equivalent to: CS 362
Recommended: Experience with object-oriented programming and data structures (eg. CS 161, CS 162, CS 361)
Available via Ecampus
CS 370, INTRODUCTION TO SECURITY, 4 Credits
Introductory course on computer security with the objective to introduce concepts and principles of computer systems security. Notions of security, basic crytographic primitives and their application, basics of authentication and access control, basics of key-management, basics of malware and software security.
Prerequisite: CS 344 (may be taken concurrently) with C or better or CS 374 (may be taken concurrently) with C or better
Available via Ecampus
CS 372, INTRODUCTION TO COMPUTER NETWORKS, 4 Credits
Computer network principles, fundamental networking concepts, packet-switching and circuit switching, TCP/IP protocol layers, reliable data transfer, congestion control, flow control, packet forwarding and routing, MAC addressing, multiple access techniques. CROSSLISTED as CS 372/ECE 372.
Prerequisite: CS 261 with C or better and (ECE 271 [C] or CS 271 [C])
Equivalent to: ECE 372
Recommended: C programming and Unix familiarity.
Available via Ecampus
CS 373, DEFENSE AGAINST THE DARK ARTS, 4 Credits
Introduction to the current state of the art in anti-malware, computer forensics, and networking, messaging, and web security. Broad introduction to the field of computer security.
Prerequisite: CS 340 with C or better and (CS 344 [C] or CS 374 [C]) and (CS 372 [C] or ECE 372 [C])
Available via Ecampus
CS 374, OPERATING SYSTEMS I, 4 Credits
Introduction to operating systems using UNIX as the case study. Emphasizes system calls and utilities, fundamentals of processes, and interprocess communication.
Prerequisite: CS 261 with C or better and (CS 271 [C] or ECE 271 [C])
Equivalent to: CS 344
Available via Ecampus
CS 381, PROGRAMMING LANGUAGE FUNDAMENTALS, 4 Credits
An introduction to the concepts found in a variety of programming languages. Programming languages as tools for problem solving. A brief introduction to languages from a number of different paradigms.
Prerequisite: CS 261 with C or better and (CS 225 [C] or MTH 231 [C] or MTH 231H [C])
Available via Ecampus
CS 391, *SOCIAL AND ETHICAL ISSUES IN COMPUTER SCIENCE, 3 Credits
In-depth exploration of the social, psychological, political, and ethical issues surrounding the computer industry and the evolving information society. (Bacc Core Course)
Attributes: CSST – Bacc Core, Synthesis, Science/Technology/Society
Equivalent to: CS 391H, CS 391H
Recommended: CS 101 or computer literacy.
Available via Ecampus
CS 391H, *SOCIAL AND ETHICAL ISSUES IN COMPUTER SCIENCE, 3 Credits
In-depth exploration of the social, psychological, political, and ethical issues surrounding the computer industry and the evolving information society. (Bacc Core Course)
Attributes: CSST – Bacc Core, Synthesis, Science/Technology/Society; HNRS – Honors Course Designator
Equivalent to: CS 391
Recommended: CS 101 or computer literacy
CS 399, SPECIAL TOPICS, 0-4 Credits
This course is repeatable for 99 credits.
CS 401, RESEARCH, 1-16 Credits
This course is repeatable for 16 credits.
CS 403, THESIS, 1-16 Credits
This course is repeatable for 16 credits.
CS 404, WRITING AND CONFERENCE, 1-16 Credits
This course is repeatable for 16 credits.
CS 405, READING AND CONFERENCE, 1-16 Credits
This course is repeatable for 16 credits.
CS 406, PROJECTS, 1-16 Credits
This course is repeatable for 16 credits.
Available via Ecampus
CS 407H, SEMINAR, 1-16 Credits
Attributes: HNRS – Honors Course Designator
Equivalent to: CS 407
This course is repeatable for 16 credits.
CS 410, OCCUPATIONAL INTERNSHIP, 1-16 Credits
This course is repeatable for 16 credits.
CS 419, SELECTED TOPICS IN COMPUTER SCIENCE, 0-5 Credits
Equivalent to: CS 419H
This course is repeatable for 99 credits.
CS 419H, SELECTED TOPICS IN COMPUTER SCIENCE, 0-5 Credits
Attributes: HNRS – Honors Course Designator
Equivalent to: CS 419
This course is repeatable for 99 credits.
CS 420, GRAPH THEORY WITH APPLICATIONS TO COMPUTER SCIENCE, 3 Credits
Directed and undirected graphs; paths, circuits, trees, coloring, planar graphs, partitioning; computer representation of graphs and graph algorithms; applications in software complexity metrics, program testing, and compiling.
Prerequisite: CS 325 with C or better or CS 325H with C or better
CS 424, CYBERSECURITY PRACTICUM I, 5 Credits
Applies cybersecurity theories and principles in practice through clinical rotations at a security operations center serving a consortium of regional clients. Interactively examines and analyzes network, client, and sensor data to aid in the detection and remediation of cyber attacks. Applies incident management and response frameworks to create improved outcomes for security operations center clients. Explores technical, programmatic, and architectural solutions to common security operations problems. Recognizes professional responsibilities and makes informed judgments in cybersecurity practice based on legal and ethical principles.
Prerequisite: CS 370 with C or better and (CS 372 [C] or ECE 372 [C])
Recommended: CS 478
CS 425, CYBERSECURITY PRACTICUM II, 5 Credits
Applies cybersecurity theories and principles in practice through clinical rotations at a security operations center serving a consortium of regional clients. Interactively examines and analyzes security architectures at the CyberClinic Security Operations Center and at consortium client locations. Develops improved outcomes for security operations center clients through the application of cybersecurity engineering principles. Explores technical, programmatic, and architectural solutions to common security operations problems. Recognizes professional responsibilities and makes informed judgments in cybersecurity practice based on legal and ethical principles.
Prerequisite: CS 424 with C or better
Recommended: CS 478
CS 426, CYBERSECURITY PRACTICUM III, 4 Credits
Applies cybersecurity theories and principles in practice through clinical rotations at a security operations center serving a consortium of regional clients. Interactively assesses client security maturity and risk and advises clients on prevention, defense, and response strategies. Applies network and end-client analysis to develop improved outcomes for security operations center clients through the application of threat-hunting principles and techniques. Recognizes professional responsibilities and makes informed judgments in cybersecurity practice based on legal and ethical principles.
Prerequisite: CS 425 with C or better
Recommended: CS 478
CS 427, CRYPTOGRAPHY, 4 Credits
Introduction to the theory and practice of modern cryptography. Fundamental primitives including pseudorandom generators, block ciphers, hash functions. Symmetric-key cryptography for privacy and authenticity. Public-key cryptography based on number-theoretic problems.
Prerequisite: CS 261 with C or better or MTH 355 with C or better or MTH 310 with C or better
Available via Ecampus
CS 428, ^CYBERSECURITY CAPSTONE PROJECT, 3 Credits
Utilize foundational knowledge of cybersecurity to complete a cybersecurity operations project. Develops skills for project development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery.
Attributes: CSWC – Core Ed - Writing Intensive Curriculum (WIC); CWIC – Bacc Core, Skills, Writing Intensive Curriculum (WIC)
Prerequisite: CS 424 with C or better and (WR 327 [C] or WR 327H [C] or WR 227Z [C] or WR 227HZ [C])
CS 434, MACHINE LEARNING AND DATA MINING, 4 Credits
Introduces machine learning and data mining algorithms and tools that are widely employed in industrial and research settings. Explores supervised learning for prediction problems, both discrete and real-valued; unsupervised learning for clustering data and discovering patterns in data sets; and reinforcement learning for controlling complex processes based on positive and negative feedback. Applies machine learning and data mining techniques to real problems with programming assignments and written homework assignments.
Prerequisite: (CS 325 with C or better or CS 325H with C or better) and (ST 314 [C] or ECE 353 [C])
Equivalent to: CS 434H
CS 434H, MACHINE LEARNING AND DATA MINING, 4 Credits
Introduces machine learning and data mining algorithms and tools that are widely employed in industrial and research settings. Explores supervised learning for prediction problems, both discrete and real-valued; unsupervised learning for clustering data and discovering patterns in data sets; and reinforcement learning for controlling complex processes based on positive and negative feedback. Applies machine learning and data mining techniques to real problems with programming assignments and written homework assignments.
Attributes: HNRS – Honors Course Designator
Prerequisite: (CS 325 with C or better or CS 325H with C or better) and (ST 314 [C] or ECE 353 [C])
Equivalent to: CS 434
CS 440, DATABASE MANAGEMENT SYSTEMS, 4 Credits
Relational database design, normalization, file structures, disk storage, query processing and optimization, team development of database applications.
CS 444, OPERATING SYSTEMS II, 4 Credits
Explores principles of computer operating systems: concurrent processes, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking.
Prerequisite: (CS 344 with C or better or CS 374 with C or better) and (CS 271 [C] or ECE 375 [C])
Available via Ecampus
CS 446, NETWORKS IN COMPUTATIONAL BIOLOGY, 3 Credits
Emphasizes computational and applied mathematical methods for modeling and analyzing biological networks. Covers various network centralities, topological measures, clustering algorithms, probabilistic annotation models and inference methods. Introduces those concepts in the context of protein interaction, gene regulatory, and metabolic networks. Uses graph frameworks, data frames (and related data structures for data science), and programming in Python or R. CROSSLISTED as BDS 446/CS 446.
Prerequisite: CS 161 with C or better or BDS 310 with C or better or BDS 470 with C or better or BOT 470 with C or better or BOT 476 with C or better or ENGR 103 with C or better or ENGR 103H with C or better
Equivalent to: BDS 446
Recommended: Completion or concurrent enrollment in CS 325
CS 450, INTRODUCTION TO COMPUTER GRAPHICS, 4 Credits
Theoretical and practical treatment of 3D computer graphics using OpenGL: geometric modeling, transformations, viewing, lighting, texture mapping, shading, rendering, and animation.
Prerequisite: CS 261 with C or better
Available via Ecampus
CS 453, SCIENTIFIC VISUALIZATION, 4 Credits
Applies 3D computer graphics methods to visually understand scientific and engineering data. Methods include hyperbolic projections; mapping scalar values to color spaces; data visualization using range sliders; scalar visualization (point clouds, cutting planes, contour plots, isosurfaces); vector visualization (arrow clouds, particle advection, streamlines); terrain visualization; Delauney triangulation; and volume visualization.
Prerequisite: CS 261 with C or better
Recommended: Prior experience with Unix or Windows, programming experience
CS 457, COMPUTER GRAPHICS SHADERS, 4 Credits
Emphasizes theoretical and practical treatment of computer graphics shaders, including both RenderMan and GPU shaders. Explores programming in both RenderMan and OpenGL shading languages.
Prerequisite: CS 261 with C or better
Recommended: Graphics pipeline programming experience
Available via Ecampus
CS 458, INTRODUCTION TO INFORMATION VISUALIZATION, 4 Credits
Introduces data visualization concepts and techniques that aid knowledge discovery. Explores visualization design principles that are beneficial to cognitive learning and natural to human perception are the focus. Discussion topics will include graphs, trees, texts, time series and multivariate data.
Prerequisite: CS 361 with C or better
CS 461, ^SENIOR SOFTWARE ENGINEERING PROJECT I, 3 Credits
Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery.
Attributes: CSWC – Core Ed - Writing Intensive Curriculum (WIC); CWIC – Bacc Core, Skills, Writing Intensive Curriculum (WIC)
Prerequisite: (CS 325 with C or better or CS 325H with C or better) and CS 361 [C] and (CS 362 [C] or CS 362H [C])
Available via Ecampus
CS 462, ^SENIOR SOFTWARE ENGINEERING PROJECT II, 3 Credits
Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery.
Attributes: CSWC – Core Ed - Writing Intensive Curriculum (WIC); CWIC – Bacc Core, Skills, Writing Intensive Curriculum (WIC)
Prerequisite: (CS 362 with C or better or CS 362H with C or better) and CS 461 [C]
Available via Ecampus
CS 463, SENIOR SOFTWARE ENGINEERING PROJECT, 2 Credits
Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery.
Prerequisite: CS 462 with C or better
Available via Ecampus
CS 464, OPEN SOURCE SOFTWARE, 4 Credits
Provides a theoretical foundation of the history, key concepts, technologies, and practices associated with modern Free and Open Source Software (FOSS) projects, and gives students an opportunity to explore and make contributions to FOSS projects with some mentoring and guidance.
Prerequisite: CS 261 with C or better and CS 361 (may be taken concurrently) [C]
Available via Ecampus
CS 466, WEB-BASED START-UP PROJECT, 4 Credits
Real-world, hands-on learning in a high-tech web/mobile-based company environment. Research in the development of product ideas, hypotheses, and business models to create customer experiments. Prototyping and statistical analysis to develop, optimize, and evaluate solutions. Rapid iteration/refactoring based on customer input, web analytics, and user engagement metrics.
Corequisites: CS 461
CS 467, ONLINE CAPSTONE PROJECT, 4 Credits
Real-world team-based experience with the software engineering design and delivery cycle, including requirements analysis and specification, design techniques, and requirements and final project written documentation.
Prerequisite: CS 361 with C or better and (CS 362 [C] or CS 362H [C]) and (CS 344 [C] or CS 374 [C])
Available via Ecampus
CS 468, INCLUSIVE DESIGN (HCI), 4 Credits
Inclusive design is designing software that works for a wide variety of differently abled customers. Teaches the skills needed to design inclusively without having to have a separate design for each differently abled customer.
Prerequisite: CS 352 with C or better
CS 469, STRUCTURED PROJECT, 2 Credits
Facilitates the completion of a working software product chosen and designed by the student. Introduces students to planning, reporting progress, and presenting results of software development work carried out as a structured project.
This course is repeatable for 16 credits.
Available via Ecampus
CS 472, COMPUTER ARCHITECTURE, 4 Credits
Computer architecture using processors, memories, and I/O devices as building blocks. Issues involved in the design of instruction set architecture, processor, pipelining and memory organization. Design philosophies and trade-offs involved in Reduced Instruction Set Computer (RISC) architectures. CROSSLISTED as CS 472/ECE 472 and CS 572/ECE 572.
Prerequisite: ECE 375 with C or better
Equivalent to: ECE 472
Available via Ecampus
CS 473, INTRODUCTION TO DIGITAL FORENSICS, 4 Credits
Introduces concepts related to digital forensics, its role and importance, and tools and techniques for collecting and curating digital evidence. Discusses the role of evidence in the justice system and related legal aspects pertaining to digital forensics. Introduces tools and techniques for digital forensics.
Prerequisite: BA 479 with C or better or BIS 471 with C or better or ((CS 344 with C or better or CS 374 with C or better) and CS 370 [C])
Equivalent to: CS 477
Available via Ecampus
CS 474, OPERATING SYSTEMS II, 4 Credits
Examines principles of computer operating systems: concurrent processes, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking.
Prerequisite: (CS 344 with C or better or CS 374 with C or better) and (CS 271 [C] or ECE 375 [C])
Equivalent to: CS 444
Available via Ecampus
CS 475, INTRODUCTION TO PARALLEL PROGRAMMING, 4 Credits
Theoretical and practical survey of parallel programming, including a discussion of parallel architectures, parallel programming paradigms, and parallel algorithms. Programming one or more parallel computers in a higher-level parallel language.
Prerequisite: CS 261 with C or better
Available via Ecampus
CS 476, ADVANCED COMPUTER NETWORKING, 4 Credits
Covers advanced computer networking concepts: queuing theory, quality-of-service, buffer management, resource allocation and sharing, service models, scheduling policies, and performance modeling and analysis. CROSSLISTED as CS 476/ECE 476.
Prerequisite: (CS 372 with C or better or ECE 372 with C or better) and (ECE 353 [C] or ST 314 [C] or ST 314H [C])
Equivalent to: ECE 476
CS 478, NETWORK SECURITY, 4 Credits
Basic concepts and techniques in network security, risks and vulnerabilities, applied cryptography and various network security protocols. Coverage of high-level concepts such as authentication, confidentiality, integrity, and availability applied to networking systems. Fundamental techniques including authentication protocols, group key establishment and management, trusted intermediaries, public key infrastructures, SSL/TLS, IPSec, firewalls and intrusion detection CROSSLISTED as CS 478/ECE 478.
Prerequisite: CS 372 with C or better or ECE 372 with C or better
Equivalent to: ECE 478
Recommended: CS 370
Available via Ecampus
CS 480, TRANSLATORS, 4 Credits
Explores content on the subject of compilers; attribute grammars, syntax-directed translation, lex, yacc, LR(1) parsers, symbol tables, semantic analysis, and peep-hole optimization.
Prerequisite: CS 381 with C or better and (CS 321 [C] or CS 321H [C]) and (CS 344 [C] or CS 374 [C])
CS 491, COMPUTER SCIENCE SKILLS FOR SIMULATION AND GAME PROGRAMMING, 4 Credits
Game and simulation development is very much a data and math-intensive activity. A certain number of actions must be produced, and producing them by hand is hard. This is a middleware CS course that fills in many of the missing pieces for those wanting to enter the simulation and game development worlds in a software tool-building capacity.
Prerequisite: CS 261 with C or better and (CS 225 [C] or MTH 231 [C] or MTH 231H [C]) and (MTH 252 [C] or MTH 252H [C])
CS 492, MOBILE SOFTWARE DEVELOPMENT, 4 Credits
Introduction to concepts and techniques for developing mobile applications. Become familiar with modern mobile structure, implementation, development tools, and workflow.
Prerequisite: CS 344 with C or better or CS 374 with C or better
Available via Ecampus
CS 493, CLOUD APPLICATION DEVELOPMENT, 4 Credits
Covers developing RESTful cloud services, an approach based on representational state transfer technology, an architectural style and approach to communications used in modern cloud services development.
Prerequisite: CS 290 with C or better and CS 340 [C] and CS 372 [C]
Available via Ecampus
CS 494, ADVANCED WEB DEVELOPMENT, 4 Credits
Explores advanced concepts and techniques for developing client-side web applications. Emphasizes modern application design using contemporary tools and technologies such as component-based UI frameworks.
CS 499, SPECIAL TOPICS, 0-16 Credits
This course is repeatable for 16 credits.
Available via Ecampus
CS 501, RESEARCH, 1-16 Credits
This course is repeatable for 99 credits.
Available via Ecampus
CS 503, COMPUTER SCIENCE MS THESIS, 1-16 Credits
This course is repeatable for 999 credits.
CS 504, WRITING AND CONFERENCE/EXPLORATION, 1-9 Credits
This course is repeatable for 15 credits.
CS 505, READING AND CONFERENCE, 1-16 Credits
This course is repeatable for 20 credits.
CS 506, PROJECTS, 1-16 Credits
This course is repeatable for 99 credits.
CS 507, SEMINAR, 1-16 Credits
This course is repeatable for 16 credits.
CS 510, OCCUPATIONAL INTERNSHIP, 1-16 Credits
This course is repeatable for 99 credits.
Available via Ecampus
CS 511, PROGRAMMING AND DATA STRUCTURES, 4 Credits
Focuses on computer programming, problem solving, data structures, object-oriented programming, sorting, asymptotic time complexity.
Recommended: College algebra, plus the ability to navigate an operating system, manipulate files, and use a command line.
Available via Ecampus
CS 512, DATA SCIENCE TOOLS AND PROGRAMMING, 4 Credits
Accessing and distributing data in the cloud; relational and non-relational databases; map reduction; cloud data processing; load balancing; types of data-stores used in the cloud.
Recommended: CS 511 or an equivalent course or programming experience in in a high-level language like Python, Java or C++.
Available via Ecampus
CS 513, APPLIED MACHINE LEARNING, 4 Credits
Explores machine learning basics (variance and bias, underfitting and overfitting, etc). Reviews linear algebra and Numpy. Examines k-nearest neighbors, linear classification (perceptron and online learning), and linear and non-linear regression. Explores applications in housing price prediction (Kaggle contest) and text classification (sentiment analysis).
Available via Ecampus
CS 514, ALGORITHMS: DESIGN, ANALYSIS, AND IMPLEMENTATION, 4 Credits
Explores sorting and selection algorithms including divide-and-conquer, quicksort/quick select, merge sort, binary search trees, memorization, heaps and heapsort, priority queues, hashing, hashed heaps; asymptotic complexity analysis including the Master equation, tree method, amortization; Dynamic Programming on sequences, graphs, trees, and intervals; Graph algorithms including breadth-first search, depth-first search, topological sort, shortest path, minimum spanning tree, network flow. NP-hard and NP-Complete problems.
Recommended: Experience with algorithms and CS 261 or an equivalent undergraduate Data Structures course with a minimum grade of B
Available via Ecampus
CS 515, ALGORITHMS AND DATA STRUCTURES, 4 Credits
Greedy algorithms, divide and conquer, dynamic programming, network flow, data structures.
Recommended: Undergraduate course in algorithms
CS 517, THEORY OF COMPUTATION, 4 Credits
Turing machines, decidability, NP-completeness, complexity classes, randomized computation, relativization, circuit complexity, interactive proof systems, lower bounds, cryptography.
CS 519, SELECTED TOPICS IN COMPUTER SCIENCE, 0-5 Credits
This course is repeatable for 99 credits.
CS 520, GRAPH THEORY WITH APPLICATIONS TO COMPUTER SCIENCE, 3 Credits
Directed and undirected graphs; paths, circuits, trees, coloring, planar graphs, partitioning; computer representation of graphs and graph algorithms; applications in software complexity metrics, program testing, and compiling.
Recommended: CS 325
Available via Ecampus
CS 524, CYBERSECURITY PRACTICUM I, 5 Credits
Applies cybersecurity theories and principles in practice through clinical rotations at a security operations center serving a consortium of regional clients. Interactively examines and analyzes network, client, and sensor data to aid in the detection and remediation of cyber attacks. Applies incident management and response frameworks to create improved outcomes for security operations center clients. Explores technical, programmatic, and architectural solutions to common security operations problems. Recognizes professional responsibilities and makes informed judgments in cybersecurity practice based on legal and ethical principles.
CS 525, CYBERSECURITY PRACTICUM II, 5 Credits
Applies cybersecurity theories and principles in practice through clinical rotations at a security operations center serving a consortium of regional clients. Interactively examines and analyzes security architectures at the CyberClinic Security Operations Center and at consortium client locations. Develops improved outcomes for security operations center clients through the application of cybersecurity engineering principles. Explores technical, programmatic, and architectural solutions to common security operations problems. Recognizes professional responsibilities and makes informed judgments in cybersecurity practice based on legal and ethical principles.
Prerequisite: CS 524 with C or better
CS 526, CYBERSECURITY PRACTICUM III, 4 Credits
Applies cybersecurity theories and principles in practice through clinical rotations at a security operations center serving a consortium of regional clients. Interactively assesses client security maturity and risk and advises clients on prevention, defense, and response strategies. Applies network and end-client analysis to develop improved outcomes for security operations center clients through the application of threat-hunting principles and techniques. Recognizes professional responsibilities and makes informed judgments in cybersecurity practice based on legal and ethical principles.
Prerequisite: CS 525 with C or better
CS 527, ERROR-CORRECTING CODES, 4 Credits
Hamming codes, linear codes, cyclic codes, BCH and Reed-Solomon codes. Introduction to Galois fields. Encoding and decoding algorithms. Burst error correcting codes, asymmetric and unidirectional codes. Applications of codes for computer systems.
Recommended: Discrete math and probability
CS 529, SELECTED TOPICS IN THEORETICAL COMPUTER SCIENCE, 1-5 Credits
Topics of interest in algorithms and theory of computation. Topics include approximation algorithms, planar graph algorithms, distributed algorithms, combinatorial optimization, computational geometry.
This course is repeatable for 99 credits.
Recommended: CS 515
Available via Ecampus
CS 540, DATABASE MANAGEMENT SYSTEMS, 4 Credits
Purpose of database systems, levels of data representation. Entity-relationship model. Relational systems: data definition, data manipulation, query language (SQL), relational calculus and algebra, data dependencies and normal forms. DBTG network model. Query optimization, recovery, concurrency control.
Recommended: CS 261
Available via Ecampus
CS 544, OPERATING SYSTEMS II, 4 Credits
Explores principles of computer operating systems: concurrent processes, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking.
CS 546, NETWORKS IN COMPUTATIONAL BIOLOGY, 3 Credits
Emphasizes computational and applied mathematical methods for modeling and analyzing biological networks. Covers various network centralities, topological measures, clustering algorithms, probabilistic annotation models and inference methods. Introduces those concepts in the context of protein interaction, gene regulatory, and metabolic networks. Uses graph frameworks, data frames (and related data structures for data science), and programming in Python or R. CROSSLISTED as BDS 546/CS 546.
Equivalent to: BDS 546
CS 549, SELECTED TOPICS ON DATA SCIENCE & SYSTEMS, 1-5 Credits
Current topics in data science and systems, e.g. querying, inference, and learning over large datasets; reasoning and learning on graph, heterogeneous, and multi-modal data; data curation; knowledge representation; systems for large data exploration and analytics; distributed data systems; human-centered data science; fairness and responsibility in data science.
This course is repeatable for 99 credits.
Recommended: CS 540
CS 550, INTRODUCTION TO COMPUTER GRAPHICS, 4 Credits
Theoretical and practical treatment of 3D computer graphics using OpenGL: geometric modeling, transformations, viewing, lighting, texture mapping, shading, rendering, and animation.
Recommended: CS 261
Available via Ecampus
CS 551, COMPUTER GRAPHICS, 4 Credits
3-D graphics hardware: Line and polygon scan conversion, modeling transformations, viewing transformations, matrix stacks, hierarchical models, perspective and orthographic projections, visible surface determination, illumination models, shading models, texture mapping, ray tracing.
CS 552, COMPUTER ANIMATION, 4 Credits
Traditional animation concepts: production pipeline, keyframing implementation, interpolation, point-mass dynamics, spring-mass systems, rigid body dynamics, forward and inverse kinematics, human motion control, motion capture.
Recommended: CS 551
CS 553, SCIENTIFIC VISUALIZATION, 4 Credits
Applies 3D computer graphics methods to visually understand scientific and engineering data. Methods include hyperbolic projections; mapping scalar values to color spaces; data visualization using range sliders; scalar visualization (point clouds, cutting planes, contour plots, isosurfaces); vector visualization (arrow clouds, particle advection, streamlines); terrain visualization; Delauney triangulation; and volume visualization.
Recommended: Prior experience with Unix or Windows, programming experience
CS 554, GEOMETRIC MODELING IN COMPUTER GRAPHICS, 4 Credits
Advanced topics in computer graphics focusing on representation and processing of polygonal models and their application. Surface fundamentals; discrete differential geometry and topology; data structures for representing 3-D surfaces; surface subdivision and smoothing; mesh simplification and multi-resolution representation of 3-D surfaces; geometry compression; surface parameterization; geometry remeshing; topological simplification; implicit surfaces.
Recommended: CS 450
CS 557, COMPUTER GRAPHICS SHADERS, 4 Credits
Emphasizes theoretical and practical treatment of computer graphics shaders, including both RenderMan and GPU shaders. Explores programming in both RenderMan and OpenGL shading languages.
Recommended: Graphics pipeline programming experience
Available via Ecampus
CS 558, INTRODUCTION TO INFORMATION VISUALIZATION, 4 Credits
Introduces data visualization concepts and techniques that aid knowledge discovery. Explores visualization design principles that are beneficial to cognitive learning and natural to human perception are the focus. Discussion topics will include graphs, trees, texts, time series and multivariate data.
CS 559, SELECTED TOPICS IN COMPUTER GRAPHICS AND VISION, 0-5 Credits
Advanced topics in graphics, animation, and vision. Topics include distribution ray tracing, global-illumination, radiosity, image-based modeling and rendering, vision-assisted image and video editing, 3-D vision, 3-D virtual environments, 3-D interaction, control for physical simulation, motion graphs, computational geometry, etc.
This course is repeatable for 99 credits.
CS 560, DATA-DRIVEN SOFTWARE ENGINEERING, 4 Credits
An overview of data-driven empirical research methods that can be used to understand the different aspects of software engineering.
Prerequisite: CS 561 with C or better
CS 561, SOFTWARE ENGINEERING METHODS, 4 Credits
Master software engineering methods and supporting tools in the context of agile processes. Teams will engage in all aspects of software development including design, testing, implementation, deployment and maintenance. 3 hours of lecture per week plus one-hour independent lab per week.
Recommended: CS 362
CS 564, FIELD STUDIES IN SE AND HCI, 4 Credits
Deals with the type of empirical study known as the "case" study. These are studies that collect data from natural software development situations as they really occur in the field, in which the researcher does not manipulate or "control" anything. The course is an end-to-end coverage of the process. Mainly focuses on case studies involving human software developers in the field. The student will conduct a field study as part of this course.
CS 565, HUMAN-COMPUTER INTERACTION, 4 Credits
Basic principles of Human-Computer Interaction (HCI) for the design and evaluation of software systems. Includes research methods for studying human-machine interactions and user interfaces, design strategies, software evaluation methods, and related guidelines and standards.
Available via Ecampus
CS 567, LABORATORY STUDIES IN SE AND HCI, 4 Credits
Empirical lab studies of software development. Covers how to go about designing, preparing for, running, analyzing, and writing-for-publication lab experiments of programming situations involving human subjects. This is an end-to-end coverage of the entire process, and will put students in a position to conduct lab studies of their own with human subjects.
CS 568, INCLUSIVE DESIGN (HCI), 4 Credits
Inclusive design is designing software that works for a wide variety of differently abled customers. Teaches the skills needed to design inclusively without having to have a separate design for each differently abled customer.
CS 569, SELECTED TOPICS IN SOFTWARE ENGINEERING, 1-5 Credits
Topics include new programming methodologies, productivity, software development, software complexity metrics.
This course is repeatable for 99 credits.
Recommended: CS 561
CS 570, HIGH PERFORMANCE COMPUTER ARCHITECTURE, 4 Credits
Advanced concepts in computer architecture. Performance improvement employing advanced pipelining and multiple instruction scheduling techniques. Issues in memory hierarchy and management. CROSSLISTED as CS 570/ECE 570.
Equivalent to: ECE 570
CS 572, COMPUTER ARCHITECTURE, 4 Credits
Computer architecture using processors, memories, and I/O devices as building blocks. Issues involved in the design of instruction set architecture, processor, pipelining and memory organization. Design philosophies and trade-offs involved in Reduced Instruction Set Computer (RISC) architectures. CROSSLISTED as CS 472/ECE 472 and CS 572/ECE 572.
Equivalent to: ECE 572
Recommended: ECE 375
Available via Ecampus
CS 573, INTRODUCTION TO DIGITAL FORENSICS, 4 Credits
Introduces concepts related to digital forensics, its role and importance, and tools and techniques for collecting and curating digital evidence. Discusses the role of evidence in the justice system and related legal aspects pertaining to digital forensics. Introduces tools and techniques for digital forensics.
CS 574, OPERATING SYSTEMS II, 4 Credits
Examines principles of computer operating systems: concurrent processes, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking.
Equivalent to: CS 544
CS 575, INTRODUCTION TO PARALLEL PROGRAMMING, 4 Credits
Theoretical and practical survey of parallel programming, including a discussion of parallel architecture, parallel programming paradigms, and parallel algorithms. Programming one or more parallel computers in a higher-level parallel language.
Available via Ecampus
CS 576, ADVANCED COMPUTER NETWORKING, 4 Credits
Covers advanced computer networking concepts: queuing theory, quality-of-service, buffer management, resource allocation and sharing, service models, scheduling policies, and performance modeling and analysis. CROSSLISTED as CS 576/ECE 576.
Equivalent to: ECE 576
Recommended: (CS 372 or ECE 372) and (ECE 353 or ST 314)
Available via Ecampus
CS 577, PRIVACY AND SURVEILLANCE, 4 Credits
Explores the need for privacy and theories of surveillance. Examines the current state of privacy-enhancing technologies. Emphasizes the critical reading and discussion of technical literature on privacy-enhancing technologies.
CS 578, CYBER-SECURITY, 4 Credits
A broad overview of the field of computer and network security. Essential cryptographic mechanisms such as symmetric and public-key cryptography (e.g., encryption, signatures), network security and authentication protocols (e.g., Kerberos, TLS, IPSec), system security (e.g., access control, firewalls), advanced topics (e.g., searchable encryption, cloud security, secure computation). CROSSLISTED as CS 578/ECE 578.
Equivalent to: ECE 578
CS 579, TOPICS IN COMPUTER ARCHITECTURE AND PARALLEL PROCESSING, 0-5 Credits
This course is repeatable for 99 credits.
Recommended: CS 575 or CS 572 or ECE 572
Available via Ecampus
CS 581, PROGRAMMING LANGUAGES I, 4 Credits
Introduces functional programming and programming language theory. Focuses on strongly typed functional programming, abstract syntax and grammars, interpreters, denotational and/or operational semantics, and lambda calculus.
Available via Ecampus
CS 582, PROGRAMMING LANGUAGES II, 4 Credits
Essentials of programming language theory for understanding and conducting programming language research. Dependently typed programming in Agda, Coq, or Idris; operational semantics; type systems; unification and type inference.
Prerequisite: CS 581 with C or better
CS 583, ADVANCED FUNCTIONAL PROGRAMMING, 4 Credits
Advanced functional programming concepts and strategies, with a focus on techniques useful for the design and implementation of programming languages. Includes higher-order abstract syntax, functors and monads, generalized algebraic data types, functional data structures, and graph reduction.
Prerequisite: CS 581 with C or better
CS 589, SELECTED TOPICS IN PROGRAMMING LANGUAGES, 1-5 Credits
An in-depth examination of a specific topic of interest in programming language design and implementation. Example topics include object-oriented programming, parallel programming, compiler optimization, programming language semantics.
This course is repeatable for 99 credits.
CS 599, SPECIAL TOPICS, 0-16 Credits
This course is repeatable for 16 credits.
CS 601, RESEARCH, 1-16 Credits
This course is repeatable for 99 credits.
CS 603, COMPUTER SCIENCE PHD THESIS, 1-16 Credits
This course is repeatable for 999 credits.
CS 605, READING AND CONFERENCE, 1-16 Credits
This course is repeatable for 16 credits.
CS 607, SEMINAR, 1-16 Credits
This course is repeatable for 16 credits.