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

CSC 151: Functional Problem Solving

Course Tools (Fall 2024)

Development Tools

  • Scamper

Communication

  • Microsoft Teams
  • Gradescope (section 01)
  • Gradescope (section 02)