198:516 - Programming Languages and Compilers II


Room change: Was LSH-B115; NOW: Hill 482 (next to CoRE building on Busch Campus).
If you have an issue with this room change, please send the instructor an email.


In the last ten years, the computing landscape has changed dramatically with the realization that Moore's law can only be sustained via parallelism because of CMOS technology's power dissipation properties. However, this approach also has its inherent limits. New paradigms are now under consideration such as approximate, reversible, quantum, or analog computing, with hundreds of millions of dollars in research funding dedicated specifically to quantum computing. In addition, new optimization goals have taken a more dominant role besides execution time, such as energy consumption, resource usage vs. QoS tradeoffs, reliability and robustness, or security and privacy.

The goal of this course is to expose students to existing (e.g. parallel) and emerging programming paradigms (e.g. reversible, quantum, and approximate) to get a better understanding of their foundations, applicability, and limitations. We will discuss the different required tool chains, consisting of languages, compilers, optimizers, debuggers, and runtime systems. To solve hard optimization problems, students will learn to use different forms of integer programming formulations (gurobi) to compute optimal solutions, either as part of an evaluation infrastructure, or as part of the compiler/optimizer. After taking this class, students will be able to assess the effectiveness of the new paradigms for different application domains, and the efforts needed to build a tool chain for each paradigm and relevant optimization objectives.

The class will consist of lectures, small projects (including writing a quantum program and executing it on an actual quantum computer), and student presentations on selected topics. Grades will be based on class participation, presentations, and a final project. There will be no midterm or final exam.


Some background in compilers and programming languages.



Please post questions regarding the projects and homeworks in our sakai group.
Do not send these questions to me directly. Thanks.

Tentative Syllabus


Tuesday/Friday noon-1:20 p.m., Hill 482 (Busch Campus)

Study Homeworks


How to Survive Graduate School, Keep the Big Picture in Mind, and More