Introductory/Pre-Major

Courses available for students to learn the fundamentals of Computer Science.


CSE120 Computer Science Principles
 Introduces fundamental concepts of computer science and computational thinking. Includes logical reasoning, problem solving, data representation, abstraction, the creation of “digital artifacts” such as Web pages and programs, managing complexity, operation of computers and networks, effective Web searching, ethical, legal and social aspects of information technology.

CSE121 Introduction to Computer Programming I
 Introduction to computer programming for students without previous programming experience. Students write programs to express algorithmic thinking and solve computational problems motivated by modern societal and scientific needs. Includes procedural programming constructs (methods), control structures (loops, conditionals), and standard data types, including arrays. Cannot be taken for credit if credit received for CSE 142. Recommended: completion of Paul G. Allen School’s Guided Self-Placement.

CSE122 Introduction to Computer Programming II
 Computer programming for students with some previous programming experience. Emphasizes program design, style, and decomposition. Uses data structures (e.g., lists, dictionaries, sets) to solve computational problems motivated by modern societal and scientific needs. Introduces data abstraction and interface versus implementation. Cannot be taken for credit if credit received for CSE 143. Recommended: CSE 121 or completion of Paul G. Allen School’s Guided Self-Placement.

CSE123 Introduction to Computer Programming III
 Computer programming for students with significant previous programming experience. Emphasizes implementation and run-time analysis of data structures and algorithms using techniques including linked references, recursion, and object-oriented inheritance to solve computational problems motivated by modern societal and scientific needs. Recommended: CSE 122 or completion of Paul G. Allen School’s Guided Self-Placement.

CSE142 Computer Programming I
 Basic programming-in-the-small abilities and concepts including procedural programming (methods, parameters, return, values), basic control structures (sequence, if/else, for loop, while loop), file processing, arrays, and an introduction to defining objects. Intended for students without prior programming experience.

CSE143 Computer Programming II
 Continuation of CSE 142. Concepts of data abstraction and encapsulation including stacks, queues, linked lists, binary trees, recursion, instruction to complexity and use of predefined collection classes. Prerequisite: CSE 142.

CSE143X Accelerated Computer Programming I/II
 Accelerated introductory offering that covers the material from both CSE 122 and CSE 123 in one quarter.

CSE154 Web Programming
 Covers languages, tools, and techniques for developing interactive and dynamic web pages. Topics include page styling, design, and layout; client and server side scripting; web security; and interacting with data sources such as databases. Prerequisite: a minimum grade of 2.0 in either CSE 122, CSE 123, CSE 142, CSE 143, CSE 160, or CSE 163.

CSE160 Data Programming
 Introduction to computer programming. Assignments solve real data manipulation tasks from science, engineering, business, and the humanities. Concepts of computational thinking, problem-solving, data analysis, Python programming, control and data abstraction, file processing, and data visualization. Intended for students without prior programming experience. Cannot be taken for credit if credit received for either CSE 123 or CSE 143.

CSE163 Intermediate Data Programming
 Intermediate data programming. Topics include writing programs that manipulate different types of data; leveraging the growing ecosystem of tools and libraries for data programming; writing programs that are both efficient and elegant; and writing medium-scale programs (100 to 200 lines).

CSE180 Introduction to Data Science
 Survey course introducing the essential elements of data science: data collection, management, curation, and cleaning; summarizing and visualizing data; basic ideas of statistical inference, machine learning. Students will gain hands-on experience through computing labs.

Undergraduate Major

Courses for students accepted to the Computer Science/Computer Engineering major.


CSE190B Freshman Direct-Admit Seminar
 Seminar for Direct Admit 1st-year CSE majors.

CSE311 Foundations of Computing I
 Examines fundamentals of logic, set theory, induction, and algebraic structures with applications to computing; finite state machines; and limits of computability. Prerequisite: a minimum grade of 2.0 in either CSE 123 or CSE 143; and MATH 126 or MATH 136.

CSE312 Foundations of Computing II
 Examines fundamentals of enumeration and discrete probability; applications of randomness to computing; polynomial-time versus NP; and NP-completeness. Prerequisite: CSE 311.

CSE331 Software Design and Implementation
 Explores concepts and techniques for design and construction of reliable and maintainable software systems in modern high-level languages: specifications; program structure and design; program-correctness approaches, including testing; and event-driven programming (e.g., graphical user interface). Prerequisite: a minimum grade of 2.0 in either CSE 123 or CSE 143.

CSE332 Data Structures and Parallelism
 Covers abstract data types and structures including dictionaries, balanced trees, hash tables, priority queues, and graphs; sorting; asymptotic analysis; fundamental graph algorithms including graph search, shortest path, and minimum spanning trees; multithreading and parallel algorithms; P and NP complexity classes. No credit if CSE 373 has been taken. Prerequisite: CSE 311.

CSE333 Systems Programming
 Includes substantial programming experience in languages that expose machine characteristics and low-level data representation (e.g., C and C++); explicit memory management; modern libraries and language features; interacting with operating-system services; introduction to concurrent programming. Prerequisite: CSE 351.

CSE340 Interaction Programming
 User interfaces for computing systems, including principles and implementation techniques. Covers key topics and programming paradigms for interactive systems, such as event handling; graphical layout, design, and widgets; undo; accessibility; and context awareness. Provides experience with modern application domains and frameworks (e.g., mobile applications). Prerequisite: CSE 123 or CSE 143.

CSE341 Programming Languages
 Basic concepts of programming languages, including abstraction mechanisms, static and dynamic typing, scope, syntax vs. semantics, first-class function closures, and algebraic datatypes. Detailed study of functional programming and other paradigms. Cannot be taken for credit if credit received for CSE 413. Prerequisite: CSE 123 or CSE 143.

CSE344 Introduction to Data Management
 Introduces database management systems and writing applications that use such systems; data models (e.g., relational, semi-structured), query languages (e.g., SQL, XQuery), language bindings, conceptual modeling, transactions, security, database tuning, data warehousing, parallelism, and web-data management.

