Past PMP Course Offerings

Lists of past years' PMP course offerings are archived here. For quarterly course offerings since the PMP's founding in autumn 1996 through spring 2011, reference the Professional & Continuing Education time schedule archive and/or the UW Seattle time schedule archive.


Autumn 2023

CSE P 501 Compiler Construction (Hal Perkins)
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. Course video description available.

CSE P 531 Computability and Complexity Theory (Anup Rao)
This course is about understanding the big philosophical and theoretical questions of computer science: Can every function be computed? Can every algorithm be sped up in parallel? What is the tradeoff between the resources of memory and processor time? We shall discuss what is known about these kinds of questions, and also talk about many questions that remain unresolved. We shall use mathematical proofs to reason about these topics.

CSE P 590 Special Topics: Cloud Applications (Brooks VanHorn)
Principles and patterns of software engineering in the cloud with hands-on experience with Cloud technologies. Topics include distributed architectures, elasticity, security, reliability, availability, and networking. Course video description available.

CSE P 590 Special Topics: Security Engineering (Adam Shostack)
Covers security as a feature versus security as a systems property, as well as the economic, political, and organizational factors that contribute to security being built; and market, usability, and network effects that lead to security being either part of or an obstacle to market success. Complementing CSE P 564 Computer Security (autumn 2020), Security Engineering (SE) will rely on existing understanding of security flaws and how they work and focus on the engineering techniques that students can bring to bear in delivering secure products and services. The course will focus on a “read, discuss and explore” approach more than coding assignments or configuration exercises. Course video description available.


Winter 2024

CSE P 552 Distributed Systems (James Wilcox)
Principles, techniques, and examples related to the design, implementation, and analysis of distributed computer systems.

CSE P 573 Applications of AI (Luke Zettlemoyer)
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.

CSE P 589 Software Entrepreneurship (Greg Gottesman (LinkedIn) and Ed Lazowska)
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.

CSE P 590 Special Topics: Ubiquitous Computing (Vikram Iyer)
The aim of this class will be to introduce you to ubiquitous computing. We will focus on how traditional topics of computing have evolved to support the vision of a connected, portable, and a human-centric computing environment. The course will include discussion into contribution of various fields, including human-computer interaction, embedded computing, computer vision, distributed systems, machine learning, and electrical engineering. The students will gain practical experience in developing sensing systems in different application domains, such as activity recognition, health sensing, gestural interaction, etc. The course will be a combination of lectures, tutorials, class discussions, and demonstrations.

CSE P 590 Special Topics: Applied Parallel Programming on GPUs (Hari Sadasivan)
Parallel programming concepts, GPU architecture, high performance implementation of parallel algorithms and case studies. Hands-on programming assignments and final project. CSE PMP students only. Course video description available.


Spring 2024

CSE P 504 Advanced Topics in Software Systems: State of the Art Testing and Debugging (Michael Ernst)
Principles of effective software testing and debugging, emphasizing state-of-the-art approaches. Topics include mutation-based testing, constraint-based testing, automated test generation, and probabilistic debugging.

CSE P 510 Human-Computer Interaction (Katharina Reinecke)
This class is about the design and use of computing technology. You will learn about fundamental methods and principles for designing, prototyping, and evaluating user interfaces, including graphical, natural-language, voice-based, and tangible user interfaces. You will apply these methods and principles in a quarter-long design project. To help you find a good solution to your design problem, you will learn about cognitive principles, how we can design for human diversity, and practice methods for anticipating differential and societal impacts of technology.

CSE P 546 Machine Learning (Bridger (Waleed Ammar))
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. Course video description available.

Autumn 2022

CSE P 504 Advanced Topics in Software Systems: State of the Art Testing and Debugging (René Just)
Principles of effective software testing and debugging, emphasizing state-of-the-art approaches. Topics include mutation-based testing, constraint-based testing, automated test generation, and probabilistic debugging.
Course video description available
.

CSE P 521 Applied Algorithms (Anup Rao)
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.

CSE P 564 Computer Security (David Kohlbrenner)
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. Prerequisites: none. Course video description available.

CSE P 590 Special Topics: AI for Medicine (Sheng Wang)
Developing artificial intelligence methods for medicine and drug discovery is an emerging topic. In this course, we will cover different parts of drug discovery that have benefited greatly from machine learning methods. Our lectures are divided into 4 parts: genomics for drug discovery, sequence for drug discovery, graph for drug discovery and structure for drug discovery.


Winter 2023

CSE P 505 Programming Languages (James Wilcox)
A study of non-imperative programming paradigms such as functional, object-oriented, logic, and constraint programming. Programming language semantics and type theory. Course video description from 2021 (same instructors)

CSE P 546 Machine Learning (Kevin Jamieson)
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. Course video description available

CSE P 557 Current Trends in Computer Graphics (Zoran Popović)
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.

