- No class on September 6 and 8. Jeremy is in France. Watch video-recorded lectures instead.
- Aug. 23, first day of class!
Fundamentals of Programming Languages provides an opportunity for students to
- learn how to precisely specify a programming language
- deeply understand many common and some uncommon language features
- learn how to rigorously prove properties of programs and of programming languages
- become acquanted with the research literature in programming languages
The prerequisites for this course are programming and mathematical experience with prior exposure to several different programming languages, such as C, ML, and Java, which may be satisfied by taking CSCI 3155 or equivalent. The ideal programming experience is an undergraduate compilers course (e.g., CSCI 4555). The ideal mathematical experience is familiarity with mathematical logic and the ability to construct rigorous proofs (in particular by structural induction). These prerequisites are not strict. However, your desire to be exposed to this material is very important.
Advanced undergraduates may consider taking this course after talking with the instructor.
You will be responsible for the following:
- Class Participation (10%). Participation includes both in-class and online discussion.
- Homework Assignments (40%). There will be weekly problem sets.
- Project (20%). You will create a project that explores, extends, or experiments with the ideas in the course.
- Final Exam (30%). There will be an in-class final exam during finals week.
- Reading. There will be required papers or book chapters to read.
Late policy. 25% of the point value will be deducted for turning work in late, up to 1 week after the deadline. After a week past the deadline you may not turn in the work.
Turn-in. Turn your work in via an email to Weiyu Miao and CC Jeremy Siek. No hand-written assignments. Your work can either be in ASCI (plain text file) or nicely typeset (PDF). No DOC files will be accepted.
Textbook and Resources
The following are some other resources:
- Robert Harper. Practical Foundations for Programming Languages. This book is a draft under revision. It is the text used in the undergraduate theory of programming languages class at CMU. It provides some additional background and another presentation of some of the topics we will discuss (e.g., operational semantics, types).
- Benjamin C. Pierce. Types and Programming Languages. This book is the text for ECEN 5013 Types and Programming Languages. [e-book via CU library]
- Flemming Nielson, Hanne Riis Nielson, and Chris Hankin. Principles of Program Analysis.
Google Groups. We will use Google Groups for online discussion. Please sign up right away on the course google group. To address emails to the group, use the address email@example.com.
Off-Campus Access. The CU library has instructions for off-campus access to certain online resources (e.g., ACM Digital Library).
- OCaml is available for most platforms.
- OCaml Manual
- Developing Applications with Objective Caml (book)
- IDE: Emacs mode, Eclipse plug-in
Computing. For a Linux environment, the following are some resources:
- CS students can create a a CSEL account. CSEL has a lab in ECCS 128 and remote access servers with SSH (elra-01 through elra-04.cs.colorado.edu).
- ECEE students can create an ECES account.
- You can download and install the CU Computer Science Virtual Machine.
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.
We will go by the honor code set forth by the University:
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).
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.
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.
We will go by the disability guidelines set forth by the University:
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.
Disability Services' letters for students with disabilities indicate legally mandated reasonable accommodations.
Religious ObservancesWe will go by the policy for religious observances set forth by the University:
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.
See www.colorado.edu/policies/fac_relig.html for further details on the policy.
This course is based on similar courses taught by George Necula at the University of California, Berkeley and Wes Weimer at the University of Virginia, and Bor-Yuh Evan Chang here at the University of Colorado.