LECTURE SLIDES
Preliminaries
- Welcome
(slides)
-
grade school algorithms for arithmetic
(slides)
-
log, mod, binary numbers
(slides)
Introduction to Java
- Java primitive types
(slides)
- Java programming overview (JVM, JRE, JDE, IDE,...)
(slides)
- Java arrays
(slides)
- Java objects & classes 1
(slides)
- Java objects & classes 2
(slides)
- Java packages, visibility modifiers
(slides)
Linear Data Structures 1
- array lists
(slides)
- singly linked lists
(slides)
-
doubly linked lists
(slides)
- quadratic sorting algorithms
(slides)
bubble, selection, & insertion sort
Object Oriented Design in Java
- inheritance
(slides)
- polymorphism
(slides)
- interfaces and abstract classes
(slides)
- Comparable and Iterable
(slides)
Linear Data Structures 2 (and ADTs)
-
stacks
(slides)
-
queues
(slides)
Induction and Recursion
- mathematical induction
(slides)
- recursion 1
(slides)
factorial & Fibonacci, reverse/sort list, Tower of Hanoi; call stack
- recursion 2
(slides)
binary search, mergesort 1
- recursion 3
(slides)
mergesort 2, quicksort
Non-linear Data Structures
-
rooted trees
(slides)
-
tree traversal
(slides)
-
binary trees e.g. expression trees
(slides)
-
binary search trees
(slides)
-
heaps 1
(slides)
-
heaps 2
(slides)
-
maps, hash codes
(slides)
-
hash maps
(slides)
-
graphs
(slides)
-
graph traversal (breadth vs depth first)
(slides)
Mathematical Tools for Analysis of Algorithms
-
recurrences 1
(slides)
-
recurrences 2
(slides)
-
big O
(slides)
-
big Omega
(slides)
-
big Theta, best and worst cases
(slides)
|
EXERCISES
Exercises 1: grade school arithmetic, number representations
(PDF)
Exercises 3: array lists
(PDF)
Exercises 4: linked lists
(PDF)
(code)
Exercises 5: quadratic sorting
(PDF)
Exercises 6: stacks and queues
(PDF)
Exercises 7: induction
(PDF)
Exercises 8: recursion
(PDF)
Exercises 9: trees
(PDF)
Exercises 10: heaps
(PDF)
Exercises 11: hashing
(PDF)
Exercises 12: graphs
(PDF)
Exercises 13: recurrences
(PDF)
Exercises 14: big O
(PDF)
|