Mo We 5:30-6:45, Online
Coursework (Summary notes and PDF slides are posted here)
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: Structure and Interpretation of Computer Programs,
Harold Abelson and Gerald Sussman, |
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.
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 |
Week |
Topic |
Book Chapters |
Session Dates |
Session Info |
Slides/notes |
---|---|---|---|---|---|
1 |
Introduction |
1 |
Wednesday, |
Introduction to Scheme |
|
2 |
Functions |
1 |
Monday, |
Syntax, evaluation |
|
1.1 |
Wednesday, |
Recursions vs. Iterations |
Same | ||
3 |
|
1.2-1.3 |
Monday, |
Recursions vs. Iterations |
|
Wednesday, |
Data Abstractions |
||||
4 |
Lists |
2 |
Monday, |
Quote |
|
Wednesday, |
|||||
5 |
Data Directed Programming |
2.4 |
Monday, |
Data Directed Programming | |
Wednesday, |
Data Directed Programming |
||||
6 |
Imperative Environments |
3.2 |
Monday, |
No class |
|
Wednesday, |
Environments |
|
|||
7 |
Environments |
3.2-3.5 |
Monday, |
Environments |
|
Wednesday, |
Tables |
||||
8 |
Streams |
3.5-4.1 |
Monday, |
Finite Streams |
Slides (inf. streams) Notes (inf. streams) |
Wednesday, |
Infinite Streams |
||||
9 |
Meta-linguistic Abstraction |
3.5-4.1 |
Monday, |
The Metacircular Evaluator |
Same |
Wednesday, |
Metacircular evaluator |
||||
10 |
Call/CC |
|
Monday, |
Call/CC |
save_continuation.scm.pdf |
Wednesday, |
No class |
||||
11 |
Metacircular |
|
Monday, |
Metacircular Revised |
|
Wednesday, |
Quiz |
||||
12 |
References |
5 |
Monday, |
Finish HW7 |
|
Wednesday, |
|
||||
13 |
Register Machine |
5.2 |
Monday, |
Register Simulator |
|
Wednesday, |
|
||||
14 |
Explicit-Control Evaluator |
5.4 |
Monday, |
Introduction to eceval |
Eceval slides |
Wednesday, |
|
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 honestyResources
Unix for the Impatient (Second Edition)
by Paul W. Abrahams and Bruce R. Larson
Addison-Wesley, 1997
The book comes with a CD that you might find useful as well. It covers the
basics of the typical Unix environments, and also gives a nice short
introduction to the Emacs editor, which you should absolutely learn now if you
haven't yet—see the note above. To find the best price for this book,
go to http://www.addall.com and search
for it.