Instructor: Terry Harvey
Office: 439 Smith Hall
Office hours: Mon 3:30 - 5:30; Thurs 10:30 - 12:30 (except 2/19)
Email: tharvey at udel.edu
Phone: don't phone, email!
TA: Peng Wu
email: pwu at cis.udel.edu
Office Hours: Wed 4-6, Smith 101B
Useful Links
- Lab Assignments
- 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, Sussman and Sussman, 2nd edition. (the "wizard book")
The computer (composers) project number is .
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
Important dates, subject to change:
3/25 | Midterm 1 |
4/29 | Midterm 2 |
5/ | Final Exam |
This class 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).Lab
Labs will come out each Monday, and be due the following Sunday at midnight on Sakai. Also, your TA will collect paper copies of the lab (for ink grading) the following morning at the start of your lab. Do not assume that the printer in Pearson will work. Bring your printed lab with you to lab.After you submit a lab, I will give detailed answers to questions about the lab. For this reason, it is important that you submit on time. Late assignments will receive 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. Please work on your assignments early and often.
Labs may be done alone or in groups of two or three (no more than three). If you work in a team for one lab, you are not required to work with those people again. In fact, I encourage switching team members throughout the course (for now it is optional; I may require it at some point). If you work in a team, 1) put all the names on the assignment; 2) every team member must submit electronically; 3) only submit one paper copy.
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.There will also be opportunities to participate using your clicker, which will be another five percent of your grade. When using your clicker, try to answer correctly, but as long as you make a sincere effort I will only count your clicks, not what you got right or wrong.
Quizzes
There will be about eight 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. If you must be absent for a quiz and wish to be excused, you must notify the professor at least 48 hours in advance. Your reason must be approved by the professor. There will be no excused quizzes if advance notice is not given (and approved); to allow for sudden illness or family issues, I will drop everyone's lowest quiz grade.Grading
10% Labs
10% Quizzes
25% two Midterms (10%,15%)
25% Project(s)
20% 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 quizzes will be graded by the TA, 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.
Academic Honesty
I expect my students to uphold the highest standards of academic honesty, as described in the University Code of Conduct at http://www.udel.edu/stuguide/08-09/code.html#honesty
Any violations will be referred to Judicial Affairs.
NOTES:
Quizzes and exams are not team activities, and must be written solely by you without assistance of any kind.
Teams must work independently of other teams. Do not share work or code between teams; this is a violation of the Academic Honesty policy.
If you are ever in doubt about whether some activity is permitted, do not do it until you have asked the professor and received clarification.