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 160, COMPUTER SCIENCE ORIENTATION, 3 Credits

Introduction to the computer science field and profession. Team problem solving. Introduction to writing computer programs. Approaches to teaching course topics vary across sections. Lec/lab.

Equivalent to: CS 160H

CS 160H, COMPUTER SCIENCE ORIENTATION, 3 Credits

Introduction to the computer science field and profession. Team problem solving. Introduction to writing computer programs. Approaches to teaching course topics vary across sections. Lec/lab.

Attributes: HNRS – Honors Course Designator

Equivalent to: CS 160

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. Lec/lab/rec.

Prerequisite: MTH 112 (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

Equivalent to: EECS 161

Available via Ecampus

CS 162, INTRODUCTION TO COMPUTER SCIENCE II, 4 Credits

Basic data structures. Computer programming techniques and application of software engineering principles. Introduction to analysis of programs. Lec/lab/rec.

Prerequisite: CS 161 with C or better or EECS 161 with C or better

Equivalent to: EECS 162

Available via Ecampus

CS 165, ACCELERATED INTRODUCTION TO COMPUTER SCIENCE, 8 Credits

Overview of the fundamental concepts of computer science. Introduction to problem solving, algorithm development, data types, and basic data structures. Introduction to analysis of algorithms and principles of software engineering. System development and computer programming using procedural/object-oriented paradigms. Offered via Ecampus only.

Prerequisite: MTH 112 with C or better or Math Placement - ALEKS with a score of 075

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. Lec/rec. (Bacc Core Course)

Attributes: CPDP – Core, Perspective, Difference/Power/Discrimination

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.

Available via Ecampus

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

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. (Note: Students may take either MTH 231 or CS 225, but cannot receive credit for both.)

Prerequisite: MTH 111 with C or better or Math Placement Test with a score of 24 or Math Placement - ALEKS with a score of 061 or MTH 112 (may be taken concurrently) with C or better

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. Lec/rec.

Prerequisite: (CS 162 with C or better or CS 165 with C or better) and (CS 225 [C] or MTH 231 [C])

Equivalent to: EECS 261

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

Introduction to 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

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 165 with C or better

Equivalent to: CS 494

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. Lec/lab.

Prerequisite: (CS 311 with C or better or CS 344 with C or better) and CS 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])

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])

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])

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])

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

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

Recommended: Experience programming in the C language

Available via Ecampus

CS 352, INTRODUCTION TO USABILITY ENGINEERING, 4 Credits

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

Equivalent to: CS 252

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

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

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 344 with C or better and CS 340 [C] and CS 372 [C]

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])

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 – 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 – Core, Synthesis, Science/Technology/Society; HNRS – Honors Course Designator

Equivalent to: CS 391

Recommended: CS 101 or computer literacy

CS 395, WEBSITE MULTIMEDIA, 4 Credits

How to create and deploy interactive digital multimedia through static websites: Technological, aesthetic, and pedagogical issues of communication using interactive multimedia and hypermedia; techniques for authoring interactive multimedia projects using a variety of digital media roots.

Prerequisite: CS 195 with C or better or (ART 120 with C or better and (CS 162 [C] or CS 165 [C]))

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

Graded P/N.

Equivalent to: CS 407H

This course is repeatable for 16 credits.

CS 407H, SEMINAR, 1-16 Credits

Graded P/N.

Attributes: HNRS – Honors Course Designator

Equivalent to: CS 407

This course is repeatable for 16 credits.

CS 410, OCCUPATIONAL INTERNSHIP, 1-16 Credits

Graded P/N.

This course is repeatable for 16 credits.

CS 419, SELECTED TOPICS IN COMPUTER SCIENCE, 0-5 Credits

Topics of special and current interest not covered in other courses.

Equivalent to: CS 419H

This course is repeatable for 99 credits.

Available via Ecampus

CS 419H, SELECTED TOPICS IN COMPUTER SCIENCE, 1-5 Credits

Topics of special and current interest not covered in other courses.

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

Available via Ecampus

CS 434, MACHINE LEARNING AND DATA MINING, 4 Credits

Introduction to machine learning and data mining algorithms (supervised learning, unsupervised learning, and reinforcement learning) tools that are widely employed in industrial and research settings.

Prerequisite: CS 325 with C or better or CS 325H with C or better

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 and (CS 271 [C] or ECE 375 [C])

Equivalent to: CS 411

CS 446, NETWORKS IN COMPUTATIONAL BIOLOGY, 3 Credits

An introduction to biological networks and computational methods for their analysis, inference, and functional modeling. Various network centralities, topological measures, clustering algorithms, and probabilistic annotation models are introduced in the context of protein interaction, gene regulatory, and metabolic networks. Surveys bioinformatics methods for data-driven inference of network structure.

Prerequisite: CS 261 with C or better or BOT 476 with C or better

