Fundamentals of Computer Science I: Media Computing (CS151.01 2008S)

Course Syllabus

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.

  Date Topic Reading Lab Assignments
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
    Quiz 3
Week 5: Control
16 Monday, 18 February 2008 Boolean Values and Predicate Procedures
Boolean values. Predicates - Procedures that return Boolean values. Combining booleans with and and or.
Boolean Values and Predicate Procedures Boolean Values and Predicate Procedures
17 Tuesday, 19 February 2008 Conditionals
Choosing between two options with if. Making multiple choices with cond.
Conditionals Conditionals
18 Wednesday, 20 February 2008 Iterating Over Lists
Review: How Scheme evaluates expressions. Repetition. Building new lists from old with map. Anonymous procedures. Doing something with each value in a list with foreach!. Drawing lists of spots.
Iterating Over Lists Iterating Over Lists Assignment 4: Blending Colors
19 Friday, 22 February 2008 Naming Local Values
Why name things. Naming things with let. Naming things with let*. Naming procedures. Lab.
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: sum. Another example: Filtering.
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 throw procedure. Husk and Kernel programming.
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 letrec. Creating local procedures with named let. An example: reverse.
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.
Spring 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.
Files Files
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 map. Writing all?.
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.
Searching Binary Search
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 random procedure.
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.
    Course Assessment
55 Friday, 9 May 2008 Review for the Final
Policies for the final. Likely kinds of problems. Questions on Exam 3. Debriefing. Final comments.

Disclaimer: 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 ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky,

Copyright © 2007-8 Janet Davis, Matthew Kluber, and Samuel A. Rebelsky. (Selected materials copyright by John David Stone and Henry Walker and used by permission.) This material is based upon work partially supported by the National Science Foundation under Grant No. CCLI-0633090. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.