天美影视传媒

 Search | Directories |
UW Home > Discover UW > Student Guide 
UW Bothell Course Descriptions UW Tacoma Course Descriptions  | Glossary

COLLEGE OF ENGINEERING
COMPUTER SCIENCE AND ENGINEERING
COMPUTER SCIENCE & ENGINEERING

Detailed course offerings (Time Schedule) are available for

CSE 110 Computer Science Principles (5) NSc, RSN
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. Course overlaps with: BIS 111/CSS 101 and TCSS 101.

CSE 112 Advanced Placement (AP) Computer Science A (4) NSc, RSN
Course awarded based on Advanced Placement (AP) score. Consult the Admissions Exams for Credit website for more information.

CSE 121 Introduction to Computer Programming I (4) NSc, RSN
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. Course overlaps with: CSE 142; CSS 142; and TCSS 142. Recommended: completion of Paul G. Allen School's Guided Self-Placement. Offered: AWSpS.

CSE 122 Introduction to Computer Programming II (4) NSc, RSN
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. Course overlaps with: CSE 143; CSS 143; and TCSS 143. Recommended: CSE 121 or completion of Paul G. Allen School's Guided Self-Placement. Offered: AWSpS.

CSE 123 Introduction to Computer Programming III (4) NSc, RSN
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. Course overlaps with: CSE 143; CSS 143; and TCSS 143. Recommended: CSE 122 or completion of Paul G. Allen School's Guided Self-Placement. Offered: AWSpS.

CSE 131 Science and Art of Digital Photography (4) A&H
Covers the fundamentals of digital photography, including computational imaging; the elements of photographic composition and design; and the future of internet-enabled photography.

CSE 142 Computer Programming I (4) NSc, RSN
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. Course overlaps with: CSE 121; CSS 112; CSS 132; CSS 142; and TCSS 142. Offered: AWSpS.

CSE 143 Computer Programming II (5) NSc, RSN
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. Course equivalent to: CSS 143 and TCSS 143. Course overlaps with: CSE 122; CSE 123; CSS 123; CSS 133; and T INFO 473. Prerequisite: CSE 142. Offered: AWSpS.

CSE 154 Web Programming (5) RSN
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.

CSE 160 Data Programming (4) NSc, RSN
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 has already been earned for CSE 123 or CSE 143 (or equivalent). Course overlaps with: Q SCI 256 and CSS 112.

CSE 163 Intermediate Data Programming (4) RSN
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). Course overlaps with: ATM S 310 and CSSSKL 132. Prerequisite: either CSE 122, CSE 123, CSE 142, CSE 143, or CSE 160.

CSE 180 Introduction to Data Science (4) RSN
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. Course equivalent to: INFO 180 and STAT 180. Course overlaps with: B DATA 200.

CSE 190 Current Topics in Computer Science and Engineering (1-5, max. 15)

CSE 301 CSE Internship Education (1-2, max. 12)
CSE Internship practicum; integration of classroom theory with on-the-job training. Periods of full-time work alternate with periods of full-time study. Open only to students who have been admitted to CSE Internship Program or by special permission of the Department. Offered credit/no credit only. Credit/no-credit only. Offered: AWSpS.

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

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

CSE 331 Software Design and Implementation (4)
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). Course overlaps with: T INFO 473. Prerequisite: a minimum grade of 2.0 in either CSE 123 or CSE 143.

CSE 332 Data Structures and Parallelism (4)
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. Course overlaps with: CSE 373 and T INFO 473. Prerequisite: CSE 311.

CSE 333 Systems Programming (4)
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. Course overlaps with: TCSS 333. Prerequisite: CSE 351.

CSE 340 Interaction Programming (4)
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.

CSE 341 Programming Languages (4)
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. Course overlaps with: CSE 413 and TCSS 380. Prerequisite: CSE 123 or CSE 143.

CSE 344 Introduction to Data Management (4)
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. Prerequisite: CSE 311.

CSE 351 The Hardware/Software Interface (4)
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. Course overlaps with: CSE 410. Prerequisite: CSE 123 or CSE 143.

CSE 352 Hardware Design and Implementation (4)
Covers digital circuit design, processor design, and systems integration and embedded-systems issues. Includes substantial hardware laboratory. Prerequisite: CSE 311; CSE 351.

CSE 369 Introduction to Digital Design (3)
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. Course overlaps with: E E 271. Prerequisite: CSE 311.