CSE P 590 Special Topics: Entrepreneurship (Greg Gottesman and Ed Lazowska)
Company-building from formation to successful exit. This course is about entrepreneurship and specifically about starting, growing, managing, leading, and ultimately exiting a new venture.

CSE P 590 Special Topics: The Future of Accessible Technology (Jen Mankoff)
Access technology (AT) has the potential to increase autonomy, and improve millions of people’s ability to live independently. This potential is currently under-realized because the expertise needed to create the right AT is in short supply and the custom nature of AT makes it difficult to deliver inexpensively. How can computing enable new solutions to accessibility, including both access to the world and access to computers? Similarly, how can a disability studies perspective guide us in developing empowering and relevant solutions to accessibility problems? This course explores both of those questions through a combination of discussions, reading, and building. Course video description available


Spring 2023

CSE P 590 Special Topics: Robotics (Dieter Fox)
This class will provide an overview of the fundamental problems and techniques in robotics by covering three broad areas with applications in mobile robotics, manipulation, and autonomous driving:

  • State Estimation: How can a robot understand the world around it, both spatially and conceptually? Topics include sensor and motion models, Bayesian filtering, localization, and mapping.
  • Planning: How can a robot use its understanding of the world to plan actions and accomplish objectives? Topics include motion planning, heuristic and sampling-based planning, and manipulation.
  • Learning: How can a robot learn to interpret its sensor data and perform actions to solve tasks? Topics include Gaussian processes, neural networks, and vision for robotics.

CSE P 590 Special Topics: Enterprise Chatbots (Andi Gavrilescu)
Theoretical and practical aspects of building chatbots for enterprises. Topics will include understanding natural language queries, extracting user intent, enterprise knowledge building from unstructured and semi structured content, querying databases, personalization, and dialog management. Prerequisites: none, but Natural Language Processing or Machine Learning are recommended. Course video description available.

CSE P 590 Special Topics: Neural Devices, Systems, and Computation (Raj Rao and Jeff Herron)
In this projects-based course, students will be introduced to the system integration practices for neural-interfacing devices with a focus on application programming interface (API) design to support closed-loop neural systems. Students will be introduced to applications of neural-interfacing devices such as Brain Computer Interfaces (BCIs) and commercial neuromodulation medical devices such as Deep Brain Stimulation (DBS). With these applications in mind, projects will focus on the development and design of APIs to continuously communicate, stream and process neural data, and control device functionality in real-time. Through these projects and class lectures, students will learn about the qualities of neural signals, data preprocessing and signal processing techniques, classifier development using machine learning methods, principles of real-time closed-loop control, and computer engineering concepts related to the integration of hardware and software for neural systems development.

CSE P 590 Special Topics: Applied Cryptography (Huijia (Rachel) Lin)
Introduction to cryptography, with a focus on applications to real-world systems. Topics will include classical primitives and goals (hash functions, block ciphers, secret- and public-key encryption, message authentication, authenticated encryption, key establishment, etc), as well as common attacks and implementation issues. Case studies will cover widely deployed protocols like TLS, as well as blockchains. Advanced cryptographic techniques like multi-party computation, homomorphic encryption, and zero-knowledge proofs will also be covered.

Autumn 2021

CSE P 501Compiler Construction (Hal Perkins)
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. Course video description available.

CSE P 546 Machine Learning (Byron Boots)
Methods for identifying valid, novel, useful, and understandable patterns in data. Induction of predictive models from data: classification, regression, probability estimation. Discovery of clusters and association rules.

CSE P 576 Computer Vision (Vitaly Ablavsky)
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. Course video description available.

CSE P 590 Special Topics: Security Engineering (Adam Shostack)
Covers security as a feature versus security as a systems property, as well as the economic, political, and organizational factors that contribute to security being built; and market, usability, and network effects that lead to security being either part of or an obstacle to market success. Complementing CSE P 564 Computer Security (autumn 2020), Security Engineering (SE) will rely on existing understanding of security flaws and how they work and focus on the engineering techniques that students can bring to bear in delivering secure products and services. The course will focus on a “read, discuss and explore” approach more than coding assignments or configuration exercises. Course video description available.


Winter 2022

CSE P 524 Parallel Computation (Andrew Lumsdaine)
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. Video description available.

CSE P 531 Computability and Complexity Theory (Anup Rao)
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 will be placed on historical and philosophical aspects of the theory of computation. Video description available.

CSE P 573 Applications of Artificial Intelligence (Hannaneh Hajishirzi)
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. Video description available.

CSE P 590 Special Topics: Performance Engineering (Mark Friedman)
Introduction to the field of software performance engineering. Topics include queueing theory, operational analysis of computer systems, the mathematical analysis of scheduling policies, practical skill used to diagnose and fix performance problems, the role of stress and load testing in assuring quality of new releases, basic performance characteristics of computer hardware and its practical limits, and performance optimizations embedded in operating systems software. Video description available.

