CSCI 312: Programming Language Design
General Information
Textbooks:
Brief Overview
This course will introduce you to some of the most beautiful and elegant
ideas in computer science, which place the field at the center of a true liberal
education.
Just as important, you will learn the very practical skills of
(1) programming in
Scheme
(a dialect of
LISP), and (2) designing your own
programming languages and building interpreters for them. We will start with
a two-week "Scheme boot camp", and then move on to using the language to
write interpreters in the remainder of the course. To stay in contact with
other important programming languages embodying the concepts we are learning about, we
will also have assignments in
ML
and
Prolog.
Attendance and Preparation
It is very important that you attend class. There will be considerable information
given in class that is not available elsewhere. Your participation is of value
to your classmates and to me. In preparation for class, be sure to review the
material covered in the last class meeting. See me or email me if you have
questions. Also, read over the material to be covered in the next class meeting.
Grading
-
Assignments
(written exercises and coding): Though there is no official lab
for this course, you will spend much of your time programming (50%).
- Two one-hour exams (35%)
- Five quizzes, 15-20 minutes each (15%)
- These percentages are flexible. If you have a bad day and don't do well on an exam or problem set, I will try and weight your other work more heavily.
The grading scale will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69
D+; 63-66 D; 60-62 D-; below 60 F.
Honor System
Unless stated otherwise, the exams will be done without books or notes and without assistance from other people.
You may work with another person on the programming assignments, but this should be acknowledged
in your code.
Assignments
All assignments for this course will involve writing programs, initially in
Scheme, then later in ML and Prolog.
The Linux and Windows machines in the CS Department should all have
PLT Scheme installed, but I encourage you
to download it onto your laptop or home computer and work on these assignments
anywhere you like. Scheme is a simple, elegant language that encourages working
on problems in small pieces, so it's convenient to have Scheme available
any time you get inspired to do a little coding.
Assignments are due on
midnight of the due date, and should be sent to me as email attachments.
We'll move at a quick enough pace that late assignments can't be accepted, but
note that (1) I will drop your lowest assignment or quiz grade, so missing
a single assignment or quiz is not going to ruin your final grade; and (2)
if you have a genuine emergency (family, medical, or other serious,
unanticipated crisis beyond your control), I'll make sure you have some extra time to
complete an assignment.
Experience has taught me that the students who do best in this course are
the ones who take advantage of office hours for help with assignments.
- Problem Set 1
(due Fri 02 Oct):
lunar.scm
- Problem Set 2
(due Wed 14 Oct)
- Problem Set 3
(due Wed 28 Oct)
- Problem Set 4
(due Wed 11 Nov)
- Problem Set 5
(due Wed 02 Dec)
Read this first
Tentative Schedule of Lectures and Exams
Scheme, LISP, and Hacker Folklore