CISC 280  -   Program Development Techniques  -   Spring 2004


Tentative Calendar (updated weekly) with Assignments Lecture Slides and Materials Labs


Instructor: Prof. McCoy TA: Vikram Rajan 
Office: Room 201, 77-79 E. Delaware (The Green House)  Office: Pearson 115b (Computer lab next to 115)
Hours: Mon 11:15am-12:45pm, Wed 11:15am-12:45pm  Hours:  Fri 11:30-1:30
Phone: 831-1956 
Email: mccoy@cis.udel.edu Email: rajan@cis.udel.edu

Final Exam: Tuesday, May 25, 8:00am - 10:00am, KRB100

Final Exam Book Coverage,
Final Exam Scheme Coverage -- TAKE TO EXAM

Textbook

Structure and Interpretation of Computer Programs, by Abelson and Sussman, second edition.

Web Page

http://www.cis.udel.edu/~mccoy/courses/cisc280-04s/
Read it! All the assignments, hints, and solutions will be posted here.

Project Number

The computer (composers) project number is 2142.

Course Purpose

"To the man who only has a hammer in the toolkit, every problem looks like a nail." -Abraham Maslow

By this point in your Computer Science education, you have been introduced to at least two programming languages and a variety of program and data structures. During those courses your task was to solve a problem in the language that you were learning.

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. We might also have called the course "Software Engineering in the Small".

Although this 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 paradigms and concepts: data abstraction, procedural abstraction, symbolic computation, object-oriented programming, functional programming, logic programming, data-directed programming, and constructing embedded interpreters. Beyond that, there is a central concern with the technology of implementing languages and linguistic support for different programming paradigms. Students are encouraged to regard themselves as computer language designers and implementers rather than only language users.

These topics will be examined at a theoretical level in the classroom, and then investigated at an implementation level using the language Scheme (an educational dialect of Lisp). 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. Because it uses no type checking, and makes no distinction between program and data, data and procedural abstraction are natural.  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:

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 below. Of course you will also want to review the material for labs and assignments and then again for exams as well. We will also do a couple of 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

Tentative Calendar (updated weekly)

DATE  TOPIC   SLIDES   READING  OUT/DUE 
2/11 Introductions, Elements of Programming   1.1  
2/13 Elements of Programming, Procedures & Processes Slides 1 1.1
 Homework1 Out, Due Monday, Feb 23
2/16  Procedures & Processes
Slides 2 1.1
 
2/18  Procedures & Processes Slides 2 1.2  
2/20  Procedures & Processes Slides 3 1.2   
2/23 Orders of Growth Slides 4 1.2  Homework1 Due; Homework1 Solutions
2/25 Orders of Growth Slides 4 1.2  Homework2 Out, Due Friday, March 5
2/27 Data Abstraction Slides 5 2.1  
3/1 Higher Order Procedures; Data Abstraction Slides 5, Slides 5.5 1.3, 2.1  
3/3 Hierarchical Data: Sequences Slides 6 2.2.1  
3/5 Hierarchical Structures: Sequences; Quote   2.2.1, 2.3.1  Homework2 Due,Homework2 Solutions,
Homework3 Out, NEW: Due Monday, March 15

3/8 Hierarchical Structures; Quote  Slides 7  2.2.2, 2.3.1   
3/10 Hierarchical Structures    2.2.2   
3/12 Sequences as Conventional Interfaces  Slides 8  2.2.3   
3/15 Sequences as Conventional Interfaces   2.2.3  Homework3 Due; Homework3 Solutions
3/17 MIDTERM EXAM I      NOTE: NEW EXAM DATE!!!! Exam 1 Book Coverage,
Exam 1 Scheme Coverage -- TAKE TO EXAM
3/19 Symbols and eq? vs equal?  Slides 9  2.3.1  
3/22 SPRING BREAK: No Class      
3/24 SPRING BREAK: No Class      
3/26 SPRING BREAK: No Class      
3/29 Discussion of Exam1     Exam1 Solutions -- Scheme File
3/31 Symbolic Differentiation (Example)  Slides 10  2.3.2  Homework4 Out, Due Friday, April 9
 
4/2 Representing Sets (Example)  Slides 11  2.3.3   
4/5 Representing Sets (binary trees)   2.3.3    
4/7 Multiple Representations (Complex Numbers) & Tagged Data Slides 12 & 13  2.4.1, 2.4.2    
4/9 Tagged Data & Data Directed Programming  Slides 14  2.4.2, 2.4.3  Last day to drop w/o grade penalty.
Homework4 Due; Homework4 Solutions
4/12 Tagged Data & Data Directed Programming    2.4.2, 2.4.3   
4/14 Data Directed Programming & Systems with Generic Operations Slides 15  2.4.3, 2.5.1  Homework5 Out, NEW: Due Friday, April 23
 
4/16 Systems with Generic Operations & Assignmnet and Local State    2.5.1, 2.5.2, 3.1   
4/19 Assignmnet and Local State  Slides 16 & 17 3.1   
4/21 Assignmnet, Local State, the Environment Model of Evaluation    3.1, 3.2  Homework6 Out, NEW: Due Monday, May 3
 
