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.

CS 151. INTRODUCTION TO PROGRAMMING I WITH EMBEDDED CONTROL LAB. (4 Credits)

Thorough treatment of the basic elements of C, bitwise operations, flow of control, input/output, functions, arrays, strings, and structures. Lec/lab. CROSSLISTED as ECE 151.

Prerequisites: MTH 111 with C or better or MTH 112 with C or better or MTH 251 with C or better or MTH 251H with C or better

Equivalent to: ECE 151

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.

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

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.

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

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.

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

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, Pers, Diff/Power/Disc

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.

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.

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

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

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.

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

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.

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

Prerequisites: CS 151 with C or better or CS 161 with C or better or CS 165 with C or better or ECE 151 with C or better

CS 290. WEB DEVELOPMENT. (4 Credits)

How to design and implement a multi-tier application using web technologies: Creation of extensive custom client- and server-side code, consistent with achieving a high-quality software architecture.

Prerequisites: CS 162 with C or better or CS 165 with C or better

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.

Prerequisites: CS 195 with C or better

CS 312. SYSTEM ADMINISTRATION. (4 Credits)

Introduction to system administration. Network administration and routing. Security issues. Computer, server, and network hardware. Lec/lab.

Prerequisites: (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.

Prerequisites: CS 261 with C or better and (CS 225 [C] or MTH 231 [C])

Equivalent to: CS 321H

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

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

Prerequisites: CS 261 with C or better and (CS 225 [C] or MTH 231 [C])

Equivalent to: CS 325H

CS 325H. ANALYSIS OF ALGORITHMS. (4 Credits)

Recurrence relations, combinatorics, recursive algorithms, proofs of correctness.

Attributes: HNRS – Honors Course Designator

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

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

Prerequisites: CS 290 with C or better

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.

Prerequisites: CS 261 with C or better and (CS 271 [C] or ECE 271 [C])

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.

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

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.

Prerequisites: CS 261 with C or better

CS 362. SOFTWARE ENGINEERING II. (4 Credits)

Introduction to the "back end" of the software engineering lifecycle implementation; verification and validation; debugging; maintenance.

Prerequisites: CS 261 with C or better

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.

Prerequisites: CS 344 (may be taken concurrently) with C or better

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. Lec. CROSSLISTED as ECE 372.

Prerequisites: CS 261 with C or better and (ECE 271 [C] or CS 271 [C])

Equivalent to: ECE 372

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.

Prerequisites: CS 344 with C or better and CS 340 [C] and CS 372 [C]

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.

Prerequisites: 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, Synth, Sci/Tech/Soc

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.

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

CS 401. RESEARCH. (1-16 Credits)

Graded P/N.

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.

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.

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.

Prerequisites: (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.

Prerequisites: CS 261 with C or better or MTH 355 with C or better

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.

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

Prerequisites: CS 261 with C or better and (CS 275 [C] or CS 340 [C])

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

Prerequisites: (CS 311 with C or better or CS 344 with C or better) and (CS 271 [C] or ECE 375 [C])

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. The course also surveys bioinformatics methods for data-driven inference of network structure.

Prerequisites: CS 261 with C or better

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.

Prerequisites: CS 344 with C or better

CS 450. INTRODUCTION TO COMPUTER GRAPHICS. (4 Credits)

2-D and 3-D graphics APIs. Modeling transformations. Viewing specification and transformations. Projections. Shading. Texture mapping. Traditional animation concepts. 3-D production pipeline. Keyframing and kinematics. Procedural animation.

Prerequisites: CS 261 with C or better and (MTH 306 [C] or MTH 306H [C] or MTH 341 [C])

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.

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.

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.

Prerequisites: 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. Three-term sequence required. This course fulfills the WIC requirement for computer science majors. (Writing Intensive Courses).

Attributes: CWIC – Core, Skills, WIC

Prerequisites: CS 361 with C or better

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

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

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

Prerequisites: CS 261 with C or better or CS 361 with C or better

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.

Prerequisites: CS 344 with C or better and CS 361 [C] and CS 362 [C]

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.

Prerequisites: CS 352 with C or better

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 ECE 472/ECE 572.

Prerequisites: ECE 375 with C or better

Equivalent to: 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.

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

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

Prerequisites: (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 ECE 478.

Prerequisites: CS 372 with C or better or ECE 372 with C or better

Equivalent to: ECE 478

CS 480. TRANSLATORS. (4 Credits)

An introduction to compilers; attribute grammars, syntax-directed translation, lex, yacc, LR(1) parsers, symbol tables, semantic analysis, and peep-hole optimization.

Prerequisites: (CS 344 with C or better or CS 311 with C or better) and CS 321 [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.

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

Prerequisites: CS 344 with C or better

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.

Prerequisites: CS 290 with C or better and CS 340 [C] and CS 372 [C]

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.

CS 496. MOBILE AND CLOUD SOFTWARE DEVELOPMENT. (4 Credits)

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

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

CS 499. SPECIAL TOPICS. (1-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 511. PROGRAMMING AND DATA STRUCTURES. (4 Credits)

Computer programming, problem solving, data structures, object-oriented programming, recursion, sorting, dynamic programming, asymptotic time complexity.

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.

CS 515. ALGORITHMS AND DATA STRUCTURES. (4 Credits)

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

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.

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.

CS 521. COMPUTABILITY. (4 Credits)

Recursive functions. Turing machines. Undecidability. Relativized computation. Complexity classes.

CS 523. ADVANCED ALGORITHMS. (4 Credits)

Approximation algorithms, randomized and probabilistic algorithms, online algorithms.

CS 524. NP-COMPLETE AND HARDER PROBLEMS. (4 Credits)

Complexity classes and reducibilities. NP-Complete problems, proof techniques, and heuristics, approximation algorithms. Provably hard problems. Hierarchies.

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.

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.

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 532. ADVANCED ARTIFICIAL INTELLIGENCE. (4 Credits)

Knowledge representation, reasoning, and learning with relational and first-order representations. First-order logic: proof theory, model theory, resolution refutation, Prolog-style resolution. Inductive logic programming. Complex belief networks: Hidden Markov models, Viterbi algorithm, Forward-backward algorithm. Learning HMMs with EM. Probabilistic relational models: exact and stochastic inference algorithms. Learning methods for probabilistic relational models.

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.

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.

Prerequisites: CS 534 with B 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.

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.

CS 539. SELECTED TOPICS IN ARTIFICIAL INTELLIGENCE. (1-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 12 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.

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.

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. The course also surveys bioinformatics methods for data-driven inference of network structure.

CS 549. SELECTED TOPICS IN INFORMATION-BASED SYSTEMS. (1-5 Credits)

Current topics in information-based systems, e.g. information management for CAD, geographical information systems, distributed information systems, data models for complex applications.

This course is repeatable for 99 credits.

CS 550. INTRODUCTION TO COMPUTER GRAPHICS. (4 Credits)

2-D and 3-D graphics APIs. Modeling transformations. Viewing specification and transformations. Projections. Shading. Texture mapping. Traditional animation concepts. 3-D production pipeline. Keyframing and kinematics. Procedural animation.

CS 551. COMPUTER GRAPHICS. (4 Credits)

3-D graphics hardware: Line and polygon scan conversion, modeling transformations, viewing transformations, matrix stacks, hierarchical models, perspective and orthographic projections, visible surface determination, illumination models, shading models, texture mapping, ray tracing.

CS 552. COMPUTER ANIMATION. (4 Credits)

Traditional animation concepts: production pipeline, keyframing implementation, interpolation, point-mass dynamics, spring-mass systems, rigid body dynamics, forward and inverse kinematics, human motion control, motion capture.

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.

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.

CS 555. SIGNAL AND IMAGE PROCESSING. (4 Credits)

Fundamental aspects of signal and image processing including image acquisition and display, histograms, level-set and geometric operations, convolutions, Fourier transform, image filtering, sampling theory, image transforms, human vision, color, morphological operations, and image compression.

CS 556. COMPUTER VISION. (4 Credits)

Algorithm development for automatic interpretation of the three-dimensional world that is captured in a set of images; cameras and image formation; color; keypoint and edge detection; perceptual grouping; segmentation; shape representation; texture; object recognition; optical flow; motion estimation and tracking; and 3-D scene reconstruction from motion and stereo.

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.

CS 559. SELECTED TOPICS IN COMPUTER GRAPHICS AND VISION. (1-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 12 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.

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

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.

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.

Prerequisites: CE 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.

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.

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

Equivalent to: ECE 570

CS 572. COMPUTER ARCHITECTURE. (4 Credits)

Computer architecture using processors, memories, and I/O devices as building blocks. Issues involved in the design of instruction set architecture, processor, pipelining and memory organization. Design philosophies and trade-offs involved in Reduced Instruction Set Computer (RISC) architectures. Lec/lab. CROSSLISTED as ECE 472/ECE 572.

Equivalent to: ECE 572

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.

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

Equivalent to: ECE 576

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

Equivalent to: ECE 578

CS 579. TOPICS IN COMPUTER ARCHITECTURE AND PARALLEL PROCESSING. (1-5 Credits)

Current topics in advanced computer architecture and parallel processing.

This course is repeatable for 99 credits.

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.

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

Prerequisites: CS 581 with C or better

CS 584. HUMAN FACTORS PROGRAMMING LANGUAGES. (4 Credits)

Principles and evaluation methods for designing and evaluating programming languages to emphasize human productivity. Overall goals are (a) to enable students to understand and apply these principles and methods, and (b) to introduce at least four programming languages that aim specifically at supporting human problem solving.

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.

Prerequisites: 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. (1-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.

Prerequisites: CS 556 with B or better