Schedule

The schedule below shows the tentative dates for all class topics, readings, and assignments. You should complete all assigned reading before class on the day it is listed. Labs will be available shortly before the assigned lab day. There may be some revisions to the schedule during the semester, but I will make sure to announce these changes in class.

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 27
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, Continued



W
Sep 1
class 3

Algorithmic and image decomposition

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



F
Sep 3
class 4

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.

Week 2 : Scheme/Racket basics

M
Sep 6
class 5

Expressions and types

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





F
Sep 10
class 7

Pause for breath

We pause to review some concepts from two weeks of the course.

Week 3 : A miscellany
M
Sep 13
class 8

Pair programming

We explore the whys and hows of working with others. We also catch up on any confusing issues from the first week of class as we prepare for the first set of learning assessment.



W
Sep 15
class 9

Lists

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



F
Sep 17
class 10

Lists, revisited

We continue our exploration of lists in Racket, including “the big three” list procedures: map, reduce, and filter.

Week 4 : Another miscellany

M
Sep 20
class 11

Files and regular expressions

We begin to explore regular expressions, tools used to identify patterns in strings. We also consider files, structures that store data, often for use by other programs.


W
Sep 22
class 12

Review

We check in to make sure that we’re beginning to master the first set of concepts.

Reading
  • No reading
Lab
  • No lab

Th
Sep 23
 
Due
  • Learning Assessments 1

F
Sep 24
class 13

Files and regular expressions, continued

We continue our exploration of regular expressions and files.

Week 5 : Software design
Su
Sep 26

M
Sep 27
class 14

Tu
Sep 28

W
Sep 29
class 15

Documenting and testing your code

We consider documentation for your programs: Why to write documention, when to write documentation, how to write documentation.
We also consider testing: When, why, and how you might test the procedures and programs that you write.



F
Oct 1
class 16

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.

Week 6 : Thinking recursively
Su
Oct 3

M
Oct 4
class 17

W
Oct 6
class 18

Recursion practice

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



F
Oct 8
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.

Week 7 : Recursion, continued
M
Oct 11
class 20

Patterns of Recursion

We consider a host of other issues in the design of recursive procedures.

Reading
  • No reading

W
Oct 13
class 21

Review

We check in to make sure that we’re beginning to master the second set of concepts. We revisit concepts missing from the first learning assessment inventory.


Th
Oct 14
 
Due

F
Oct 15
class 22

Randomness

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

Fall Break
Week 8 : Organizing data
Su
Oct 24

M
Oct 25
class 23

Pairs

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


Tu
Oct 26

W
Oct 27
class 24

Dictionaries and hash tables

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


Th
Oct 28

F
Oct 29
class 25

Vectors

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

Week 9 : Abstract data types and data structures

M
Nov 1
class 26

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.



W
Nov 3
class 27

Structured data

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

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


F
Nov 5
class 28

Getting started with HTML and CSS

We begin to consider the content and structure of the course, exploring both our laboratory environment (Linux workstations) and mechansisms for representing and styling text.

Topics: Getting started with Linux. Generalized markup with XML. Web markup with HTML. Page styling with CSS.

Week 10 : Recursion, mostly

M
Nov 8
class 29

Processing XML

We consider how one writes programs that process HTML and XML.

Topics: XML, revisited. Representing XML in Racket. Expressing patterns in XML. Seaching XML. Constructing new documents from old.


W
Nov 10
class 30

Review

We check in to make sure that we’re beginning to master the third set of concepts. We revisit any missing concepts from earlier assessments.

Reading
  • No reading
Lab
  • No lab

Th
Nov 11
 
Due

F
Nov 12
class 31

Transforming XML

We consider additional ways to transform XML documents.

Topics: Replacing elements. Inserting elements. Deleting elements. Other approaches.

Week 11 : Recursion, mostly

M
Nov 15
class 32

Higher-order recursive design

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



F
Nov 19
class 34

Project prep

We prepare to undertake an individually designed project.

Week 12 : Trees

M
Nov 22
class 35

Trees

We consider a common hierarchial mechanism for structuring data and its relationship to Scheme/Racket and XML/HTML.



W
Nov 24
class 36

Tree recursion

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

Thanksgiving Break
Week 13 : Algorithms

M
Nov 29
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.


W
Dec 1
class 38

Sorting

We explore the problem of sorting. When you sort a list, vector, or other collection, you put the elements in order. The order of the elements usually corresponds to the type of the elements. We might sort strings alphabetically, grades numerically, colors by brightness, and so on and so forth. We also reflect on one common sorting algorithm.

Reading
  • No reading
Lab
  • No lab/Discussion day


F
Dec 3
class 39

Case study: Mergesort

We continue our exploration of sorting by considering the applicability of the divide-and-conquer approach to the problem of sorting. We look at one particular divide-and-conquer algorithm, merge sort. We explore the relationship between the number of steps the algorithm typically takes and the number of values in the list we are sorting.

Week 14 : Wrapping up

M
Dec 6
class 40

Project presentations

Students present their projects

Reading
  • No reading
Lab
  • No lab
Due
  • Lab writeup from class 39 (Mergesort)

W
Dec 8
class 41

Review

We check in on the last set of topics and revisit any necessary topics from earlier in the term.

Reading
  • No reading
Lab
  • No lab

Th
Dec 9
 
Due
  • Learning Assessments 4

F
Dec 10
class 42

Wrapup

We conclude the course.

Reading
  • No reading
Lab
  • No lab
Finals Week
Winter Break