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 195, WEBSITE DESIGN, 4 Credits

How to design and publish a static website using an existing publishing platform: Techniques and tools for designing and publishing on the World Wide Web; hypertext and HTMTL; site and page design; media integration; issues raised by Internet publishing.

Equivalent to: CS 295

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 262, PROGRAMMING PROJECTS IN C++, 4 Credits

Learning a second computer programming language. Elements of C++. Object-oriented programming. Experience team work on a large programming project.

Prerequisite: CS 261 with C or better

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 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 295, WEBSITE MANAGEMENT, 4 Credits

How to create and promote a dynamic website using existing frameworks/libraries: Designing, developing, publishing, maintaining, and marketing dynamic websites; web security and privacy issues; emerging web technologies; running a website marketing campaign.

Prerequisite: CS 195 with C or better

Recommended: Basic HTML and CSS

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)

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 407, SEMINAR, 1-16 Credits

Equivalent to: CS 407H

This course is repeatable for 16 credits.

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 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: CWIC – Bacc Core, Skills, Writing Intensive Course

Prerequisite: CS 424 with C or better and (WR 327 [C] or WR 327H [C] or WR 227Z [C] or WR 227HZ [C])

Recommended: CS 478 and CS 426

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.

Prerequisite: CS 261 with C or better and CS 340 [C]

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: CWIC – Bacc Core, Skills, Writing Intensive Course

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: CWIC – Bacc Core, Skills, Writing Intensive Course

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, REAL-WORLD PROJECT MANAGEMENT IN COMPUTER SCIENCE, 2 Credits

Facilitates the completion of a working software product chosen and designed by the student. Guides students on planning, implementing, and reporting progress on software development work carried out as a structured project. Provides an opportunity to follow scaled-down versions of industry practices for managing project scope, change, and deliverables.

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

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 and CS 576/ECE 576.

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.

Prerequisite: CS 290 with C or better and CS 340 [C]

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.

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 523, ADVANCED ALGORITHMS, 4 Credits

Approximation algorithms, randomized and probabilistic algorithms, online algorithms.

Recommended: CS 515

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 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.

Recommended: (CS 344 or CS 374) and (CS 271 or ECE 375)

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.

Recommended: CS 450 or CS 550

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 562, SOFTWARE PROJECT MANAGEMENT, 4 Credits

Master software project management with an emphasis on timely, cost-effective delivery of high-quality systems. Learn about existing techniques and supporting tools, with a particular focus on coordination and project management. 3 hours of lecture per week plus one-hour independent lab per week.

Recommended: CS 561

CS 563, SOFTWARE MAINTENANCE AND EVOLUTION, 4 Credits

Contribute to the cutting-edge of software engineering. Learn about existing techniques and supporting tools, with a particular focus on maintenance and evolution. Identify opportunities to support software maintenance and evolution more effectively, by creating new knowledge and supporting systems through research and innovation. 3 hours of lecture per week plus one-hour independent lab per week.

Prerequisite: CS 561 with C or better

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.

Recommended: CS 352 or CS 565 with a minimum grade of C

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

Recommended: ECE 472 or ECE 572

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 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 476/ECE 476 and CS 576/ECE 576.

Equivalent to: ECE 576

Recommended: (CS 372 or ECE 372) and (ECE 353 or ST 314)

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

CS 581, PROGRAMMING LANGUAGES I, 4 Credits

Graduate-level introduction to functional programming and programming language theory. Strongly typed functional programming in Haskell, abstract syntax and grammars, interpreters, denotational semantics, domain theory, and lambda calculus.

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 585, DOMAIN-SPECIFIC LANGUAGES, 4 Credits

Graduate-level introduction to the design and implementation of domain-specific languages (DSLs). Domain analysis; review and revision of language designs; binding constructs to support abstraction; definition of syntax and semantics of DSLs; prototype implementation of embedded DSL.

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.