FRAMES
NO FRAMES
Course Description
Scope and Topics Covered
The course will teach essential aspects of the design and
implementation of programming languages. Some of the topics to be
covered include (not
necessarily in this order):
- Abstraction, encapsulation, information
hiding, modularity.
- Evaluation strategies, parameter-passing
mechanisms.
- Functional vs. imperative vs. declarative,
side-effects, state.
- Notions of formal specifications,
semantics, typing.
- Programming techniques: higher-order
functions, continuation, memoization.
- Translation: interpreters and compilers,
run-time environment.
The course will be a very brief introduction to
each, rather than an
in-depth study. Several of these topics are encountered or examined in
more depth in several later courses in the CS curriculum.
We choose two programming languages, Scheme and
ML, as a means to present the forementioned topics. Why these two
languages in particular? Scheme has a relatively small core, a clean
semantics, and teaches well the dictum that "a good programmer is also
a good language designer". Although ML has a larger syntax than
Scheme, it is designed on principles of strong static typing, a trend
which was followed in the design of Java and other modern programming
languages.
Lectures
Mon, Wed, Fri 10:00 - 11:00 am, in Room MCS B31.
Prerequisites
According to the BU catalog,
CS 112 and MA 293 (or equivalent) will be sufficient preparation
for this course. CS 112 gives you the necessary programming background
(though neither in Scheme nor in ML) and MA 293 the necessary
theoretical background. Although these two courses are the formal requirement,
students are normally expected to have completed all 200-level courses
in the BU CS curriculum successfully. If you think you miss some of this
background, please consult with the teaching staff.
Exams
Midterm Exam: Friday, March 3, 10:00 - 11:00
am.
Final Exam: Saturday, May 6, 9:00 - 11:00 am.
The exams are closed book. You may, however,
bring
one 8.5 by 11 sheet of paper (i.e. one regular-size sheet of paper) as
a crib sheet. Preparing a crib sheet can be a useful study aid, so take
time in selecting material for it. You may use both sides of the paper
and write as small as you like, but in any case, you are allowed only
one
sheet. No mechanical or electronic reproductions are allowed; the crib
sheet must be hand written. If you hand in your crib sheet with your
exam,
you will get credit for it in your total grade for the exam.
Teaching Staff
Instructor --
Mark Crovella
Office
Hours: Th 4-6, Fri 12-1
Location:
MCS 273
Teaching Assistant --
Rui Shi
Office Hours: Wed 3-5, Fri 3-5
Location: MCS 174, e-mail:
shearer@cs.bu.edu
Mailing List
The course mailing list is named cs320 and
is managed by IT's majordomo engine. All students registered for the
course
should add themselves to the mailing list. To join the course mailing
list,
type "csmail -a cs320" at the Unix prompt. To inspect who else
is on the mailing list, type "csmail -p cs320". To remove
yourself
from the mailing list, type "csmail -r cs320".
Students are welcome to post messages and
questions
to the mailing list.
Books and Reading Material
Required:
-
H. Abelson and G. Sussman,
Structure and Interpretation of Computer Programs.
McGraw Hill Company, 1996.
-
L.C. Paulson,
ML for the Working Programmer.
Cambridge University Press, 1996.
-
Various handouts posted on the course
webpages.