Schedule

The schedule below shows the tentative dates for all class topics, readings, and major assignments (MPs and SoLAs). You should complete all assigned readings by 10 p.m. on the night before the class in which they are listed. You should complete all lab writeups before the next class session. You can find the full list of due dates on Gradescope.

Due dates for major assignments will not change. However, the particular topics we cover each day may change as we discover that we need more (or less) time on each topic.

If the title of a class session is blue, you should be able to click on it to view the eboard for that class session.

If you view this page with JavaScript enabled you can jump to the current week on the schedule, and you should see the next day of class highlighted in the schedule below.

Week 0 : Preliminaries
F
Aug 25
class 1

An introduction to algorithms

We begin the class by exploring the definition of computer science and by trying to write some basic algorithms.

Reading
  • No reading
Lab
  • No lab
Week 1 : Preliminaries

W
Aug 30
class 3

Computation via expressions

We look at the fundamental building block of computation in functional programming languages, the expression, and build an appropriate model of how expressions “compute”.


F
Sep 1
class 4

Algorithmic decomposition

We consider a key technique in algorithmic thinking, how one “decomposes” a more complex problem or algorithm into simpler ones.

Week 2 : Fundamentals of Scheme programming
Su
Sep 3
 
Due
  • MP 1 Pre-Assessment

M
Sep 4
class 5

Reading and writing procedures

We consider ways to write your own procedures and why you might do so. We also explore how one interprets the algorithms others write. And we develop some mental models for what happens when we run Scheme/Racket programs.


W
Sep 6
class 6

Expressions and types

We explore many of the basic types of values in Scheme, the capabilities Scheme provides for working with those types, and how one builds more complex expressions. We also continue building our mental model.



Week 3 : Colors and conditionals
Su
Sep 10
 
Due
  • MP 2 Pre-Assessment

M
Sep 11
class 8

RGB colors

We explore one of the basic color models used by computers.




Week 4 : Getting started with lists
Su
Sep 17
 
Due
  • MP 3 Pre-Assessment

M
Sep 18
class 11

Software engineering fundamentals

We consider the trifecta of software engineering: documentation, testing, and debugging. That is, we explore why and how you document your code, why and how you test your code, and how you might find errors in your code.


W
Sep 20
class 12

Lists

We return to Scheme’s list data structure and some ways to use lists to work with collections of data.



F
Sep 22
class 13

Anonymous procedures

We explore ways to write procedures without using define (and, sometimes, without even using lambda). We also consider why we might do so.

Due
  • Quiz 3
  • MP 3 Post-Assessment
Week 5 : Thinking recursively
Su
Sep 24
 
Due
  • SoLA 1 Pre-Assessment

M
Sep 25
class 14

Lists, continued

We explore ways to use lists to work with collections of drawings using “the big three” list procedures: map, reduce, and filter.


W
Sep 27
class 15

Introduction to list recursion

We begin our exploration of recursion, the most general form of repetition available in Scheme. You can use recursion to both build and iterate over different kinds of values.

Lab
  • No lab
Assigned
  • SoLA 1

Th
Sep 28
 
Due
  • SoLA 1

F
Sep 29
class 16

Introduction to list recursion, continued

We continue our initial exploration of recursion in Scheme.

Reading
  • No reading
Due
  • Quiz 4
  • SoLA 1 Post-Assessment
  • MP 4 Pre-Assessment
Week 6 : Recursion, continued
M
Oct 2
class 17

Detour: Thinking about Mini-Project 4

We continue to continue our initial exploration of recursion in Scheme by considering various aspects of mini-project 4.

Reading
  • No reading
Lab
  • No lab
Due
  • MP 4 Pre-Assessment

W
Oct 4
class 18

Recursion practice

We continue to continue our initial exploration of recursion in Scheme.


F
Oct 6
class 19

Local bindings

We explore issues of redundacy in code and mechanisms for reducing such reducancy.

Week 7 : Image models and more
M
Oct 9
class 20

W
Oct 11
class 21

Pause for breath

We pause to reflect on some issues of recursion and to give ourselves a bit less stress during week 7.

Reading
  • No reading
Lab
  • No lab


F
Oct 13
class 22