CSE351 The Hardware/Software Interface
 Examines key computational abstraction levels below modern high-level languages; number representation, assembly language, introduction to C, memory management, the operating-system process model, high-level machine architecture including the memory hierarchy, and how high-level languages are implemented.

CSE369 Introduction to Digital Design
 Introduces the implementation, specification, and simulation of digital logic. Boolean algebra; combinational circuits including arithmetic circuits and regular structures; sequential circuits including finite-state-machines; and use of field-programmable gate arrays (FPGAs). Emphasizes simulation, high-level specification, and automatic synthesis techniques. Cannot be taken for credit if credit received for E E 271.

CSE371 Design of Digital Circuits and Systems
 Provides a theoretical background in, and practical experience with, tools, and techniques for modeling complex digital systems with the Verilog hardware description language, maintaining signal integrity, managing power consumption, and ensuring robust intra- and inter-system communication. Prerequisite: either E E 205 or E E 215; either E E 271 or CSE 369. Offered: jointly with E E 371.

CSE390Z Mathematics for Computation Workshop
 Designed to provide academic support to students enrolled concurrently CSE 311. 311 concepts are at the core of computer science, but they are different from what many students have experienced in CS courses before. CSE 390Z is not a part of CSE 311 and is a separate course. All students enrolled in CSE 311 are welcome to register.

CSE391 System and Software Tools
 Introduction to tools commonly used in software development. Topics include using a command-line interface, writing scripts for file and string manipulation, managing user permissions, manipulating text with regular expressions, using build-management tools, and using version-control systems. Prerequisite: either CSE 122, CSE 123, or CSE 143. Credit/no-credit only.

CSE401 Introduction to Compiler Construction
 Fundamentals of compilers and interpreters; symbol tables; lexical analysis, syntax analysis, semantic analysis, code generation, and optimizations for general purpose programming languages. No credit to students who have taken CSE 413. Prerequisite: CSE 332; CSE 351.

CSE402 Design and Implementation of Domain-Specific Languages
 Design and implementation of domain-specific languages. Creation of new programming abstractions, formal and informal language specification techniques, implementation strategies to support language analysis and execution on traditional and non-traditional computing platforms. Selection and use of appropriate software tools and development environments to build novel DSLs.

CSE403 Software Engineering
 Fundamentals of software engineering using a group project as the basic vehicle. Topics covered include the software crisis, managing complexity, requirements specification, architectural and detailed design, testing and analysis, software process, and tools and environments. Prerequisite: CSE 331; CSE 332.

CSE421 Introduction to Algorithms
 Techniques for design of efficient algorithms. Methods for showing lower bounds on computational complexity. Particular algorithms for sorting, searching, set manipulation, arithmetic, graph problems, pattern matching. Prerequisite: CSE 312; CSE 332.

CSE422 Advanced Toolkit for Modern Algorithms
 A rigorous introduction to the principles of modern algorithm design, with a particular focus on the analysis of large, noisy data sets, and the algorithmic principles underlying modern statistics and machine learning. Students reason about and implement contemporary algorithms, and analyze their behavior on real-world data sets. Prerequisite: CSE 312; CSE 332; and MATH 208.

CSE426 Cryptography
 Rigorous introduction to modern cryptography. Design and application of important cryptographic objects, such as encryption, message authentication, and zero-knowledge proofs. Students learn to formalize security goals, design schemes for achieving these goals, and study security attacks or security proofs that establish the security or insecurity of schemes. Prerequisite: CSE 312.

CSE427 Computational Biology
 Algorithmic and analytic techniques underlying analysis of large-scale biological data sets such as DNA, RNA, and protein sequences or structures, expression and proteomic profiling. Hands-on experience with databases, analysis tools, and genome markers. Applications such as sequence alignment, BLAST, phylogenetics, and Markov models. Prerequisite: CSE 312; CSE 332.

CSE428 Computational Biology Capstone
 Designs and implements a software tool or software analysis for an important problem in computational molecular biology. Prerequisite: CSE 312; CSE 331; CSE 332.

CSE431 Introduction to Theory of Computation
 Models of computation, computable and noncomputable functions, space and time complexity, tractable and intractable functions. Prerequisite: CSE 312.

CSE434 Introduction to Quantum Computation
 Basic theory of quantum information and computation, including applications and phenomena. Builds from qubits, measurements, and quantum gates toward applications including key distribution, entanglement, non-locality, and quantum algorithms including Grover search and Shor’s factoring. Includes writing quantum programs. Prerequisite: MATH 208 and CSE 312.

CSE440 Introduction to HCI: User Interface Design, Prototyping, and Evaluation
 Human-Computer Interaction (HCI) theory and techniques. Methods for designing, prototyping, and evaluating user interfaces to computing applications. Human capabilities, interface technology, interface design methods, and interface evaluation tools and techniques. Prerequisite: CSE 332.

CSE441 Advanced HCI: Advanced User Interface Design, Prototyping, and Evaluation
 Human-Computer Interaction (HCI) theory and techniques. Advanced methods for designing, prototyping, and evaluating user interfaces to computing applications. Novel interface technology, advanced interface design methods, and prototyping tools. Prerequisite: CSE 440.

CSE442 Data Visualization
 Techniques for creating effective visualizations of data based on principles from graphic design, perceptual psychology, and statistics. Topics include visual encoding models, exploratory data analysis, visualization software, interaction techniques, graphical perception, color, animation, high-dimensional data, cartography, network visualization, and text visualization. Prerequisite: CSE 332.

CSE444 Database Systems Internals
 The relational data model and the SQL query language. Conceptual modeling: entity/relationships, normal forms. XML, XPath, and XQuery. Transactions: recovery and concurrency control. Implementation of a database system. A medium sized project using a rational database backend. Prerequisite: CSE 332; and either CSE 344 or CSE 414.