CSE P 590 Special Topics: Entrepreneurship (Greg Gottesman and Ed Lazowska)
Company-building from formation to successful exit. This course is about entrepreneurship and specifically about starting, growing, managing, leading, and ultimately exiting a new venture.


Spring 2022

CSE P 561 Network Systems (Matthew Johnson)
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. Course video description is available.

CSE P 590 Special Topics: Machine Learning for Big Data (Tim Althoff)
The course will discuss data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis will be on MapReduce and Spark as tools for creating parallel algorithms that can process very large amounts of data. Topics include: Frequent itemsets and association rules, near neighbor search in high dimensional data, locality sensitive hashing (LSH), dimensionality reduction, recommendation systems, clustering, link analysis, large scale supervised machine learning, data streams, mining the web for structured data. Course video description is available.

CSE P 590 Special Topics: Explainable AI (Su-In Lee)
Overview of explainable AI concepts including feature importance (Shapley values, removal-based and propagation explanations), evaluating interpretability; concept-based explanations and inherently interpretable models; granular interpretation and counterfactual explanations; instance explanations, model improvement, and enhancing human-AI collaboration.

CSE P 590 Special Topics: Molecular Programming (Chris Thachuk)
Introduction to molecular programming: the art and (computer) science of programming the nanoscale world with a focus on DNA nanotechnology. Topics include molecular computation, algorithmic self-assembly of nanostructures, DNA data storage, and nanorobotics. Course video description is available.

CSE P 590 Special Topics: Advanced Topics in Data Management (Dan Suciu)
In this course we will discuss advanced topics in data management, with a focus on query optimizers and query engines. There will be several invited lecturers, presenting modern database systems or cloud database systems, and there will be in class discussions. Tentatively, we will cover the following systems: Cockroach Lab, Cascades/SQL Server, BigQuery, Redshift, Teradata, Snowflake. Grading will be based on a project, which all students will have to present in class, during the last lecture.
Prerequisites: none, but students are expected to be familiar with relational databases and some basic notions in query processing and optimization.Course video description is available.

Autumn 2020

CSE P 527 Computational Biology(Larry Ruzzo)
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. Course video description is available.

CSE P 546 Machine Learning (Geoff Hulten)
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. Course video description is available.

CSE P 564 Computer Security (Karl Koscher)
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. Course video description is available.

CSE P 590 Applied Cryptography (Stefano Tessaro)
Introduction to cryptography, with a focus on applications to real-world systems. Topics will include classical primitives and goals (hash functions, block ciphers, secret- and public-key encryption, message authentication, authenticated encryption, key establishment, etc), as well as common attacks and implementation issues. Case studies will cover widely deployed protocols like TLS, as well as blockchains. Advanced cryptographic techniques like multi-party computation, homomorphic encryption, and zero-knowledge proofs will also be covered. Prerequisites: none, but some comfort with formal reasoning will be helpful. Course video description is available.


Winter 2021 

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

CSE P 521 Applied Algorithms (Richard Anderson)
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.

CSE P 552 Distributed Systems (Tom Anderson and Daniel Berger)
Principles, techniques, and examples related to the design, implementation, and analysis of distributed computer systems. Course video description is available.

CSE P 590 Entrepreneurship (Greg Gottesman, Ed Lazowska)
Company-building from formation to successful exit. This course is about entrepreneurship and specifically about starting, growing, managing, leading, and ultimately exiting a new venture.

CSE P 590 Domain-Specific Languages (Ratislav Bodik)
The design principles of domain-specific languages.  Implementation methods based on lightweight compilation and meta-programming support included in modern programming languages such as Lua, JavaScript and Scala.  Case studies include DSLs for data visualization (d3), web client programming (jQuery, arrowlets, Rx), and big data frameworks (the Hadoop family).
Course video description is available.


Spring 2021

