Current Courses
      Reliable and Trustworthy Artificial Intelligence
      
  A graduate course discussing the foundations and emerging methods for building reliable and trustworthy AI systems.
      Fall 2025
    
      Software Engineering Seminar
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2025
    Past Courses
      Reliable and Trustworthy Artificial Intelligence
      
  Graduate course discussing robustness, privacy, and fairness of machine learning.
      Fall 2024
    
      Research Topics in Software Engineering
      
  Graduate seminar on programming languages and software engineering.
      Spring 2025
    
      Software Engineering Seminar
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2024
    
      Research Topics in Software Engineering
      
  Graduate seminar on programming languages and software engineering.
      Spring 2024
    
      Software Engineering Seminar
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2023
    
      Reliable and Trustworthy Artificial Intelligence
      
  Graduate course discussing robustness, privacy, and fairness of machine learning.
      Fall 2023
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Spring 2023
    
      Research Topics in Software Engineering
      
  Graduate seminar on the latest research trends in the field of software engineering.
      Spring 2023
    
      Reliable and Trustworthy Artificial Intelligence
      
  Graduate course involving the analysis, robustness and visualization of neural networks.
      Fall 2022
    
      Software Engineering Seminar
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2022
    
      Program Analysis for System Security and Reliability
      
  Graduate course illustrating how to develop and apply program analysis and machine learning methods for securing modern software.
      Spring 2022
    
      Research Topics in Software Engineering
      
  Graduate seminar on the latest research trends in the field of software engineering.
      Spring 2022
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Spring 2022
    
      Reliable and Trustworthy Artificial Intelligence
      
  Graduate course involving the analysis, robustness and visualization of neural networks.
      Fall 2021
    
      Software Engineering Seminar
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2021
    
      Program Analysis for System Security and Reliability
      
  Graduate course illustrating how to develop and apply program analysis and machine learning methods for securing modern software.
      Spring 2021
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Spring 2021
    
      Research Topics in Software Engineering
      
  Graduate seminar on the latest research trends in the field of software engineering.
      Spring 2021
    
      Reliable and Interpretable Artificial Intelligence
      
  Graduate course involving the analysis, robustness and visualization of neural networks, as well as probabilistic programming.
      Fall 2020
    
      Research Topics in Software Engineering
      
  Graduate seminar on the latest research trends in the field of software engineering.
      Fall 2020
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Fall 2020
    
      Program Analysis for System Security and Reliability
      
  Graduate course illustrating how to apply program analysis and synthesis techniques for securing smart contracts, computer networks, and systems.
      Spring 2020
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Spring 2020
    
            Parallel Programming
            
        Undergraduate course on parallel programming, co-taught with Prof. Torsten Hoefler.
            Spring 2020
          
      Reliable and Interpretable Artificial Intelligence
      
  Graduate course involving the analysis, robustness and visualization of neural networks, as well as probabilistic programming.
      Fall 2019
    
      Blockchain Security Seminar
      
  Graduate seminar on the latest research trends in the field of blockchains.
      Fall 2019
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Fall 2019
    
      Program Analysis for System Security and Reliability
      
  Graduate course illustrating how to apply analysis and synthesis techniques in the domains of blockchain, computer networks and deep learning.
      Spring 2019
    
      Blockchain Security Seminar
      
  Graduate seminar on the latest research trends in the field of blockchains.
      Spring 2019
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Spring 2019
    
      Parallel Programming
      
  Undergraduate course on parallel programming, co-taught with Prof. Torsten Hoefler.
      Spring 2019
    
      Rigorous Software Engineering (Part II)
      
  Undergrad course on software engineering and program analysis.
      Spring 2019
    
      Reliable and Interpretable Artificial Intelligence
      
  Graduate course involving synthesis, neural network analysis and probabilistic programming.
      Fall 2018
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Fall 2018
    
      Blockchain Security Seminar
      
  Graduate seminar on the latest research trends in the field of blockchains.
      Fall 2018
    
      Software Engineering Seminar
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2018
    
      Blockchain Security Seminar
      
  Graduate seminar on the latest research trends in the field of blockchains.
      Spring 2018
    
      Deep Learning for Big Code
      
  Graduate seminar on new methods and systems for learning from programs.
      Spring 2018
    
      Program Analysis for System Security and Reliability
      
  Graduate course illustrating how to apply analysis and synthesis techniques in the domains of blockchain, computer networks and deep learning.
      Spring 2018
    
      Software Architecture and Engineering (Part II)
      
  Undergrad course on software engineering and program analysis.
      Spring 2018
    
      Parallel Programming
      
  Undergraduate course on parallel programming, co-taught with Prof. Torsten Hoefler.
      Spring 2018
    
      Program Analysis and Synthesis
      
  Graduate course on program analysis and synthesis for discrete and probabilistic programs.
      Spring 2017
    
      Parallel Programming
      
  Undergraduate course on parallel programming, co-taught with Prof. Torsten Hoefler.
      Spring 2017
    
      Reliable and Interpretable Artificial Intelligence
      
  Graduate course involving synthesis, neural network analysis and probabilistic programming.
      Fall 2017
    
      Machine Learning for Interactive Systems and Advanced Programming Tools
      
  Covers applications of machine learning to various scenarios in vision and programming.
      Fall 2016
    
      Research Topics in Software Engineering
      
  Covers latest research trends in the field of programming languages and software engineering.
      Fall 2016
    
      Research Topics in Software Engineering
      
  Covers latest research trends in the field of programming languages and software engineering.
      Spring 2016
    
      Programming Systems Seminar
      
  PhD seminar on advances in programming languages, co-taught with Prof. Peter Müller.
      Spring 2014
    
      Programming Languages Seminar
      
  PhD seminar on advances in programming languages, co-taught with Prof. Peter Müller.
      Fall 2013
    
      Software Engineering Seminar
      
  Undergraduate seminar on program analysis and high-performance computing, co-taught with Prof. Torsten Hoefler
      Fall 2013
    
      Automated Techniques for Software Reliability
      
  Graduate course on program analysis techniques for software reliability and security.
      Fall 2012
    
      Research Topics in Software Engineering
      
  Seminar on advanced topics in programming languages, co-taught with Prof. Peter Müller.
      Spring 2012