CSE446 Machine Learning
 Design of efficient algorithms that learn from data. Representative topics include supervised learning, unsupervised learning, regression and classification, deep learning, kernel methods, and optimization. Emphasis on algorithmic principles and how to use these tools in practice. Prerequisite: CSE 332; MATH 208 or MATH 136; and either STAT 390, STAT 391, or CSE 312.

CSE447 Natural Language Processing
 Methods for designing systems that usefully and/or intelligently process natural language text data. Language models, text categorization, syntactic and semantic analysis, machine translation. This course emphasizes algorithms and data-driven methods. Prerequisite: CSE 312 and CSE 332; recommended: MATH 208; and CSE 446 is recommended before or concurrently.

CSE451 Introduction to Operating Systems
 Principles of operating systems. Process management, memory management, auxiliary storage management, resource allocation. No credit to students who have completed CSE 410. Prerequisite: CSE 351; CSE 332; CSE 333.

CSE452 Distributed Systems
 Covers abstractions and implementation techniques in the construction of distributed systems, including cloud computing, distributed storage systems, and distributed caches. Prerequisite: CSE 332 and CSE 333; recommended: CSE 451

CSE453 Data Center Systems
 Datacenter server, network, storage, security, and energy management technologies. Virtualization, I/O architectures, resource isolation and provisioning, disaggregation, quality of service, and tail latency. Prerequisite: CSE 332 and CSE 333; recommended: CSE 451 or CSE 452.

CSE455 Computer Vision
 Introduction to image analysis and interpreting the 3D world from image data. Topics may include segmentation, motion estimation, image mosaics, 3D-shape reconstruction, object recognition, and image retrieval. Prerequisite: CSE 333; CSE 332.

CSE456 Story Design for Computer Animation
 Animation principles and production for story development and design. Design, development, and production of several storyreels, which are a tool for the pre-production of animated features and shorts. Student use authoring tools to present finished work.

CSE457 Computer Graphics
 Introduction to computer image synthesis, modeling, and animation. Topics may include visual perception, displays and framebuffers, image processing, affine and projective transformations, hierarchical modeling, hidden surface elimination, shading, ray-tracing, anti-aliasing, texture mapping, curves, surfaces, particle systems, dynamics, character animation, and animation principles. Prerequisite: CSE 333; CSE 332.

CSE458 Computer Animation
 Introduction to basic principles of computer generated animation. Focus on the modeling and lighting of animated characters. Students from Art, CSE, and Music team up on projects to be built on commercially-available modeling and lighting packages.

CSE459 Animation Pre-Production
 Pre-production of collaboratively designed animated shorts. In-depth analysis of classical and computer generated works. Character design and pre-planning, model sheets, character rigging, storyreel and animatics, character motion, design for multiple characters, and principles of animation as applied to character motion and effects.

CSE460 Animation Capstone
 Apply the knowledge gained in previous animation courses to produce a short animated film. Topics include scene planning, digital cinematography, creature and hard surface modeling, animatics and basics of character animation, and rendering techniques.

CSE461 Introduction to Computer Communication Networks
 Computer network architectures, protocol layers, network programming. Transmission media, encoding systems, switching, multiple access arbitration. Network routing, congestion control, flow control. Transport protocols, real-time, multicast, network security. Prerequisite: either CSE 326 or CSE 332; either CSE 303 or CSE 333.

CSE464 Advanced Topics in Digital Animation
 Students design individual animated works for professional quality demo reels. 2- and 3-D animatics, special effects design, advanced character animation techniques, 3-D paint techniques and integration, short design, sequence planning, non-photorealistic rendering options, interactive animation for pre-planning, and advanced production techniques and strategies.

CSE469 Computer Architecture I
 Introduction to computer architecture. Assembly and machine language, microprocessor organization including control and datapath. Computer arithmetic. Memory systems and caching. Performance modeling of microprocessors. Prerequisite: either E E 271 or CSE 369; and either CSE 123 or CSE 143. Offered: jointly with E E 469.

CSE470 Computer Architecture II
 Advanced computer architecture. Performance evaluation and energy efficiency. Instruction set architectures. Instruction-level parallelism. Modern microprocessor micro-architecture. Thread-level parallelism. Cache coherency and memory consistency in shared-memory multiprocessors. Memory hierarchy. GPU architecture. Warehouse-scale computing. Trends in computer design. Prerequisite: either CSE 469 or E E 469. Offered: jointly with E E 470.

CSE473 Introduction to Artificial Intelligence
 Principal ideas and developments in artificial intelligence: Problem solving and search, game playing, knowledge representation and reasoning, uncertainty, machine learning, natural language processing. Not open for credit to students who have completed CSE 415. Prerequisite: CSE 312, CSE 332

CSE474 Introduction to Embedded Systems
 Introduces the specification, design, development, and test of real time embedded system software. Use of a modern embedded microcomputer or microcontroller as a target environment for a series of laboratory projects and a comprehensive final project. Prerequisite: CSE 143. Offered: jointly with E E 474;

CSE475 Embedded Systems Capstone
 Capstone design experience. Prototype a substantial project mixing hardware, software, and communications. Focuses on embedded processors, programmable logic devices, and emerging platforms for the development of digital systems. Provides a comprehensive experience in specification, design, and management of contemporary embedded systems. Prerequisite: either E E 271 or CSE 369; either CSE 466, E E 472, or CSE 474/E E 474. Offered: jointly with E E 475;

CSE478 Autonomous Robotics
 Theory and application of algorithms and probabilistic techniques for autonomous robotics. Covers topics related to state estimation (Bayes filtering, probabilistic motion and sensor models), planning/control (search based planners, lattice based planners, trajectory following techniques), and perception and learning (object detection, learning from demonstrations etc.).

