This handout is also available in PDF.
This is an abbreviated course syllabus. Like everything else in this course, it is likely to change.
Weeks: 1, 2, 3, 4, 5, 6, 7, 8, break, 9, 10, 11, 12, 13, 14.
|Week 1: Getting Started|
|01||Tuesday, 22 January 2008||An Introduction to Algorithms |
Introduction: What is CS? Exercise: Drawing smileys.
|Drawing Smiley Faces|
|02||Wednesday, 23 January 2008||An Introduction to CSC151 |
Lessons from day one. Common parts of an algorithm. About the course. Getting started with Linux. Some administrative details.
|Grinnell's Linux Environment||Getting Started with Linux||Assignment 1: Class Basics|
|03||Friday, 25 January 2008||An Introduction to the GIMP |
What is GIMP? Why GIMP in 151? Short Demo. Lab + Reflection.
|The GNU Image Manipulation Program||The GNU Image Manipulation Program|
|Week 2: Getting Started With Media Computation|
|04||Monday, 28 January 2008||An Introduction to Scheme |
Why use programming languages? Scheme basics. Scheme history.
|The DrScheme Program-Development Environment & Beginning Scheme & How Scheme Evaluates Expressions (version 1)||Starting Scheme|
|05||Tuesday, 29 January 2008||Tools for Scripting the Gimp |
A model of images, extended. Coding algorithms for drawing. Other useful techniques.
|GIMP Tools||Lab: GIMP Tools|
|06||Wednesday, 30 January 2008||Turtle Graphics |
Modeling images through process: Turtle graphics. Some historical notes. Turtle graphics in DrFu.
|Turtle Graphics||Turtle Graphics||Assignment 2: Drawing Smileys, Revisited|
|07||Friday, 1 February 2008||Drawings as Values |
Thinking about drawings through composition/decomposition. Pure approaches vs impure approaches.
|Drawings as Values||Drawings as Values||Quiz 1|
|Week 3: Scheme Basics|
|08||Monday, 4 February 2008||Writing Your Own Procedures |
Why define your own procedures? How to define your own procedures.
|Writing Your Own Procedures & How Scheme Evaluates Expressions (version 2)||Writing Your Own Procedures|
|09||Tuesday, 5 February 2008||Computing with Symbols and Numbers |
Types. Kinds of Numbers. Key Numeric Operations.
|Numeric Values & Symbolic Values||Numeric Computation|
|10||Wednesday, 6 February 2008||Representing Images as Lists of Spots |
Lists in Scheme. Basic list operations. Spot lists: Another perspective on images.
|Representing Images as Lists of Spots||Representing Images as Lists of Spots||Assignment 3: Algorithmically Creating Simple Images|
|11||Friday, 8 February 2008||Spot Lists, Continued |
Quick review. Lab, continued.
|Representing Images as Lists of Spots||Representing Images as Lists of Spots||Quiz 2|
|Week 4: Raster Graphics|
|12||Monday, 11 February 2008||Raster Graphics and RGB Colors |
Representing images, revisited. Pixels and colors: The basics. RGB colors.
|Raster Graphics: Images from Pixels and Colors and RGB Colors||Raster Graphics and RGB Colors|
|13||Tuesday, 12 February 2008||Documenting Programs and Procedures |
The need for documentation. The Six P's - a strategy for documenting procedures. Practice.
|Documenting Your Procedures|
|14||Wednesday, 13 February 2008||A Design Perspective |
Approaching colors. Managing the huge palette. Other design issues.
|Exam 1: Scheme Basics|
|15||Friday, 15 February 2008||Discussion of Exam 1 |
General issues. Issues with particular problems. Additional Q&A
|Week 5: Control|
|16||Monday, 18 February 2008||Boolean Values and Predicate Procedures |
Boolean values. Predicates - Procedures that return Boolean values. Combining booleans with
|Boolean Values and Predicate Procedures||Boolean Values and Predicate Procedures|
|17||Tuesday, 19 February 2008||Conditionals |
Choosing between two options with
|18||Wednesday, 20 February 2008||Iterating Over Lists |
Review: How Scheme evaluates expressions. Repetition. Building new lists from old with
|Iterating Over Lists||Iterating Over Lists||Assignment 4: Blending Colors|
|19||Friday, 22 February 2008||Naming Local Values |
Why name things. Naming things with
|Local Bindings||Local Bindings||Quiz 4|
|Week 6: Transformations|
|20||Monday, 25 February 2008||Transforming Colors |
Computing new colors from old. Some basic transformations. Transforming pixels and images.
|Transforming RGB Colors||Transforming RGB Colors|
|21||Tuesday, 26 February 2008||Transforming Images |
Review: Transforming colors. Transforming images by transforming each pixel. Sequencing transformations with compose.
|Transforming Images||Transforming Images|
|22||Wednesday, 27 February 2008||Iterating Over Positions |
Iterating over positions. Blends and other positionally-computed images. Drawing simple shapes.
|Building Images by Iterating Over Positions||Building Images by Iterating Over Positions||Assignment 5: List Iteration|
|23||Friday, 29 February 2008||Recursion Basics |
The idea of recursion. A sample recursive procedure:
|Recursion Basics||Recursion Basics||Quiz 5|
|Week 7: Recursion|
|24||Monday, 3 March 2008||Recursion Basics, Continued |
Designing a recursive procedure. More time for lab.
|Recursion Basics||Recursion Basics|
|25||Tuesday, 4 March 2008||Recursion with Helper Procedures |
Delayed evaluation in recursive procedures. A strategy: Carry along intermediate results. Using recursive helpers. A term: Tail recursion. Designing recursive procedures.
|Recursion with Helper Procedures||Recursion with Helper Procedures|
|26||Wednesday, 5 March 2008||Other Forms of List Recursion |
Questions and answers. Patterns of list recursion. Recursive predicates.
|List Recursion, Revisited||List Recursion, Revisited||Assignment 6: Color-Reducing Filters|
|27||Friday, 7 March 2008||Preconditions, Revisited |
Verifying preconditions. The
|Verifying Preconditions||Verifying Preconditions||Quiz 6|
|Week 8: Further Topics|
|28||Monday, 10 March 2008||Naming Local Procedures |
Why have local procedures. Creating local procedures with
|Local Procedure Bindings||Local Procedure Bindings|
|29||Tuesday, 11 March 2008||Numeric Recursion |
Recursion, Generalized. Thinking About Natural Numbers. Numeric Recursion.
|Numeric Recursion||Numeric Recursion|
|30||Wednesday, 12 March 2008||Geometric Art Through Numeric Recursion |
Parallel lines, Concentric Circles, and Beyond.
|Geometric Art||Geometric Art||Exam 2: Control: Conditionals, Iteration, and Recursion|
|31||Friday, 14 March 2008||Class Cancelled |
SamR goes to a conference. Students get a pre-break break.
|Week 9: Files|
|32||Monday, 31 March 2008||Characters and Strings |
Representing text. Characters: The basic building blocks. Combining characters into strings.
|Characters and Strings||Characters and Strings|
|33||Tuesday, 1 April 2008||File Basics |
File basics: Data persistence and beyond. Ports. Basic file operations.
|34||Wednesday, 2 April 2008||Storing Images as Simple Pixel Maps |
Files, revisited. Storing images. Storing colors. Storing images, revisited.
|Pixel Maps: A Technique for Storing Images||Pixel Maps||Assignment 7: Spirograph-Like Drawings|
|35||Friday, 4 April 2008||More Efficient Pixel Maps |
Review. Storing data more efficiently. Tradeoffs.
|Pixmaps, Revisited: Encoding Data More Efficiently||Pixmaps, Revisited||Quiz 7|
|Week 10: Miscellaneous|
|36||Monday, 7 April 2008||More Efficient Pixel Maps, Revisited |
Quick review. More time for lab.
|Pixmaps, Revisited: Encoding Data More Efficiently||Pixmaps, Revisited|
|37||Tuesday, 8 April 2008||Color Palettes |
Saving space by approximating colors. One strategy: Web-safe colors. Another strategy: Color palettes. Choosing palette colors. Using different palettes.
|Color Palettes||Color Palettes|
|38||Wednesday, 9 April 2008||Representing Color Palettes with Vectors |
Problems with lists. A solution: Vectors. Important vector procedures. Representing palettes with vectors.
|Vectors||Vectors||Assignment 8: Run-Length Encoding|
|39||Friday, 11 April 2008||Analyzing Procedures |
Comparing algorithms. Two related metrics: Time and Number of steps. Counting procedure calls by printing. Tools for analysis.
|Analyzing Procedures||Analyzing Procedures||Quiz 8|
|Week 11: Binary Structures|
|40||Monday, 14 April 2008||Pairs and Pair Structures |
Memory and naming. Pairs and cons cells. Why care?
|Pairs and Pair Structures||Pairs and Pair Structures|
|41||Tuesday, 15 April 2008||Deep Recursion |
Lists, revisited. Trees, introduced. Deep recursion, considered. Playing with color trees.
|Deep Recursion||Deep Recursion|
|42||Wednesday, 16 April 2008||Association Lists and Searching |
Storing information in tables. Representing table entries as lists. Representing tables as lists. Association lists: Scheme's standard table representation. Implementing key association list procedures.
|Association Lists||Association Lists||Assignment 9: Palettes and Vectors|
|43||Friday, 18 April 2008||Project Ideas |
More about the project. Technique one: Color Trees. Technique two: Fractals. Technique three: Genetic Art.
|Project Ideas||Playing with Project Ideas||Quiz 9|
|Week 12: Sorting|
|44||Monday, 21 April 2008||Higher Order Procedures |
Elegance. Procedures as parameters. Procedures as return values. Writing
|Higher-Order Procedures||Higher-Order Procedures|
|45||Tuesday, 22 April 2008||Binary Search |
The problem of searching. Analyzing algorithmic efficiency. Making searching more efficient using divide-and-conquer.
|46||Wednesday, 23 April 2008||Introduction to Sorting |
The problem of sorting. Writing sorting algorithms. Examples: Insertion, selection, etc. Formalizing the problem.
|47||Friday, 25 April 2008||Insertion Sort |
Expressing sorting algorithms in code. Key technique: Insertion. Analyzing insertion sort.
|Sorting||Insertion Sort||Quiz 10|
|Week 13: Project and Beyond|
|48||Monday, 28 April 2008||Merge Sort |
More efficient sorting techniques. Divide and conquer, revisited. Merge sort. Analyzing merge sort.
|Merge Sort||Merge Sort|
|49||Tuesday, 29 April 2008||Project Assessment: Images |
External assessment of images.
|50||Wednesday, 30 April 2008||Project Assessment: Algorithms |
Students discuss programming techniques.
|51||Friday, 2 May 2008||Randomized (Unpredictable) Drawings |
Random art. Why use randomness. The
|Randomized Drawing||Randomized Drawing||Exam 3: Types and Algorithms|
|Week 14: Wrapup|
|52||Monday, 5 May 2008||What is Computer Science? Revisited |
What is CS? Subfields of CS. Related Disciplines.
|53||Tuesday, 6 May 2008||Pause for Breath |
Pause. for. breath.
|54||Wednesday, 7 May 2008||Wrapup |
The subject matter of the course. Course evaluation.
|55||Friday, 9 May 2008||Review for the Final |
Policies for the final. Likely kinds of problems. Questions on Exam 3. Debriefing. Final comments.
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 May 15 22:05:50 2008.
The source to the document was last modified on Mon Jan 21 10:56:00 2008.
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.