Instructor

Course Description

Textbook

Evaluation

Homework assignments

Coursework (Summary notes and PDF slides are posted here)

Resources

Accommodations

Student Conduct

 


Instructor  

Nurit Haspel
Office Hours: Tuesday, Thursday 12:30-2:00 Blackboard or by appointment. e-mail: nurit.haspel@umb.edu
Homepage: http://www.cs.umb.edu/~nurith
TA:???


Course Description

The syntax and semantics of higher-level languages are treated. Formal specifications of syntax and models of semantics will be used. Important topics include mechanisms for parameter passing, scoping, dynamic storage allocation and systems interfacing. Both compiled and interpreted languages will be used as examples. The language of instruction is Scheme, a dialect of LISP, which is taught in the course.

See the course syllabus for a detailed list of topics.

Prerequisites are CS310 (Advanced Data Structures and Algorithms) and CS220 (Applied Discrete Mathematics, formerly CS320) or permission from the instructor.


Required Textbook

Required:

Structure and Interpretation of Computer Programs, Harold Abelson and Gerald Sussman,
MIT Press, ISBN: 0262011530 ISBN-10: 032157351X


Grade Evaluation

There will be no exams. All the work in this course will be homework. There will be 10-ish assignments, each involving some written work and also some programming. Each assignment will involve an extensive amount of work. Assignments 1 and 2 will be somewhat easier than the others (and will count for somewhat less when I calculate grades). The assignments will be handed out with ample time allowed to finish them. I will not accept late assignments without permission (points will be taken off). The assignments are due in your account at 5PM on the due day.

All Scheme code that you write in this course must work under DrRacket (formerly called "DrScheme"): Available for Linux, Mac OSX, and Microsoft Windows.

