Instructor: Terry Harvey
Office: Room 408 Smith Hall
Office hours: Tues 2:30 - 4:30, Friday 11-12:30 or by appt
Email: tharvey at udel.edu
Phone: don't phone, email!
TA: Timo Koetzing
email: tkoe at udel.edu
Office Hours: Thursday 3:40 - 4:40; Thursday 11-12
Midterm dates: March 13, April 24 (subject to change)
Final Exam: Friday May 18 (BEFORE EXAM WEEK!) 8 am - 10, KRB 204
Useful Links
- Lab Assignments
- Homework
- Lecture slides (use free Acrobat Reader)
- Example programs from class
- Resources
- Readings
- Assignment Submission Standards
- What is a TA?
Text: Structure and Interpretation of Computer Programs, Abelson and
Sussman, 2nd edition. (the "wizard book")
The computer (composers) project number is 2078.
Information on using DrScheme on the composers is at
http://www.udel.edu/topics/software/special/language/drscheme
Information on downloading DrScheme and other scheme implementations is at
The web page is where you find homework, labs, solutions, hints, changes to the schedule, etc. Check here every week, or more frequently. Depending on which browser you use, you may need to hit "reload" or "refresh" to see new material.
Course Purpose
"To the man who only has a hammer in the toolkit, every problem looks like a nail."
-Abraham Maslow
The primary purpose of this course is to give you a high-level picture of the possibilities of programming, i.e. an introduction to programming paradigms. With this knowledge, you will be able to consider the best way to tackle a problem without necessarily thinking about the language (and its abilities and limitations) first.
Topics will include data abstraction, procedural abstraction, symbolic computation, object-oriented programming, functional programming, data-directed programming, embedded languages, data streams, and more. These topics will be examined at a theoretical level in the classroom, and then investigated at an implementation level using the language Scheme (originally an educational dialect of Lisp, now a full-fledged language).
Scheme is the ideal language for this class because no other language implements as many of the high-level methods for organizing programs and data. Also, the syntax of Lisp and related languages is an order of magnitude simpler than the syntax of popular imperative languages, so very little time is spent learning rules about how to type commands to implement an idea. Instead, we can devote our time to considering the ideas themselves!
Objectives:
- Have a command of the major programming techniques for approaching problems and controlling program complexity;
- develop a sense of the elements of style and the aesthetics of programming;
- feel secure in writing, reading, and modifying large programs written in exemplary style.
- Understand some of the issues of computer language design and implementation.
Course Material
We will cover chapters 1 through 4, with some additions and deletions. See the lecture/lab schedule for more detail (and the website as the class progresses).Homework
Homeworks are intended to give you practice on what has been learned in class, and to give you time to work on problems that are too complex for a single class or short lab. Some homework problems will build on previous assignments, so be sure you ask for help with any problems you do not fully understand. There will be four to six homework assignments.Homeworks are due at the start of class on the due date unless other instructions are specified in the assignment. Late homeworks will be penalized 25 percent immediately, and ten percent each additional 24 hours. No exceptions will be made for traffic, dead networks, fried printers, sick roommates, etc. This strict policy allows us to discuss each homework as it is turned in, when the problems are fresh in our minds.
Lab
Labs are designed to be completed within 50 minutes, assuming the student is abreast of all reading material, lecture material, and homework. Students who arrive on time and make progress on the lab assignment for the full period will receive full credit. Late students will be penalized 10 percent for each five minutes, or may submit the assignment for grading. Students who do not attend for any reason must submit labs electronically (MyCourses) and on paper to the TA for grading.If coding is required (i.e. you do not attend lab), you will submit the code to the TA as the TA instructs. At the start of the course, labs will be done at midnight on the day of lab. That policy may change. Like homeworks, there will be a 25 percent penalty immediately, and an additional ten percent each 24 hours. No exceptions will be made for traffic, dead disks, fried monitors, political protests, etc.
Participation
There will be many opportunities to participate in class. Participation includes asking questions, answering instructor questions, and being an active and constructive party when asked to work with other students in class. Speak up! It's five percent of your grade. If you have remarkable difficulty speaking in class, see me during the first week of class to discuss alternative assignments.Quizzes
There will be about ten quizzes, which may or may not be announced. Quizzes will be based on recent material from lecture or lab, and may occur at the beginning or end of a class.Grading
20% Homework
8% Labs
15% Quizzes
30% two Midterms
22% Cumulative Final
5% Participation
At the end of the semester, all grades will be taken into account by the instructor in determining whether or not to apply a curve of some kind. Under no circumstance will grades be curved "down", but there is no guarantee that grades will be curved up.
Assignments
Typically, labs and homework will be graded by the TA, quizzes and exams by the instructor. Once an assignment is returned, you have a week to request that your grade on the assignment be re-examined. Submit the assignment to the person who graded it along with a cover sheet explaining where you think you should be credited with additional points and why. If you submit for re-grading to the TA and are not satisfied with the result, you may re-submit to the instructor, but be forewarned that historically this option has not met with much success.
See the separate document on Assignment Standards.
Auditing
Students who wish to take the course with "Listener" status are exempt from homework and programming assignments, but not from exams and quizzes. Auditors must end the course with a passing grade in order to receive "listener" credit. If a passing grade is not achieved they will be assigned a grade of "LW" (listener withdrawal).