The current drive for energy-efficiency has made approximation a key concept in designing and implementing software in various areas, such as data analytics, mobile computing, multimedia processing, and engineering simulations. This course will focus on foundations and system-level techniques for processing for representing noise in program's data and reasoning about profitable tradeoffs between accuracy, reliability, and energy consumption. In addition to selected algorithmic-level approximations, we will study (i) programming languages that natively operate on probabilistic and/or uncertain data, (ii) compilers and programming systems that automatically approximate programs while verifying or testing the accuracy of optimized programs, and (iii) hardware devices that expose approximate components. In Spring 2022, our particular focus will be on the approximations and accuracy concerns of edge systems including machine learning components and techniques for checking correctness of randomized/probabilistic applications.
2/1/2022: NEW: Homework #1 will be avaliable on Piazza today
2/1/2022: NEW: Submit Your Paper Choices by Next Tuesday: Link
1/20/2022: Lecture 2 available online.
1/18/2022: Lecture 1 available online.
1/17/2022: Access this document with Zoom info (requires Illinois credentials)
1/10/2022: The website is up!
This is a research-oriented course. It will include lectures, reading research papers, in-class discussions, and a final research project. In addition to in person lectures, we plan to use a combination of Zoom for some lectures and recording of asynchronous presentations, HotCRP for paper reviewing and discussion, and Piazza for announcements and Q&A. We will add the class-specific links soon.
We will compute the final grade using the following tentative table:
Activity | Grade | Details |
---|---|---|
Reviews and Discussion | 20% |
|
Presentation and Discussion Lead | 20% |
|
Project | 50% |
| Homework | 10% (+ 10% XC) |
|
We will first spend several weeks covering the key concepts of approximations in systems, accuracy management, and probabilistic programming. Then we will follow with studying recent research in approximation systems, systems and techniques for approximating deep learning, testing and analysis of approximate applications, probabilistic programming systems, and probabilistic techniques for system reliability.