Instructor: Terry Harvey
Office: Room 408 Smith Hall
Office hours: currently Tues 2:30 - 4:30, Friday 11-1 or by appt
Email: tharvey at udel.edu
Phone: don't phone, email!
TA: Andy Sacher
email: andytuba at udel.edu
Office Hours: Thurs 2-3
Midterm dates: March 12, 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. Since this is an Honors section, I expect that we will cover this material in more depth than the regular section, but also that we will cover related material that we find interesting along the way. 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.Project
Each student will develop a project. There are three options: 1) a game-playing project with clearly defined stages and some simple AI; 2) a robot control project that will be designed during the course with student participation; or 3) a project of a student's own design with instructor approval. Each student will choose one of these three paths at approximately the third week of the course, so be thinking about what you'd enjoy and what questions you have. Every project will be graded in at least three stages, not just at the end of the semester.
Grading
12% Homework
10% Project
8% Labs
15% Quizzes
30% two Midterms
15% Cumulative Final
10% 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
The Honors section is not offered as listener credit.