Home Assignments Martin Blog Sherman Blog Resources Project Discussion Group

COMP.3010 Organization of Programming Languages, Spring 2016

Prof. Fred Martin (201 section), fredm@cs.uml.edu, Mon/Wed/Fri, 12p – 1250p, Olsen 109

office hours M 2–3p (Olsen 208); T 1–2p (Olney 524); W 2–3p (Olsen 302)

Prof. Mark Sherman (202 section), msherman@cs.uml.edu, Thu/Thu 330p – 445p, Olsen 402

office hours after class, Tues and Thurs 4:45-5:30 (and often by appt) Olsen 218

TA: Yang Gao, yang_gao@student.uml.edu

office hours: T/R 2–3:30p (Olsen 212A)

Graders: Gerald Pipes (gerald_pipes@student.uml.edu), Matthew Wolf (matthew_wolf@student.uml.edu)

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 freely available at HTML pages at the publisher's site here. There is a complete PDF version on Github. 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.
  • 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.
Projects will be done in teams. The team must divide each project into approximately equal shares of work for each partner.
  • Classroom and discussion forum participation 5%.

The Bottlenose Autograder

Programming assignments will be submitted to Bottlenose, the department's autograding system (at https://grader.cs.uml.edu).

The autograder will assign a provisional score to your work, based on determining that your functions produce the proper outputs given particular test inputs. Then, your work will be reviewed by a TA, and the score will be adjusted up or down as appropriate.

Example 1. A problem requires you to write a recursive function that uses an iterative (looping) structure. You submit a function that computes the correct result, but uses a recursive implementation structure. The autograder will pass your code as correct, but the TA discovers that your code did not use the required approach. Thus, you lose these points.
Example 2. A problem involves you writing a narrative explanation in a comment block and setting a machine-readable flag to #t (“true”) to indicate that you have included the explanation. The autograder only checks the flag and gives you credit. The TA then reviews your answer and decides if those points are warranted.
Example 3. Your implementation shows significant effort and contains partially correct code structures. But, the autograder marks you as simply wrong. The TA reviews your work and adds points.

You can submit multiple times to the autograder without penalty.

Only the final submission will be reviewed by the TA.

Late Policy

Assignments are due at 11:59p on the day that is specified.

Assignments will lose 20% of their value per day that they are late. 12:01a on the following day counts as a whole day. After the fifth day, they will not receive any score. (You may still submit them to the autograder for feedback, but the grade will automatically be set to 0, and TAs will not review them.)

Collaboration and Academic Integrity Policy

You are welcomed and encouraged 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.

The instructors are fully aware that solutions to many of the homework problems are available on the internet.

In addition to manually inspecting your code, TAs will routinely submit code to the Stanford MOSS system (“Measure of Software Similarity”).

If your code appears to have been copied from online solutions (or another student's solutions), you will be called into office hours to defend your work in an oral examination.

If you cannot adequately explain how the code works, the instructors will take appropriate action per the university's academic integrity policies (undergrads; grads)

In short: By turning in an assignment, you attest that you have written the new code that it includes.

No Posting of Solution Code Policy

You are not allowed to post solution code to problem sets assigned in this class in public places (e.g. Github). This includes your own solutions as well as solutions that may be provided by the instructors.

This policy is a courtesy to future students, who — to the fullest extent possible — should have the opportunity to struggle with the problems in the same way that you do.

Please note that this is typical policy at premier computer science departments. E.g.:

  • Princeton COS 126. “Your work must never be shown or communicated to anyone who is taking COS 126 now or who might take COS 126 in the future. ... You must never place your work in any public location (including websites, leaving printouts in a classroom, etc.). ... The rules ... continue to apply even after this semester is over.”
  • Harvard CS50. “Not reasonable: Providing or making available solutions to problem sets to individuals who might take this course in the future.”
  • MIT 6.01. Students should never share their solutions (or staff solutions) with other students, including through public code repositories such as Github.” (emphasis in the original)

Non-compliance will be pursued rigorously per UMass Lowell's academic integrity policy.

Attendance Policy

Students are responsible for all material covered in class, and are expected to attend all class meetings. Attendance will not be taken.

Exams will be announced at least one week before they are administered. In-person participation of final project presentations is required. Make-up opportunities will be made only in the case of emergencies, not scheduled conflicts (e.g., work).

In Martin's section, recordings of lecture content will be made available at http://echo360.uml.edu/martin201516/orgofprogramminglang.html.

Sherman't lecture capture recordings here: http://echo360.uml.edu/sherman2016/orgofproglang202.html

Discussion Group / E-Mail List

We will use Google Groups for class conversation and announcements. Please request to join the group at https://groups.google.com/forum/#!forum/uml-opl-spr16.