4/23 More on the Environment Model: modeling procedures returning procedures  Slides 18 3.2  Homework5 Due; Homework5 Solutions Homework5 Additional Scheme Functions
4/26 Review and Introduction to Mutable Data  Slides 19 3.2, 3.3.1   
4/28 MIDTERM EXAM II      NOTE: NEW EXAM DATE!!!! 
Exam 2 Book Coverage,
Exam 2 Scheme Coverage -- TAKE TO EXAM
4/30 Mutable Data    3.3.1  
5/3 Mutable Data and Queues    3.3.1, 3.3.2  Homework6 Due; Homework6 Solutions
5/5 Exam 2 Discussion      Exam2 Solutions -- Scheme File
5/7 Concurrency  Slides 20 3.4  Homework7 Out, NEW: Due Wednesday, May 12 OR May 14
 
5/10 Streams  Slides 21 3.5.1, 3.5.2  
5/12 Streams  3.5.2, 3.5.3    Homework8 Out, Due Wednesday, May 19
 
Homework7 Due; Homework7 Solutions
5/14 Streams, Metacircular Evaluator  Slides 22 3.5.3, 4.1.1  Homework7 Extended Due Date
5/17 Metacircular Evaluator (Environment Model)  MicroScheme Code 4.1  
5/19 Metacircular Evaluator    4.1  Homework8 Due; Homework8 Solutions


LECTURE SLIDES and Materials
2/11, 2/13        - Slides 1 Printer version (postscript file) Scheme
2/16, 2/18    - Slides 2 Printer version (postscript file) Scheme, evaluating procedures, conditionals
2/10             - Slides 3 Printer version (postscript file) Slides 3 Related Scheme File - fib Slides 3 Related Scheme File - towers Linear recursion and iteration
2/23, 2/25    - Slides 4 Printer version (postscript file) Slides 4 Related Scheme File - exponents Slides 4 Related Scheme File - gcd Orders of Growth
2/27, 3/1      - Slides 5 Printer version (postscript file) Data Abstraction
3/1               - Slides 5.5 Printer version (postscript file) Higher Order Procedures
3/3, 3/5, 3/8 - Slides 6 Printer version (postscript file) Slides 6 Related Scheme File Hierarchical Data & Closure: Lists
3/8, 3/10      - Slides 7 Printer version (postscript file) Slides 7 Related Scheme File Hierarchical Data: Trees
3/12      - Slides 8 Printer version (postscript file) Slides 8 Related Scheme File Sequences as Conventional Interfaces
3/19      - Slides 9 Printer version (postscript file) Slides 9 Related Scheme File Symbols, eq?, and equal?
3/31      - Slides 10 Printer version (postscript file) Slides 10 Related Scheme File Symbolic Differentiation
4/2, 4/5      - Slides 11 Printer version (postscript file) Slides 11 Related Scheme File Set Representations
4/7      - Slides 12 Printer version (postscript file) Slides 12 Related Scheme File Multiple Representations of Abstract Data (Complex Numbers)
4/7, 4/9      - Slides 13 Printer version (postscript file) Slides 13 Related Scheme File Multiple Representations/Tagged Data (Complex Numbers)
4/12, 4/14      - Slides 14 Printer version (postscript file) Slides 14 Related Scheme File Multiple Representations/Data Directed Programming
4/14, 4/16      - Slides 15 Printer version (postscript file) Slides 15 Related Scheme File Systems with Generic Operations
4/19      - Slides 16 Printer version (postscript file) Slides 16 Related Scheme File Objects, Assignment, and Local State
4/19, 4/21, 4/23      - Slides 17 Printer version (postscript file) Slides 17 Related Scheme File Assignment, Local State, and the Environment Model of Evaluation
4/23, 4/26      - Slides 18 Printer version (postscript file) Modeling more complex procedures in the Environment Model
4/26, 4/28, 5/3      - Slides 19 Printer version (postscript file) Slides 19 Related Scheme File Mutable Data Objects, Queues, and Tables (not covered)
5/7      - Slides 20 Printer version (postscript file) Slides 20 Related Scheme File Concurrency
5/10, 5/12, 5/14      - Slides 21 Printer version (postscript file) Slides 21 Related Scheme File Streams
5/14, 5/17      - Slides 22 Printer version (postscript file) Metacircular Evaluator
5/17, 5/19      - Microscheme Code - Scheme File Metacircular Evaluator

LABS

 

Grading

Homeworks:
There will be 5-10 homework assignments. These will generally be due at the start of class and will often be discussed during class (so they cannot be turned in late).
Labs:
There will be weekly lab assignments. These labs will be designed to be completed in the lab. Attendance at lab is required. You may leave the lab as soon as your assignment is turned in for grading, or at the end of the lab period if you do not complete the lab during that time.  (Provided that you go to lab) labs may be turned in up to the start of class on Wednesday.
Projects:
There will be one or two programming projects.
Exams:
There will be two midterms (tentatively March 15th and April 21st) and a final exam (during final exam week).
Overall Course Grade:

         25% Final
         30% Midterms
         15% Homework
         20% Labs
         10% Projects

Here are some grading standards you may find useful.

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 HERE. (Chez Scheme has a free version of their commercial product called Petite Chez Scheme.)


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
 
February 2004
mccoy@cis.udel.edu