Home Assignments Lecture Blog Resources Project Discussion Group

91.301 Organization of Programming Languages, Fall 2014
Prof. Fred Martin, ⚠ (:html:)<a href="http://mailhide.recaptcha.net/d?k=01COSqrfJ-58cc94fQb2pI1A==&c=iZBP8kCznrjdnfw8QFFKADFtsIimnLdVHk581djoISQ=" onclick="window.open('http://mailhide.recaptcha.net/d?k=01COSqrfJ-58cc94fQb2pI1A==&c=iZBP8kCznrjdnfw8QFFKADFtsIimnLdVHk581djoISQ=', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0, menubar=0,resizable=0,width=500,height=300'); return false;" title="Reveal this e-mail address">click for fred's email</a>(:htmlend:)
Mon/Wed/Fri, 12p – 12:50p, Olsen 503


  • Yen-Fu ("Edward") Luo, edwardluoopl@gmail.com. Office hours: Tue/Thu 12:30p – 2:00p, 2nd floor TA lounge
  • Peng Hou, Peng_Hou@student.uml.edu. Office hours: Mon 2p – 3:30p, OS305

We will be using the following book:

Structure and Interpretation of Computer Programs (2nd edition, 1996, ISBN 0070004846)
Hal Abelson and Jerry Sussman

The Abelson/Sussman book is available online (for free) here. If you like holding a book in your hands, used hard copies are available between $30 and $40. Make sure to get the 2nd edition, published in 1996. Here are links: bigwords, alibris, amazon, bookfinder

Catalog description

Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters.


There are five categories of work that will be assessed:

  • Programming assignments 20%. The assignments are the primary way for developing an understanding of course material. Assignments will lose 10% of their value per day that they are late up to a maximum of 50% off. Assignments are due before class of the day that they are assigned.
  • Two mid-semester exams 10% each x 2 = 20%.
  • Final exam 30%.
  • Term project 25%. A significant part of the class will be an independent implementation project, which you will specify and carry out, primarily over the last month of the semester. We'll start conceptual work on the project earlier than that. I will expect the project to represent a significant work effort.
You will apply the ideas developed in the class in an original software implementation. You may thus connect the ideas of the class with your own interests—music, robotics, art, databases, the web, networking, gaming, etc. The learning goal of the project is to have you find some real-world relevance of the ideas in the class.
Because of the high number of enrolled students, projects will be done in teams. Each partner will be responsible for an equal share of the work.
  • Classroom and discussion forum participation 5%.

Collaboration and Academic Integrity Policy

You are welcome to discuss ideas in the class with your peers. However, pair programming or other side-by-side work that involves sharing of code is not allowed. By turning in an assignment, you attest that you have written the new code that it includes. Please be familiar with the university's academic integrity policies: for undergraduates for graduate students

Discussion Group / E-Mail List

We will use Google Groups for class conversation and announcements.

⚠ (:html:) <table style="border:1px solid #aa0033; font-size:small" align=left> <tr> <td rowspan=3> <img src="http://www.cs.uml.edu/ecg/uploads/OPLspr14/googlegroups_logo.gif" height=58 width=150 alt="Google Groups"> </td> <td colspan=2 align=center><b>Subscribe to 91301-f14</b></td> </tr> <form action="http://groups.google.com/group/91301-f14/boxsubscribe"> <tr> <td>Email: <input type=text name=email></td> <td> <table style="background-color:#ffcc33;padding:2px;border:2px outset #ffcc33;"> <tr> <td> <input type=submit name="sub" value="Request"> </td> </tr> </table> </td> </tr> </form> <tr><td colspan=2 align=center> <a href="http://groups.google.com/group/91301-f14" target="new">Browse Archives</a> </td></tr> </table> (:htmlend:)