Recommended: Completion or concurrent enrollment in CS 325

CS 447, WIRELESS EMBEDDED SYSTEMS, 4 Credits

A hands-on introduction to programming wireless embedded systems (aka the "Internet of Things"). Topics include sensors, actuators, state machines, scheduling, wireless communications, time synchronization, localization, fault tolerance, and security related to cyber-physical systems.

Prerequisite: CS 344 with C or better

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

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

Theoretical and practical treatment of computer graphics shaders, including both RenderMan and GPU shaders. Programming in both RenderMan and OpenGL shading languages.

Recommended: Previous graphics pipeline programming experience.

CS 458, INTRODUCTION TO INFORMATION VISUALIZATION, 4 Credits

Tools and techniques for designing, developing, and deploying interactive visualizations of abstract data sources. Discusses techniques based on principles from design, cognitive science, and perceptual psychology. Topics include 1D, 2D, 3D, multivariate representations, time-series, graphs and trees, text and documents, and interaction techniques.

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. (Writing Intensive Course)

Attributes: CWIC – Core, Skills, WIC

Prerequisite: CS 361 with C or better and CS 325 [C] and CS 362 [C]

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. Three-term sequence required. (Writing Intensive Courses)

Attributes: CWIC – Core, Skills, WIC

Prerequisite: CS 362 with C or better and CS 461 [C]

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. Three-term sequence required.