CSE P 505: Programming Languages (James Wilcox
A study of non-imperative programming paradigms such as functional, object-oriented, logic, and constraint programming. Programming language semantics and type theory. Video description here.

CSE P 544: Database Management Systems (Dan Suciu)
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. Course video description is available.

CSE P 590: The Future of Accessibility Technology (Jen Mankoff)
Access technology (AT) has the potential to increase autonomy, and improve millions of people’s ability to live independently. This potential is currently under-realized because the expertise needed to create the right AT is in short supply and the custom nature of AT makes it difficult to deliver inexpensively. How can computing enable new solutions to accessibility, including both access to the world and access to computers? Similarly, how can a disability studies perspective guide us in developing empowering and relevant solutions to accessibility problems? This course explores both of those questions through a combination of discussions, reading, and building. Video description here.

CSE P 590: Enterprise Chatbots
(Andi Gavrilescu)
Theoretical and practical aspects of building chatbots for enterprises. Topics will include understanding natural language queries, extracting user intent, enterprise knowledge building from unstructured and semi structured content, querying databases, personalization, and dialog management. Prerequisites: none, but Natural Language Processing or Machine Learning are recommended. Course video description is available.

Autumn 2019

CSE P 501 Compiler Construction (Hal Perkins)
Principles and practice of building efficient implementations of modern programming languages. Lexical, syntactic, and semantic analysis of program. Intermediate program representations. Intra- and interprocedural analysis and optimization. Run-time system techniques. Related programming environment facilities such as source-level debuggers and profilers. Video description here.

CSE P 527 Computational Biology (Georg Seelig)
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, regulatory analysis. Techniques such as dynamic programming, Markov models, MCMC, expectation-maximization, local search. 

CSE P 546 Machine Learning/Data Mining (Geoff Hulten)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules. Video description here

CSE P 551 Computer Operating Systems (Xi Wang)
A study of developments in operating systems from the 1960's 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.


Winter 2020

CSE P 517 Natural Language Processing (Luke Zettlemoyer)
Overview of modern approaches for natural language processing.  Topics include language models, text classification, tagging, parsing, machine translation, semantics and discourse analysis. Video description here.

CSE P 548 Computer Architecture (Luis Ceze)
Architecture of modern computer systems including multicore processors, GPUs, memory systems and warehouse-scale computers. Topics include: metrics (performance, energy efficiency), hardware-software interface, out-of-order instruction execution, cache coherence, memory consistency models, hardware specialization, and warehouse-scale computers. Video description here.

CSE P 561 Network Systems (Kurtis Heimerl)
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.  Video description here.

CSE P 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Ed Lazowska)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture.

CSE P 590 Incentives in Computer Science (Anna Karlin)
Analysis of algorithmic and optimization problems using game theoretic principles and ideas from economics, and taking incentives into account. Explores algorithmic and optimization problems where input to the algorithm or participants in the protocol are selfish agents with an interest in the outcome of the algorithm or protocol. Examples include online auctions (such as those used by Google and Facebook), resource allocation (where a set of resources is to be shared among distinct entities with varying degrees of willingness to share or pay), routing and congestion control (where some participants are transmitting data and others own the links and routers) and electronic commerce (where buyers and sellers are exchanging goods, each trying to maximize their own profit).  Video description here.


Spring 2020

CSE P 576 Computer Vision/Image Understanding (Matthew Brown)
An overview of computer vision, emphasizing the middle ground between image processing and artificial intelligence. Low-level image processing, computational photography, motion and depth estimation, object recognition, and case studies of current research.

CSE P 590 Ubiquitous Computing (Jon Froehlich)
An overview of one of the next paradigms in computing. Focus on how traditional topics in computing need to be rethought in the context of supporting the vision of ubiquitous computing (ubicomp) including human-computer interaction, distributed systems, embedded systems, networking, and electrical engineering.  Specific ubicomp topics include sensing, context awareness, location tracking, activity recognition, and input. Many topics will be demonstrated by prototyping ubicomp systems. Impact of ubicomp on the Internet of Things, Wearable Computing, and the Connected Home will also be covered. Video description here.

CSE P 590 Information and Communication Technologies for Development (Richard Anderson)
Introduction to the role and use of information technologies in international development, poverty alleviation, and liberation. Topics include technology for health, financial inclusion, Internet access, disaster relief, gender equality, and freedom. Involves learning about design methodologies for rural and disadvantaged communities.  Video description here.

CSE P 590 Full Stack Deep Learning (Sergey Karayev)
Basics of deep learning and full stack of shipping deep learning systems. Topics include how to pick the right problem, formulate it clearly, and estimate project cost. How to find, clean, label and augment trainging data. How to pick the right deep learning framework and compute infrastructure. How to troubleshoot training and ensure reproductibility of experiments. How to keep codebase well-tested and deploy the trained model at scale. Current research directions and structure of deep learning teams. Video description here.

 

Autumn 2018

CSE P 517 Natural Language Processing  (Luke Zettlemoyer)
Overview of modern approaches for natural language processing.  Topics include language models, text classification, tagging, parsing, machine translation, semantics and discourse analysis. Video description here.

CSE P 524 Parallel Computation (Andrew Lumsdaine)
An introduction to parallel programming and computation via a combination of principles and practice.  Topics to include styles of parallelism (data, task, pipelined); programming models (shared memory, message passing, PGAS); architectural implications (shared vs. distributed memory, multicore, accelerators, networks); programming issues and hazards (synchronization, memory consistency, race conditions, deadlock and livelock); performance tuning (scalability, locality); and algorithms. Video description here.

CSE P 546 Machine Learning/Data Mining (Geoff Hulten)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules. Video description here

CSE P 590 Performance Engineering (Mark Friedman)
Introduction to the field of software performance engineering. Topics include queueing theory, operational analysis of computer systems, the mathematical analysis of scheduling policies, practical skill used to diagnose and fix performance problems, the role of stress and load testing in assuring quality of new releases, basic performance characteristics of computer hardware and its practical limits, and performance optimizations embedded in operating systems software. Video description here.


