Administrivia & Useful Information
Class Meetings
Lectures, MWF 12:30-1:20, EE1 045 (New building)
Quiz AA, Th 8:30-9:20, EE1 125 (I think!)
Quiz AB, Th 9:30-10:20, EE1 125 (I think!)
Objective
Our objective is to learn fundamental programming language concepts. We
approach this by acquiring practical experience with a set of five very
different programming languages -- Scheme, Perl, Java, Miranda, and CLP(R).
There will be an emphasis on object-oriented languages, and we'll have one
or two lectures on Smalltalk in addition to the Java lectures (although no
programming assignment for Smalltalk). Following the study of the
individual languages, we'll finish up by a comparative discussion of
programming language concepts in these and other languages.
Prerequisite: CSE 143
Texts
The only required book is:
- Timothy Budd, Understanding Object-Oriented Programming with
Java
The following books are recommended references for the other languages.
However, I put a set of books on reserve in the
Engineering Library, and if you're short of money you can get away without
buying them. We'll also have handouts and online reference material for
the languages.
- Abelson and Sussman, Structure and Interpretation of Computer
Programs. This is a reference for Scheme -- it's actually the
introductory programming text used at MIT and is a great book, not just for
Scheme but for computer science concepts generally. But it's expensive and
you can do without it -- we'll also have handouts. Also this book and some
other Scheme books are on reserve.
- Simon Thompson, Miranda: The Craft of Functional Programming.
Again, we'll have handouts, and this and some other Miranda books are on
reserve.
- Kim Marriott and Peter J. Stuckey,
Programming with constraints : an introduction. Also on reserve;
handouts will be available.
Assignments and Grading
There will be a moderate-sized programming assignment for Scheme, Perl,
Miranda, and CLP(R), and a project in Java. There may also be some some
written homework. There will be an open-book midterm and final.
Here is the grading structure.
programming and other assignments 35%
Java project 25%
midterm 15%
final 25%
Individual grades may vary slightly, based on effort, contribution to class
and section, etc.
Cheating
Students are expected to do the assignments on their own, except for
assignments explicitly labelled as group assignments. Any cases of
cheating that we discover will be sent to the College disciplinary
committee.
However, we also want to be clear on what is legitimate collaboration --
please help each other out in this class in appropriate ways! It is OK to
help other students debug their programs, and to discuss general approaches
to solving problems. After having such a discussion, though, you should go
do something else for at least half an hour, for example watch an inane TV
show, before independently working on your solution. (This is sometimes
called the Gilligan's Island rule.) However, it is not OK to copy someone
else's code or homework solution.
Exams must of course be done on your own. Both the midterm and final will
be open book and open notes.
Late Assignments and Incompletes
Late assignments will be marked down as follows:
25% off -- up to 1 day late
50% off -- up to 2 days late
75% off -- up to 3 days late
"25% off" means that 25% of the maximum possible score is taken off of the
score for the late assignment. "Up to 1 day late" means up to the time of
lecture on the day following the day the assignment was due, and so forth.
For example, if the assignment is due on a Friday, "up to one day late"
means until 12:30 pm on Saturday, "up to 2 days late" means until 12:30 pm
on Sunday, and "up to 3 days late" means until before lecture on Monday.
Send e-mail to the TA du jour if you want to turn in a homework late to
arrange to get it to him. (Sorry to sound so picky about this -- but I've
had problems with very creative interpretations of the late policy in the
past.)