CSE 371 Design of Digital Circuits and Systems (5)
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.

CSE 373 Data Structures and Algorithms (4)
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. Course overlaps with: CSE 326; CSE 332; and T INFO 473. Prerequisite: CSE 123 or CSE 143.

CSE 374 Intermediate Programming Concepts and Tools (3)
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 if credit received for CSE 333. Course overlaps with: CSE 303. Prerequisite: CSE 123 or CSE 143.

CSE 390 Special Topics in Computer Science and Engineering (1-5, max. 10)
Covers topics of current interest in computer science and engineering.

CSE 391 System and Software Tools (1)
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.

CSE 399 CSE Foreign Study (*)
Upper-division computer science or computer engineering course, taken through an approved study abroad program, for which there is no direct 天美影视传媒 equivalent. Credit/no-credit only.

CSE 401 Introduction to Compiler Construction (4)
Fundamentals of compilers and interpreters; symbol tables; lexical analysis, syntax analysis, semantic analysis, code generation, and optimizations for general purpose programming languages. Course overlaps with: CSE 413. Prerequisite: CSE 332 and CSE 351.

CSE 402 Design and Implementation of Domain-Specific Languages (4)
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. Prerequisite: CSE 332 and CSE 351.

CSE 403 Software Engineering (4)
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.

CSE 410 Computer Systems (3)
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. Course overlaps with: CSE 351; CSE 378; and CSE 451. Prerequisite: CSE 373.

CSE 412 Introduction to Data Visualization (4)
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. Course overlaps with: CSE 442; HCDE 411; INFO 474; and STAT 451. Prerequisite: either CSE 123, CSE 143, or CSE 163.

CSE 413 Programming Languages and Their Implementation (3)
Basic concepts and implementation strategies for modern functional and object-oriented programming languages such as Scheme and Java. Intended for non-majors. Course overlaps with: CSE 341 and CSE 401. Prerequisite: CSE 373.

CSE 414 Introduction to Database Systems (4)
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 if credit received for CSE 344. Prerequisite: a minimum grade of 2.5 in either CSE 123, CSE 143, or CSE 163.

CSE 415 Introduction to Artificial Intelligence (3) NSc
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. Course overlaps with: CSE 473 and TCSS 435. Prerequisite: CSE 373.

CSE 416 Introduction to Machine Learning (4) NSc
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. Course overlaps with: CEE 415; CSS 486; TCSS 435; and TCSS 455. 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.

CSE 417 Algorithms and Computational Complexity (3)
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. Prerequisite: CSE 373.

CSE 421 Introduction to Algorithms (3)
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. Course overlaps with: CSS 449. Prerequisite: CSE 312; CSE 332.

CSE 422 Toolkit for Modern Algorithms (3)
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.

CSE 426 Cryptography (4)
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.

CSE 427 Computational Biology (3)
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.

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

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

CSE 434 Introduction to Quantum Computation (4)
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.

CSE 440 Introduction to HCI: User Interface Design, Prototyping, and Evaluation (5)
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.

CSE 441 Advanced HCI: Advanced User Interface Design, Prototyping, and Evaluation (5)
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.

CSE 442 Data Visualization (4)
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. Course overlaps with: CSE 412; INFO 474; and STAT 451. Prerequisite: CSE 332.

CSE 444 Database Systems Internals (4)
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. Course overlaps with: TCSS 446. Prerequisite: CSE 332; and either CSE 344 or CSE 414.

CSE 446 Machine Learning (4)
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.

CSE 447 Natural Language Processing (4)
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. Course overlaps with: TCSS 456. Prerequisite: CSE 312 and CSE 332; recommended: MATH 208; and CSE 446 is recommended before or concurrently.

CSE 450 Animation Production Seminar (1)
Open to all students who have an interest in digital animation. Reviews and analyzes films, animated feature films, and television commercials. Emphasizes the technical and aesthetic basics of animation production in industry studio environments.

CSE 451 Introduction to Operating Systems (4)
Principles of operating systems. Process management, memory management, auxiliary storage management, resource allocation. Course overlaps with: CSE 410; CSE 474/E E 474; CSS 430; and TCES 420. Prerequisite: CSE 351; CSE 332; CSE 333.

CSE 452 Introduction to Distributed Systems (4)
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

CSE 453 Datacenter Systems (4)
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.