Recursion over numbers

We consider a slightly different kind of recursion, numeric recursion. In this technique, we once again have procedures call themselves. However, the parameter that we “simplify” at every step is a number, rather than a list.

Fall Break
Week 8 : Representing collections of data
Su
Oct 22
 
Due
  • MP 5 Pre-Assessment (cancelled)

M
Oct 23
class 23

Images as functions

We conside ways to treat images as functions from positions to colors.

Reading
  • No reading

W
Oct 25
class 24

Pairs

We explore pairs, the basic building blocks of lists, and consider other, non-list structures one might build from pairs.



F
Oct 27
class 25

Vectors

We explore vectors, an alternative to lists for storing data. We consider how data are stored in memory.

Reading
Lab
  • No lab
Due
  • Quiz 7
  • MP 5 Post-Assessment
Week 9 : More ways to store data
Su
Oct 29
 
Due
  • SoLA 2 Pre-Assessment

M
Oct 30
class 26

Vectors, continued

We continue to explore vectors.

Reading
  • No reading

W
Nov 1
class 27

Vectors, continued again

Yup, another day on vectors.

Reading
  • No reading
Assigned
  • SoLA 2

Th
Nov 2
 
Due
  • SoLA 2

F
Nov 3
class 28

Randomness

We consider Scheme’s random procedure and how one might use that procedure in generating images.

Week 10 : The return of recursion
Su
Nov 5
 
Due
  • MP 6 Pre-Assessment

M
Nov 6
class 29

Dictionaries and hash tables

We consider structures that allow us to store information for quick retrieval.


W
Nov 8
class 30

Data abstraction

We build upon the structures we have encountered so far to design our own types and reflect on mechanisms for separating the interface to a type from the implementation of the type.



F
Nov 10
class 31

Ethical considerations in computing

After some time exploring various issues in computing, we take a step back and consider problems of ethical computing with seasoned programmer-eyes. As newly-informed citizens, what must we be aware of with respect to ethics in computing?

Week 11 : Turtle graphics
Su
Nov 12
 
Due
  • MP 7 Pre-Assessment

M
Nov 13
class 32

Higher-order recursive design

We explore patterns of recursion in the design of programs, particularly with regards to higher-order procedures.


W
Nov 15
class 33

Tail recursion

We continue to stretch our brains with recursive thinking. In particular, We consider tail recursion, an advanced version of recursion that is ubiquitous in functional programming.



F
Nov 17
class 34

Project Kickoff

We introduce the final project for the semester.

Week 12 : Complexity
M
Nov 20
class 35

We explore techniques for analyzing the number of calls made in evaluating procedures, particularly recursive procedures. We consider why such analysis is useful. We then delve into a common problem: That of finding values in a collection.


W
Nov 22
class 36

Project work day

We provide class time for students to work on their projects.

Reading
  • No reading
Lab
  • No lab
Due
  • Quiz 11
Thanksgiving Break
Week 13 : Trees
M
Nov 27
class 37

W
Nov 29
class 38

Project work day

We provide class time for students to work on their projects.

Reading
  • No reading
Lab
  • No lab


F
Dec 1
class 39

Trees

We consider a common hierarchial mechanism for structuring data and how to realize it in Scheme.

Reading
Due
  • Quiz 12
Week 14 : Wrap-up
Su
Dec 3
 
Due
  • SoLA 3 Pre-Assessment

M
Dec 4
class 40

Tree recursion

We consider how to write recursive programs that process trees and other tree-like structures.


W
Dec 6
class 41

Project presentations

Students present their projects

Reading
  • No reading
Lab
  • No lab
Assigned
  • SoLA 3

Th
Dec 7
 
Due
  • SoLA 3

F
Dec 8
class 42

Wrapup

We conclude the course.

Reading
  • No reading
Lab
  • No lab
Due
  • SoLA 3 Post-Assessment
Finals Week
M
Dec 11
 
Due
  • SoLA 4 Pre-Assessment (optional)

Tu
Dec 12
 
Assigned
  • SoLA 4 (optional)

F
Dec 15
 
Due
  • SoLA 4 (optional, by 5pm)
  • All remaining MP redos (optional, by 5pm)
Winter Break