This handout is also available in PDF.
This is an alternate abbreviated course syllabus. Like everything else in this course, it is likely to change.
Weeks: 1, 2, 3, 4, 5, 6, 7, break, 8, 9, 10, 11, 12, 13, 14.
|Week 01: Getting Started|
|01||Monday, January 22, 2007||An Introduction to Algorithms
Introduction; What is CS? An Algorithm for Making Simple Sandwiches.
Do Homework 1 (due tomorrow).|
Read Linux and the MathLAN (also due tomorrow).
|02||Tuesday, January 23, 2007||An Introduction to CSC151
Lessons from PB and J. Common parts of an algorithm. About the course. Lab. Some administrative details.
Due:HW 1||The Linux Environment in the MathLAN||Getting Started in the MathLAN|
|03||Wednesday, January 24, 2007||Working in DrScheme
Wrapping up the MathLAN lab. DrScheme lab.
|The DrScheme Program-Development Environment||The DrScheme Program-Development Environment|
|04||Friday, January 26, 2007||Beginning Scheme
Why use programming languages? Scheme basics. Scheme history. Lab.
Due:HW 2||Beginning Scheme||Beginning Scheme|
|Week 02: Data Types|
|05||Monday, January 29, 2007||Symbols and Lists
Symbolic values. Lists. Lab.
|Symbols in Scheme and Lists in Scheme||Symbols and Lists|
|06||Tuesday, January 30, 2007||Numeric Values
Types. Review of Reading: Numbers, Kinds of Numbers, and Numeric Operations. Lab. Reflection.
Due:HW 3||Numeric Values||Numeric Values|
|07||Wednesday, January 31, 2007||Characters and Strings
Additional lessons from yesterday. Short introduction to strings. Lab.
|Characters in Scheme and Strings in Scheme||Characters and Strings|
|08||Friday, February 2, 2007||Procedure Definitions
Why define your own procedures? How to define your own procedures. Lab.
Due:HW 4||Defining Your Own Procedures||Defining Your Own Procedures|
|Week 03: Control Structures|
|09||Monday, February 5, 2007||Boolean Values and Predicates
|Boolean Values and Predicates||Boolean Values and Predicates|
|10||Tuesday, February 6, 2007||Conditionals
Preliminary Notes on Conditionals. Lab. Reflections.
|11||Wednesday, February 7, 2007||Recursion
Repetition. Recursion. Recursion in Scheme. Lab.
|12||Friday, February 9, 2007||Recursion, Revisited
Q&A. Lab. Optional topics: Scheme's Evaluation Strategy; Another Example.
|Week 04: Recursion, Revisited|
|13||Monday, February 12, 2007||Recursion with Lists
|Recursion||Recursion with Lists|
|14||Tuesday, February 13, 2007||Recursion with Natural Numbers (1)
Writing Recursive Procedures. Short Introduction to Numeric Recursion. Lab.
|Numeric Recursion||Numeric Recursion|
|15||Wednesday, February 14, 2007||Recursion with Natural Numbers (2)
Q & A. Lab. Reflection.
|Numeric Recursion and Writing Recursive Procedures||Numeric Recursion|
|16||Friday, February 16, 2007||Local Bindings
Why name things. Naming things with
Assignments: Exam 1
|Naming Values with Local Bindings||Naming Values with Local Bindings|
|Week 05: Miscellaneous|
|17||Monday, February 19, 2007||Documentation, Preconditions and Postconditions
The need for documentation. Verifying preconditions. Husk and Kernel programming. Lab.
|Preconditions and Postconditions||Preconditions and Postconditions|
|18||Tuesday, February 20, 2007||Unit Testing
An Overview of Testing. Using Our Test Environment. Lab.
|Unit Testing||Unit Testing|
|19||Wednesday, February 21, 2007||Local Procedure Bindings
Why Have Local Procedures. Creating Local Procedures. An Example: Reverse. Lab.
|Local Procedure Bindings and Recursion||Local Procedure Bindings and Recursion|
|20||Friday, February 23, 2007||Analyzing Procedures
Overview. Steps. Lab.
|Due:Exam 1||Analyzing Procedures||Analyzing Procedures|
|Week 06: Files|
|21||Monday, February 26, 2007||Discussion of Exam 1
Notes on exam 1.
|22||Tuesday, February 27, 2007||Input and Ouptut
Interactive programs. Output in Scheme. Input in Scheme.
|Output in Scheme and Input in Scheme||Input and Output|
|23||Wednesday, February 28, 2007||Recursion with Files
Remaining I/O Topic: Repetitive Prompting. About Files. Key File Operations. File Recursion. Lab.
|24||Friday, March 2, 2007||Simulation
The Problem of Simulation. Scheme's
|Week 07: First Project: Generating Text|
|25||Monday, March 5, 2007||Project: Text Generation (Part One)
The Project. Strategies. Dividing the Work. Lab.
|Project: Text Generation (Part One)||Project: Text Generation (Part One)|
|26||Tuesday, March 6, 2007||Project: Text Generation (Part Two)
Improving Our Text Generation Strategy. Questions. Lab.
Due:HW 10||Project: Text Generation (Part Two)||Project: Text Generation (Part Two)|
|27||Wednesday, March 7, 2007||Project: Text Generation (Part Three)|
|28||Friday, March 9, 2007||Project: Text Generation (Part Four)|
|Week 08: Data Structures|
|29||Monday, March 12, 2007||Pairs and Pair Structures
Memory and Naming. Pairs and Cons cells. Why care? Lab.
|Pairs and Pair Structures||Pairs and Pair Structures|
|30||Tuesday, March 13, 2007||Deep Recursion
Lists, revisited. Trees, introduced. Deep recursion, considered. Lab.
|31||Wednesday, March 14, 2007||Deep Recursion Laboratory
|Deep Recursion||Deep Recursion|
|32||Friday, March 16, 2007||Vectors
Problems with lists. A solution: Vectors. Lab.
Due:Project Report 1||Vectors||Vectors|
|Week 09: Scripting Graphics in the GIMP|
|33||Monday, April 2, 2007||GIMP Basics
About the GIMP. This week. Getting started with the GIMP. Lab.
|The GNU Image Manipulation Program||The GNU Image Manipulation Program|
|34||Tuesday, April 3, 2007||Getting Started with Script-Fu
About Script-Fu. Lab. Reflection.
|Scripting the GIMP with Script-Fu||Generating GIMP Images with Script-Fu|
|35||Wednesday, April 4, 2007||Writing Script-Fu Procedures
Reflections on the first Script-Fu Lab. Writing procedures for Script-Fu. Lab.
|Writing Script-Fu Procedures||Writing Script-Fu Procedures|
|36||Friday, April 6, 2007||Randomized Images
Randomized Drawing - Some Theory. Randomized Drawing - Some Practice. Lab.
Due:Exam 2||Randomized Drawing||Randomized Drawing|
|Week 10: Higher Order Procedures|
|37||Monday, April 9, 2007||Algorithmic Art
Color grids. Example. Anonymous Procedures. Lab.
|Algorithmic Art||Algorithmic Art|
|38||Tuesday, April 10, 2007||Discussion of Exam 2
General issues. Problem 4. Problem 3. Problem 2. Problem 1.
|39||Wednesday, April 11, 2007||Manipulating Images with Script-Fu
Primary image-manipulation procedures. color transformations. Lab.
|Manipulating Images with Script-Fu||Manipulating Images with Script-Fu|
|40||Friday, April 13, 2007||Drawing with Script-Fu
Representing drawings. Transforming drawings. Lab.
Due:HW 12||Drawing with Script-Fu||Drawing with Script-Fu|
|Week 11: Algorithms (1): Searching|
|41||Monday, April 16, 2007||Higher-Order Procedures, Summarized
Background: Guiding Principles. Background: Writing Similar Code. Procedures as Parameters. Anonymous Procedures. Procedures as Return Values. Encapsulating Control. Final Thoughts.
|42||Tuesday, April 17, 2007||Association Lists and Searching
Databases and dictionaries. Lists as dictionaries.
Due:HW 13||Association Lists||Association Lists|
|43||Wednesday, April 18, 2007||Binary Search
About common algorithms. Searching. Binary search. Lab.
|Searching Methods||Binary Search|
|44||Friday, April 20, 2007||Introduction to Sorting
The problem of sorting, revisited. Writing sorting algorithms. Examples: Insertion, Selection, etc. Formalizing the problem.
|Week 12: Sorting|
|45||Monday, April 23, 2007||Insertion Sort
Preparation. Lab. Reflection.
|46||Tuesday, April 24, 2007||Merge Sort
Key Ideas. Lab. Reflection.
Due:HW 15||Merge Sort||Merge Sort|
|47||Wednesday, April 25, 2007||Quicksort
The key ideas of Quicksort. Lab.
|48||Friday, April 27, 2007||Variable-Arity Procedures
Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
Due:HW 16||Variable-Arity Procedures||Variable-Arity Procedures|
|Week 13: Object-Oriented Programming in Scheme|
|49||Monday, April 30, 2007||Object Basics
Representing Compound Values. Introduction to Objects. Procedures as Objects. Adding State.
|Modeling Objects in Scheme|
|50||Tuesday, May 1, 2007||An Object Example
Review of reading. Extended example.
|Modeling Objects in Scheme|
|51||Wednesday, May 2, 2007||Objects Lab
Review of reading. Lab.
|Modeling Objects in Scheme||Modeling Objects in Scheme|
|52||Friday, May 4, 2007||Metaprogramming
Code vs. Data in Scheme. Rewriting Named
|Week 14: Wrapup|
|53||Monday, May 7, 2007||Discussion of Exam 3
General Observations. Specific Problems.
|54||Tuesday, May 8, 2007||What is Computer Science, Revisited?
What is CS? Subfields of CS. Related Disciplines.
|55||Wednesday, May 9, 2007||Wrapup
The subject matter of the course. Evaluation forms. Final comments.
|56||Friday, May 11, 2007||Review for Final
Grading. The Final. Preparting for the Final.
I usually create these pages
on the fly, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Thu Sep 13 20:54:04 2007.
The source to the document was last modified on Wed Apr 25 10:46:41 2007.
This document may be found at
You may wish to validate this document's HTML ; ;Samuel A. Rebelsky, firstname.lastname@example.org
http://creativecommons.org/licenses/by-nc/2.5/or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.