Department of Computer Science
College of Computer, Mathematical, and Natural Sciences
The University of Maryland at College Park

CMSC 838B / 498Z (Fall 2021): Differentiable Programming


CMSC 838B / 498Z (Fall 2021): Differentiable Programming

Instructor: Ming C. Lin


Time and Place: Tues/Thur 12:30pm - 1:45pm, ENG 2116
Office Hours: Tues/Thur After Class
Prerequisites:CMSC 330, CMSC 351 AND CMSC 422 OR Instructor's approval
Textbook: Course Notes and Electronic Handouts
TA: Yu Shen (IRB 5116, yushen@cs.umd.edu; Office Hours: By Appointment)
================================================================================================================================================================================================================================================================================================================

  • Course Overview
  • Lectures and Approximate Schedule
  • Course Reading Materials
  • Assignments and Projects
  • Course Syllabus
  • ================================================================================================================================================================================================================================================================================================================

    COURSE OVERVIEW:

    Differentiable Programming has the potential to impact many different fields in upcoming years. With recent advances in general-purpose GPU (GPGPU), cloud computing, data-driven modeling and deep learning, some of the areas, where differentiable programming has shown success, include computer vision, physics-based simulation, speech analysis to natural language processing. "Differentiable Programming" can be broadly defined as a novel programming paradigm, where programs are treated as compositions of differentiable operations that can then be optimized to fit data -- with tremendous possibility to transform how we can utilize computers to perform calculations on "big data".

    This course will examine at how differentiable programming works, from theoretical foundations, practical design and consideration, to system implementation. The course will cover popular concepts like automatic differentiation, models to be integrated with deep learning (including convolutional and recurrent neural networks), as well as some specific instances in differentiable vision, differentiable rendering, differentiable physics, etc. The students are free to choose application of differentiable programming in various topic areas, including Quantum Computing, Genomics, Robotics and AI, Computational Biology and Neuroscience, etc.

    The overall goal of this course is to survey some of the most important recent development in differentiable programming, and not to teach you how to train pre-existing models (although you may learn to do that if you choose to do a course project). The aim of this course is to equip you with the broad knowledge and basic skills, so you can understand the literature and implement models and novel differentiable programming concepts. The intent is that after this course, you will develop the ability to critically evaluate and appreciate new system ideas, constructively dissect and criticize, and skillfully identify limitations and potential of various differentiable programming approaches.

    Pre-requisite: The predominant focus is on looking at models that can be optimized via gradient-based methods. So, you are expected to have a good grasp of linear (matrix) algebra and matrix calculus, as well as the fundamentals of machine learning, probability and statistics. You should also be comfortable with Python programming and the use of numeric/matrix libraries such as pyTorch, if you choose the 3-credit option (vs. 1-credit for only attending and participation) to do a final course project with significant programming and software components.

    ================================================================================================================================================================================================================================================================================================================

    LECTURES AND APPROXIMATE SCHEDULE

    There will be lectures each week. The lectures will all take place either in-person or online, with materials made available through links placed on the course page. By taking part in this course at the minimum of 1-credit option, we expect you to actively participate, attend most lectures, and get involved -- asking thoughtful questions, partaking in stimulating discussion – either in person or via text chat, etc.

    A tentative class schedule, illustrating the planned topic and course materials, is posted below. This schedule will evolve as the class progresses throughout the semester. Many of the lectures are coupled with assigned reading. Whenever possible, students are strongly encouraged to read before the lecture takes place. Advanced reading will enhance understanding of the topic, while contributing to much more lively discussion in class. Some of the lectures will be invited guest lectures given by well-known researchers in differentiable programming.

  • Overview & Introduction (Tues, Aug 31, 2021)
  • Background and Reviews (Thur, Sept 2, 2021)
  • Differentiation (Tues, Sept 7, 2021)
  • Backpropagation (Thurs, Sept 9, 2021)
  • Differentiable Programming: Taichi, DiffTaichi, and ChainQueen by Yuanming Hu (Tues, Sept 14, 2021)
  • Automatic Differentiation (Thur, Sept. 16, 2021)
  • Optimization (Tues, Sept 21, 2021)
  • Differentiable Physics (Thurs, Sept 23, 2021)
  • Differentiable Rendering and Beyond by Tzu-Mao Li (Tues, Sept 28, 2021)
  • Differentiable Physics & Differentiable Fluids (Thur, Sept 30, 2021)
  • Introduction to Quantum Computing (Oct 5, 2021)
  • Variational Quantum Methods (Oct 5, 2021)
  • Quantum Differentiable Programming (Oct 7, 2021)
  • Differentiable Physics: Computer Graphics as an Inductive Bias by Derek Nowrouzezahrai (Tues, Oct 12, 2021)
  • Kornia: Differentiable Computer Vision by Edgar Riba (Thur, Oct 14, 2021)
  • Differentiable Physics by Nils Thurey (Tues, Oct 19, 2021)
  • Project Proposal (Thur, Oct 21, 2021)
  • Midterm Exam (Tues, Oct 26, 2021)
  • Project Proposal (Thurs, Oct 28, 2021)
  • Differentiable Agent-based Traffic Simulation & Reinforcement Learning (Tues, Nov 2, 2021)
  • Differentiable Autonomous Driving (Thur, Nov 4, 2021)
  • Pontryagin Differentiable Programming: Differentiable Control (Thur, Nov 4, 2021)
  • Differentiable Traffic Simulation (Tues, Nov 9, 2021)
  • Solving PDEs Using Neural Networks (Tues, Nov 9, 2021)
  • Project Mtg (Thurs, Nov 11, 2021)
  • Differentiable Convex Optimization & Differentiable Rendering I (Tues, Nov 16, 2021)
  • Differentiable Rendering II & Neural Differentiable Rendering (Thurs, Nov 18, 2021)
  • Project Progress Report (Tues, Nov 23, 2021)
  • NO CLASS: THANKSGIVING BREAK (Thur, Nov 25, 2021)
  • Project Mtg (Tues, Nov 30, 2021)
  • Graph Neural Network & Graph Neural Networks on Computer Vision (Thurs, Dec 2, 2021)
  • The Revolution of Neural Rendering by Matthias Niessner (Tues, Dec 7, 2021)
  • Differentiable Point Registration & Therbligs for Action Segmentation (Thurs, Dec 9, 2021)
  • ================================================================================================================================================================================================================================================================================================================

    COURSE READING MATERIALS

  • Supplementary Materials and Reading List for the Class (updated throughout the semester)
  • ================================================================================================================================================================================================================================================================================================================

    ASSIGNMENTS AND PROJECTS

    The class grade of each student taking 3-credits is determined by

  • In-Class Exams (30%)
  • Class Presentation (20%)
  • Final Project (50%)
  • ================================================================================================================================================================================================================================================================================================================

    For more information, contact Ming C. Lin, lin@cs.umd.edu.

    ================================================================================================================================================================================================================================================================================================================

    Copyright 1999-2021. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the author.

    This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.