| 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
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.
"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:
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.
Be able to use modern approaches to dealing with time computationally (objects with state, functional programming, concurrent programming, lazy evaluation, nondeterministic programming).
Understand some of the issues of computer language design and implementation.
| 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 |
| 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 |
Here are some grading standards you may find useful.
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.)