CISC 280 - Program Development Techniques - Fall 2008

9:30am-10:45am; Smith 209


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


Instructor: Prof. McCoy TA: Sophie Che 
Office: Room 201, 77-79 E. Delaware (The Green House)  Office: 102 Smith Hall
Hours: Tuesday 3:30pm-5:00pm, Thursday 11:00am-12:30pm  Hours: Monday 3:30pm-5:30pm
Phone: 831-1956 
Email: mccoy@cis.udel.edu Email: Sophie.ta.ud@gmail.com

Textbook

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

The textbook can be found online here.

Web Page

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

Project Number

The computer (composers) project number is ????.

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 
9/4 Introductions, Elements of Programming, Procedures & Processes Slides 1 1.1
Extra-Credit-Homework1 Out, Due Tuesday, September 8th  
9/9 Procedures & Processes Slides 2 1.1
Homework1 Out, Due Thursday, 9/18  
9/11 Procedures & Processes
Slides 2 1.2  
9/16 Procedures & Processes
Slides 3 1.2  
9/18 Orders of Growth and Data Abstraction Slides 4 and Slides 5 1.2; 2.1 Homework1 Due
Homework2 Out, Due Thursday, September 25
9/23 Hierarchical Data: Sequences (Lists); Quote Slides 6 2.2.1, 2.3.1  
9/25 Data Abstraction: more fun with sequences Scheme files 2.1, 2.2 Homework2 Due
Homework3 Out, Due Thursday, October 2
9/30 Higher Order Procedures; Lambda; Hierarchical Structures Slides 5.5  1.3, 2.2.2, 2.3.1   
10/2 More Hierarchical Structures  Slides 7  2.2.1, 2.2.2  Homework3 Due
Homework4 Out, Due Thursday, October 9 
10/2 Still More Hierarchical Structures  Slides 7  2.2.1, 2.2.2  Book Material Covered in Exam 1
Cheat Sheet for Lisp Functions needed for Exam 1 - you can bring a copy to the exam
10/9 Sequences as Conventional Interfaces  Slides 8  2.2.3  Homework4 Due  
10/14 MIDTERM EXAM I      
10/16 Symbols and eq? vs equal?
Example: Symbol Manipulation Sentences  
Slides 9 and more 2.3.1  
M - 10/20 Go over Exam1 (lab day)       
10/21 More on building grammars for sentences
Symbolic Differentiation (Example) 
Slides 10 and more 2.3.2  Homework5 Out, Due Thursday, October 30 
10/23 Representing Sets (Example)  Slides 11  2.3.3   
10/28 Multiple Representations (Complex Numbers) & Tagged Data Slides 12, 13, & 14  2.4.1, 2.4.2, 2.4.3   Last day to drop w/o grade penalty. 
10/30 Data Directed Programming  Slides 14   2.4.2, 2.4.3  Homework5 Due
Homework6 Out, NEW DUE DATE: 4:15, Friday, Nov 7th 
11/04 ELECTION DAY: No Class      
11/6 Data Directed Programming, Message Passing & Systems with Generic Operations Slides 14 & Slides 15  2.4.3, 2.5.1   
11/7 Due Date at 4:15 for Homework 6     Homework6 Due (4:15pm)
Homework7 Out, DUE Tuesday, Nov 11th - NO LAB ON MONDAY 11/10 
11/11 Systems with Generic Operations   Slides 14 & Slides 15  2.5.1, 2.5.2   Homework7 Due
Book Material Covered in Exam 2
Cheat Sheet for Lisp Functions needed for Exam 2pwd - you can bring a copy to the exam
11/13 MIDTERM EXAM II      
M - 11/17 GO OVER EXAM DURING MONDAY LAB      
11/18 Assignmnet and Local State  Slides 16 & 17 3.1, 3.2  Homework8 Out, DUE Tuesday, December 2nd 
11/20 More on the Environment Model: modeling procedures returning procedures  Slides 18 3.2   
11/25 Introduction to Mutable Data and Queues  Slides 19 3.3.1, 3.3.2   
11/27 THANKSGIVING: No Class      
12/02 Concurrency  Slides 19 & Slides 20 3.3.2, 3.2.3, 3.4  Homework8 Due
Homework9 Out, DUE Tuesday, December 9th - NO LAB ON 11/8 
12/04 Streams  Slides 21 3.5.1, 3.5.2, 3.5.3  
12/09 Streams, Metacircular Evaluator  Slides 22 3.5.3, 4.1.1  Homework9 Due
12/09 Metacircular Evaluator (Environment Model)  MicroScheme Code 4.1  