CSE480 Computer Ethics Seminar
 Reading and discussion seminar on the ethical issues surrounding sociotechnical systems and their impacts on society. Includes historical perspectives and current topics. Relates computer technology to ethical questions of power, politics, equity, privacy, autonomy, and more. Credit/no-credit only.

CSE481 Capstone Software
 Student teams design and implement a software project involving multiple areas of the CSE curriculum. Course emphasizes the development process, rather than the product. Prerequisite: CSE 312; CSE 332; CSE 351; and either CSE 331, CSE 333, or CSE 369. (Individual Capstones listed below)

CSE481NE Capstone: Neural Engineering
 Design, build and present a prototype device or software tool that solves an important problem in neural engineering. Examples include interfaces based on combining AI with brain-, muscle-, and/or eye-tracking signals to control computers or robotic devices, virtual reality approaches to improving neural function, and machine learning-based software tools for analyzing large-scale neural data.

CSE481P Capstone: Social Computing
 Students will work in teams of 3 to 4 to design and evaluate computational formulations of global problems such as achieving stability and sufficiency of the world food supply, managing the threats of nuclear war, ending homelessness, and minimizing the undesirable consequences of climate change. Each team will begin by selecting a problem in consultation with the teaching team, identifying and analyzing appropriate information resources, including possible consultations with outside experts. The team will propose one or more basic formulations, present them, and receive critiques from both the teaching team and the other teams. They will iteratively refine their formulations, moving towards working code that supports users in roles that engage them in understanding and solving the problem.

CSE481S Capstone: Security
 Student teams will be tasked with creating a computer security themed product. The work will progress from product conception to requirements to design to implementation to evaluation. Along the way, students will incorporate key computer security tools and practices, including threat modeling, penetration testing, and bug fixing. Examples include password managers, censorship resistance systems, and mobile payment systems.

CSE481V Capstone: AR/VR
 Virtual and Augmented Reality Capstone. Students become familiar with the latest technology and software, and build an app in 10 weeks.

CSE484 Computer Security
 Foundations of modern computer security, including software security, operating system security, network security, applied cryptography, human factors, authentication, anonymity, and web security. Prerequisite: CSE 332; CSE 351.

CSE492 Undergraduate Seminar
 Seminars on current topics in computer science and engineering. Topic selection will vary from quarter to quarter. Credit/no-credit only.

CSE492J Career Seminar
 Career Seminar

CSE492L CSE Leadership Seminar Series
 Seminar series, primarily targeted at undergraduates, that brings CSE alumni and friends to campus to describe how to be effective in a startup, small company, large company, or less common environment.

CSE493C Advanced Special Topics: Molecular Computation
 Introduction to molecular computation that explores how “smart” molecules can be designed and programmed, using ideas that span computer science, to not only store and process information, but to self-assemble into complex structures with nanometer precision, to sense (bio-)chemical signals from their environment, perform robust computation, and in turn actuate a physical response.

This course is self-contained and assumes no prior knowledge of biology, chemistry, nor prior experience in a wet lab. All majors interested in learning about and building programmable matter at the nanoscale are welcome.

Undergraduate Non-Major

Courses open to non-major students.


CSE373 Data Structures and Algorithms
 Fundamental algorithms and data structures for implementation. Techniques for solving problems by programming. Linked lists, stacks, queues, directed graphs. Trees: representations, traversals. Searching (hashing, binary search trees, multiway trees). Garbage collection, memory management. Internal and external sorting. Intended for non-majors. Cannot be taken for credit if credit received for CSE 332.

CSE374 Intermediate Programming Concepts and Tools
 Covers key software development concepts and tools not in introductory courses. Concepts of lower-level programming (C/C++) and explicit memory management; techniques and tools for individual and group software development; design, implementation, and testing strategies. Intended for non-majors. Cannot be taken for credit if credit received for CSE 333.

CSE410 Computer Systems
 Structure and components of hardware and software systems. Machine organization, including central processor and input-output architectures; assembly language programming; operating systems, including process, storage, and file management. Intended for non-majors. No credit to students who have completed CSE 351 or CSE 451.

CSE412 Introduction to Data Visualization (for non-CSE Majors)
 Introduction to data visualization design and use for both data exploration and explanation. Methods for creating effective visualizations using principles from graphic design, psychology, and statistics. Topics include data models, visual encoding methods, data preparation, exploratory analysis, uncertainty, cartography, interaction techniques, visual perception, and evaluation methods. Cannot be taken for credit if credit received for CSE 442.

CSE413 Programming Languages & Implementation (for non-CSE Majors)
 Basic concepts and implementation strategies for modern functional and object-oriented programming languages such as Scheme and Java. Intended for non-majors. No credit to students who have completed CSE 341 or CSE 401.

CSE414 Introduction to Database Systems (for non-CSE Majors)
 Introduces database management systems and writing applications that use such systems; data models, query languages, transactions, database tuning, data warehousing, and parallelism. Intended for non-majors. Cannot be taken for credit if credit received for CSE 344.

CSE415 Introduction to AI (for non-majors)
 Principles and programming techniques of artificial intelligence: LISP, symbol manipulation, knowledge representation, logical and probabilistic reasoning, learning, language understanding, vision, expert systems, and social issues. Intended for non-majors. Not open for credit to students who have completed CSE 473.

CSE416 Introduction to Machine Learning
 Provides practical introduction to machine learning. Modules include regression, classification, clustering, retrieval, recommender systems, and deep learning, with a focus on an intuitive understanding grounded in real-world applications. Intelligent applications are designed and used to make predictions on large, complex datasets. Prerequisite: either CSE 123, CSE 143, CSE 160, or CSE 163; and either STAT 311, STAT 390, STAT 391, IND E 315, MATH 394/STAT 394, STAT 395/MATH 395, or Q SCI 381. Offered: jointly with STAT 416.

CSE417 Algorithms and Computational Complexity
 Design and analysis of algorithms and data structures. Efficient algorithms for manipulating graphs and strings. Fast Fourier Transform. Models of computation, including Turing machines. Time and space complexity. NP-complete problems and undecidable problems. Intended for non-majors.

