CSCI 5535 / ECEN 3355 -- Fundamentals of Programming Languages

Course Information

Instructor: Matthew A. Hammer
Lectures: ECCS 1B28 Tue, Thu 8-9
Office Hours: ECCS 122 Tue 9:30-10:30, Wed 1:30-2:30
Moodle: Dashboard
Class Announcements
Student Discussion Forum

Standard Syllabus Statements


This course introduces the fundamental principles of programming language design, semantics, and implementation.
For more information on the course philosophy, read Why Study Programming Languages? (written by Robert Harper, the author of our textbook).


Please see the schedule of lectures for the lecture topics and links to the readings and assignments.

Lecture is a primary source of information in this course. You are strongly urged to attend lecture every week, and are in any case responsible for the material presented therein.


Please see the homework assignments page for more information on submitting homework and for the current assignments.

Homework will account for 50% of your grade in this course.

This semester homework will be submitted via Moodle. Additionally, grades for assignments as well as feedback will be released on Moodle.

Final Exam

There will be an open-book, take-home final examination at the end of the semester. This exam will account for 20% of your grade.

Course Project

Roughly half-way through the course, students will begin to work in pairs (or independently, with permission from the professor) on a course project. This project will consist of a combination of implementation work, theoretical work, and a literature survey. The final meetings of the class will consist of project teams giving oral presentations about their project. Additionally, each project team is required to submit a written report. See the course project page for details about the scope of these projects, and the requirements for presentations and reports.


Homework will account for 50% of your grade, the final 20%, and the project 30%. Your final letter grade will be determined in part based on your performance relative to the rest of the class, though we have no pre-determined distribution in mind. We will also consider extra credit on the assignments and participation in lecture when determining final grades. Extra credit and participation do not count towards your numeric average, but, for example, they might cause a student on the border to receive an A instead of a B (or vice versa!).

Late homework assignments will not be accepted or graded. They count for zero points. If you have a special circumstance that is truly beyond your control which prevents you from completeing your homework on time, contact the instructor before the homework due date to request a special accommodation. Requests made on or after the due date will be categorically ignored.


Robert Harper, Practical Foundations for Programming Languages (Second Edition). Cambridge University Press, 2016.

The author has made a preview version available online. This version will suffice to complete the course.


The programming languages we study and use in this course will be closely related to ML. Specifically, we will use the OCaml implementation for homeworks that involve programming assignments.

Some useful LaTeX style files and samples may be found in the tex directory.


Post all questions for the professor on the Discussion Forum on Moodle. However, it is not appropriate to post solutions to homework problems publically, for the obvious reasons, so if your question is about your own solution, please post privately to the professor only.

Where to go for help

The Moodle Discussion Forum is the first place to look for answers to your questions, and to post questions of your own.

The second place to look for help is to visit the professor during office hours. These times are intended to help you with homework and answer any questions you may have about the course material.

Academic Integrity

As a condition for taking this course, you are responsible for compliance with the University Policy on Academic Integrity and Plagiarism.

In this course, you are authorized to use the books and notes linked from this Web site, as well as any other sources specifically allowed by the course staff. Any other source is unauthorized.

You are allowed to discuss homework assignments with other students. However, in order to ensure that the work you submit is still your own, we insist that you adhere to a whiteboard policy regarding these discussions: you are not allowed to take any notes, files, or other records away from the discussion. For example, you may work on the homework at the whiteboard with another student, but then you must erase the whiteboard, go home, and write up your solution individually. We take your ability to recreate the solution independently as proof that you understand the work that you submit.

This policy is our attempt to balance the tension between the benefits of group work and the benefits of individual work. We ask that you obey the spirit of the policy, as well as the letter: ensure that all work you submit is your own and that you fully understand the solution. This is in your best interest: the exam constitutes a significant part of your final grade and it will draw heavily on the terminology, concepts, and techniques that are exercised in in the homework. It is unlikely that you will be able to do well on the exam if you do not take full advantage of the learning opportunity afforded by the homework assignments.


The materials for this course are, for the large part, derivatives of material from 15-312 at CMU, as taught by Prof Robert Harper, the author of our textbook.

Valid XHTML 1.0!