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

Recursion practice

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


W
Oct 4
class 18

Local bindings

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



F
Oct 6
class 19

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.

Due
  • Quiz 5
  • MP 4 Post-Assessment
Assigned
  • Mini-Project 5: TBD
Week 7 : Image models and more
Su
Oct 8
 
Assigned
  • MP 5 Pre-Assessment

M
Oct 9
class 20

Transforming images

We expand our understanding of RGB transformations to image transformations.

Reading
  • /readings/transforming-images.html
Lab
  • /labs/transforming-images.html

W
Oct 11
class 21

Drawings as values

We return to our first model of images to explore a few more mechanisms for working with with such images and to compare models.

Reading
  • /readings/drawings-as-values.html
Lab
  • /labs/drawings-as-values.html

Th
Oct 12
 
Due
  • Mini-Project 5: TBD

F
Oct 13
class 22

Images as functions

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

Reading
  • /readings/image-compute.html
Lab
  • /labs/image-compute.html
Due
  • Quiz 6
  • MP 5 Post-Assessment
Assigned
  • Mini-Project 6: TBD
Fall Break
Week 8 : Representing collections of data
Su
Oct 22
 
Due
  • MP 6 Pre-Assessment

M
Oct 23
class 23

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?

Reading
  • No reading
Lab
  • /labs/ethics-in-computing.html

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.

Reading
  • /readings/pairs.html
Lab
  • /labs/pairs.html

Th
Oct 26
 
Due
  • Mini-Project 6: TBD

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
  • /readings/vectors.html
Lab
  • /labs/vectors.html
Due
  • Quiz 7
  • MP 6 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
Lab
  • /labs/vectors-continued.html

W
Nov 1
class 27

Dictionaries and hash tables

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

Reading
  • /readings/hash-tables.html
Lab
  • /labs/hash-tables.html
Assigned
  • SoLA 2

Th
Nov 2
 
Due
  • SoLA 2

F
Nov 3
class 28

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.

Reading
  • /readings/data-abstraction.html
Lab
  • /labs/data-abstraction.html
Due
  • Quiz 8
  • SoLA 2 Post-Assessment
  • MP 7 Pre-Assessment
Assigned
  • Mini-Project 7: TBD
Week 10 : The return of recursion
M
Nov 6
class 29

Higher-order recursive design

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

Reading
  • /readings/higher-order-recursive-design.html
Lab
  • /labs/higher-order-recursion.html

W
Nov 8
class 30

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.

Readings
  • /readings/tail-recursion.html
  • /readings/list-recursion-revisited.html
Lab
  • /labs/tail-recursion.html

Th
Nov 9
 
Due
  • Mini-Project 7: TBD

F
Nov 10
class 31

Randomness

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

Reading
  • /readings/randomness.html
Lab
  • /labs/exploring-randomness.html
Due
  • Quiz 9
  • MP 7 Post-Assessment
Assigned
  • Mini-Project 8: TBD
Week 11 : Turtle graphics
Su
Nov 12
 
Due
  • MP 8 Pre-Assessment

M
Nov 13
class 32

Turtle graphics

We consider “turtle graphics”, a model of image making originally popularized by the Logo programming language. We also review issues of side effects and program state.

Readings
  • /readings/side-effects-reviewed.html
  • /readings/turtle-graphics.html
Lab
  • /labs/turtle-graphics.html

W
Nov 15
class 33

Iteration

We consider iteration, particularly as it may apply to turtle graphics.

Reading
  • /readings/iteration.html
Lab
  • No lab

Th
Nov 16
 
Due
  • Mini-Project 8: TBD

F
Nov 17
class 34

Project Kickoff

We introduce the final project for the semester.

Reading
  • Mini-Project 8: TBD
Lab
  • No lab
Due
  • Quiz 10
  • MP 8 Post-Assessment
Assigned
  • Mini-Project 9: A procedure is worth a thousand pictures
Week 12 : Complexity
Su
Nov 19
 

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.

Readings
  • /readings/analysis.html
  • /readings/searching.html
Lab
  • /labs/searching.html

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

Trees

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

Reading
  • /readings/trees-ex.html
Lab
  • /labs/binary-trees.html

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

Th
Nov 30
 
Due
  • Mini-Project 9: A procedure is worth a thousand pictures

F
Dec 1
class 39

Tree recursion

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

Readings
  • /readings/tree-recursion.html
  • /readings/binary-search-trees.html
Lab
  • /labs/tree-recursion.html
Due
  • Quiz 12
Week 14 : Wrap-up
Su
Dec 3
 
Due
  • SoLA 3 Pre-Assessment

M
Dec 4
class 40

Case study: sorting

We dive into a related problem: sorting the elements of a sequence.

Reading
  • /readings/sorting.html
Lab
  • /labs/sorting.html

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
 
Assigned
  • SoLA 4 (optional)

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