Prerequisite: CS 462 with C or better

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 [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. Offered at OSU-Cascades only.

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. For students in the online CS double-degree program only.

Prerequisite: CS 344 with C or better and CS 361 [C] and CS 362 [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

Recommended: CS 565 with a minimum grade of C

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. Lec/lab. CROSSLISTED as CS 472/ECE 472 and CS 572/ECE 572.

Prerequisite: ECE 375 with C or better

Equivalent to: CS 470, ECE 472

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

Advanced networking concepts: source/channel coding, queuing theory, router design, network architectures (Intserv, DiffServ, MPLS), multimedia protocols (TFRC, RTP), overlay networks, and wireless standards (Bluetooth 802.11b, 3/4G). 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, EECS 476

CS 477, 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. The course will also discuss the role of evidence in the justice system and some legal aspects as they pertain to digital forensics. It will introduce tools and techniques for computer and network forensics.

Prerequisite: CS 344 with C or better and CS 370 [C]

Available via Ecampus

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 344 with C or better and CS 381 [C] and (CS 321 [C] or CS 321H [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]) and MTH 252 [C]

CS 492, MOBILE SOFTWARE DEVELOPMENT, 4 Credits

Introduction to concepts and techniques for developing mobile applications. Students will become familiar with modern mobile structure, implementation, development tools, and workflow.

Prerequisite: CS 344 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 495, INTERACTIVE MULTIMEDIA PROJECTS, 4 Credits

Students apply principles and procedures of digital art, design, communication, and software authoring while working on large integrated media projects.

Recommended: CS 395

CS 496, MOBILE AND CLOUD SOFTWARE DEVELOPMENT, 4 Credits

Introduction to the concepts and techniques for developing mobile and cloud applications.

Prerequisite: CS 344 with C or better or CS 311 with C or better

Recommended: Working knowledge of at least one operating system

CS 499, SPECIAL TOPICS, 0-16 Credits

This course is repeatable for 16 credits.

CS 501, RESEARCH, 1-16 Credits

Graded P/N.

This course is repeatable for 99 credits.

CS 503, COMPUTER SCIENCE MS THESIS, 1-16 Credits

This course is repeatable for 999 credits.

CS 505, READING AND CONFERENCE, 1-16 Credits

This course is repeatable for 20 credits.

CS 506, PROJECTS, 1-16 Credits

Graded P/N.

This course is repeatable for 99 credits.

CS 507, SEMINAR, 1-16 Credits

Graded P/N.

This course is repeatable for 16 credits.

CS 510, OCCUPATIONAL INTERNSHIP, 1-4 Credits

This course is repeatable for 99 credits.

CS 511, PROGRAMMING AND DATA STRUCTURES, 4 Credits

Computer programming, problem solving, data structures, object-oriented programming, recursion, sorting, dynamic programming, 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 515, ALGORITHMS AND DATA STRUCTURES, 4 Credits

Greedy algorithms, divide and conquer, dynamic programming, network flow, data structures.

Recommended: Undergraduate course in algorithms

CS 516, THEORY OF COMPUTATION AND FORMAL LANGUAGES, 4 Credits

Models of computation. Universal machines. Unsolvable problems. Nondeterministic computation. Chomsky hierarchy: regular, context-free, context-sensitive and unrestrictive grammars; characterization, closure properties, algorithms, and limitations.

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

Topics of special and current interest not covered in other courses. May not be offered every year.

This course is repeatable for 99 credits.

Available via Ecampus

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 and MTH 232

CS 523, ADVANCED ALGORITHMS, 4 Credits

Approximation algorithms, randomized and probabilistic algorithms, online algorithms.

Recommended: CS 515

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

CS 531, ARTIFICIAL INTELLIGENCE, 4 Credits

Intelligent agents. Problem-solving as heuristic search. Adversarial search. Constraint satisfaction methods; Arc-consistency. Knowledge representation and reasoning. Propositional logic. Reasoning with propositional logic: algorithms for satisfiability. First-order logic. Proof theory, model theory, resolution refutation, forward and backward chaining, representing events and actions. Lec/lab.

CS 533, INTELLIGENT AGENTS AND DECISION MAKING, 4 Credits

Representations of agents, execution architectures. Planning: non-linear planning, graphplan, SATplan. Scheduling and resource management. Probabilistic agents. Dynamic belief networks. Dynamic programming (value iteration and policy iteration). Reinforcement learning: Prioritized sweeping, Q learning, value function approximation and SARSA (lamda), policy gradient methods.

Recommended: CS 531

CS 534, MACHINE LEARNING, 4 Credits

Continuous representations. Bias-variance tradeoff. Computational learning theory. Gaussian probabilistic models. Linear discriminants. Support vector machines. Neural networks. Ensemble methods. Feature extraction and dimensionality reduction methods. Factor analysis. Principle component analysis. Independent component analysis. Cost-sensitive learning.

CS 535, DEEP LEARNING, 4 Credits

An introduction to the concepts and algorithms in deep learning; basic feedforward neural networks, convolutional neural networks, recurrent neural networks including long short-term memory models, deep belief nets, autoencoders and deep networks applications in computer vision, natural language processing and reinforcement learning.

Prerequisite: CS 534 with C or better or ROB 537 with C or better

CS 536, PROBABILISTIC GRAPHICAL MODELS, 4 Credits

Representation of probabilistic graphical models, both directed (Bayesian networks) and undirected (Markov networks). Exact and approximate inference techniques. Parameter and structure learning from data.

Recommended: Strong programming skills

CS 537, COMPUTER VISION I, 3 Credits

An introduction to low-level computer vision and visual geometry. Topics of interest include the following: detection of interest points and edges, matching points and edges, color models, projective geometry, camera calibration, epipolar geometry, homography, image stitching, and multitarget tracking.

Recommended: Undergraduate-level statistics, probability, calculus, linear algebra, good programming skills, machine learning or AI

CS 539, SELECTED TOPICS IN ARTIFICIAL INTELLIGENCE, 0-5 Credits

Advanced topics in artificial intelligence. Typical topics include machine learning for sequential and spatial data, knowledge representation and inference, probabilistic modeling of complex systems, data mining and information extraction.

This course is repeatable for 99 credits.

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

CS 544, OPERATING SYSTEMS II, 4 Credits

Principles of computer operating systems: concurrent processes, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking. Lec/rec.

Equivalent to: CS 511

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

CS 546, NETWORKS IN COMPUTATIONAL BIOLOGY, 3 Credits

An introduction to biological networks and computational methods for their analysis, inference, and functional modeling. Various network centralities, topological measures, clustering algorithms, and probabilistic annotation models are introduced in the context of protein interaction, gene regulatory, and metabolic networks. Surveys bioinformatics methods for data-driven inference of network structure.

Recommended: Completion or concurrent enrollment in CS 325

CS 549, SELECTED TOPICS ON DATA SCIENCE & SYSTEMS, 0-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 and (MTH 306 or MTH 306H or MTH 341)

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

Theoretical and practical treatment of computer graphics shaders, including both RenderMan and GPU shaders. Programming in both RenderMan and OpenGL shading languages.

Recommended: Previous graphics pipeline programming experience.

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.

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 (HCL), 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 [C] or CS 565 [C]

CS 569, SELECTED TOPICS IN SOFTWARE ENGINEERING, 0-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. Lec/lab. CROSSLISTED as CS 472/ECE 472 and CS 572/ECE 572.

Equivalent to: ECE 572

Recommended: ECE 375

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

Advanced networking concepts: source/channel coding, queuing theory, router design, network architectures (Intserv, DiffServ, MPLS), multimedia protocols (TFRC, RTP), overlay networks, and wireless standards (Bluetooth 802.11b, 3/4G). 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 or ST 314H)

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

Current topics in advanced computer architecture and parallel processing.

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, denotional 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

Graded P/N.

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.

CS 637, COMPUTER VISION II, 4 Credits

An introduction to recent advances in visual recognition, including object detection, semantic segmentation, multimodal parsing of images and text, image captioning, face recognition, and human activity recognition. The course covers common formulations of these problems, including energy minimization on graphical models, and supervised machine learning approaches to low- and high-level recognition tasks.

Prerequisite: CS 535 with B+ or better or CS 537 with B- or better

Recommended: CS 519