LECTURE SLIDES and Materials
9/4               - Slides 1 Printer version (pdf file) Scheme
9/9    - Slides 2 Printer version (pdf file) Scheme, evaluating procedures, conditionals
9/16             - Slides 3 Printer version (pdf file) Slides 3 Related Scheme File - fact Slides 3 Related Scheme File - fib Slides 3 Related Scheme File - towers Slides 3 Related Scheme File - coins Linear recursion and iteration
9/18    - Slides 4 Printer version (pdf file) Orders of Growth
9/18      - Slides 5 Printer version (pdf file) Data Abstraction
9/23 - Slides 6 Printer version (pdf file) Slides 6 Related Scheme File Hierarchical Data & Closure: Lists
9/25 - Slides 6 Another Related Scheme File Hierarchical Data & Closure: Lists
9/30 - Slides 5.5 Printer version (pdf file) Slides 5.5 Related Scheme File Higher Order Procedures
10/2 - Slides 7 Printer version (pdf file) Chapter 1 Exercises 41 & 43 Related Scheme File Slides 7 Related Scheme File Hierarchical Data: Trees
10/9 - Slides 8 Printer version (pdf file) Slides 8 Related Scheme File Sequences as Conventional Interfaces
10/16 - Slides 9 Printer version (pdf file) Slides 9 Related Scheme File Symbols, eq?, and equal?
Slides Manipulating Sentences Printer version (pdf file) Manipulating Sentences Related Scheme File Symbol Manipulations: Generating Sentences
10/21 - More Sentences and Grammars Printer version (pdf file) More Generating Sentences
Slides 10 Printer version (pdf file) Slides 10 Related Scheme File Symbolic Differentiation
10/23 - Slides 11 Printer version (pdf file) Slides 11 Related Scheme File Set Representations
10/28, 10/30, 11/6 - Slides 12 Printer version (pdf file) Slides 12 Related Scheme File Multiple Representations of Abstract Data (Complex Numbers)
Slides 13 Printer version (pdf file) Slides 13 Related Scheme File Multiple Representations/Tagged Data (Complex Numbers)
Slides 14 Printer version (pdf file) Slides 14 Related Scheme File Multiple Representations/Data Directed Programming
11/6, 11/11 - Slides 15 Printer version (pdf file) Slides 15 Related Scheme File Systems with Generic Operations
11/18      - Slides 16 Printer version (pdf file) Slides 16 Related Scheme File Objects, Assignment, and Local State
     Slides 17 Printer version (postscript file) Slides 17 Related Scheme File Assignment, Local State, and the Environment Model of Evaluation
11/20 - Slides 18 Printer version (pdf) Modeling more complex procedures in the Environment Model
11/24, 12/2- Slides 19 Printer version (pdf file) Slides 19 Related Scheme File Mutable Data Objects, Queues, and Tables (just simple)
12/2 - Slides 20 Printer version (pdf file) Slides 20 Related Scheme File Concurrency
12/4- Slides 21 Printer version (pdf file) Slides 21 Related Scheme File Streams



TA Class Webpage and Lab Information

 

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

         21% Final
         34% 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 you can also find documentation HERE. Local, UD documentation is HERE.


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
 

Return to Dr. McCoy's Teaching Page
Return to Dr. McCoy's Home Page

September 3, 2008
mccoy@cis.udel.edu