Functional Problem Solving (CSC 151 2015S) : Handouts

# Schedule

This is an approximate schedule. Expect topics and dates of topics to change. (I will try to keep due dates of assignments the same.)

Some of the information here can also be found in the Google calendar for the course, which is available at <http://bit.ly/151gcal>.

Week 01: An Introduction to ...
Date Topic Reading Lab Work Due
01 Tuesday, 20 January 2015 An Introduction to Algorithms Introduction: What is CS? Exercise: An everyday algorithm. Debriefing on exercise.
02 Wednesday, 21 January 2015 An Introduction to Linux Lessons from day one. Common parts of an algorithm. About the course. Getting started with Linux. Some administrative details (if there's time). The Linux Environment and Parts of Algorithms Getting Started with Linux HW 1: Introductory Survey (due 10:30 p.m. Wednesday night)
03 Friday, 23 January 2015 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 Writeup 03: Exercise 2 Quiz 1
Week 02: Scheme Basics
Date Topic Reading Lab Work Due
04 Monday, 26 January 2015 Computing with Symbols and Numbers Values and types. Kinds of numbers. The modulo operation. Numeric Values & Symbolic Values Numeric Computation Writeup 04: Exercise 2, parts d, e, and f
05 Tuesday, 27 January 2015 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 Writeup 05: Exercise 4, parts a, c, and e HW 2: Exploring Algorithms
06 Wednesday, 28 January 2015 Writing Your Own Procedures Sequencing operations in Scheme. The drawings-as-values model, revisited. 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 Writeup 06: Exercise 2, parts a and b
07 Friday, 30 January 2015 Writing Your Own Procedures, Continued Lab, continued. Questions and reflection. Writing Your Own Procedures and How Scheme Evaluates Expressions (Take 2) Writing Your Own Procedures Writeup 07: Exercise 6 Quiz 2
Date Topic Reading Lab Work Due
08 Monday, 2 February 2015 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 Writeup 08: Document the `rectangle` procedure from the procedures lab
09 Tuesday, 3 February 2015 Side Effects: Images, Output, and More Output with `display` and `newline`. Using output procedures to trace code. More procedures for working with images. Output in Scheme and Basic Image Operations Side Effects Writeup 09: Exercise 3a HW 3: Drawing Procedures; Exam 1 assigned
10 Wednesday, 4 February 2015 Testing Your Procedures Why test? Strategies for testing. The primary testing operations. Testing Your Procedures Testing Your Procedures Writeup 10: Exercise 9
11 Friday, 6 February 2015 Testing Your Procedures, Revisited Key ideas in testing. Careful postconditions. Exhaustive testing. Making yourself more efficient. Testing Your Procedures Testing Your Procedures Quiz 3; Exam 1 prlogue (due 10:30 p.m.)
Week 04: Color
Date Topic Reading Lab Work Due
12 Monday, 9 February 2015 A Design Perspective A bit about design. A bit about color theory. Exploring some images and design spaces. Design and Color
13 Tuesday, 10 February 2015 Raster Graphics and RGB Colors Representing images, revisited. Pixels and colors: The basics. RGB colors. Those weird numbers. Raster Graphics: Images from Pixels and Colors and RGB Colors Raster Graphics and RGB Colors Writeup 13: Exercise 10 Exam 1 (due 10:30 p.m. via Web form)
14 Wednesday, 11 February 2015 Transforming Colors Review: Color basics. Integer-encoded RGB colors. Computing new colors from old. An example. Transforming RGB Colors Transforming RGB Colors Exam 1 (due in class in paper form); epilogue (due 10:30 p.m.)
15 Friday, 13 February 2015 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 Quiz 4
Week 05: Control
Date Topic Reading Lab Work Due
16 Monday, 16 February 2015 Transforming Images Transforming images by transforming each pixel. Sequencing transformations with compose. Anonymous transformations. Transforming Images Transforming Images Writeup 16: Exercise 3
17 Tuesday, 17 February 2015 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 HW 4: From Color Transformations to Image Filters
18 Wednesday, 18 February 2015 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
19 Friday, 20 February 2015 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 Writeup 19: Exercises 3 c and d Quiz 5
Week 06: Miscellaneous
Date Topic Reading Lab Work Due
20 Monday, 23 February 2015 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 Writeup 20: Exercise 5, parts b-f
21 Tuesday, 24 February 2015 Naming Local Values Why name things. Naming things with `let`. Naming things with `let*`. Naming procedures. Local Bindings Local Bindings Writeup 21: Exerises 5d and 6b HW 5: Transforming Colors, Shapes, and Images
22 Wednesday, 25 February 2015 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 Writeup 22: Exercise 3
23 Friday, 27 February 2015 Revisiting Lists Lists, revisited. New list operations. Drawings as values. Building Data Structures with Heterogeneous Lists Exploring Lists Quiz 6
Week 07: Recursion
Date Topic Reading Lab Work Due
24 Monday, 2 March 2015 Recursion Basics Background. The idea of recursion. Some sample recursive procedures. Expressing recursion in Scheme. Recursion Basics Recursion Basics
25 Tuesday, 3 March 2015 Recursion Basics, Continued Reflection. Questions. Recursion vs. other forms of repetition. Recursion Basics Recursion Basics Writeup 25: Exercises 4 and 5 HW 6: Polar Conditionals; Exam 2 assigned
26 Wednesday, 4 March 2015 Preconditions, Revisited Verifying preconditions. The `error` procedure. Husk and Kernel programming. Verifying Preconditions Verifying Preconditions Writeup 26: Exercises 4 and 5
27 Friday, 6 March 2015 Characters and Strings Representing text. Characters: The basic building blocks. Combining characters into strings. Characters and Strings Characters and Strings Writeup 27: Exercises 5 and 6 Quiz 7
Week 08: Recursion, Continued
Date Topic Reading Lab Work Due
28 Monday, 9 March 2015 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
29 Tuesday, 10 March 2015 Recursion with Helper Procedures, Continued Further issues in helper recursion. Tail recursion. Recursion with Helper Procedures Recursion with Helper Procedures Writeup 29: Exercises 4l and 5b
30 Wednesday, 11 March 2015 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 Writeup 30: Exercises 3ab and 4ab Exam 2 (due Thursday at 10:30 p.m. via email)
31 Friday, 13 March 2015 Numeric Recursion Recursion, generalized. Numeric recursion. Numeric Recursion Numeric Recursion Quiz 8; Exam 2 (due in class in paper form)
Spring Break
Week 09: New Approaches
Date Topic Reading Lab Work Due
32 Monday, 30 March 2015 Naming Local Procedures Why have local procedures. Creating local procedures with `letrec`. Creating local procedures with named let. Local Procedure Bindings Local Procedure Bindings Writeup 32: Exercise 4
33 Tuesday, 31 March 2015 Turtle Graphics Modeling images through process: Turtle graphics. Some historical notes. Turtle graphics in MediaScheme. Turtle Graphics Turtle Graphics
34 Wednesday, 1 April 2015 Iteration Reflecting on procedures and side-effects. A useful tool for repetition: `for-each`. Contrasting `map`, `for-each`, `repeat`, and recursion. Iteration Iteration Writeup 34: Problems 8, 9, and 10
35 Friday, 3 April 2015 Geometric Art Through Numeric Recursion Using numeric recursion for making images. Parallel lines, concentric circles, and beyond. Geometric Art Geometric Art Writeup 35: Exercise 5 (optional) Quiz 9
Week 10: Data Structures
Date Topic Reading Lab Work Due
36 Monday, 6 April 2015 Pairs and Pair Structures Representing lists: Pairs and cons cells. Why care about the underlying representation? Pairs and Pair Structures Pairs and Pair Structures Writeup (paper): Exercises 1 and 3
37 Tuesday, 7 April 2015 Trees Thinking about trees in terms of `cons`. Thinking about trees recursively. Writing recursive tree procedures. Trees Trees Writeup 37: Exercises 2 and 4a (optional) HW 7: Producing Playful Polygons; Exam 3 available
38 Wednesday, 8 April 2015 Vectors Problems with lists. A solution: Vectors. Behind the scenes: How Scheme implements vectors. Important vector procedures. Vectors Vectors Writeup 38: Exercise 4 Exam 3 distributed
39 Friday, 10 April 2015 Randomized (Unpredictable) Drawing Random art. Why use randomness. The `random` procedure. Simulation. Randomized Drawing Randomized Drawing Writeup 39: Exercise 4c Quiz 10
Week 11: Thinking About Procedures, Revisited
Date Topic Reading Lab Work Due
40 Monday, 13 April 2015 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
41 Tuesday, 14 April 2015 Project Kickoff Time to form groups. A few more notes on design. Playing and brainstorming. Project Ideas Playing with Project Ideas Exam 3 (due 10:30 p.m. via email); Project assigned
42 Wednesday, 15 April 2015 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 Writeup 42: Exercises 3, 4, and 6 Exam 3 (due in class in paper form)
43 Friday, 17 April 2015 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 11
Week 12: Searching
Date Topic Reading Lab Work Due
44 Monday, 20 April 2015 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 Writeup 44: Exercises 1a, 1b, and 5a Project proposal due at 10:30 p.m.
45 Tuesday, 21 April 2015 Binary Search The problem of searching. Analyzing algorithmic efficiency. Making searching more efficient using divide-and-conquer. A demo: Destructive binary search. Considering the parameters to binary search. Search Algorithms Project proposal images due in class
46 Wednesday, 22 April 2015 Binary Search Lab Exploring the search API. Remaining questions. Search Algorithms Binary Search Writeup 46: Exercise 4
47 Friday, 24 April 2015 Pause for Breath Project work time. Key techniques. No Reading Quiz 12
Week 13: Sorting
Date Topic Reading Lab Work Due
48 Monday, 27 April 2015 An Introduction to Sorting The problem of sorting. Writing sorting algorithms. Examples: Insertion, selection, etc. Formalizing the problem. No Reading Exam 4 distributed
49 Tuesday, 28 April 2015 Insertion Sort Insertion sort basics. Four questions about insertion sort. Analyzing insertion sort. Sorting Insertion Sort Writeup 49: Exercises 2e and 4f Project due
50 Wednesday, 29 April 2015 Merge Sort More efficient sorting techniques. Divide and conquer, revisited. Merge sort. Analyzing merge sort. Merge Sort Merge Sort Writeup 50: Exercise 4, parts f, g, and h
51 Friday, 1 May 2015 Files in Scheme File basics: Data persistence and beyond. Ports. Basic file operations. Files in Scheme Files in Scheme Quiz 13
Week 14: Wrapup
Date Topic Reading Lab Work Due
52 Monday, 4 May 2015 Project Assessment: Images Reviewing images: The "big picture". Reviewing images: Policies for doing individual images. Image review. Debrief, if appropriate. Exam 4 (due 10:30 p.m. via email)
53 Tuesday, 5 May 2015 Project Assessment: Algorithms Additional images. Debriefing from image analysis. Students discuss programming techniques. Programming challenges. Exam 4 (due in class in paper form)
54 Wednesday, 6 May 2015 Recap The subject matter(s) of the course. Topics within each subject matter. Looking behond the class.
55 Friday, 8 May 2015 Wrapup Course evaluation. Comments on the final. Final comments.