91.301 Organization of Programming Languages Spring 2002 Semester Section: 201

Time: MWF  11:30 AM - 12:20 PM

Room: OS 414

Instructor: Professor R. D. Gumb

Office: Engineering 410

Telephone: (978) 934-3619

E-mail: gumb@cs.uml.edu
      (I will answer email during my office hours.)
           Please do not send e-mail to rgumb!

Office Hours:  MWF 9-10 AM

Teaching AssistantPrachee Sharma (psharma@cs.uml.edu)
                 Jing_Tsui (Jing_Tsui@student.uml.edu)
                                  Send copies of all email correspondence to both.


1. Required Texts.
   H. Abelson et. al., Structure and Interpretation of Computer Programs (SICP),
       Second Edition, MIT Press, 1996.
On cs (saturn), the directory ~rgumb/CODE-FROM-TEXTBOOKS/SICP contains
material drawn from SICP.  The directory ~rgumb/91.301 also has some
course related material.

2. Precis.
   We take an analytical approach to the study of programming languages
using Scheme as a metalanguage.  We describe salient semantic features
of various programming language paradigms including the imperative,
functional, logical, and object-oriented approaches.  Some of the topics
that we will cover are recursion, iteration, orders of evalution, scope,
higher-order functions, types, inheritance, and message passing.  We shall
implement or modify selected interpreters.
  We will cover most of Chapters 1 through 4 in SICP, specifically omitting the
following material:
  Chapter 1:  pp. 75-6.
  Chapter 2:  Section 2.1.4, p. 118, pp. 122-4, Section 2.2.4, Section
              2.3.4, and pp. 210-6.
  Chapter 3:  Sections 3.3.4, 3.3.5, 3.4, 3.5.3, and 3.5.4.
  Chapter 4:  Sections 4.1.6, 4.1.7, and 4.3.
Very little, if any, of Chapter 5 will be covered.

3. Scheme.
   The versions of Scheme that we will be using are DrScheme and MIT Scheme.
To use DrScheme from a workstation in OS 308, type
(If you are on a workstation that is not in OS 308, first connect to saturn.)
Be sure to use (select as your language) graphical full scheme (MrEd).
In DrScheme, stream operations can be defined using macros as follows:
    (define-macro cons-stream
        (lambda (x y)
          `(cons ,x (delay ,y))))
    (define the-empty-stream '())
    (define (stream-car stream) (car stream))
    (define (stream-cdr stream) (force (cdr stream)))
    (define (stream-null? stream) (null? stream))
(There is a bug in the current version of DrScheme and you will need
to expand many macro invocations by hand.)
   Stream operations are implemented in MIT Scheme.  To use MIT Scheme, on saturn
   We may have occasion to discuss the programming languages ML and Prolog.  To run
Standard ML of New Jersey on saturn, type
and ^D to exit, and, for SWI-Prolog, type

4. Attendance.
   Class attendance is important. You are responsible for all scheduling and other
announcements made in class, and concepts essential to the course are presented
in class.  You substantially increase the likelihood of your failing if you do
not attend class.

5. Grading.
  Homework           35%
  Quiz 1             15%
  Quiz 2             20%
  Final Exam         30%
The quizzes and final exam are closed book.

6. Homework.
    Homework is to be submitted electronically and the hard copy turned in
before the beginning of the lecture in the class period on the date that it
is due (the deadline).   You can submit and turn in homework before the
deadline.  You must turn in both a hard copy and submit an electronic copy
unless explicitly stated otherwise.  Use the submit command to submit
electronic copies.   Be sure to include in your submission all programs needed
to run your submission, "interactions" with adequate test data, and a table of
contents explaining what you are submitting.  The homework that you submit
should be entirely due to your own efforts: You should not copy anyone else's
work, and you should not work with anyone else.  Further, you should insure
that your own work will not be distributed to other students, present or future,
for them to copy.
    Homework is graded on a scale of 0 to 10, and late homework submitted
within one week of the deadline will be accepted subject to the following
  (1)  Both electronic and hard copy late:  -2 points.
  (2)  Electronic copy late:  -1 point.
  (3)  Hard copy late:  -1 point.
  (4)  No electronic copy:  -2 points.
  (5)  No hard copy:  -2 points.

7. Schedule.

---- -----------  ----------------------------------------------

   1 Jan 23(W)    Introduction. Historical background.  DrScheme.
   2     25(F)    Building Abstractions with Procedures.  (Chapter 1,
                  omitting pp. 75-6.)

   3    28 (M)
   4    30 (W)    (hw1)
   5 Feb 1 (F)

   6     4 (M)
   7     6 (W)    (hw2)
   8     8 (F)

   9    11 (M)
  10    13 (W)    (hw3)
  11    15 (F)

        18 (M)   President's Day (No class).
  12    20 (W)
  13    21 (R)   (Monday Class Schedule) (hw4)
  14    22 (F)   Building Abstractions with Data. (Chapter 2, omitting
                 Section 2.1.4, p. 118, pp. 122-4, Section 2.2.4,
                 Section 2.3.4, pp. 210-6.)

  15    25 (M)
  16    27 (W)   Quiz 1
  17 Mar 1 (F)

  18     4 (M)
  19     6 (W)  (hw5)
  20     8 (F)

  21    11 (M)
  22    13 (W)  (hw6)
  23    15 (F)

         18 - 22  Spring Recess (No classes)

  24    25 (M)
  25    27 (W)  (hw7)
  26    29 (F)  Modularity, Objects, and State.  (Chapter 3, omitting
                Sections 3.3.4, 3.3.5, 3.4, 3.5.3, and 3.5.4.)

  27 Apr 1 (M)
  28     3 (W)  (hw8)
  29     5 (F)

  30     8 (M)
  31    10 (W)  Quiz 2
  32    12 (F)  Metalinguistic Abstraction (Chapter 4, omitting
                Sections 4.1.6, 4.1.7, and 4.3)  Also read John Hughes'
                paper Why functional programming matters.

        15 (M)   Patriot's Day (No class)
  33    17 (W)
  34    19 (F)

  35    22 (M)   (hw9)
  36    24 (W)
        26 (F)   University Day (No class)

  37    29 (M)
  38 May 1 (W)
  39     3 (F)   (hw10)

  40     6 (M)
  41     8 (W)
  42    10 (F)   (Last day of class)

        15 (W)    Final Exam 11:30 AM, OS 407