Functional Problem Solving (CSC 151 2016S) : Handouts
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Taking Notes] [Rubric]
Current: [Assignment] [EBoard] [Lab] [Outline] [Reading]
Sections: [Assignments] [EBoards] [Labs] [Outlines] [Readings] - [Examples] [Handouts]
Reference: [Setup] [Remote] [VM] [Errors] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Curtsinger (2016S)] [Davis (2013F)] [Rebelsky (2015F)] [Weinman (2014F)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] - [Issue Tracker (Course)]
This is an approximate schedule. Expect topics and dates of topics to change. (I will try to keep due dates of assignments the same.)
Week 01: An Introduction to ... | |||||
---|---|---|---|---|---|
Date | Topic | Reading | Lab | Work Due | |
01 | Monday, 25 January 2016 | An Introduction to Algorithms Introduction: What is CS? Exercise: An everyday algorithm. Debriefing on exercise (continues next class). | |||
02 | Tuesday, 26 January 2016 | An Introduction to Linux Lessons from day one. Common parts of an algorithm. Getting started with Linux. | The Linux Environment and Parts of Algorithms | Getting Started with Linux | HW 1: Introductory Survey |
03 | Wednesday, 27 January 2016 | An Introduction to Scheme Why use programming languages? Scheme history. Scheme basics. | Parts of Algorithms, The DrRacket Program-Development Environment, Beginning Scheme, & How Scheme Evaluates Expressions (Take 1) | Starting Scheme | |
Thursday, 28 January 2016 | Optional Review Session | ||||
04 | Friday, 29 January 2016 | Computing with Symbols and Numbers Values and types. Kinds of numbers. The modulo operation. | Numeric Values & Symbolic Values | Numeric Computation | Quiz 1 |
Week 02: Transformations and Procedure Basics | |||||
Date | Topic | Reading | Lab | Work Due | |
05 | Monday, 1 February 2016 | RGB Colors Color palettes. RGB colors. Representing RGB colors as integers. | Design and Color and RGB Colors | RGB Colors | |
06 | Tuesday, 2 February 2016 | Transforming Colors Review: Color basics. Integer-encoded RGB colors. Computing new colors from old. An example. | Transforming RGB Colors | Transforming RGB Colors | HW 2: Poking Holes in Algorithms |
07 | Wednesday, 3 February 2016 | Transforming Images From transforming colors to transforming images. Sectioning. Anonymous transformations. | Transforming Images | Transforming Images | |
Thursday, 4 February 2016 | Optional Review Session | ||||
08 | Friday, 5 February 2016 | Writing Your Own Procedures Sequencing operations in Scheme. Why define your own procedures? How to define your own procedures. Evaluating expressions in Scheme. | Writing Your Own Procedures and How Scheme Evaluates Expressions (Take 2) | Writing Your Own Procedures | Quiz 2 |
Week 03: Thinking About Procedures | |||||
Date | Topic | Reading | Lab | Work Due | |
09 | Monday, 8 February 2016 | Writing Your Own Procedures, Continued More about procedures. Lab, continued. Questions and reflection. | Writing Your Own Procedures and How Scheme Evaluates Expressions (Take 2) | Writing Your Own Procedures | |
10 | Tuesday, 9 February 2016 | Documenting Programs and Procedures Debrief on procedures lab. Pair programming. The need for documentation. The Six P's - a strategy for documenting procedures. A few additional P's. Practice. | Documenting Your Procedures and Wray: How Pair Programming Really Works | HW 3: Color Transformations and Image Filters | |
11 | Wednesday, 10 February 2016 |
Side Effects: Output and Input
Simple output in Scheme.
Using output to trace program behavior.
Reading lines of text with read-line .
Reading Scheme values with read .
Side effects.
|
Output in Scheme and Simple Input Operations | Side Effects | |
Thursday, 11 February 2016 | Optional Review Session | ||||
12 | Friday, 12 February 2016 | Testing Your Procedures Why test? Strategies for testing. The primary testing operations. | Testing Your Procedures with RackUnit | Testing Your Procedures | Quiz 3 |
Week 04: Other Image Models | |||||
Date | Topic | Reading | Lab | Work Due | |
13 | Monday, 15 February 2016 | Testing Your Procedures, Revisited Key ideas in testing. Careful postconditions. Exhaustive testing. Making yourself more efficient. | Testing Your Procedures | Testing Your Procedures | |
14 | Tuesday, 16 February 2016 | Drawings as Values Representing images. Thinking about drawings through composition/decomposition. The underlying representation. Pure approaches vs impure approaches. | Drawings as Values | Drawings as Values | Exam 1 (due 10:30 p.m. via email) |
15 | Wednesday, 17 February 2016 | Homogeneous Lists: Making and Manipulating Groups of Drawings Context: What and why lists? Building lists. Mapping lists. Other list operations. | Making and Manipulating Homogeneous Lists | Making and Manipulating Lists of Drawings | Exam 1 (cover sheet due in class) |
Thursday, 18 February 2016 | Optional Review Session | ||||
16 | Friday, 19 February 2016 | Programming the GIMP Tools A new model of images making. Coding algorithms for drawing. Other useful techniques. | The GNU Image Manipulation Program and Programming the GIMP Tools | Scripting the GIMP Tools | Quiz 4 |
Week 05: Control | |||||
Date | Topic | Reading | Lab | Work Due | |
17 | Monday, 22 February 2016 |
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 | |
18 | Tuesday, 23 February 2016 |
Conditionals
The parts of an algorithm, revisited.
Choosing between two options with if .
Optional evaluation with when .
Making multiple choices with cond .
Comparing approaches.
|
Conditionals | Conditionals | HW 4: Drawing Generally and Concisely |
19 | Wednesday, 24 February 2016 |
Naming Local Values
Why name things.
Naming things with let .
Naming things with let* .
Naming procedures.
|
Local Bindings | Local Bindings | |
Thursday, 25 February 2016 | Optional Review Session | ||||
20 | Friday, 26 February 2016 | Collage - Copy and Paste Collage. The Gimp PDB. Copying and pasting. Scaling. Rotation. | Collage | Collage | Quiz 5 |
Week 06: Miscellaneous | |||||
Date | Topic | Reading | Lab | Work Due | |
21 | Monday, 29 February 2016 | Anonymous Procedures, Revisited What is a procedure? Describing procedures. Anonymous procedures. Anonymous procedures through lambda expressions. Other kinds of anonymous procedures. | Anonymous Procedures | Anonymous Procedures | |
22 | Tuesday, 1 March 2016 | Images as Functions from Position to Colors Models of images. Iterating over positions: Images as functions from position to color. Blends and other positionally-computed images. Drawing simple shapes. Some strange computations. | Building Images by Iterating Over Positions | Building Images by Iterating Over Positions | HW 5; Exam 2 assigned |
23 | Wednesday, 2 March 2016 | Revisiting Lists Lists, revisited. New list operations. Drawings as values. | Building Data Structures with Heterogeneous Lists | Exploring Lists | |
Thursday, 3 March 2016 | Optional Review Session | ||||
24 | Friday, 4 March 2016 | Characters and Strings Representing text. Characters: The basic building blocks. Combining characters into strings. | Characters and Strings | Characters and Strings | Quiz 6 |
Week 07: Recursion | |||||
Date | Topic | Reading | Lab | Work Due | |
25 | Monday, 7 March 2016 | Recursion Basics Background. The idea of recursion. Some sample recursive procedures. Expressing recursion in Scheme. | Recursion Basics | Recursion Basics | |
26 | Tuesday, 8 March 2016 | Recursion Basics, Continued Reflection. Questions. Recursion vs. other forms of repetition. | Recursion Basics | Recursion Basics | Exam 2 (due 10:30 p.m. via email) |
27 | Wednesday, 9 March 2016 |
Preconditions, Revisited
Verifying preconditions.
The error procedure.
Husk and Kernel programming.
|
Verifying Preconditions | Verifying Preconditions | Exam 2 (cover sheet due in class) |
Thursday, 10 March 2016 | Optional Review Session | ||||
28 | Friday, 11 March 2016 | Recursion with Helper Procedures Basics of helper recursion. A term: Tail recursion. Why write tail recursive procedures? | Recursion with Helper Procedures | Recursion with Helper Procedures | Quiz 7 |
Week 08: Recursion, Continued | |||||
Date | Topic | Reading | Lab | Work Due | |
29 | Monday, 14 March 2016 | Recursion with Helper Procedures, Continued Further issues in helper recursion. Tail recursion. | Recursion with Helper Procedures | Recursion with Helper Procedures | |
30 | Tuesday, 15 March 2016 | Other Forms of List Recursion Questions and answers. Some notes on yesterday's lab. Some key ideas from the reading. | List Recursion, Revisited | List Recursion, Revisited | |
31 | Wednesday, 16 March 2016 | Pause for Breath | |||
Thursday, 17 March 2016 | Optional Review Session | ||||
32 | Friday, 18 March 2016 | Numeric Recursion Recursion, generalized. Numeric recursion. | Numeric Recursion | Numeric Recursion | Quiz 8 |
Spring Break | |||||
Week 09: New Approaches | |||||
Date | Topic | Reading | Lab | Work Due | |
33 | Monday, 4 April 2016 |
Naming Local Procedures
Why have local procedures.
Creating local procedures with letrec .
Creating local procedures with named let.
|
Local Procedure Bindings | Local Procedure Bindings | |
34 | Tuesday, 5 April 2016 | Turtle Graphics Modeling images through process: Turtle graphics. Some historical notes. Turtle graphics in MediaScheme. | Turtle Graphics | Turtle Graphics | Exam 3 distributed |
35 | Wednesday, 6 April 2016 |
Iteration
Reflecting on procedures and side-effects.
A useful tool for repetition: for-each .
Contrasting map , for-each , repeat , and recursion.
|
Iteration | Iteration | |
Thursday, 7 April 2016 | Optional Review Session | ||||
36 | Friday, 8 April 2016 |
Randomized (Unpredictable) Drawing
Random art.
Why use randomness.
The random procedure.
Simulation.
|
Randomized Drawing | Randomized Drawing | Quiz 9 |
Week 10: Data Structures | |||||
Date | Topic | Reading | Lab | Work Due | |
37 | Monday, 11 April 2016 | Pairs and Pair Structures Representing lists: Pairs and cons cells. Why care about the underlying representation? | Pairs and Pair Structures | Pairs and Pair Structures | |
38 | Tuesday, 12 April 2016 | Vectors Problems with lists. A solution: Vectors. Behind the scenes: How Scheme implements vectors. Important vector procedures. | Vectors | Vectors | Exam 3 (due 10:30 p.m. via email); Project assigned |
39 | Wednesday, 13 April 2016 | Pause for Breath | No Reading | Exam 3 (cover sheet due in class) | |
Thursday, 14 April 2016 | Optional Review Session | ||||
40 | Friday, 15 April 2016 | On Two-Dimensional Design Background: About the project. Some examples. General elements of design. Relationships between elements. Broader design principles. Some examples. | Elements and Principles of Two-Dimensional Design & About the Project | Quiz 10 | |
Week 11: Miscellaneous | |||||
Date | Topic | Reading | Lab | Work Due | |
41 | Monday, 18 April 2016 | Project Kickoff About the project, revisited. Group composition. Time to form groups. Playing and brainstorming. | Project Ideas | Playing with Project Ideas | |
42 | Tuesday, 19 April 2016 |
Trees
Thinking about trees in terms of cons .
Thinking about trees recursively.
Writing recursive tree procedures.
|
Trees | Trees | HW 6 |
43 | Wednesday, 20 April 2016 | Higher-Order Procedures, Revisited Some program design principles. Thinking about repetition. Procedures as first-class values. | Design Patterns and Higher-Order Procedures | Design Patterns and Higher-Order Procedures | |
Thursday, 21 April 2016 | Optional Review Session | ||||
44 | Friday, 22 April 2016 | Files in Scheme File basics: Data persistence and beyond. Ports. Basic file operations. | Files in Scheme | Files in Scheme | Quiz 11 |
Week 12: Searching | |||||
Date | Topic | Reading | Lab | Work Due | |
45 | Monday, 25 April 2016 | Pause for Breath Project work time. Key techniques. | No Reading | Project proposal due at 10:30 p.m. | |
46 | Tuesday, 26 April 2016 | Analyzing Procedures Comparing algorithms. Two related metrics: Time and Number of steps. Counting procedure calls by printing. Tools for analysis. | Analyzing Procedures | Analyzing Procedures | Project proposal images due |
47 | Wednesday, 27 April 2016 | Binary Search Analyzing algorithmic efficiency. The problem of searching. Making searching more efficient using divide-and-conquer. A demo: Destructive binary search. Considering the parameters to binary search. | |||
Thursday, 28 April 2016 | Optional Review Session | ||||
48 | Friday, 29 April 2016 | Association Lists 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 | |
Week 13: Project Reflections | |||||
Date | Topic | Reading | Lab | Work Due | |
49 | Monday, 2 May 2016 | Binary Search Lab Exploring the search API. Remaining questions. | Search Algorithms | Binary Search | Exam 4 Distributed |
50 | Tuesday, 3 May 2016 | An Introduction to Sorting The problem of sorting. Writing sorting algorithms. Examples: Insertion, selection, etc. Formalizing the problem. | No Reading | Project due | |
51 | Wednesday, 4 May 2016 | Insertion Sort Insertion sort basics. Four questions about insertion sort. Analyzing insertion sort. | Sorting | Insertion Sort | |
Thursday, 5 May 2016 | Optional Review Session | ||||
52 | Friday, 6 May 2016 | Merge Sort More efficient sorting techniques. Divide and conquer, revisited. Merge sort. Analyzing merge sort. | Merge Sort | Merge Sort | Quiz 13 (cancelled) |
Week 14: Wrapup | |||||
Date | Topic | Reading | Lab | Work Due | |
53 | Monday, 9 May 2016 | Project Assessment: Images Reviewing images: The "big picture". Reviewing images: Policies for doing individual images. Image review. Debrief, if appropriate. | |||
54 | Tuesday, 10 May 2016 | Project Assessment: Algorithms Additional images. Debriefing from image analysis. Clever code: How'd you do that? Code crits: Why'd you do that? | Exam 4 (due 10:30 p.m. via email) | ||
55 | Wednesday, 11 May 2016 | Recap The subject matter(s) of the course. More about the subject matter(s). Looking beyond the course. | Exam 4 (cover sheet due in class) | ||
Thursday, 12 May 2016 | Optional Review Session | ||||
56 | Friday, 13 May 2016 | Wrapup Comments on the final. Course evaluation. Final comments. |