Computer Science
Courses
CS 121 Computation Laboratory I 1.0 Credit
Introduces computation and programming through the use of a symbolic mathematical computation system. Programming techniques and algorithmic problem solving are introduced in the context of the differential calculus. Illustrates the power and limitations of the computer in solving mathematical, engineering and scientific problems. Some or all pre-requisites may be taken as either a pre-requisite or co-requisite. Please see the department for more information.
Repeat Status: Not repeatable for credit
Prerequisites: MATH 110 [Min Grade: D], MATH 121 [Min Grade: D] (Can be taken Concurrently)
CS 122 Computation Laboratory II 1.0 Credit
Introduces computation and programming through the use of a symbolic mathematical computation system. Programming techniques and algorithmic problem solving are introduced in the context of the integral calculus. Illustrates the power and limitations of the computer in solving mathematical, engineering and scientific problems. Some or all pre-requisites may be taken as either a pre-requisite or co-requisite. Please see the department for more information.
Repeat Status: Not repeatable for credit
Prerequisites: MATH 121 [Min Grade: D] (Can be taken Concurrently)CS 121 [Min Grade: D] and (MATH 110 [Min Grade: D]
CS 123 Computation Laboratory III 1.0 Credit
Introduces computation and programming through the use of a symbolic mathematical computation system. Programming techniques and algorithmic problem solving are introduced in the context of the multivariate calculus and series. Illustrates the power and limitations of the computer in solving mathematical, engineering and scientific problems. Some or all pre-requisites may be taken as either a pre-requisite or co-requisite. Please see the department for more information.
Repeat Status: Not repeatable for credit
Prerequisites: MATH 121 [Min Grade: D], MATH 122 [Min Grade: D] (Can be taken Concurrently)CS 122 [Min Grade: D]
CS 130 Programming Concepts with 3D Animation 3.0 Credits
Introduction to elementary programming concepts within a 3D animation learning environment. Programming concepts include: planning tools (storyboards, pseudocode), control structures, expressions, conditionals, repetition, functions, parameter passing, events and event handlers, classes, objects, methods, inheritance. Stresses good programming style, documentation, debugging, and testing.
Repeat Status: Not repeatable for credit
CS 131 Computer Programming A 3.0 Credits
Introduction to structured computer programming in language of instruction (e.g. C++). Topics include: variables, input and output, expressions, assignment statements, conditionals and branching, files, repetition, functions and parameter passing, one-dimensional and two-dimensional arrays, and elementary class concepts. Stresses good programming style, documentation, debugging, and testing.
Repeat Status: Not repeatable for credit
CS 132 Computer Programming B 3.0 Credits
Introduction to structured computer programming in the language of instruction (e.g. C++). Topics include: random numbers, recursion, vectors, searching and sorting, classes, information hiding principles. Stresses good programming style, documentation, debugging, and testing.
Repeat Status: Not repeatable for credit
Prerequisites: CS 131 [Min Grade: D] or CS 171 [Min Grade: D]
CS 133 Computer Programming C 3.0 Credits
Advanced principles of computer programming in the language of instruction (e.g. C++). Classes, inheritance, information hiding principles, recursion, quicksort, multidimensional arrays, pointers, and dynamic memory. Stresses good programming style, documentation, debugging, and testing.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 132 [Min Grade: D]
CS 161 Introduction to Computing 3.0 Credits
Introduction to the computer as a tool for productivity and communications. Provides fluency in the use of industry-standard software for professional communications and presentations, data analysis, and telecommunication. Introduce automation and programming to enhance the effective use of computers and computer applications.
Repeat Status: Not repeatable for credit
CS 164 Introduction to Computer Science 3.0 Credits
An introduction to the field of computer science. Exposure to core areas (selected from algorithms, artificial intelligence, computer architecture, databases, graphics, human-computer interaction, programming languages, scientific computation, software engineering) while introducing and reinforcing the importance of programming.
Repeat Status: Not repeatable for credit
Restrictions: Can enroll if major is CS or major is MATH and classification is Freshman.
CS 171 Computer Programming I 3.0 Credits
Covers fundamentals of structured computer programming in the language of instruction (e.g., C++): variables, input and output, expressions, assignment statements, conditionals and branching, subprograms, parameter passing, repetition, arrays, top-down design, testing, and debugging.
Repeat Status: Not repeatable for credit
CS 172 Computer Programming II 3.0 Credits
Covers object-oriented design, inheritance hierarchies, information hiding principles, string processing, recursion, good programming style, documentation, debugging, and testing.
Repeat Status: Not repeatable for credit
Prerequisites: CS 171 [Min Grade: C] or CS 132 [Min Grade: C]
CS 175 Computer Programming I-II 3.0 Credits
Advanced programming in language of instruction at an accelerated pace: object-oriented design, inheritance hierarchies, information hiding principles, recursion, quick sort, multidimensional arrays, classes, pointers, dynamic memory, good programming style, documentation, debugging, and testing.
Repeat Status: Not repeatable for credit
CS 190 Selected Computer Language 3.0 Credits
Focuses on programming in a selected language of interest. Course content, language, and prerequisites may vary according to instructor, with emphasis on applications for which the language is designed. May be repeated for credit.
Repeat Status: Can be repeated multiple times for credit
CS 203 Programming for Engineers 3.0 Credits
Fundamentals of computer organization; rudiments of programming including data types, arithmetic and logical expressions, conditional statements, control structures; problem solving techniques for engineers using programming; object-oriented programming; arrays; simulation of engineering systems; principles of good programming practice.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
CS 204 Advanced Programming for Engineers 3.0 Credits
An advanced introduction to classes and objects; inheritance and polymorphism; abstract classes and interfaces; exception handling; files and streams; garbage collection and dynamic memory allocation; recursion; using linked lists, stacks, queues, and trees; search and sorting algorithms; generic methods and classes; a comparative introduction to dominant programming languages; engineering examples.
Repeat Status: Not repeatable for credit
Prerequisites: ECE 203 [Min Grade: D] or CS 203 [Min Grade: D]
CS 260 Data Structures 3.0 Credits
Covers stacks, queues, linked allocation, binary trees, internal searching and sorting, hashing, and applications.
Repeat Status: Not repeatable for credit
Prerequisites: CS 265 [Min Grade: D]
CS 265 Advanced Programming Tools and Techniques 3.0 Credits
Introduction to the basic principles of programming practice: testing, debugging, portability, performance, design alternatives, and style. Application in a variety of programming languages, programming environments, and operating systems. Introduction to tools used in the software development process for improving program functionality, performance, and robustness.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 172 [Min Grade: D] or CS 133 [Min Grade: D] or SE 103 [Min Grade: D] or ECEC 301 [Min Grade: D]
CS 270 Mathematical Foundations of Computer Science 3.0 Credits
Emphasizes analytic problem-solving and introduction of mathematical material necessary for later courses in algorithms, compiler theory, and artificial intelligence. Includes topics such as logic, theorem-proving, language operations, context-free grammars and languages, recurrence relations, and analysis of algorithms.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 172 [Min Grade: D] or CS 265 [Min Grade: D] or SE 103 [Min Grade: D]
CS 280 Special Topics in Computer Science 12.0 Credits
Covers topics in modern computer science. Different topics may be considered in different quarters.
Repeat Status: Can be repeated multiple times for credit
Restrictions: Cannot enroll if classification is Freshman
CS 281 Systems Architecture 4.0 Credits
Covers internal function and organization of digital computers, including instruction sets, addressing methods, input-output architectures, central processor organization, machine language, and assembly language.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: (ECE 200 [Min Grade: D] or CS 270 [Min Grade: D]) and (CS 172 [Min Grade: D] or SE 103 [Min Grade: D])
CS 282 Systems Architecture II 4.0 Credits
Covers computer system operations, assembly language programming techniques, operating system interfacing, and organization of assemblers and loaders.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 281 [Min Grade: D]
CS 283 Systems Programming 3.0 Credits
This course introduces computer systems, including interaction of hardware and software through the operating system, from the programmer's perspective. Three fundamental abstractions are emphasized: processes, virtual memory, and files. These abstractions provide programmers a common interface to a wide variety of hardware devices. Topics covered include linking, system level I/O, concurrent programming, and network programming.
Repeat Status: Not repeatable for credit
Prerequisites: CS 265 [Min Grade: D]
CS 300 Applied Symbolic Computation 3.0 Credits
This course covers the fundamentals of symbolic mathematical methods as embodied in symbolic mathematics software systems, including: fundamental techniques, simplification of expressions, solution of applications problems, intermediate expressions swell, basic economics of symbolic manipulation, efficient solution methods for large problems, hybrid symbolic/numeric techniques.
Repeat Status: Not repeatable for credit
Prerequisites: CS 260 [Min Grade: D] and CS 270 [Min Grade: D] and MATH 200 [Min Grade: D] and MATH 201 [Min Grade: D]
CS 303 Algorithmic Number Theory and Cryptography 3.0 Credits
Covers fundamental algorithms for integer arithmetic, greatest common divisor calculation, modular arithmetic, and other number theoretic computations. Algorithms are derived, implemented and analyzed for primality testing and integer factorization. Applications to cryptography are explored including symmetric and public-key cryptosystems. A cryptosystem will be implemented and methods of attack investigated.
Repeat Status: Not repeatable for credit
Prerequisites: CS 260 [Min Grade: D] and MATH 221 [Min Grade: D] and (MATH 201 [Min Grade: D] or MATH 261 [Min Grade: D] or ENGR 231 [Min Grade: D])
CS 337 The Psychology of Human-Computer Interaction 3.0 Credits
Applies cognitive and experimental psychology to the understanding of human-computer interaction.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: PSY 101 [Min Grade: D] and CS 171 [Min Grade: D]
CS 338 Graphical User Interfaces 3.0 Credits
This course covers the design and implementation of graphical user interfaces. Topics include: event-driven programming, application programmer interfaces, widgets, callback functions, windowing systems and desktops, rapid prototyping languages, multithreaded GUI's. A term project involving implementation of a complex application will be undertaken.
Repeat Status: Not repeatable for credit
Prerequisites: CS 350 [Min Grade: D] or SE 310 [Min Grade: D]
CS 345 Computer Game Design and Development 3.0 Credits
This course introduces students to the computer game design process. Students also learn how the individual skills of modeling, animation, scripting, interface design and story telling are coordinated to produce interactive media experiences for various markets, devices and purposes.
Repeat Status: Not repeatable for credit
Prerequisites: (DIGM 260 [Min Grade: D] or GMAP 260 [Min Grade: D]) and (CS 265 [Min Grade: D] or DIGM 141 [Min Grade: D])
CS 347 Experimental Game Development 3.0 Credits
The goal of this course is to develop new ideas and innovations in games through the design, development, and implementation of games using short development cycles and creative thematic constraints.
Repeat Status: Not repeatable for credit
Prerequisites: CS 345 [Min Grade: D], GMAP 345 [Min Grade: D] (Can be taken Concurrently)
CS 348 Serious Game Development 3.0 Credits
The goal of this course is to learn more about serious games, that is games used in a non-entertainment context, such as games for health, education, and persuasion, through readings and through the design, development, and implementation of serious games.
Repeat Status: Not repeatable for credit
Prerequisites: CS 345 [Min Grade: D], GMAP 345 [Min Grade: D] (Can be taken Concurrently)
CS 350 [WI] Software Design 3.0 Credits
Covers software design methods and implementation. Good design and implementation approaches will be motivated through software examples and reinforced through programming projects. Topics include architectural styles, code reuse, modularity and information hiding principles, object-oriented design patterns, design specification and formal methods, good coding and documentation practices. This is a writing intensive course.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman or Sophomore
Prerequisites: CS 260 [Min Grade: D] and CS 265 [Min Grade: D]
CS 360 Programming Language Concepts 3.0 Credits
Introduces the design and implementation of modern programming languages: formal theory underlying language implementation; concerns in naming, binding, storage allocation and typing; semantics of expressions and operators, control flow, and subprograms; procedural and data abstraction; functional, logic, and object-oriented languages. Students will construct an interpreter for a nontrivial language.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 260 [Min Grade: D]
CS 361 Concurrent Programming 3.0 Credits
Covers programming of concurrent, cooperating sequential processes. Studies race conditions, critical sections, mutual exclusion, process synchronization, semaphores, monitors, message passing, the rendezvous, deadlock, and starvation.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 260 [Min Grade: D] and CS 281 [Min Grade: D]
CS 365 System Administration 3.0 Credits
Fundamentals of system administration featuring hands-on practice with an industry standard operating system. Focus on installation, maintenance and management of several systems for multi-user environments.
Repeat Status: Not repeatable for credit
Prerequisites: CS 260 [Min Grade: D] and CS 265 [Min Grade: D]
CS 370 Operating Systems 3.0 Credits
Explores the internal algorithms and structures of operating systems: CPU scheduling, memory management, file systems, and device management. Considers the operating system as a collection of cooperating sequential processes (servers) providing an extended or virtual machine that is easier to program than the underlying hardware. Topics include virtual memory, input/output devices, disk request scheduling, deadlocks, file allocation, and security and protection.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 283 [Min Grade: D] or CS 361 [Min Grade: D]
CS 380 Artificial Intelligence 3.0 Credits
Explores the foundations of artificial intelligence: production systems, heuristic programming, knowledge representation, and search algorithms. Also covers programming in an AI language. Additional topics chosen from game theory, decision support systems, pattern matching and recognition, image understanding, natural language, fuzzy and non-monotonic logic, machine learning, theorem proving, and common sense reasoning.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 260 [Min Grade: D] and CS 270 [Min Grade: D]
CS 430 Computer Graphics 3.0 Credits
The course presents the fundamental geometric representations and drawing algorithms of computer graphics through lectures and programming assignments. The representations include lines, curves, splines, polygons, meshes, parametric surfaces and solids. The algorithms include line drawing, curve and surface evaluation, polygon filling, clipping, 3D-to-2D projection and hidden surface removal.
Repeat Status: Not repeatable for credit
Prerequisites: MATH 200 [Min Grade: D] and MATH 201 [Min Grade: D] and (CS 350 [Min Grade: D] or SE 310 [Min Grade: D])
CS 431 Advanced Rendering Techniques 3.0 Credits
The creation of realistic images from 3D models is central to the development of computer graphics. The ray tracing algorithm has become one of the most popular and powerful techniques for creating photo-realistic images. This class explores the algorithmic components of ray tracing. Students implement many of these components in their class programming projects.
Repeat Status: Not repeatable for credit
Prerequisites: CS 430 [Min Grade: D]
CS 432 Interactive Computer Graphics 3.0 Credits
This is a project-oriented class that covers the concepts and programming details of interactive computer graphics. These include graphics primitives, display lists, picking, shading, rendering buffers and transformations. Students will learn an industry-standard graphics system by implementing weekly programming assignments. The course culminates with a student-defined project.
Repeat Status: Not repeatable for credit
Prerequisites: CS 260 [Min Grade: D] and (MATH 200 [Min Grade: D] or MATH 201 [Min Grade: D] or MATH 261 [Min Grade: D] or ENGR 231 [Min Grade: D])
CS 435 Computational Photography 3.0 Credits
Fundamentals of computational photography, an interdisciplinary field at the intersection of computer vision, graphics, and photography. Covered topics include fundamentals of cameras, novel camera designs, image manipulation, single-view modeling, and image-based rendering with an emphasis on learning the computational methods and their underlying mathematical concepts through hands-on assignments.
Repeat Status: Not repeatable for credit
Prerequisites: (MATH 123 [Min Grade: D] or MATH 200 [Min Grade: D]) and (MATH 201 [Min Grade: D] or MATH 261 [Min Grade: D] or ENGR 231 [Min Grade: D]) and CS 260 [Min Grade: D]
CS 440 Theory of Computation 3.0 Credits
Finite automata, regular sets, and regular expressions; pushdown automata, context-free languages, and normal forms for grammars; Turing machines and recursively enumerable sets; Chomsky hierarchy; computability theory.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman or Sophomore
Prerequisites: CS 270 [Min Grade: D] and MATH 221 [Min Grade: D]
CS 441 Compiler Workshop I 3.0 Credits
Design and implementation of compiler for specified language. Practical application and in-depth study of parsing, scanning, run-time storage management, type analysis, code generation, and error recovery.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman or Sophomore
Prerequisites: CS 270 [Min Grade: D] and CS 283 [Min Grade: D] and CS 360 [Min Grade: D] and CS 440 [Min Grade: D]
CS 442 Compiler Workshop II 3.0 Credits
Continuation of CS 441. Advanced topics in compilation, code generation, and optimization for various programming languages and paradigms.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman or Sophomore
Prerequisites: CS 441 [Min Grade: D]
CS 445 Topics in Computer Gaming 3.0 Credits
Contemporary topics in the design and implementation of computer games. Topics may include game genres, psychological and sociological aspects of games, software tools and game development engines, character and behavior modeling, physical models and realism, virtual reality, graphics and animation, network-based games, performance analysis and efficiency.
Repeat Status: Can be repeated 3 times for 9 credits
Prerequisites: CS 345 [Min Grade: D] or DIGM 345 [Min Grade: D]
CS 451 Software Engineering 3.0 Credits
Covers requirements specification, system modeling, formal methods, architectural design, object-oriented design, programming for reliability, user interface design, functional and structural testing, software reuse, and configuration management.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 270 [Min Grade: D] and MATH 221 [Min Grade: D] and (CS 350 [Min Grade: D] or SE 310 [Min Grade: D])
CS 457 Data Structures and Algorithms I 3.0 Credits
This course covers techniques for analyzing algorithms, including: elementary combinatorics, recurrence relations, and asymptotic analysis; data structures such as hash tables, red-black trees, B-trees, binomial and Fibonacci heaps, union-find trees; sorting algorithms and elementary graph algorithms.
Repeat Status: Not repeatable for credit
Prerequisites: CS 260 [Min Grade: D] and CS 270 [Min Grade: D] and MATH 221 [Min Grade: D]
CS 458 Data Structures and Algorithms II 3.0 Credits
This course presents algorithm design techniques such as dynamic programming, greedy methods, divide and conquer, amortized algorithms; more graph algorithms for minimum spanning trees, shortest paths, and network flows; string matching algorithms; algorithms for finding the convex hull of a discrete set of points; NP-Completeness and approximation algorithms.
Repeat Status: Not repeatable for credit
Prerequisites: CS 457 [Min Grade: D]
CS 461 Database Systems 3.0 Credits
Covers topics including structure and function of database systems, normal form theory, data models (relational, network, and hierarchical), query processing (ISBL), relational algebra and calculus, and file structures. Includes programming project using DBMS.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 260 [Min Grade: D]
CS 470 Operating Systems Workshop 3.0 Credits
Studies a modern multitasking operating system in detail, including device drivers, CPU scheduling, memory management, and file systems. Includes programming assignments that modify or enhance the operating system.
Repeat Status: Not repeatable for credit
Restrictions: Cannot enroll if classification is Freshman
Prerequisites: CS 370 [Min Grade: D]
CS 472 Computer Networks: Theory, Applications and Programming 3.0 Credits
Introduction to computer networking theory, applications and programming, focusing on large heterogeneous networks. Broad topdown introductions to computer networking concepts including distributed applications, socket programming, operation system and router support, router algorithms, and sending bits over congested, noisy and unreliable communication links.
Repeat Status: Not repeatable for credit
Prerequisites: CS 361 [Min Grade: D] or CS 283 [Min Grade: D]
CS 475 Computer and Network Security 3.0 Credits
The key objective of this course is to provide a thorough understanding of technologies and methodologies with which computer networks can be protected. Topics that are covered include: key management and credentials, steganography and watermarking, networking security (VPNs, firewalls, intrusion detection) and system security policies.
Repeat Status: Not repeatable for credit
Prerequisites: CS 472 [Min Grade: D] or CS 283 [Min Grade: D]
CS 476 High Performance Computing 3.0 Credits
This course is an introduction to high performance computing, including concepts and applications. Course contents will include discussions of different types of high performance computer architectures (multi-core/multi-threaded processors, parallel computers, etc), the design, implementation, optimization and analysis of efficient algorithms for uni-processors, multi-threaded processors, and parallel computers, and high performance programming.
Repeat Status: Not repeatable for credit
Prerequisites: (CS 282 [Min Grade: D] and CS 283 [Min Grade: D]) or (ECEC 353 [Min Grade: D] and ECEC 355 [Min Grade: D])
CS 480 Special Topics in Computer Science 12.0 Credits
Covers topics in computer science of interest to students or faculty. Different topics may be considered during different quarters.
Repeat Status: Can be repeated multiple times for credit
CS 481 Advanced Artificial Intelligence 3.0 Credits
This course covers topics in representation, reasoning, and decision-making under uncertainty; learning; solving problems with time-varying properties. Assignments applying AI techniques toward building intelligent machines that interact with dynamic, uncertain worlds will be given.
Repeat Status: Not repeatable for credit
Prerequisites: CS 380 [Min Grade: D] and (MATH 311 [Min Grade: D] or MATH 410 [Min Grade: D])
CS 485 Special Topics in Artificial Intelligence 3.0 Credits
A variety of special topics are offered in artificial intelligence (AI) including: intelligent time-critical reasoning, knowledge-based agents, machine learning, natural language processing, and geometric reasoning. This course may be repeated for credit as topics vary.
Repeat Status: Can be repeated multiple times for credit
Prerequisites: CS 260 [Min Grade: D] and CS 380 [Min Grade: D]
CS 491 [WI] Software Engineering Workshop 3.0 Credits
Offers in-depth study and application of software engineering practice. Students work in teams to develop a significant software system. Course is intended to serve as a capstone experience for students in the senior year. The project involves the specification and review of software requirements and designs, implementation and code inspections, functional testing, and documentation. This course is writing intensive.
Repeat Status: Not repeatable for credit
Prerequisites: CS 451 [Min Grade: D]
CS 492 [WI] Software Engineering Workshop II 3.0 Credits
Continues CS 491 team project. This course is writing intensive.
Repeat Status: Not repeatable for credit
Prerequisites: CS 491 [Min Grade: D]
CS 493 [WI] Software Engineering Workshop III 3.0 Credits
Continues CS 492 team project. This course is writing intensive.
Repeat Status: Not repeatable for credit
Prerequisites: CS 492 [Min Grade: D]
CS 498 Independent Study in Computer Science 12.0 Credits
Provides supervised study of selected topics in computer science.
Repeat Status: Can be repeated multiple times for credit
Restrictions: Cannot enroll if classification is Freshman






