Aug 28. Register
a code word. Your code word will be used for grading your homeworks
and showing your status on the homework leaderboard. You will want
to keep your code word private. Please do so by Tuesday, August 20 at
8:00 a.m. so that the homework submission site can be opened up to
you in a timely manner.

Aug 23. No class on September 13 and 15, as Evan will be
traveling. Watch recorded lectures instead. Quiz 2 will
be submitted electronically.

Aug 23. First day of class!

Aug 21. All students should have received a welcome e-mail from me on how to enroll on Moodle and Piazza. If you did not receive such a message, please send me an e-mail. Once you get set up, post a note introducing yourself.

Course Overview

High-level programming languages like Python make programming a
breeze, but how do they work? There's a big gap between Python and
machine instructions for modern computers. Learn how to translate
Python programs all the way to Intel x86 assembly language.

Most compiler courses teach one phase of the compiler at a time,
such as parsing, semantic analysis, and register allocation. The
problem with that approach is it is difficult to understand how the
whole compiler fits together and why each phase is designed the way it
is. Instead, each week we implement a successively larger subset of
the Python language. The very first subset is a tiny language of
arithmetic statements, and by the time we are done the language
includes objects, inheritance, and first-class functions.

The course has two broad topics:

Compilation and Language Transformation: How do we manipulate
and translate programs? You will gain experience building such
programming language tools.

Research Applications: You will explore more advanced ideas of
your choosing through a final course project.

Prerequisites

Fluency in at least one programming language (e.g., Java, C, C++,
Python). Students will do a lot of programming in Python, but prior
knowledge of Python is not required. Prior knowledge of an assembly
language helps but is not required.

Requirements

You will be responsible for the following:

Homework
Projects (25%). There will be bi-weekly homework
projects during the first part of the course.

Quizzes (15%). There will be in-class quizzes during the
first part of the course.

Final Project
(15%). In the second part of the course, you will spend your time on
a final project. You will create a final project that explores,
extends, or experiments with the ideas in the course.

Late policy. 10% of the point value will be deducted for
each day (including weekends) the assignment is late up to 3 days
(i.e., on the 4th late day, an assignment submission will no longer
receive credit).

Workload. The workload is up to 12 hours of out-of-class
work per week.

4000-level vs. 5000-level. The main difference between
between the undergraduate- and graduate-level courses will be
the expectations for the final course project. Additionally,
the final assignment of grades will be done separately for
the 4000-level and the 5000-level students. The homeworks,
quizzes, and exams will be the same.

Quizzes. If you must miss a class day with a quiz,
please arrange with me in advance. You will not be allowed
to make up quizzes after the fact.

Distance Learning

This course is also offered through the CAETE program. All assignment
submission and content delivery will be electronic.

Deadlines. Distances students will follow the same
assignment deadlines as in-class students. Content delivery should be
essentially immediate. Exceptions will only be made in the case of
extreme technical difficulties in publishing content.

Quizzes. The questions for quiz will be sent to you on the
morning of the posted date of the quiz and you will submit your
answers by 11:59 p.m. of the same day. The quizzes are closed book and
should be completed alone, just use your brain and only use the
computer to type in your answers. For example, do not use the Python
interpreter on your computer to help you answer the quiz.

Textbook and Resources

Textbook. There is no required textbook for this course.

Course Notes. Most of the reading will come from the
course notes, which may
be updated throughout the semester.

Recommended Supplemental Books.
The following are some other resources:

Tools

Moodle. We will use Moodle for grades and feedback. If do
not already have an account, please create one and join the course
moodle. The instructor will provide the enrollment key.

Piazza. We will be using Piazza for online, outside-of-class discussion. Rather than emailing questions to the teaching staff, most questions should be posted on Piazza. I encourage you to make class-wide posts whenever possible, but there is an option to send an instructor-private message. You also have the option of posting anonymously.

Collaboration Policy

You are welcome and encouraged to work together in learning the
material. If you worked with someone on an assignment, or if your
submission includes quotes from a book, a paper, or a web site, you
should thank the source. Bottom line, feel free to use whatever
resources that are available to you as long as you cite them in
your submission.

All students of the University of Colorado at Boulder are
responsible for knowing and adhering to the academic integrity
policy of this institution. Violations of this policy may include:
cheating, plagiarism, aid of academic dishonesty, fabrication,
lying, bribery, and threatening behavior. All incidents of academic
misconduct shall be reported to the Honor Code Council and those
students who are found to be in violation of the academic integrity
policy will be subject to both academic sanctions from the faculty
member involved and non-academic sanctions given by the Honor Code
Council (including but not limited to university probation,
suspension, or expulsion).

Classroom Behavior

We trust and expect everyone to behave in a civil and courteous
manner.

Discrimination and Sexual Harassment

We will go by the policies set forth by the University:

The University of Colorado at Boulder policy on Discrimination and
Harassment, the University of Colorado policy on Sexual Harassment and the
University of Colorado policy on Amorous Relationships apply to all
students, staff and faculty. Any student, staff or faculty member who
believes s/he has been the subject of sexual harassment or discrimination or
harassment based upon race, color, national origin, sex, age, disability,
creed, religion, sexual orientation, or veteran status should contact the
Office of Discrimination and Harassment (ODH) at 303-492-2127 or the Office
of Judicial Affairs at 303-492-5550. Information about the ODH, the above
referenced policies and the campus resources available to assist individuals
regarding discrimination or harassment can be obtained at
www.colorado.edu/odh.

Special Accommodations

We will make every effort to make special accommodations that are
reasonable and fair to all students. Please note that we will accept
requests for adjustments during the first four weeks of class.

Disability

If you qualify for accommodations because of a disability, please
submit to the course staff a letter from
Disability Services within the first four weeks of class so
that your needs can be reasonably addressed. Disability Services
determines accommodations based on documented disabilities
(303-492-8671, Willard 322).

If you have a temporary medical condition or injury, see these
guidelines.

Religious Observances

Campus policy regarding religious observances requires that faculty
make every effort to deal reasonably and fairly with all students who,
because of religious obligations, have conflicts with scheduled exams,
assignments or required attendance. In this class, we will try to
accommodate religious conflicts in a reasonable manner. Please check
the exam dates and submit all requests for
adjustments within the first four weeks of class.