Winter 2019

CSEP 503 Principles of Software Engineering (Jim Miller/ Therapon Skotiniotis)
Introduction to all aspects of a software project, including early design, building the first version, operating a version while developing the next, maintaining multiple active versions, and ultimately retiring an old version. Video description here.

CSE P 521 Applied Algorithms (Anna Karlin)
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. Video description here.

CSE P 573 Artificial Intelligence (Dan Weld)
Introduction to the use of artificial intelligence tools and techniques in industrial and business settings. Topics include: problem solving and search, game playing, knowledge representation and reasoning, uncertainty, machine learning, and natural language processing. Video description here.

CSEP 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Ed Lazowska)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture.


Spring 2019

CSE P 505 Programming Languages (Zach Tatlock)
An introduction to programming language semantics through implementation and formal models. Emphasis on functional programming and covering the key features of modern functional languages (including type systems and memory management), along with some ideas from object-oriented and other programming styles. Video description here.

CSE P 557 Computer Graphics (Brian Curless)
Introduction to computer image synthesis and interactive computer graphics applications, emphasizing the state-of-the-art algorithms and applications. Topics vary, but may include computer graphics hardware, visual perception, image processing, texture mapping, image compositing, curves and surfaces, photorealistic image synthesis, and physical dynamics for modeling and animation. Video description here.

CSE P 590 Applied Cryptography (Stefano Tessaro)
Introduction
 to cryptography, with a focus on applications to real-world systems. Topics will include classical primitives and goals (hash functions, block ciphers, secret- and public-key encryption, message authentication, authenticated encryption, key establishment, etc), as well as common attacks and implementation issues. Case studies will cover widely deployed protocols like TLS, as well as blockchains. Advanced cryptographic techniques like multi-party computation, homomorphic encryption, and zero-knowledge proofs will also be covered. No formal prerequisites -- but some comfort with formal reasoning will be helpful. Video description here.

CSE P 590 Beyond Code Coverage: Modern Testing and Debugging (Rene Just)
Principles
 of effective software testing and debugging, emphasizing state-of-the-art approaches. Topics include mutation-based testing, constraint-based testing, automated test generation, and probabilistic debugging. Video description here.

Autumn 2017

CSE P 544 Database Management Systems (Alvin Cheung)
An 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, Object-relational and object-oriented database management systems. Video description here.

CSE P 546 Machine Learning/Data Mining (Pedro Domingos)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules. Video description here.

CSE P 548 Computer Architecture (Luis Ceze)
Architecture of modern computer systems including multicore processors, GPUs, memory systems and warehouse-scale computers. Topics include: metrics (performance, energy efficiency), hardware-software interface, out-of-order instruction execution, cache coherence, memory consistency models, hardware specialization, and warehouse-scale computers. Video description here.

CSE P 590 Information and Communication Technologies for Development (Kurtis Heimerl)
Introduction to the role and use of information technologies in international development, poverty alleviation, and liberation. Topics include technology for health, financial inclusion, Internet access, disaster relief, gender equality, and freedom. Involves learning about design methodologies for rural and disadvantaged communities.  Video description here.


Winter 2018

CSEP 527 Computational Biology (Larry Ruzzo)
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, regulatory analysis. Techniques such as dynamic programming, Markov models, MCMC, expectation-maximization, local search. Video description here.

CSE P 552 Distributed Systems (Arvind Krishnamurthy)
Design of high performance, highly available distributed web services. Topics include: clock synchronization, distributed consensus, failure models, loading balancing, object location and migration, distributed transactions, cache coherence, and security. Video description here.

CSE P 504 Domain-Specific Languages (Rastislav Bodik)
The design principles of domain-specific languages.  Implementation methods based on lightweight compilation and meta-programming support included in modern programming languages such as Lua, JavaScript and Scala.  Case studies include DSLs for data visualization (d3), web client programming (jQuery, arrowroots, Rx), and big data frameworks (the Hadoop family).Video description here.

CSE P 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Ed Lazowska)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture.


Spring 2018

CSE P 501 Compiler Construction (Hal Perkins)
Principles and practice of building efficient implementations of modern programming languages. Lexical, syntactic, and semantic analysis of program. Intermediate program representations. Intra- and interprocedural analysis and optimization. Run-time system techniques. Related programming environment facilities such as source-level debuggers and profilers. Video description here.

CSEP 576 Computer Vision/Image Understanding (Brown and Newcombe)
An overview of computer vision, emphasizing the middle ground between image processing and artificial intelligence. Low-level image processing, computational photography, motion and depth estimation, object recognition, and case studies of current research.