CSE 454 Advanced Internet and Web Services (5)
Design of Internet search engines, including spider architecture, inverted indices, frequency rankings, latent semantic indexing, hyperlink analysis, and refinement interfaces. Construction of scalable and secure web services. Datamining webserver logs to provide personalized and user-targeted services. Large project. Prerequisite: CSE 332; CSE 351; either CSE 331 or CSE 352.

CSE 455 Computer Vision (4)
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.

CSE 456 Story Design for Computer Animation (4)
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.

CSE 457 Computer Graphics (4)
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.

CSE 458 Computer Animation (5)
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. Prerequisite: CSE 457.

CSE 459 Pre-Production for Collaborative Animation (5)
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. Prerequisite: CSE 458.

CSE 460 Animation Capstone (5)
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. Prerequisite: CSE 458, CSE 459.

CSE 461 Introduction to Computer-Communication Networks (4)
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. Course overlaps with: CSS 431; T INFO 250; and TCES 425. Prerequisite: either CSE 326 or CSE 332; either CSE 303 or CSE 333.

CSE 462 Wireless Communication (4)
Fundamentals of wireless communication. Reliable communication over noisy, unreliable channels. Signal to noise ratio, frequency domain analysis, bandwidth, capacity of noisy communication channels, modulation, channel coding, error detection, error correction. Connection between machine learning and communication such as decoding as inference and learning as compression. Prerequisite: MATH 208 and CSE 333.

CSE 464 Advanced Topics in Digital Animation (1-5, max. 10)
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.

CSE 467 Advanced Digital Design (4)
Advanced techniques in the design of digital systems. Hardware description languages, combinational and sequential logic synthesis and optimization methods, partitioning, mapping to regular structures. Emphasis on reconfigurable logic as an implementation medium. Memory system design. Digital communication including serial/parallel and synchronous/asynchronous methods. Prerequisite: CSE 352; CSE 332.

CSE 469 Computer Architecture I (5)
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.

CSE 470 Computer Architecture II (4)
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.

CSE 472 Introduction to Computational Linguistics (5) A&H/NSc
Introduction to computational approaches to modeling language, for linguistic research and practical applications, including analyses at different levels of linguistic structure and symbolic as well as statistical approaches. Prerequisite: either LING 200 or LING 400; either LING 461 or CSE 311. Offered: jointly with LING 472.

CSE 473 Introduction to Artificial Intelligence (3)
Principal ideas and developments in artificial intelligence: Problem solving and search, game playing, knowledge representation and reasoning, uncertainty, machine learning, natural language processing. Course overlaps with: CSE 415; CSS 382; and TCSS 435. Prerequisite: CSE 312 and CSE 332.

CSE 474 Introduction to Embedded Systems (4)
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. Course overlaps with: CSE 451; B ME 460; CSS 427; and TCES 460. Prerequisite: CSE 123 or CSE 143 Offered: jointly with E E 474; AWSpS.

CSE 475 Embedded Systems Capstone (5)
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. Course overlaps with: TME 441. Prerequisite: E E 271 or CSE 369; and E E 472 or CSE 474/E E 474. Offered: jointly with E E 475.

CSE 478 Autonomous Robotics (4)
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.). Prerequisite: CSE 332; recommended: CSE 312; MATH 208.

CSE 480 Computer Ethics Seminar (1-3, max. 5) DIV
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.

CSE 481 Capstone Software Design (5, max. 15)
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.

CSE 482 Capstone Software Design to Empower Underserved Populations (5, max. 15) DIV
Students work in teams to design and implement a software project involving multiple areas of the CSE curriculum, for the purpose of empowering marginalized or underserved populations. Prerequisite: CSE 332; CSE 351; either CSE 331 or CSE 352.

CSE 484 Computer Security (4)
Foundations of modern computer security, including software security, operating system security, network security, applied cryptography, human factors, authentication, anonymity, and web security. Course overlaps with: E E 468. Prerequisite: CSE 332; CSE 351.

CSE 486 Introduction to Synthetic Biology (3)
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. Prerequisite: either MATH 136, MATH 207, MATH 307, AMATH 351, or CSE 311; and either MATH 208, MATH 308, or AMATH 352. Offered: jointly with BIOEN 423/CHEM E 476/E E 423.

