Phylogeny ProblemClass 2: Orders of Growth [PPT, PDF] (Notes)
Course Structure and Expectations
Evaluating Algorithms
Predicting Program PropertiesSection 1: Orders of Growth, Python
Orders of Growth
O and Ω Notation
Class 3: Levels of Abstraction [PPT, PDF]
Θ and little-oClass 4: Dynamic Programming [PPT, PDF]
Levels of Abstraction
List Datatype
Dynamic ProgrammingSection 2: List Representations
Needleman-Wunsch Algorithm
Introducting Trees
Class 5: Logs and Trees [PPT, PDF]
Public Key CryptographySection 3: Recursive Definitions
Fast Exponentiation
Tree Traversal
PS1 and CS216 Grading Scheme
Class 6: Ordered Data Abstractions [PPT, PDF]
Dictionary Data AbstractionClass 7: Greedy Algorithms [PPT, PDF]
Binary Search
Ordered Binary Tree
Greedy AlgorithmsClass 8: Computational Complexity [PPT, PDF]
Interval Scheduling
Subset Sum
Complexity ClassesClass 9: Low-Level Programming [PPT, PDF]
P vs. NP
NP-Completeness
NP-Complete Problems
Why hard problems are useful?Class 10: *&!%[]++ (Pointers) [PPT, PDF]
Knapsack Ciphers
Thought and Abstraction
Introduction to C
Bounds checkingClass 11: Managing Memory [PPT, PDF]
Rvalues and Lvalues
Pointers
Python's List implementation
Memory ManagementClass 12: Automating Memory Management [PPT, PDF]
malloc
free
Resizing lists
Class 13: Huffman Codes [Chalk]
Class 14: Optimality of Huffman Codes [Chalk]
Class 15: Compression [PPT, PDF] (slides not used in class)
Class 17: 0xCAFEBABE (Virtual Machines) [PPT, PDF]
Class 18: Code Safety [PPT, PDF]
Class 19: Java Security [PPT, PDF]
Class 20: Hair-Dryer attacks and Introducing x86 [PPT, PDF]
Class 21: Calling Conventions [PPT, PDF]