About
Syllabus
Course Tools
Core Exam Preparation
Week 1: Decomposition
Take-home assessment #1
M 9/2: Getting started with scheme
MathLAN: Grinnell's GNU/Linux environment
Algorithm building blocks
An abbreviated introduction to Scamper
Lab: Getting started with GNU/Linux
Lab: An introduciton to Scamper
W 9/4: Algorithmic decomposition
Simple Images in Scamper
Algorithmic Decomposition
Lab: Decomposition
F 9/6: Reading and Writing Procedures
Procedures
Lab: Practice with procedures
Week 2: Working with data
Take-home assessment #2
M 9/9: Mental models of computation
Computation via Expression
Lab: Mental Models of Comptuation
Reference: Mental Models
W 9/11: Expressions and Types
Expressions and Types
Numbers
Strings
Lab: Basic Types
F 9/13: Booleans, Predicates, and Conditionals
Booleans
Conditionals
Lab: Conditionals
Week 3: Theme week #1
Take-home assessment #3 (Music)
Take-home assessment #3 (Images)
M 9/16: Software Engineering Fundamentals
Documenting Your Code
Unit Testing
Hypothesis-driven Debugging
Lab: Documentation and Testing
W 9/18: Rhythm (Music)/Colors (Images)
(No reading for the Music section!)
Lab: The Music Library (Music)
Design and Color (Images)
RGB (Images)
Lab: RGB Colors (Images)
F 9/20: Scales (Music)/Image Transformation (Images)
Anonymous Procedures (Both)
Sound and Music (Music)
Harmonics (Music)
Lab: Scales and Chords (Music)
Transforming RGB (Images)
Transforming Images (Images)
Lab: Transforming Images (Images)
Week 4: Software engineering in the small
M 9/23: Local bindings
Local bindings
Lab: Local Bindings
W 9/25: Pair Programming
Pair Programming
F 9/27: Exam #1
Week 5: List processing
Take-home assessment #4 (Music)
Take-home assessment #4 (Images)
M 9/30: Lists
List Basics
List Transformations
Lab: List Basics
W 10/2: List processing
The Big Three
Lab: Lists More
F 10/4: List processing practice and code style
Code Style
Lab: Wrangling Data
Week 6: Recursively-defined functions
Take-home assessment #5
M 10/7: Recursive decomposition
Thinking recursively
Lab: Pattern matching and recursive tracing
W 10/9: Introduction to list recursion
Pattern matching
Recursion over lists
Lab: Recursion practice
F 10/11: List motions
List motions
Lab: More list practice
Week 7: Recursive design
Take-home assessment #6
M 10/14: Recursion over numbers
Recursion over numbers
Lab: Numeric recursion
W 10/16: Implementing the big three
(No reading for today!)
Lab: Implementing the big three
F 10/18: Tail recursion
Tail recursion
Lab: Tail recursion
Fall break: 10/21–10/25
Week 8: Additional topics in recursive design
M 10/28: Dictionaries
Association lists
Lab: Letter inventory
W 10/30: Pause for breath
(No reading today!)
F 11/1: Exam #2
Week 9: Effectful programming
Take-home assessment #7
Music: Improv Engine
Images: World Clouds
M 11/4: Vectors
Vectors
Lab: Vectors
W 11/6: Sequencing and effects
Sequencing and effects
Lab: Sequencing and effects
F 11/8: Randomness
Randomness
Lab: Random language
Week 10: Theme week #2
M 11/11: Iteration
Iteration
Digital Audio (Music)
Lab: Waveforms (Music)
Lab: Pixel Manipulation (Images)
W 11/13: Audio Envelopes (Music)/Animation (Images)
Manipulating Waveforms (Music)
Animation (Images)
Lab: ADSR (Music)
Lab: Animation (Images)
F 11/15: Project kick-off
The Final Project
Week 11: Structures and tree-like data
Take-home assessment #8
Images: Pixel Problems
Music: Simple Synthesizer
M 11/18: Structures
Data Abstraction
Preconditions
Lab: Structs
W 11/20: Trees
Trees
Lab: Binary Trees
F 11/22: Project work day!
Week 12: Tree recursion
M 11/25: Tree recursion
Tree recursion
Binary search trees
Lab: Tree recursion
W 11/27: Project work day!
(Thanksgiving break: 11/28–11/29)
Week 13: Computational complexity
M 12/2: Counting operations
Interactivity, events, and reactivity
Analyzing procedures
Lab: Computational complexity
W 12/4: Pause for breath
F 12/6: Exam #3
Week 14: Conclusion
M 12/9: Case study: searching and sorting
Searching
Sorting
W 12/11: Project presentations
F 12/13: Presentation wrap-up and conclusion
Finals week: 12/16–12/20
T 12/17, 9–12 PM: Exam #4 (section 01)
W 12/18, 9–12 PM: Exam #4 (section 02)
F 12/20, 5 PM: all work due deadline
Light
Rust
Coal
Navy
Ayu
CSC 151: Functional Problem Solving
Course Tools (Fall 2024)
Development Tools
Scamper
Communication
Microsoft Teams
Gradescope (section 01)
Gradescope (section 02)