Set the language to "R5RS". (Ask me if you can't figure out how to do this.) It has nice debugging features which can come in handy.

Notice: if you use any other interpreter, make sure it works on Dr. Racket. This is the platform I'll use to test the code.


Homework assignments

Assignment (PDF) Posted/Given on Due Date Handouts
HW1 Sep. 9, 2020 Sep. 23, 2020
HW2 Sep. 23, 2020 Oct. 2, 2020  
HW3 Oct. 5, 2020 Oct. 17, 2020 rsa-orig.scm
HW4, part 1
HW4, part 2
Oct. 18, 2020 Nov. 1, 2020
ASanswers.scm
keys-small.dat
keys-medium.dat
keys-large.dat
HW5, part 1
HW5, part 2
Nov. 1, 2020 Nov. 16, 2020 pi.pdf
pi.scm
HW6 Nov. 16, 2020 Nov. 25, 2020 s450.scm
load.s450
HW7, part 1
HW7, part 2
Nov. 26, 2020 Dec. 5, 2020
HW8 Dec. 6, 2020 Dec. 13, 2020 regsim.scm
HW9 Dec. 12, 2020 Dec. 20, 2020 eceval.scm
syntax.scm
eceval-support.scm
load-eceval.scm

 


Syllabus

Week

Topic

Book Chapters

Session Dates

Session Info

Slides/notes

1

Introduction

1

Wednesday,
September 9

Introduction to Scheme

Introduction

Intro. Notes

2

Functions

1

Monday,
September 14

Syntax, evaluation
lexical scoping

Lexical Scoping
Notes
Lambda

1.1

Wednesday,
September 16

Recursions vs. Iterations

Same

3


Functions
Abstractions
Pairs and lists

1.2-1.3

Monday,
September 21

Recursions vs. Iterations
Abstraction

Abstraction

Notes

Wednesday,
September 23

Data Abstractions
Pairs

4

Lists
Data Directed Programming

2

Monday,
September 28

Quote
Membership tests

New Slides

Notes

Code

Wednesday,
September 30

5

Data Directed Programming
Modifiers

2.4

Monday,
October 5

Data Directed Programming

Data Directed Programming

sec2.4.1.scm

sec2.4.2.scm

sec2.4.3_umb.scm

Wednesday,
October 7

Data Directed Programming
Mesasge Passing
Imperative (set!)

Imperative Slides

Notes

6

Imperative
Environments

3.2

Monday,
October 12

No class
(Columbus/Indigenous peoples` day)

Wednesday,
October 14

Environments

Environments Slides

Notes

Integer Properties

7

Environments
Tables

3.2-3.5

Monday,
October 19

Environments
Start tables

Tables Slides

Notes

Wednesday,
October 21

Tables
Streams

Stream Slides
Notes

8

Streams

3.5-4.1

Monday,
October 26

Finite Streams

Slides (inf. streams)
Notes (inf. streams)

Wednesday,
October 28

Infinite Streams
Start metalinguistic abstraction

ML abstraction Slides
s450.scm.pdf

9

Meta-linguistic Abstraction

3.5-4.1

Monday,
November 2

The Metacircular Evaluator

Same

Wednesday,
November 4

Metacircular evaluator
call/cc

Continuation slides
begin.scm.pdf

10

Call/CC
Delayed Evaluation

Monday,
November 9

Call/CC
Delayed Evaluation

save_continuation.scm.pdf

Wednesday,
November 11

No class
(Veterans day)

11

Metacircular
Quiz

Monday,
November 16

Metacircular Revised
Quiz review

Wednesday,
November 18

Quiz

12

References
Register Machine

5

Monday,
November 23

Finish HW7
Start regsim

Regsim slides
regsim.scm.pdf

Wednesday,
November 25

13

Register Machine

5.2

Monday,
November 30

Register Simulator

Wednesday,
December 4

14

Explicit-Control Evaluator
(eceval)

5.4

Monday,
December 7

Introduction to eceval

Eceval slides
eceval.scm.pdf
syntax.scm.pdf
eceval-support.scm.pdf
load-eceval.scm.pdf

Wednesday,
December 9

 


Resources

A Note About Written Work (Adapted from Prof. Carl Offner)

An important part of this course is for you to begin to learn how seasoned engineers design and implement projects. To do this, they have to communicate clearly with each other. In almost every assignment, I will ask you to write down some explanations, some thoughts on design, or something similar. I expect these essays to be written clearly, so that I can understand what you are saying. Remember—it is not my job to guess what you mean, any more than it is the computer's job to guess what your programs mean. A significant part of your grade in this class will be determined by this written work.

In particular, you should always run a spell-checker on your written work, and you should look it over for proper grammar and usage. I am going to be pretty serious about this. Spelling errors are easy to catch with a spell checker, and I expect you to use one. A spell checker cannot catch all possible mistakes (e.g. then vs. than, it's vs. its etc.), but I expect you to do your best. When in doubt, google is your friend.

Also, this is written work, not text messaging to your buddies. "u" is not how you spell "you". "2" is not how you spell "to". "thanx" is not how you spell "thanks". You want to be a professional; here is the time to start writing like one.

I understand that there will be students in this class whose first language is not English. I feel your pain, English is my second language as well, but I will do my best to help each of you in any problems you may have expressing yourself clearly—just come to my office hours or send me email, and I'll be glad to help as much as I can.

Gradescope only accepts pdf uploads. You may use any editor, as long as you figure out how to convert to pdf.


Accommodations:  Section 504 of the Americans with Disabilities Act of 1990 offers guidelines for curriculum modifications and adaptations for students with documented disabilities. If applicable, students may obtain adaptation recommendations from the Ross Center for Disability Services, Campus Center, UL Room 211, (617-287-7430). The student must present these recommendations and discuss them with each professor within a reasonable period, preferably by the end of Drop/Add period.


Student Conduct:  Students are required to adhere to the University Policy on Academic Standards and Cheating, to the University Statement on Plagiarism and the Documentation of Written Work, and to the Code of Student Conduct as delineated in the catalog of Undergraduate Programs. The Code is available online at: http://www.umb.edu/life_on_campus/policies/code/

In particular, see note about honesty