CSE 487 Advanced Systems and Synthetic Biology (3)
Covers advanced concepts in system and synthetic biology. Includes kinetics, modeling, stoichiometry, control theory, metabolic systems, signaling, and motifs. All topics are set against problems in synthetic biology. Prerequisite: E E 423/BIOEN 423/CHEM E 476/CSE 486. Offered: jointly with BIOEN 424/CHEM E 477/E E 424.

CSE 488 Laboratory Methods in Synthetic Biology (4)
Designs and builds transgenic bacterial using promoters and genes taken from a variety of organisms. Uses construction techniques including recombination, gene synthesis, and gene extraction. Evaluates designs using sequencing, fluorescence assays, enzyme activity assays, and single cell studies using time-lapse microscopy. Prerequisite: E E 423/BIOEN 423/CHEM E 476/CSE 486; and either CHEM 142, CHEM 143, or CHEM 145. Offered: jointly with BIOEN 425/CHEM E 478/E E 425.

CSE 490 Special Topics in Computer Science and Engineering (1-5, max. 15)
Lectures, discussions, and possibly labs on topics of current interest in computer science and engineering not covered by other CSE undergraduate courses.

CSE 491 Data Science and Society Seminar (1)
Current topics related to the societal implications of data science. Topic selection will vary from quarter to quarter and may include data privacy and security, data anonymization, hypothesis-testing on a shared database, impact of data science-based decisions on society. Includes both guest speakers and case-study or article-based discussions. Credit/no-credit only. Credit/no-credit only.

CSE 492 Undergraduate Seminar (1-2, max. 5)
Seminars on current topics in computer science and engineering. Topic selection will vary from quarter to quarter. Credit/no-credit only.

CSE 493 Advanced Special Topics in Computer Science and Engineering (1-5, max. 15)
Advanced topics in computer science and engineering.

CSE 495 Project Practicum ([1-5]-, max. 5)
Available in special situations for computer science majors to compete, under instructor guidance, a substantial computing project that deepens one's knowledge and experience in the field. Projects may involve a group of students.

CSE 496 Honors Undergraduate Research (1-9, max. 9)
Undergraduate research or design project carried out under the supervision of a faculty sponsor.

CSE 497 Undergraduate Research Seminar (1)
Students prepare and give a public talk on their faculty-sponsored research projects.

CSE 498 Undergraduate Research (1-9, max. 9)
Undergraduate research carried out under the supervision of a faculty sponsor.

CSE 499 Reading and Research (1-24, max. 24)
Available in special situations for advanced computer science majors to do reading and research in field, subject to approval of undergraduate adviser and CSE faculty member. Free elective, but does not replace core course or computer science elective. Credit/no-credit only.

CSE 501 Programming Language Analysis and Implementation (4)
Design and implementation of compilers and run-time systems for imperative, object-oriented, and functional languages. Intra- and interprocedural analyses and optimizations. Prerequisite: CSE 341.

CSE 503 Software Engineering (4)
Specification, implementation, and testing of large, multiperson, software systems. Topics include abstraction, information hiding, software development environments, and formal specifications.

CSE 504 Advanced Topics in Software Engineering (4)
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.

CSE 505 Principles of Programming Languages (4)
Design and formal semantics of modern programming languages, includes functional and object-oriented languages. Prerequisite: CSE 341.

CSE 506 Advanced Topics in Programming Languages (4)
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. Prerequisite: CSE 501 which may be taken concurrently, and CSE 505.

CSE 507 Computer-Aided Reasoning for Software (4)
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.

CSE 510 Advanced Topics in Human-Computer Interaction (4)
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.

CSE 512 Data Visualization (4)
Covers techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology, and cognitive science. Topics include data and image models; visual encoding; graphical perception; color; animation; interaction techniques; graph layout; and automated design. Lectures, reading, and project.

CSE 513 Disability Inclusion for Technologists (4)
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.

CSE 515 Statistical Methods in Computer Science (4)
Introduction to the probabilistic and statistical techniques used in modern computer systems. Graphical models, probabilistic inference, statistical learning, sequential models, decision theory. Prerequisite: either CSE 312,STAT 341, STAT 391 or equivalent.

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

CSE 519 Current Research in Computer Science (1, max. 18)
Weekly presentations on current research activities by members of the department. Only computer science graduate students may register, although others are encouraged to attend. Credit/no-credit only.

