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 |
The textbook can be found online here.
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 ????.
"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 |
---|---|---|---|---|
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 |
Here are some grading standards you may find useful.
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.