CS243: Program Analysis and Optimization Winter 2019
This page is updated frequently, so check back often. All materials for the course will be posted here.
Important #1:Click to sign up for this class on Piazza!
Important #2:Click to register with Gradiance with class token 33D8AF0C.
What do we teach?
Machine learning and scientific computing need a lot of cycles;
machines such as GPUs are complex to code. How do we automatically
generate efficient code for these machines effectively. (Parallelism
The highest programming language is obviously natural language. Can
we program our virtual assistant to perform compound tasks in natural
language? We use machine learning techniques to map natural language
into formal languages. Note: no prior knowledge in machine learning is
needed. (Neural networks, Satisfiability Modulo Theories)
Can we use program analysis to automatically detect security bugs in
programs? (Pointer analysis)
How do we automatically manage memory efficiently so users do not
have to manage it themselves? (Garbage collection)
How do we make high-level programming languages efficient by
optimizing the code?
How do you learn this?
This is a course where math and programming meet. Learning compiler techniques has
much in common with learning mathematical proofs. You learn by trying,
finding your own insights. This means the assignments can take a variable amount of time!
We want you to formulate your own
variations of problems and solve them.
How is the course structured?
Highly interactive lectures, textbook reading.
Programming assignments analyze Java code.
Problem sessions for discussion.
Piazza for offline questions.
Midterm and Final.
Logistics When, where, what and how
Monday and Wednesday 4:30 pm - 5:50pm in Gates B03
Friday 3:30pm - 4:30pm in Gates B03
CS 103 or CS 103B, and CS 107; Java programming language experience
Compilers: Principles, Techniques, & Tools (Second Edition), Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley, 2007.
All questions related to the
material should go to Piazza. Using
Piazza for questions should significantly decrease the average response time,
since there are more instructor/TAs and students there to see the question. If
another student can answer the question, that will help them learn, too.
Administrative questions should all go to
Please do not email individual staff members.
Lab Extra Credit
up to 10% (applied after curve)
Staff Professor and TA details
IMPORTANT Contact us using
for administrative questions.
Monica Lam, Instructor
Mondays 2:00pm - 3:00pm Gates 422
Dan Moreau, Admin
How are office hours structured?
The TAs each hold office hours twice a week. The instructor holds office hours by arrangement via email.
SCPD students Join the Google Hangout during office hours (link posted on Piazza).
Handouts and Graded Assignments What happens with physical materials
CS243 will be using the Gradiance automated homework system for some of
the required work. You should open your free account at
and then sign up for the class using the "class token" 33D8AF0C.
Gradiance looks like multiple-choice questions, but it is really quite
different. You are given problems to work out, just as you would in an
ordinary homework. You are then given a multiple-choice question to
test whether or not you have the correct solution. If you get a choice
wrong, you are given a hint and encouraged to try again. You are
allowed to try as many times as you like, and the goal is to get
everything right eventually. To avoid repeated guessing on one problem
at a time, you need to repeat all the questions each time you submit,
and you will be given a different set of choices each time.
SCPD students: Please
download the lecture notes before the lecture; the material will be
available by the morning of the lecture.
Please submit written assignments to us by emailing them to the staff
mailing list and include the
homework route form
with your submission.
We will return the graded homeworks back to you through SCPD distribution
(SCPD students only).
Homework will consist of both written and
programming assignments. You are encouraged to work on the programming
assignments in groups of two, but you must do the written assignments
In general, no late assignments are accepted.
However, you have two grace days for the entire quarter. That means
you can be late by one day for two assignments, or use the two days up
for one assignment.
Programming assignments will have specific submission instructions
included with the handouts. We will use a certain amount of
automatic grading to help us deal with the massive amounts of code
everyone submits, so please follow the submission instructions
exactly as written!
Some of the written homework should be submitted via Gradiance, as
described above. If you have any issues accessing the
Gradiance site, please contact the TAs.
You are free to discuss the assignment and solutions with others.
However, you must write your own assignment, and must not represent
any portion of others' work as your own. Anybody violating the honor
code will be referred to the Judical-Affairs Office. If convicted, the
normal penalty is a quarter suspension or worse.