CSE 520 Computer Science Colloquium (1, max. 18)
Weekly public presentations on topics of current interest by visiting computer scientists. Credit/no-credit only.

CSE 521 Design and Analysis of Algorithms I (4)
Principles of design of efficient algorithms: recursion, divide and conquer, balancing, dynamic programming, greedy method, network flow, linear programming. Correctness and analysis of algorithms. NP-completeness. Prerequisite: either CSE 332 or equivalent.

CSE 522 Design and Analysis of Algorithms II (4)
Analysis of algorithms more sophisticated than those treated in CSE 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. Prerequisite: CSE 521.

CSE 523 Computational Geometry (4)
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.

CSE 524 Parallel Algorithms (4)
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. Prerequisite: CSE 521.

CSE 525 Randomized Algorithms and Probabilistic Analysis (4)
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: either CSE 521 or equivalent.

CSE 526 Cryptography (4)
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. Course overlaps with: CSS 527.

CSE 527 Computational Biology (4)
Introduces computational methods leveraging artificial intelligence (AI) and machine learning (ML) techniques to understand biological systems and enhance healthcare. Utilizes various AI/ML techniques, including explainable AI, interpretable ML, deep learning, probabilistic graphical models, and causal inference. Explores diverse problem areas such as genetics, epigenomics, transcriptomics, proteomics, imageomics, and electronic health records.

CSE 528 Computational Neuroscience (3)
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. Prerequisite: elementary calculus, linear algebra, and statistics, or permission of instructor. Offered: jointly with NEURO 528.

CSE 529 Computational Genomics (4)
Introduces computational and statistical approaches and practices for deriving robust and rigorous insights from modern genomics datasets. Includes genomics-inspired problems in areas such as human genetics, regulatory genomics, and single cell genomics as well as relevant foundational statistical and computational concepts such as causal inference, hidden confounding factors, and model interpretation. Recommended: familiarity with general concepts in machine learning (e.g. CSE 446 or equivalent); and some familiarity with general principles of biology (e.g., college-level introductory course or equivalent).

CSE 531 Computational Complexity I (4)
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.

CSE 532 Computational Complexity II (4)
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.

CSE 533 Advanced Topics in Complexity Theory (4)
An in-depth study of advanced topics in computational complexity.

CSE 534 Quantum Information and Computation (4)
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. Recommended: either solid background in mathematics and/or theoretical computer science, or prior familiarity with quantum-computing fundamentals.

CSE 535 Theory of Optimization and Continuous Algorithms (4)
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.

CSE 541 Interactive Learning (4)
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.

CSE 543 Deep Learning (4)
Foundations of modern deep learning and its applications. Topics include various forms of deep neural networks architectures such as convolution neural networks, recurrent networks, attention mechanism, training and optimization algorithms and their applications in domains such as computer vision, robotics, and natural language processing. Recommended: comfortable with programming; and working knowledge of linear algebra (MATH 208); vector calculus (MATH 126); probability and statistics (CSE 312 and STAT 390); algorithms (CSE 421); and machine learning (CSE 446 or CSE 546).

CSE 544 Principles of Database Systems (4)
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.

CSE 546 Machine Learning (4)
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. Prerequisite: either CSE 312, STAT 341, STAT 391 or equivalent.

CSE 547 Machine Learning for Big Data (4)
Covers 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 learning (Map-Reduce, GraphLab). Prerequisite: either STAT 535 or CSE 546. Offered: jointly with STAT 548; W.

CSE 548 Computer Systems Architecture (4)
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). Course overlaps with: TECE 510. Prerequisite: CSE 451. Offered: jointly with E E 544.

CSE 549 High-Performance Computer Architectures (4)
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. Course overlaps with: TECE 510. Prerequisite: CSE 548/E E 544. Offered: jointly with E E 545.

CSE 550 Computer Systems (4)
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.

CSE 551 Operating Systems (4)
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. Prerequisite: CSE 451.

CSE 552 Distributed and Parallel Systems (4)
Principles, techniques, and examples related to the design, implementation, and analysis of distributed and parallel computer systems. Course overlaps with: TECE 514. Prerequisite: CSE 551.

CSE 553 Real-Time Systems (4)
Design and construction of software for real-time computer systems. Software architectures. Requirements and specification methods. Scheduling algorithms and timing analysis. Real-time operating systems. Real-time programming languages. Selected case studies. Prerequisite: CSE 451.

