CISC 280 - Programming Development Techniques - Spring
2008
M/W/F 1:25pm-2:15pm, GORE 303
| Instructor: Daniel Chester |
TA: Miao Tang |
| Office: 101E Smith Hall |
Office: 102 Smith Hall |
| Hours: Mo 3:15 pm - 4:15 pm, Th 3:15 pm - 4:15 pm |
Hours: TuTh 5:00 pm - 6:00 pm |
| Phone: 831-1955 |
Phone: 831-3132 |
| Email: |
Email: |
| User: chester |
User: tang |
| Domain: cis.udel.edu |
Domain: cis.udel.edu |
Textbook
Structure and Interpretation of Computer Programs, by Abelson and
Sussman, second edition.
The textbook is online HERE.
Web Page
http://www.cis.udel.edu/~chester/courses/280.html
Read it! All the assignments and hints will be posted here.
Course Description
This course emphasizes controlling the complexity of software systems through
general techniques common to all engineering design:
-
building abstractions to hide details and to separate specification from
implementation
-
establishing conventional interfaces to allow the creation of standard,
"mix & match" modules
-
establishing new languages for describing a certain class of designs, emphasizing
some things and downplaying others
Although the course incorporates a great deal of programming, its intellectual
focus is not on particular programming-language constructs, data structures,
or algorithms -- these are regarded as details. Instead, students are brought
to appreciate a diversity of major programming techniques: data abstraction,
symbolic computation, object-oriented programming, functional programming,
and constructing embedded interpreters. Beyond that,
there is a central concern with the technology of implementing languages
and linguistic support for different programming techniques. Students are
encouraged to regard themselves as language designers and implementors
rather than only language users.
Course Objectives
After taking this course, you should:
-
Have a good feel for the elements of style and aesthetics of programming
-
Have command of the major techniques for controlling complexity in large
systems
-
Feel secure in reading and modifying large programs written in exemplary
style
-
Be able to use modern approaches to dealing with time computationally (objects
with state, functional programming, concurrent programming).
Learning Experiences
Most of chapters 1 through 4 will be covered.
You should read each topic at least twice, once just before the lecture
on the material (a light reading) and once after (a more careful reading).
We'll try to keep the specific sections covered up-to-date here. Of course
you will also want to review the material for exams as well. There will
be weekly (usually) programming assignments. We may also do a few longer
projects. There will also be two midterms and a final exam.
Topics
| TOPIC |
READING |
| Elements of Programming, Substitution Model |
1.1 |
| Procedures & Processes |
1.2-1.2.4 |
| Abstraction with Higher Order Procedures |
1.3 |
| Intro to Data Abstraction |
2.1-2.1.2 |
| Hierarchical Data, Closures, Conventional Interfaces, Picture Language
Example |
2.2 |
| Symbolic Data |
2.3-2.3.2 |
| Multiple Representations |
2.4 |
| Generic Operations |
2.5-2.5.2 |
| Assignment & Local State; Monte Carlo Simulation |
3.1 |
| Evaluation |
3.2 |
| Mutable Data, Objects |
3.3-3.3.3 |
| Digital Circuit Simulation Example |
3.3.4 |
| Concurrency |
3.4 |
| Streams |
3.5-3.5.2 |
| Metacircular Evaluator |
4.1 |
| Lazy Evaluation |
4.2 |
| Nondeterministic Computing |
4.3 |
Logic Programming |
4.4 |
Grading
-
Homeworks:
-
There will be about 10 homework assignments.
They will not be accepted after their solutions have been posted by
email.
- Labs:
- There will be weekly lab assigments to be completed in the Lab.
- Projects:
- There will be two projects.
-
Exams:
-
There will be two midterms (March 14 and April 25) and a final exam.
-
Overall Course Grade:
16.66% Final
16.66% Midterm 1
16.66% Midterm 2
16.66% Homework
16.66% Labs
16.66% Projects
Policies
-
Assignments are due at the beginning of class. Late assignments
will lose 10% of the number of possible points and will be
accepted until I email the assignment solution. That will usually
be about a week after the due date, but will sometimes be shorter,
especially before the midterms. Turn late assignments into me
at class, while I am in by office or in my mailbox (in the CIS
office). Do not slip your assignment under the door of the
CIS office; put late assignments in my mailbox during the
open hours of the CIS office.
-
The syllabus and all accompanying dates are subject to change at any time;
all such changes will be announced in class and updated on this web page.
-
Cooperative efforts at understanding the material conceptually are
encouraged. Discussing bugs and suggesting debugging strategies is fine.
However, all written work and programs you turn in must be your own
(except for the shared Scheme library code we will be using, as explained
in the programming assignments). Submitting work that is not your own is
considered cheating, as per Departmental and University policy.
-
If you can't come for scheduled office hours, please send me email; I'll
be happy to schedule a meeting at some other mutually-agreed upon time.
Software
We will be using Dr.Scheme, a pedagogically-oriented scheme environment
from Rice University. The software is available for most
PCs, if you have a home computer with ample memory. There is also
a copy on the composers. You can download a copy for home use HERE.
Documentation for Dr.Scheme is part of the package (use the HELP
menu), however some basic information to get you started may be found
HERE.
Local, UD documentation is HERE.
Information on our version of Scheme (called MzScheme, from Rice U.),
and many other free Schemes, compilers, interpreters, etc. can be
found online.
(Chez Scheme has a free version of their commercial product called Petite Chez Scheme.)
A useful programming textbook based on Dr. Scheme can be found online
HERE.
LECTURE SLIDES
Slides 1 (sxi)
Slides 1 (pdf)
Scheme
Slides 2 (sxi)
Slides 2 (pdf)
Substitution Model
Slides 3 (sxi)
Slides 3 (pdf)
Procedural Abstraction
Slides 4 (sxi)
Slides 4 (pdf)
Recursive and Iterative Processes
Slides 5 (sxi)
Slides 5 (pdf)
Orders of Growth
Slides 6 (sxi)
Slides 6 (pdf)
Higher-Order Procedures
Slides 7 (sxi)
Slides 7 (pdf)
Procedures as Values
Slides 8 (sxi)
Slides 8 (pdf)
Data Abstraction
Slides 9 (sxi)
Slides 9 (pdf)
Message Passing, Box and Pointer Notation, Lists
Slides 10 (sxi)
Slides 10 (pdf)
Hierarchical Structures
Slides 11 (sxi)
Slides 11 (pdf)
Sequences as Conventional Interfaces
Slides 12 (sxi)
Slides 12 (pdf)
Picture Language
Slides 13 (sxi)
Slides 13 (pdf)
Symbolic Data, Symbolic Differentiation
Slides 14 (sxi)
Slides 14 (pdf)
Multiple Representations (Sets, Complex Numbers)
Slides 15 (sxi)
Slides 15 (pdf)
Data-Directed Programming
Slides 16 (sxi)
Slides 16 (pdf)
Objects (Assignment, Local State)
Slides 17 (sxi)
Slides 17 (pdf)
Environmental Model of Evaluation
Slides 18 (sxi)
Slides 18 (pdf)
Mutable Data
Slides 19 (sxi)
Slides 19 (pdf)
Digital Circuit Simulator
Slides 20 (sxi)
Slides 20 (pdf)
Concurrency
Slides 21 (sxi)
Slides 21 (pdf)
Streams
microscheme.scm
Metacircular Evaluator
lazymicro.scm
Lazy Evaluation
lazydemo
Simple demonstration that lazy evaluation is working
ambexamples
Nondeterministic computing
ambmicro.scm
ambprobs
ambtrace
ambalt.scm
Nondeterministic interpreter (interpreter with chronological backtracking)
ambhowto
How to run the code in ambprobs in ambmicro.scm
ambmicrotracer.scm
A version of ambmicro that traces the backtracking and evaluations
logprog
Logic Programming
query system
ASSIGNMENTS
Homework Assignment 1
Homework Assignment 2
Homework Assignment 3
PROJECT ONE: DUE FRIDAY, MARCH 28, 2008
funcurves.scm
PROJECT FOR HONORS STUDENTS
Homework Assignment 4
Review of material before first midterm
Homework Assignment 5
Homework Assignment 6
Homework Assignment 7
PROJECT TWO, DUE MONDAY, MAY 12th (sim0.scm)
PROJECT (PART TWO) FOR HONORS STUDENTS
Homework Assignment 8
Review of material before second midterm
Homework Assignment 9
Homework Assignment 10
Homework Assignment 11
Review of material before final
LABS
Lab Information
Lab 1
Lab 2
Lab 3
Lab 4
Do both labs 4 and 5 in the next lab. This will make up for the lab that will be skipped because of the Spring break.
Lab 5
Lab 6
Lab 7
There will be no labs on March 28 and April 7.
Lab 8
Lab 9
sellers.scm
Lab 10
streams.scm
Lab 11
microscheme.scm
Lab 12
ambmicro.scm
Lab 13
query system
SOME USEFUL INFORMATION
How a Scheme-like language (Lisp) gave a competitive edge in the development
of the most popular e-commerce software (Yahoo! Store) and how it is spreading
to other commercial applications (Orbitz and others):
BEATING THE AVERAGES
HOW TO PRINT A DRSCHEME GRAPHICS WINDOW
samplemidterm
March 13, 2008
User: chester
Domain: cis.udel.edu