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: 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:

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

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