CSE 556 Computational Fabrication (4)
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.

CSE 557 Computer Graphics (4)
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. Prerequisite: solid knowledge of linear algebra.

CSE 558 Special Topics in Computer Graphics (4)
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. Prerequisite: CSE 557 or permission of instructor.

CSE 561 Computer Communication and Networks (4)
Fundamentals of data transmission: coding, message formats, and protocols. Organization of computer networks. Examples of network implementations. Prerequisite: either CSE 451 or equivalent.

CSE 564 Computer Security and Privacy (4)
Examines the fundamentals of computer security including: human factors; attack detection, measurements, and models; cryptography and communications security; system design and implementation; and side channels.

CSE 567 Principles of Digital Systems Design (4)
Principles of logic design, combinational and sequential circuits, minimization techniques, structured design methods, CMOS technology, complementary and ratioed gates, delay estimation and performance analysis, arithmetic circuits, memories, clocking methodologies, synthesis and simulation tools, VLSI processor architecture. Course overlaps with: TECE 523. Prerequisite: basic knowledge of logic design.

CSE 568 Introduction to VLSI Systems (4)
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. Course overlaps with: TECE 521. Prerequisite: either CSE 567 or permission of instructor.

CSE 571 AI-based Mobile Robotics (4)
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. Prerequisite: either CSE 473 or permission of instructor.

CSE 573 Artificial Intelligence (4)
Broad introduction to the science of automated rational decision-making by machines. Key approaches include search, Markov decision processes, graphical models, reinforcement learning, and supervised learning. Considers a wide variety of application domains (e.g., natural language processing, computer vision, robotics, games) for decision making. Recommended: familiarity with data structures; algorithms; probability; and computer programming.

CSE 574 Explainable Artificial Intelligence (4)
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.

CSE 576 Computer Vision (3)
Principles and methods for interpreting the three-dimensional world from images. Topics include feature detection, image segmentation, motion estimation, image mosaics, 3D-shape reconstruction, object recognition, and image retrieval. Prerequisite: solid knowledge of linear algebra; good programming skills. Offered: jointly with E E 576.

CSE 577 Special Topics in Computer Vision (3)
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. Prerequisite: CSE 576/E E 576. Offered: jointly with E E 577.

CSE 578 Convex Optimization (4)
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.

CSE 579 Intelligent Control through Learning and Optimization (3)
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; MATLAB. Offered: jointly with AMATH 571.

CSE 580 Computing for Social Good (4)
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.

CSE 581 Computer Ethics (4)
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.

CSE 582 Ethics in Artificial Intelligence (4)
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.

CSE 583 Software Development for Data Scientists (4)
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. Course overlaps with: CHEM E 546/CHEM 546.

CSE 586 Introduction to Synthetic Biology (3)
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. Prerequisite: either MATH 136, MATH 207, MATH 307, AMATH 351, or CSE 311; and either MATH 208, MATH 308, or AMATH 352. Offered: jointly with BIOEN 523/CHEM E 576/E E 523/MOLENG 525.

CSE 587 Advanced Systems and Synthetic Biology (3)
Covers advanced concepts in system and synthetic biology. Includes kinetics, modeling, stoichiometry, control theory, metabolic systems, signaling, and motifs. All topics are set against problems in synthetic biology. Prerequisite: E E 523/BIOEN 523/CHEM E 576/CSE 586/MOLENG 525. Offered: jointly with BIOEN 524/CHEM E 577/E E 524.

CSE 589 Software Entrepreneurship (4)
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.

CSE 590 Research Seminar (*, max. 50)
Several offerings each quarter, on topics of current interest.

CSE 591 Group Projects in Computer Science (1-3, max. 25)
Focuses on specialized topics and research activities in computer science.

CSE 599 Special Topics in Computer Science (1-5, max. 30)
Studies of emerging areas and specialized topics in computer science.

CSE 600 Independent Study or Research (*-)
Credit/no-credit only.

CSE 601 Internship (1-2, max. 12)
CSE Internship practicum; integration of classroom theory with on-the-job training. Periods of full-time work alternate with periods of full-time study. Open only to students who have been admitted to CSE Internship Program or by special permission of the Department. Credit/no-credit only. Offered: AWSpS.

CSE 700 Master's Thesis (*-)
Credit/no-credit only.

CSE 800 Doctoral Dissertation (*-)
Credit/no-credit only.