CSE P 590 A Ubiquitous Computing (Jon Froehlich)
An overview of one of the next paradigms in computing. Focus on how traditional topics in computing need to be rethought in the context of supporting the vision of ubiquitous computing (ubicomp) including human-computer interaction, distributed systems, embedded systems, networking, and electrical engineering.  Specific ubicomp topics include sensing, context awareness, location tracking, activity recognition, and input. Many topics will be demonstrated by prototyping ubicomp systems. Impact of ubicomp on the Internet of Things, Wearable Computing, and the Connected Home will also be covered. Video description here.

CSE P 590 B Robotics (Maya Cakmak)
This course will provide a technical overview of modern robotics. Topics will include estimation, navigation, learning, control, and interaction. Students will gain hands-on experience implementing classical algorithms in robotics on the small mobile manipulator platform, Cozmo. Video description here.

Autumn 2016

CSE P 505 Programming Languages (Dan Grossman)
An introduction to programming language semantics through implementation and formal models. Emphasis on functional programming and covering the key features of modern functional languages (including type systems and memory management), along with some ideas from object-oriented and other programming styles.

CSE P 524 Parallel Computation (Mark Oskin)
An introduction to parallel programming and computation via a combination of principles and practice.  Topics to include styles of parallelism (data, task, pipelined); programming models (shared memory, message passing, PGAS); architectural implications (shared vs. distributed memory, multicore, accelerators, networks); programming issues and hazards (synchronization, memory consistency, race conditions, deadlock and livelock); performance tuning (scalability, locality); and algorithms.

CSE P 557 Computer Graphics (Brian Curless)
Introduction to computer image synthesis and interactive computer graphics applications, emphasizing the state-of-the-art algorithms and applications. Topics vary, but may include computer graphics hardware, visual perception, image processing, texture mapping, image compositing, curves and surfaces, photorealistic image synthesis, and physical dynamics for modeling and animation.

CSEP 590 Practical Cryptography (Joshua Benaloh and Tolga Acar)
Exploration of the techniques of modern cryptography and its application to real-world problems, including common algorithms and protocols used to secure and validate electronic documents, messages, and e-commerce transactions. Secret and public key methods will be presented along with mechanisms for authentication and data integrity. Topics include pervasive TLS protocol; election, payment, and key management protocols; homomorphic encryption; and blockchains.  Course has no formal prerequisites and focus will be on practical understanding of cryptography and security technologies, but students may find it useful to have some comfort with formal reasoning to understand not just "how" but also "why" things work.


Winter 2017

CSE P 510 Human Computer Interaction (Maya Cakmak)
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. 

CSE P 521 Applied Algorithms (James Lee)
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.

CSEP 551 Computer Operating Systems (Tom Anderson)
A study of developments in operating systems from the 1960's 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.

CSEP 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Matt McIlwain)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture.


Spring 2017

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

CSE P 546 Machine Learning (Pedro Domingos)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules.

CSE P 561 Network Systems (Arvind Krishnamurthy)
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. 

CSEP 590 Programming Systems (Michael Ringenburg)
Topics related to the implementation of programming systems (compilers, interpreters, and runtime systems) for modern languages and modern architectures.   Topics to be covered include: automatic vectorization and parallelization, code generation, optimization passes, interpreted languages, garbage collection, and just-in-time compilation.

Autumn 2015

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

CSE P 544 Database Management Systems (Dan Suciu)
An 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, Object-relational and object-oriented database management systems.

CSE P 548 Computer Architecture (Luis Ceze)
Architecture of modern computer systems including multicore processors, GPUs, memory systems and warehouse-scale computers. Topics include: metrics (performance, energy efficiency), hardware-software interface, out-of-order instruction execution, cache coherence, memory consistency models, hardware specialization, and warehouse-scale computers.


Winter 2016

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

CSE P 552 Distributed Systems (Dan Ports)
Design of high performance, highly available distributed web services. Topics include: clock synchronization, distributed consensus, failure models, loading balancing, object location and migration, distributed transactions, cache coherence, and security.

CSE P 573 Artificial Intelligence (Luke Zettlemoyer)
Introduction to the use of artificial intelligence tools and techniques in industrial and business settings. Topics include: problem solving and search, game playing, knowledge representation and reasoning, uncertainty, machine learning, and natural language processing.

CSEP 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Matt McIlwain)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture. 


Spring 2016:

CSE P 531 Computability and Complexity Theory (James Lee)
A survey of the theory of computation including Turing Machines, Church's Thesis, computability, incompleteness, undecidability, complexity classes, problem reductions, Cook's theorem, NP-completeness, randomized computation, cryptography, parallel computation, and space complexity. Some emphasis will be placed on historical and philosophical aspects of the theory of computation.

CSE P 546 Machine Learning (Pedro Domingos)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules.

CSEP 527 Computational Biology (Larry Ruzzo)
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, regulatory analysis. Techniques such as dynamic programming, Markov models, MCMC, expectation-maximization, local search.

