Course Syllabus

Goals

  • Understand the fundamental issues in the design of programming languages.
  • Become familiar with the different abstraction mechanisms offered by programming languages.
  • Become familiar with the styles of main programming paradigms: imperative, functional, logic, and object-oriented programming languages and environments.
  • Become familiar with some of the formalisms for programming language description and program verification.

Textbooks

  • The main textbook is Programming Languages: An Interpreter-Based Approach, by Norman Ramsey, and Samuel N. Kamin. The book is an unpublished draft and will be given out in class.
  • We will be learning ML from Elements of ML Programming, 2nd edition (ML97), by Jeffrey Ullman. The book is required and is available in the North Campus bookstore.

Class

  • We will cover a wide range of topics in programming language design. Details of topics can be found on the schedule page. We will use the Ramsey&Kamin book as the main text. Ullman ML book will be used for learning ML - the main language used in this course.
  • Some lectures will cover topics not in the textbook, related reading materials will be published in the mercury course account.
  • The class uses the weekly single lecture session format. Lecture notes will be available on the schedule page after class.

Prerequisites

91.301 (our undergraduate programming languages course) or the equivalent. Discrete math (as a prerequisite to 91.301). Knowledge of 91.502 (automata theory and formal languages) will be helpful for the language formalism topics.

Grading

  • Homework: 50%, we will have around 10 homework assignments, average once per 1-2 weeks.
  • Programming Lanugage Surveys: 10%. Students will write surveys on major language design paradigms. Details will be announced in class.
  • Midterm: 20%, will be scheduled in class, closed-book and closed-notes.
  • Final Exam: 20%, will be scheduled in the week of finals.

Lateness policy:

You should submit your homework online (directions on the assignment page). The homework assignments are due at midnight and your submission files should have timestamp no later than that. The timestamp will be used to check your submission time.

To account for any unexpected event or delay, each student is granted a total extension pool of three late days during the semester. You can use these extension days for any of your turn-in. However, if you have used up all three days, no other form of extension will be granted and any late turn-in will be rejected with 0 grade for the assignment. So use the extension days judiciously and submit your turn-in on time.

Collboration policy:

You must do the homework assignments individually. You may discuss the concepts in any open forum but must not discuss the actual answers to the problems. You should be aware of proper academic attribution. If your homework contains unattributed answers that are substantially other persons' work then your course grade may be lowered between one and three letter grades. In cases of cheating on exams, or repeat offenses, the University's maximum penalty may be imposed.