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 Assistant: Prachee
Sharma (psharma@cs.uml.edu)
Jing_Tsui
(Jing_Tsui@student.uml.edu)
Send copies of all email correspondence to both.
GENERAL INFORMATION
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
drscheme
(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
type
scheme
We may have occasion
to discuss the programming languages ML
and Prolog.
To run
Standard
ML of New Jersey on saturn, type
/usr/local/sml/bin/sml
and ^D to exit, and,
for SWI-Prolog,
type
pl
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% |
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
penalties:
(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.
MEET DATE
TOPIC
---- -----------
----------------------------------------------
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