CSEP 590 Domain-Specific Languages (Rastislav Bodik)
The design principles of domain-specific languages.  Implementation methods based on lightweight compilation and meta-programming support included in modern programming languages such as Lua, JavaScript and Scala.  Case studies include DSLs for data visualization (d3), web client programming (jQuery, arrowroots, Rx), and big data frameworks (the Hadoop family).

Autumn 2014

CSEP 503 Principles of Software Engineering (Scott McMaster)
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).

CSEP 551 Computer Operating Systems (Andrew Baumann  and Simon Peter)
A study of developments in operating systems from the 1960's 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.

CSEP 557 Computer Graphics (Zoran Popovic)
Introduction to computer image synthesis and interactive computer graphics applications, emphasizing the state-of-the-art algorithms and applications. Topics vary, but may include computer graphics hardware, visual perception, image processing, texture mapping, image compositing, curves and surfaces, photorealistic image synthesis, and physical dynamics for modeling and animation.

CSEP 590 Computational Biology (Larry Ruzzo)
Computation methods for understanding biological systems at the molecular level. Problem areas such as mapping and sequencing, sequence analysis, structure prediction, phylogenic inference, regulatory analysis. Techniques such as dynamic programming, Markov models, expectation-maximization, local search.


Winter 2015

CSEP 505 Programming Languages (Greg Cooper)
An introduction to programming language semantics through implementation and formal models. Emphasis on functional programming and covering the key features of modern functional languages (including type systems and memory management), along with some ideas from object-oriented and other programming styles.

CSEP 564 Computer Security (Yoshi Kohno)
Foundations of computer security from access control to applied cryptography with an emphasis on modern issues including spyware, RFID’s, electronic voting and usability.

CSEP 590 Computing for Developing World/Global Health (Richard Anderson)
An overview of the role of computing in supporting global health.  Topics include health information systems, disease surveillance, logistics information systems, mobile health, behavior change, and diagnostics with application domains such as maternal health, immunization and communicable diseases.  A range of technologies will be considered, with a focus on the introduction of new technologies in low resource settings.  Barriers for the adoption of the technologies will also be considered. 

CSEP 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Matt McIlwain)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture.


Spring 2015

CSE P 521 Applied Algorithms (Anna Karlin)
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.

CSE P 524 Parallel Computation (Michael Ringenburg)
An introduction to parallel programming and computation via a combination of principles and practice.  Topics to include styles of parallelism (data, task, pipelined); programming models (shared memory, message passing, PGAS); architectural implications (shared vs. distributed memory, multicore, accelerators, networks); programming issues and hazards (synchronization, memory consistency, race conditions, deadlock and livelock); performance tuning (scalability, locality); and algorithms.

CSEP 576 Computer Vision/Image Understanding (Steve Seitz)
An overview of computer vision, emphasizing the middle ground between image processing and artificial intelligence. Low-level image processing, computational photography, motion and depth estimation, object recognition, and case studies of current research.

CSE P 590 Ubiquitous Computing (Shwetak Patel)
An overview of one of the next paradigms in computing. Focus on how traditional topics in computing need to be rethought in the context of supporting the vision of ubiquitous computing (ubicomp) including human-computer interaction, distributed systems, embedded systems, networking, and electrical engineering.  Specific ubicomp topics include sensing, context awareness, location tracking, activity recognition, and input. Many topics will be demonstrated by prototyping ubicomp systems. Impact of ubicomp on the Internet of Things, Wearable Computing, and the Connected Home will also be covered.

Autumn 2013

CSE P 510 Human Computer Interaction (Alan Borning)
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.

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

CSE P 561 Network Systems (Arvind Krishnamurthy)
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. This offering will focus on wireless networking and mobile computing.


Winter 2014

CSE P 544 Database Management Systems (Dan Suciu)
An 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, Object-relational and object-oriented database management systems.

CSE P 546 Machine Learning (Carlos Guestrin)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules.

CSE P 590 Molecular and Neural Computation (Georg Seelig)
Topics include molecular programming (DNA nanotchnology , DNA strand displacement cascades, Computing patterns, and introduction to chemistry), synthetic biology (Logic circuits, enzyme-based logic, pattern formation, computation with excitable cells, and introduction to gene regulation), and computation in the brain (introduction and basic neurobiology, neural encoding/decoding, and biophysical models of neurons).

CSE P 590 Entrepreneurship: Company-Building from Formation to Successful Exit (Greg Gottesman and Matt McIlwain)
Topics include starting, growing, managing, leading, and ultimately exiting a startup venture.

 


Spring 2014

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

CSE P 573 Artificial Intelligence (Ali Farhadi)
Introduction to the use of artificial intelligence tools and techniques in industrial and business settings. Topics include: problem solving and search, game playing, knowledge representation and reasoning, uncertainty, machine learning, and natural language processing.

CSE P 590 Robotics (Emanuel Todorov)
This course will provide a technical overview of modern robotics. Topics will include mechanism design, estimation, control, learning. The theory will be illustrated with example applications to flying, walking, object manipulation with both physical and simulated robots.

