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 1 : Preliminaries
W
Jan 22
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


Sa
Jan 25
 
Due
  • MP 1 Pre-reflection
Week 2 : Fundamentals of Scheme programming
M
Jan 27
class 3

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
Jan 29
class 4

RGB colors

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


Th
Jan 30

F
Jan 31
Week 3 : Models of computation
Su
Feb 2
 
Due
  • MP 2 Pre-reflection

M
Feb 3
class 5

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”.


W
Feb 5
class 6

Transforming images

We expand our understanding of RGB transformations to image transformations.



F
Feb 7
class 7

Building procedures, revisited

We continue our explorations from the previous class.

Week 4 : A miscellany
Su
Feb 9
 
Due
  • MP 3 Pre-reflection

M
Feb 10
class 8

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.


W
Feb 12
class 9

Snow day

It snows. Sam cancels class.

Reading
  • No reading
Lab
  • No lab
Due
  • Quiz 3


F
Feb 14
class 10

Characters and strings

We explore the ways in which we represent text in Scheme, including both strings and the characters we use to build strings.

Week 5 : Thinking with lists
Su
Feb 16
 
Due
  • SoLA 1 Pre-reflection


W
Feb 19
class 12

Booleans, predicates, and conditionals

We consider how one writes procedures that make decisions.


Th
Feb 20
 
Due
  • SoLA 1

F
Feb 21
class 13

Lists

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

Week 6 : Another miscellany
Su
Feb 23
 
Due
  • MP 4 Pre-reflection

M
Feb 24
class 14

Processing lists

We explore ways to use lists to work with collections of drawings using “the big three” list procedures: map, reduce, and filter. We also consider other ways of processing lists, particularly how we sort lists and tally individual values in lists.


W
Feb 26
class 15

Other ways to build lists

We continue our exploration of lists through some “finer-grained” operations.



F
Feb 28
class 16

Ethical considerations in computing

Now that we’ve spent 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 7 : Introducting recursion

M
Mar 3
class 17

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
Mar 5
class 18

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
Due
  • Quiz 6


F
Mar 7
class 19

Local bindings

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

Spring Break
Week 8 : Expanding our notions of recursion
Su
Mar 23
 
Due
  • SoLA 2 Pre-reflection

M
Mar 24
class 20

Introduction to list recursion, continued

We continue our introductory exploration of recursion in Scheme.

Assigned
  • SoLA 2

W
Mar 26
class 21

Recursion practice

We continue to continue our introductory exploration of recursion in Racket.


Th
Mar 27
 
Due
  • SoLA 2

F
Mar 28
class 22

Pause for breath

We pause to reflect on various recursion issues.

Reading
  • No reading
Lab
  • No lab
Due
  • SoLA 2 Post-reflection
Week 9 : Thinking with data
Su
Mar 30
 
Due
  • MP6 Pre-Reflection

M
Mar 31
class 23

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.


W
Apr 2
class 24

Pairs

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



F
Apr 4
class 25

Vectors

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

Reading
Due
  • MP 6 Post-reflection
Week 10 : More thinking with data
Su
Apr 6
 
Due
  • MP 7 Pre-reflection

M
Apr 7
class 26

Vectors, continued

We continue to explore vectors.

Reading
  • No reading

W
Apr 9
class 27

Randomness

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



F
Apr 11
class 28

Dictionaries and hash tables

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

Due
  • MP 7 Post-reflection
Week 11 : Abstracting data
M
Apr 14
class 29

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.


Tu
Apr 15
 
Due
  • SoLA 3 Pre-reflection

W
Apr 16
class 30

Structured data

We consider Racket’s techniques for creating structured data types.

Topics: Structured data. Using structs. Mutable and immutable structs.


F
Apr 18
class 31

Higher-order recursive design

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

Week 12 : Yet another miscellany
M
Apr 21
class 32

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.


W
Apr 23
class 33

Project kickoff

We introduce the final project for the semester.


Th
Apr 24
 
Due
  • SoLA 3

F
Apr 25
class 34

Trees

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

Reading
Due
  • SoLA 3 Post-reflection
Week 13 : Binary trees
Su
Apr 27
 
Due
  • MP 9 Pre-reflection

M
Apr 28
class 35

Tree recursion

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


W
Apr 30
class 36

Project work day

We provide class time for students to their projects.

Reading
  • No reading
Lab
  • No lab
Due
  • Quiz 12

F
May 2
class 37

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.

Week 14 : Wrappping up

M
May 5
class 38

Case study: Sorting

We explore techniques for sorting lists and vectors

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

W
May 7
class 39

Project presentations

Students present their projects

Reading
  • No reading
Lab
  • No lab

Th
May 8
 
Due
  • MP 9 Post-reflection
  • SoLA 4

F
May 9
class 40

Wrapup

We conclude the course.

Reading
  • No reading
Lab
  • No lab
Due
  • SoLA 4 Post-reflection
  • End-of-course evaluation
Finals Week
Tu
May 13
 
Assigned
  • SoLA 5

F
May 16
class 41

All outstanding mini-project redos and learning assessments due by 5pm

The College requires that all work be submitted by 5pm. The only work I will accept at this point will be learning assessments from SoLA 5 (none are new) and redos of mini-projects.

Reading
  • No reading
Lab
  • No lab
Due
  • SoLA 5
Summer