Office Location: Fuller 130
Office Phone: 508-831-5118 Email: email@example.com
My office hours are likely to change halfway through the semester (once the current undergraduate term ends). Through October 16, my hours are:
You are welcome to send email with questions, and I will respond as soon as I can. Questions of general interest should be posted to the discussion board.
Direct all course-related discussion to the discussion board in the MyWPI area for this course. Please do not use the class mailing list for questions. I will use it only for last minute announcements.
You are responsible for all announcements posted to the discussion board. Check it daily.
You do not need to purchase a textbook for the course. We will use a combination of on-line materials and posted lecture notes instead. In particular:
If you want a textbook on functional programming with Scheme, you could look at How to Design Programs. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. MIT Press, 2001. (available on-line). The programming style used in this class matches that of this book, except we use define-datatype instead of define-struct.
The language standard is also available on-line, but it contains a lot of language details that we will not use, and lacks some MzScheme constructs that we will use.
I will post various lecture notes and readings on the syllabus page.
The on-line book How to Use Scheme contains sections on I/O, modules, networking, and other useful features of MzScheme. You should not need this material for the course. I include this link as a resource because many students have enjoyed experimenting with Scheme beyond the scope of the assignments.
You do not need a Scheme language manual for this course. We will only use about six language constructs, and we will cover all of them in lecture.
We will use the PLT Scheme variant of Scheme for all coding projects in the course. You must use the PLT variant of Scheme. No other Scheme implementation provides the libraries that we will use in this course.
You can use PLT Scheme with your favorite editor, or you can use the DrScheme programming environment, which sits on top of a program called MzScheme and provides several nice features, such as source correlation of errors and a project manager. Both DrScheme and MzScheme are installed on CCC (/usr/local/plt/bin/mzscheme and /usr/local/plt/bin/drscheme). Alternatively, you can download either package (for free) to your own computer (Unix, PC, Mac all supported, with files portable between them). Note that installing DrScheme also installs MzScheme.
In order to get the define-datatype construct that we will use in this class, download the package cs173.plt and install it by going to the file menu and choosing the "install .plt file" option (never mind the different course number). Once you've done this, you can select Language CS173 in the Language menu of DrScheme.
This course will have a midterm and final and several programming assignments. There will be roughly one assignment per week. Both exams will be take-home exams.
Course grades will be computed according to the following weights:
I like to be able to discuss questions on completed assignments in class. as a result, late assignments will not be accepted without prior consent of the professor. Extensions will be granted only in the event of unforseen and documentable emergencies, or extenuating circumstances that you discuss with the professor well in advance. There will be roughly one homework per week, so there is little room to fall behind.
Collaboration is prohibited on exams. On homeworks, you may discuss how to approach problems with your classmates, but you may not share code or key insights into how to solve the problems. Most assignments (after the first one) require you to think hard about the problem for a while (writing the code is usually much easier than figuring out what that code needs to do). These insights that let you write the code are what you cannot share with other students.
As examples, each of the following scenarios would constitute cheating (this list is not exhaustive!):
If in doubt as to whether something violates this policy, ask!.
Violations of the collaboration policy on any assignment or exam will result in an F for the course and a referral to the Student Life Office, in accordance with WPI's academic honesty policy. Exceptions to this rule are possible only if you admit your violation to me (the professor) before I detect the violation (this gives you a chance to pass the course if, for example, you cheated in desparation the night an assignment was due, then felt guilty about it in the morning). You can safely assume that I will not begin grading an assignment before 9am on the calendar day after the assignment is due.
Students requiring accommodation on exams or assignments due to disabilities must speak with the professor at the start of the course (and at least two weeks before the assignment due date or exam in question) to work out appropriate arrangements.
This page maintained by Kathi Fisler
Department of Computer Science Worcester Polytechnic Institute