Autumn 2012

CSE P 548 Computer Architecture (Luis Ceze)
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, TLB's and their management, virtual memory from the hardware viewpoint. I/O devices and control: buses, disks and RAIDs. Shared-memory multiprocessors and cache coherence.

CSE P 564 Computer Security (Yoshi Kohno)
Foundations of computer security from access control to applied cryptography with an emphasis on modern issues including spyware, RFID’s, electronic voting and usability.

CSE P 573 Artificial Intelligence (Mausam)
Introduction to the use of artificial intelligence tools and techniques in industrial and business settings. Topics include: problem solving and search, game playing, knowledge representation and reasoning, uncertainty, machine learning, and natural language processing.


Winter 2013

CSE P 521 Applied Algorithms (Richard Anderson)
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.

CSE P 524 Parallel Computation (Brad Chamberlain)
An introduction to parallel programming and computation via a combination of principles and practice.  Topics to include styles of parallelism (data, task, pipelined); programming models (shared memory, message passing, PGAS); architectural implications (shared vs. distributed memory, multicore, accelerators, networks); programming issues and hazards (synchronization, memory consistency, race conditions, deadlock and livelock); performance tuning (scalability, locality); and algorithms.

CSE P 557 Computer Graphics (Brian Curless)
Introduction to computer image synthesis and interactive computer graphics applications, emphasizing the state-of-the-art algorithms and applications. Topics vary, but may include computer graphics hardware, visual perception, image processing, texture mapping, image compositing, curves and surfaces, photorealistic image synthesis, and physical dynamics for modeling and animation.

CSE P 595 Software Entrepreneurship (Richard Jacroux)
An exploration of the opportunities and challenges faced starting a company in the software industry. Software industry leaders will share their perspective. Includes an overview of the industry: Web 2.0 to Gaming to Enterprise software; trends and emerging opportunities in the software industry; how to start, fund and grow a software venture, university spinoffs and technology transfer; current industry-wide challenges; and cutting-edge software business practices.


Spring 2013

CSE P 505 Programming Languages (Greg Cooper)
An introduction to programming language semantics through implementation and formal models. Emphasis on functional programming and covering the key features of modern functional languages (including type systems and memory management), along with some ideas from object-oriented and other programming styles.

CSE P 552 Distributed Systems (Steve Gribble)
Design of high performance, highly available distributed web services. Topics include: clock synchronization, distributed consensus, failure models, loading balancing, object location and migration, distributed transactions, cache coherence, and security.

CSE P 576 Computer Vision/Image Understanding (Ali Farhadi)
Provides an overview of computer vision, emphasizing the middle ground between image processing and artificial intelligence. Low-level image processing, computational photography, motion and depth estimation, object recognition, and case studies of current research.

CSE P 590 Computational Biology (Larry Ruzzo)
Computation methods for understanding biological systems at the molecular level. Problem areas such as mapping and sequencing, sequence analysis, structure prediction, phylogenic inference, regulatory analysis. Techniques such as dynamic programming, Markov models, expectation-maximization, local search.

Autumn 2011

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

CSE P 544 Database Management Systems (Dan Suciu)
An 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, Object-relational and object-oriented database management systems.

CSE P 595 Software Entrepreneurship (Alan Leong)
An exploration of the opportunities and challenges faced starting a company in the software industry. Software industry leaders will share their perspective. Includes an overview of the industry: Web 2.0 to Gaming to Enterprise software; trends and emerging opportunities in the software industry; how to start, fund and grow a software venture, university spinoffs and technology transfer; current industry-wide challenges; and cutting-edge software business practices.


Winter 2012

CSE P 503 Principles of Software Engineering (Ethan Jackson)
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).

CSE P 545 Transaction Processing (Phil Bernstein and Sameh Elnikety)
Technology supporting reliable large-scale distributed computing on the Internet, especially e-commerce. Topics include the transaction abstraction, application servers and TP monitors, transactional communications, persistent queuing and workflow, software fault tolerance, concurrency control and recovery algorithms, distributed transactions, two-phase commit, and data replication.

CSE P 551 Computer Operating Systems (Steven Gribble)
A study of developments in operating systems from the 1960's 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.

CSE P 561 Network Systems (David Wetherall)
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. This offering will focus on wireless networking and mobile computing.


Spring 2012

CSE P 510 Human Computer Interaction (Alan Borning)
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.

CSE P 546 Data Mining (Pedro Domingos)
Methods for identifying valid, novel, useful and understandable patterns in data. Topics to be covered include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules.

CSE P 590 Distributed Systems (Arvind Krishnamurthy)
Design of high performance, highly available distributed web services. Topics include: clock synchronization, distributed consensus, failure models, loading balancing, object location and migration, distributed transactions, cache coherence, and security.

CSE P 567 Design & Implementation of Digital Systems (Carl Ebeling)
Focus on software issues in embedded systems.