B.S./M.S.

Courses for 5th Year Master’s students.


CSEM501 Introduction to Compiler Construction
 Fundamentals of compilers and interpreters; symbol tables; lexical analysis, syntax analysis, semantic analysis, code generation, and optimizations for general purpose programming languages. Cannot be taken for credit if credit received for CSE 401. Prerequisite: CSE 332; CSE 351.

CSEM544 Database Systems
 Relational data model and SQL query language. Conceptual modeling; normal forms; XML. Transactions: recovery and concurrency control. Implementation of a database system. Application project using a relational database system. Study of database research papers. May not be taken for credit if student has taken CSE 444. Prerequisite: CSE 332; CSE 344.

CSEM547 Natural Language Processing
 Methods for designing systems that usefully and/or intelligently process natural language text data. Language models, text categorization, syntactic and semantic analysis, machine translation. Emphasizes algorithms and data-driven methods. Prerequisite: CSE 312 and CSE 332. Cannot be taken for credit if credit received for CSE 447; recommended: MATH 308; CSE 446 is recommended before or concurrently.

CSEM552 Introduction to Distributed Systems
 Covers abstractions and implementation techniques in the construction of distributed systems, including cloud computing, distributed storage systems, and distributed caches. Prerequisite: CSE 332 and CSE 333; recommended: CSE 451.

CSEM553 Datacenter Systems
 Datacenter server, network, storage, security, and energy management technologies. Virtualization, I/O architectures, resource isolation and provisioning, disaggregation, quality of service, and tail latency. Prerequisite: CSE 332 and CSE 333; recommended: CSE 451 or CSE 452.

CSEM584 Computer Security
 Explores foundations and new directions in computer security and privacy, including: risk analysis, system security, applied cryptography, human-computer interaction, design and implementation issues, anonymity, web security, and side channels. Studies security and privacy research papers. Prerequisite: CSE 332 and CSE 351; recommended: CSE 451 or CSE 461.

Graduate (Ph.D)

Graduate student courses.


CSE501 Implementation of Programming Languages
 Design and implementation of compilers and run-time systems for imperative, object-oriented, and functional languages. Intra- and interprocedural analyses and optimizations.

CSE503 Software Engineering
 Specification, implementation, and testing of large, multiperson, software systems. Topics include abstraction, information hiding, software development environments, and formal specifications.

CSE504 Advanced Topics in Software Engineering
 Topics vary but may include software design and evolution, formal methods, requirements specifications, software and system safety, reverse engineering, real-time software, metrics and measurement, programming environments, and verification and validation.

CSE505 Concepts of Programming Languages
 Design and formal semantics of modern programming languages, includes functional and object-oriented languages.

CSE506 Advanced Topics in Programming Languages
 May include functional, object-oriented, parallel, and logic programming languages; semantics for languages of these kinds; type declaration, inference, and checking (including polymorphic types); implementation issues, such as compilation, lazy evaluation, combinators, parallelism, various optimization techniques. Implementation project required.

CSE507 Computer-Aided Reasoning for Software Engineering
 Covers theory, implementation, and applications of automated reasoning techniques, such as satisfiability solving, theorem proving, model checking, and abstract interpretation. Topics include concepts from mathematical logic and applications of automated reasoning to the design, construction, and analysis of software.

CSE510 Advanced Topics in Human Computer Interaction
 Content varies, including interface issues for networks, embedded systems, education applications, safety and critical systems, graphics and virtual reality, databases, and computer-supported cooperative work.

CSE512 Data Visualization
 Techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology and cognitive science. Topics: data and image models, visual encoding, graphical perception, color, animation, interaction techniques, graph layout, automated design. Lectures, reading and project.

CSE513 Disability Inclusion for Technologists
 Introduction to the future of access technologies. Topics include disability justice; accessibility technology; creating accessible applications and websites; accessibility concerns in a wide variety of computational topics such as security, fabrication, and augmented reality; and the importance of technology in addressing accessibility concerns in the world at large.

CSE515 Statistical Methods in Computer Science
 Introduction to the probabilistic and statistical techniques used in modern computer systems. Graphical models, probabilistic inference, statistical learning, sequential models, decision theory. Prerequisite: CSE312, STAT 341 or STAT 391, and graduate standing in computer science, or permission of instructor.

CSE517 Natural Language Processing
 Overview of modern approaches for natural language processing. Topics include language models, text, classification, tagging, parsing, machine translation, semantic, and discourse analysis.

CSE521 Design and Analysis of Algorithms I
 Principles of design of efficient algorithms: recursion, divide and conquer, balancing, dynamic programming, greedy method, data structure selection. Correctness and analysis of algorithms. Examples drawn from problems in sorting, searching, set manipulation, pattern-matching, graphs, matrices, polynomials, and integers.

CSE522 Design and Analysis of Algorithms II
 Analysis of algorithms more sophisticated than those treated in 521. Content varies and may include such topics as algebraic algorithms, combinational algorithms, techniques for proving lower bounds on complexity, and algorithms for special computing devices such as networks or formulas.

CSE523 Computational Geometry
 Algorithms for discrete computational geometry. Geometric computation, range searching, convex hulls, proximity, Vornoi diagrams, intersection. Application areas include VLSI design and computer graphics. Prerequisite: CSE 521.

CSE524 Parallel Algorithms
 Design and analysis of parallel algorithms: fundamental parallel algorithms for sorting, arithmetic, matrix and graph problems and additional selected topics. Emphasis on general techniques and approaches used for developing fast and efficient parallel algorithms and on limitations to their efficacy.

CSE525 Randomized Algorithms and Probabilistic Analysis
 Examines algorithmic techniques: random selection, random sampling, backwards analysis, algebraic methods, Monte Carlo methods, and randomized rounding; random graphs; the probabilistic method; Markov chains and random walks; and analysis tools: random variables, moments and deviations, Chernoff bounds, martingales, and balls in bins. Prerequisite: CSE 521 or equivalent; CSE majors only.

