ICS 46 Spring 2017
Notes and Examples

Notes and examples, from lecture and otherwise

Over the course of the quarter, I'll be providing notes and commented code examples for you, on all of the topics that we cover in the course. When we write code in lecture, you can assume that they will be turned into full-scale code examples and be posted here afterward; for other topics, I'll write up a detailed set of lecture notes. I'd like to turn these into something complete and instructive — and this process takes some time, so it's best, in general, not to expect these to be available right away, but I will generally try to have them available before the next lecture, at the latest.

Note that you are not permitted to simply copy and paste this code into your own projects, but, of course, the techniques employed may also be of general use to you in your work. These examples are intended to give you clean, well-documented examples of some of the things we cover in lecture (and possibly a few things that we don't, time permitting), so that you can be free in lecture to avoid trying to take detailed notes when we're writing code together, instead concentrating on understanding the process and the bigger-picture concepts at work.

Lecture Date(s) Description
Tu 4/4 Course Introduction
Tu 4/4
Th 4/6
Th 4/6 Randomness
Tu 4/11
Th 4/13
Smart Pointers
Th 4/13 Asymptotic Analysis
Tu 4/18 Multidimensional Data
Tu 4/18 Linked List Variations
Th 4/20 Stacks, Queues, and Deques
Tu 4/25 Amortized Analysis
Tu 4/25 Asymptotic Analysis of Recursion
Tu 4/25
Th 4/27
General Trees
Th 4/27 Tree Traversals
Tu 5/2 N-ary and Binary Trees
Tu 5/2 Binary Search Trees
Th 5/4 AVL Trees
Tu 5/9 Skip Lists
Tu 5/9
Tu 5/16
Hash Tables
Tu 5/16 Move Semantics
Th 5/18 Priority Queues
Tu 5/23 Graphs
Th 5/25 Graph Traversals
Th 5/25
Tu 5/30
Graph Connectedness
Tu 5/30 Graphs: Shortest Paths
Tu 5/30 Graphs: Topological Ordering
Th 6/1
Tu 6/6
Comparison-Based Sorting
Th 6/8 Linear-Time Sorting