LECTURE SLIDES & EXERCISES
Preliminaries
- Welcome
(slides)
-
grade school algorithms for arithmetic
(slides)
-
log, mod, binary numbers
(slides)
(Exercises)
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) (exercises)
- singly linked lists
(slides)
(exercises)
(code)
-
doubly linked lists
(slides)
- quadratic sorting algorithms
(slides)
(exercises)
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)
(exercises)
Induction and Recursion
- mathematical induction
(slides)
(exercises)
- recursion 1
(slides)
(exercises)
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)
(exercises)
-
binary trees e.g. expression trees
(slides)
-
binary search trees
(slides)
-
heaps 1
(slides)
-
heaps 2
(slides)
(exercises)
-
maps, hash codes
(slides)
-
hash maps
(slides)
(exercises)
-
graphs
(slides)
-
graph traversal (breadth vs depth first)
(slides)
(exercises)
Mathematical Tools for Analysis of Algorithms
-
recurrences 1
(slides)
-
recurrences 2
(slides)
(exercises)
-
big O
(slides)
(exercises)
-
big Omega
(slides)
-
big Theta, best and worst cases
(slides)
|