CSE526 Cryptography
 Introduction to the theoretical foundation of cryptography, teaching the design and application of selected important cryptographic objects, and the mathematical frameworks and methodologies of modern cryptography for formalizing security goals and developing provably secure solutions.

CSE527 Computational Biology
 Introduces computational methods based on artificial intelligence (AI) and machine learning (ML) techniques for understanding biological systems and improving health care. AI/ML techniques such as explainable and interpretable ML, deep neural network learning, probabilistic graphical models, causal inference, and deep learning techniques are covered. Problem areas such as genetics, epigenomics, expression data analysis, proteomics, and electric health record data analysis are covered.

CSE528 Computational Neuroscience
 Introduction to computational methods for understanding nervous systems and the principles governing their operation. Topics include representation of information by spiking neurons, information processing in neural circuits, and algorithms for adaptation and learning.

CSE529 Computational Genomics
 Computational and statistical approaches and practices for deriving robust and rigorous insights from modern genomics datasets. Lectures alternate between genomics-inspired problem formulation and foundational statistical and computational approaches for addressing them. In foundational lectures, we will cover basics of statistical inference, hidden confounding factors, causality and causal inference, deep neural networks and interpretation approaches to deep learning models.

CSE531 Computational Complexity I
 Deterministic and nondeterministic time and space complexity, complexity classes, and complete problems. Time and space hierarchies. Alternation and the polynomial-time hierarchy. Circuit complexity. Probabilistic computation. Exponential complexity lower bounds. Interactive proofs. Prerequisite: either CSE 311 or equivalent.

CSE532 Computational Complexity II
 Advanced computational complexity including several of the following: circuit complexity lower bounds, #p and counting classes, probabilistically-checkable proofs, de-randomization, logical characteristics of complexity, communication complexity, time-space tradeoffs, complexity of data structures.

CSE533 Advanced Topics in Complexity Theory
 Topics in computational complexity more sophisticated than those treated in 532. Topics are expected to vary from year to year, but might typically focus on such areas as parallel complexity, probabilistic complexity, circuit- or automaton-based complexity, or logic.

CSE534 Quantum Information and Computation
 Introduction to quantum information and computation. Qubits, quantum gates, and measurements. Entanglement and non-locality. Density matrix formalism. Quantum algorithms: Simon’s algorithm, Grover search, Shor’s factoring, and Hamiltonian Simulation. Quantum error-correction.

CSE535 Theory of Optimization and Continuous Algorithms
 Theoretical foundations of convex optimization and continuous algorithms. First-order methods, rates of convergence, and acceleration; gradient, subgradient, and mirror descent. Randomization, stochastic descent, leverage scores and sampling. Interior point methods. Linear systems in convex optimization. Algorithmic applications.

CSE541 Interactive Learning
 Foundations and methods of interactive machine learning including multi-armed bandits, active learning, and adaptive experimental design. Stochastic and adversarial K-armed bandits, structured bandits, and contextual bandits. Online learning; adaptive data collection for supervised learning.

CSE542 Reinforcement Learning (offered as CSE 599B – 24sp)
 Foundations of modern reinforcement learning. Topics may include Markov Decision Processes, Value Iteration, Policy Iteration, Approximate Dynamic Programming, Temporal Difference Learning, Q-Learning, Policy Gradients, and Imitation Learning.

CSE543 Deep Learning
 Covers various aspects of deep learning systems, including: basics of deep learning, programming models for expressing machine learning models, automatic differentiation, memory optimization, scheduling, distributed learning, hardware acceleration, domain specific languages, and model serving.

CSE544 Principles of DBMS
 Data models and query languages (SQL, datalog, OQL). Relational databases, enforcement of integrity constraints. Object-oriented databases and object-relational databases. Principles of data storage and indexing. Query-execution methods and query optimization algorithms. Static analysis of queries and rewriting of queries using views. Data integration. Data mining. Principles of transaction processing.

CSE546 Machine Learning
 Explores methods for designing systems that learn from data and improve with experience. Supervised learning and predictive modeling; decision trees, rule induction, nearest neighbors, Bayesian methods, neural networks, support vector machines, and model ensembles. Unsupervised learning and clustering.

CSE547 Machine Learning for Big Data
 Machine Learning and statistical techniques for analyzing datasets of massive size and dimensionality. Representations include regularized linear models, graphical models, matrix factorization, sparsity, clustering, and latent factor models. Algorithms include sketching, random projections, hashing, fast nearest-neighbors, large-scale online learning, and parallel (Map-reduce, GraphLab). Prerequisite: either STAT 535 or CSE 546.

CSE548 Computer Systems Architecture
 Notations for computer systems. Processor design (single chip, look-ahead, pipelined, data flow). Memory hierarchy organization and management (virtual memory and caches). Microprogramming. I/O processing. Multiprocessors (SIMD and MIMD).

CSE549 High-Performance Computer Architecture
 Algorithm design, software techniques, computer organizations for high-performance computing systems. Selected topics from: VLSI complexity for parallel algorithms, compiling techniques for parallel and vector machines, large MIMD machines, interconnection networks, reconfigurable systems, memory hierarchies in multiprocessors, algorithmically specialized processors, data flow architectures.

CSE550 Computer Systems
 Explores computer system design, implementation, and evaluation. Covers principles, techniques, and examples related to the construction of computer systems, including concepts that span network systems, operating systems, web servers, parallel computing, and databases. Prerequisite: CSE 451.

CSE551 Operating Systems
 Operating system design and construction techniques. Concurrent programming, operating system kernels, correctness, deadlock, protection, transaction processing, design methodologies, comparative structure of different kinds of operating systems, and other topics.

CSE552 Distributed and Parallel Systems
 Principles, techniques, and examples related to the design, implementation, and analysis of distributed and parallel computer systems.

CSE556 Computational Fabrication
 Overview of the computational tools and concepts used throughout the modern pipeline for computational fabrication, including topics such as hardware abstraction languages, geometry processing fundamentals, physics-based simulation, optimization techniques, data-driven design methods, and algorithms for high-performance interactive applications.

CSE557 Computer Graphics
 Introduction to image synthesis and computer modeling, emphasizing the underlying theory required for undertaking computer graphics research. Topics include color theory, image processing, affine and projective geometry, hidden-surface determination, photorealistic image synthesis, advanced curve and surface design, dynamics, realistic character animation.

CSE558 Special Topics in Computer Graphics
 Advanced topics in computer graphics not treated in CSE 557. Topics vary from year to year but typically include advanced aspects of image synthesis, animation, and 3D photography.

CSE561 Computer Communication and Networks
 Fundamentals of data transmission: coding, message formats, and protocols. Organization of computer networks. Examples of network implementations.

CSE562 Mobile Systems & Applications (offered as CSE 599D – 24sp)
 Explores mobile system design, implementation, and evaluation. Covers concepts, techniques, algorithms underlying mobile systems and sensing applications, including algorithms for localization and tracking applications as well as building low-power wireless networks.

CSE564 Computer Security and Privacy
 Examines the fundamental of computer security including: human factors; attack detection, measurements, and models; cryptography and communications security; system design and implementation; and side channels.

CSE567 Digital Systems Design
 Design of digital VLSI systems starting from application specifications and racing to silicon. Topics include system design, RTL coding, synthesis, automatic place-and-route, formal equivalence checking, timing signoff, and verification.

CSE568 Introduction to VLSI Design
 Introduction to CMOS technology and circuit design; combinational logic-design alternatives; register-design and system-clocking methodologies; datapath and subsystem design; VLSI system-design methodologies; CAD tools for synthesis, layout, simulation, and validation; design of a complex VLSI chip.

CSE571 Probabilistic Robotics
 Overview of mobile robot control and sensing. Behavior-based control, world modeling, localization, navigation, and planning Probabilistic sensor interpretation, Bayers filters, particle filters. Projects: Program real robots to perform navigation tasks.

CSE573 Artificial Intelligence
 Introduction to computational models of thought and construction of intelligent information systems. Topics include search algorithms, data dependencies and truth-maintenance systems, approaches to knowledge representation, automated deduction, reasoning under uncertainty, and machine learning.

CSE574 Explainable Artificial Intelligence
 Approaches to enhancing the interpretability and transparency of complex machine learning models, encompassing both inherently interpretable models and post hoc explanation methods. Explores a spectrum of techniques, ranging from feature attributions and their evaluation metrics to counterfactual explanations, concept-based explanations, instance explanations, and collaboration between humans and artificial intelligence.

CSE576 Computer Vision
 Overview of computer vision, emphasizing the middle ground between image processing and artificial intelligence. Image formation, preattentive image processing, boundary and region representations, and case studies of vision architectures.

CSE577 Special Topics in Computer Vision
 Topics vary and may include vision for graphics, probabilistic vision and learning, medical imaging, content-based image and video retrieval, robot vision, or 3D object recognition.

CSE578 Convex Optimization
 Basics of convex analysis: Convex sets, functions, and optimization problems. Optimization theory: Least-squares, linear, quadratic, geometric and semidefinite programming. Convex modeling. Duality theory. Optimality and KKT conditions. Applications in signal processing, statistics, machine learning, control communications, and design of engineering systems. Prerequisite: A A 510, CHEM E 510, E E 510, or M E 510. Offered: jointly with A A 578/E E 578/M E 578.

CSE579 Intelligent Control through Learning and Optimization
 Design or near-optimal controllers for complex dynamical systems, using analytical techniques, machine learning, and optimization. Topics from deterministic and stochastic optimal control, reinforcement learning and dynamic programming, numerical optimization in the context of control, and robotics. Prerequisite: vector calculus; linear algebra, and Matlab. Recommended: differential equations; stochastic processes, and optimization. Offered: jointly with AMATH 579.

CSE580 Computing For Social Good
 Explorations of computing for social good projects. Topics include best practices, exemplars of success and failure, differing theories of change and perspectives on technology’s role in progress. Students are expected to develop a solution grounded in their own perspective of social good.

CSE581 Computer Ethics
 Ethical and philosophical approaches to thinking critically about computing technology. Tools and strategies for considering unintended consequences. Responsibilities of computer science researchers and practitioners. Application to various technology areas.

CSE582 Ethics in Artificial Intelligence
 Real-world people-facing artificial intelligence (AI) applications, ethical implications in their design, and technical solutions to mitigate ethical risks. Topics in the intersection of AI, ethics, and computing for social good, centered around foundational and recent research. Foundations of research ethics, case studies in ethical AI, ethical challenges in developing intelligent systems, and machine learning approaches to address these issues. Prerequisite: CSE 446 or CSE 546.

CSE583 Software Development for Data Scientists
 Provides students outside of CSE with a practical knowledge of software development that is sufficient to do graduate work in their discipline. Modules include Python basics, software version control, software design, and using Python for machine learning and visualization.

CSE586 Introduction to Synthetic Biology
 Studies mathematical modeling of transcription, translation, regulation, and metabolism in cell; computer aided design methods for synthetic biology; implementation of information processing, Boolean logic and feedback control laws with genetic regulatory networks; modularity, impedance matching and isolation in biochemical circuits; and parameter estimation methods.

CSE589 Software Entrepreneurship
 A case- and project-based course, focusing on starting a software or hardware company. Guest entrepreneurs, lawyers, and financiers discuss market identification and analysis, planning the business, financing, and typical operating and administrative problems. Offered: jointly with CSE P 589/ENTRE 532.

Professional Master’s Program (PMP)

Courses for Professional Master’s students.


CSEP501 Compiler Construction
 Principles and practice of building efficient implementations of modern programming languages. Lexical, syntactic, and semantic analysis of programs. Intermediate program representations. Intra- and interprocedural analysis and optimization. Run-time system techniques. Related programming environment facilities such as source-level debuggers and profilers.

CSEP503 Software Engineering
 Study of major developments in software engineering over the past three decades. Topics may include design (information hiding, layering, open implementations), requirements specification (informal and formal approaches), quality assurance (testing, verification and analysis, inspections), reverse and re-engineering (tools, models, approaches).

CSEP504 Advanced Topics in Software Systems
 Topics include software architecture, software tools, programming language analysis, type systems, formal reasoning, and other pertinent topics in software engineering and programming languages research.

CSEP505 Programming Languages
 A study of non-imperative programming paradigms such as functional, object-oriented, logic, and constraint programming. Programming language semantics and type theory.

CSEP506 Advanced Topics in Programming Languages
 May include functional, object-oriented, parallel, and logic programming languages; semantics for languages of these kinds; type declaration, inference, and checking (including polymorphic types); implementation issues, such as compilation, lazy evaluation, combinators, parallelism, various optimization techniques. Implementation project required.

CSEP510 Human Computer Interaction
 Topics in human-computer interaction, including tools and skills for user interface design, user interface software architecture, rapid prototyping and iterative design, safety and critical systems, evaluation techniques, and computer supported cooperative work.

CSEP517 Natural Language Processing
 Overview of modern approaches for natural language processing. Topics include language models, text classification, tagging, parsing, machine translation, semantics, and discourse analysis.

CSEP521 Applied Algorithms
 Principles of design of efficient algorithms with emphasis on algorithms with real world applications. Examples drawn from computational geometry, biology, scientific computation, image processing, combinatorial optimization, cryptography, and operations research.

CSEP524 Parallel Computation
 Survey of parallel computing including the processing modes of pipelining, data parallelism, thread parallelism, and task parallelism; algorithmic implications of memory models; shared memory and message passing; hardware implementations; bandwidth and latency; synchronization, consistency, interprocessor communication; programming issues including implicit and explicit parallelism, locality, portability.

CSEP527 Computational Biology
 Introduction to the use of computational methods for understanding biological systems at the molecular level. Problem areas such as mapping and sequencing, sequence analysis, structure prediction, phylogenic inference, motif discovery, expression analysis, and regulatory analysis. Techniques such as dynamic programming, Markov models, MCMC, expectation-maximization, and local search.

CSEP531 Computability and Complexity Theory
 Survey of the theory of computation including Turing Machines, Churche’s Thesis, computability, incompleteness, undecidability, complexity classes, problem reductions, Cook’s theorem, NP-completeness, randomized computation, cryptography, parallel computation, and space complexity. Some emphasis placed on historical and philosophical aspects of the theory of computation.

CSEP544 Database Management Systems
 Introduction to the principles of database management systems. Topics include database system architecture, data models, theory of database design, query optimization, concurrency control, crash recovery, and storage strategies.

CSEP546 Machine Learning
 Methods for designing systems that learn from data and improve with experience. Supervised learning and predictive modeling; decision trees, rule induction, nearest neighbors, Bayesian methods, neural networks, support vector machines, and model ensembles. Unsupervised learning and clustering.

CSEP548 Computer Architecture
 Architecture of the single-chip microprocessor: instruction set design and processor implementation (pipelining, multiple issue, speculative execution). Memory hierarchy: on-chip and off-chip caches, TLBs and their management, virtual memory from the hardware viewpoint. I/O devices and control: buses, disks, and RAIDs.

CSEP551 Computer Operating Systems
 A study of developments in operating systems from the 1960s to the present. Topics include operating system structure, protection, virtual memory, communication mechanisms, concurrency, lightweight threads, object-oriented systems, distributed systems, and transaction support in operating systems.

CSEP552 Distributed Systems
 Principles, techniques, and examples related to the design, implementation, and analysis of distributed computer systems.

CSEP557 Trends in Computer Graphics
 Introduction to computer image synthesis, modeling, and animation emphasizing the state-of-the-art algorithm applications. Topics may include visual perception, image processing, geometric transformations, hierarchical modeling, hidden-surface elimination, shading, ray-tracing, anti-aliasing, texture mapping, curves, surfaces, particle systems, dynamics, realistic character animation, and traditional animation principles.

CSEP561 Network Systems
 The design of modern network systems. Fundamental concepts illustrated with case studies of the Internet, LANs and 802.11. Topics include: wireless, media access, and transport-layer technologies, routing, congestion control, internetworking, network management, peer-to-peer systems, and network security.

CSEP564 Computer Security
 Examines the fundamental of computer security including: human factors; attack detection, measurements, and models; cryptography and communications security; system design and implementation; and side channels.

CSEP567 Design & Implementation of Digital Systems
 Overview of current implementation technologies for digital systems including custom integrated circuits, field-programmable logic, and embedded processors. Systems components such as buses and communications structures, interfaces, memory architectures, embedded systems, and application-specific devices. Focus on the design of large systems using modern CAD tools.

CSEP573 Artificial Intelligence
 Introduction to the use of Artificial Intelligence tools and techniques in industrial and company settings. Topics include foundations (search, knowledge representation) and tools such as expert systems, natural language interfaces, and machine learning techniques.

CSEP576 Computer Vision
 Provides an overview of computer vision, emphasizing the middle ground between image processing and artificial intelligence. Image formation, pre-attentive image processing, boundary and region representations, and case studies of vision architectures.

CSEP589 Software Entrepreneurship
 A case- and project-based course, focusing on starting a software or hardware company. Guest entrepreneurs, lawyers, and financiers discuss market identification and analysis, planning the business, financing, and typical operating and administrative problems. Offered: jointly with CSE P 589/ENTRE 532.