The handouts included in this section were distributed so that students would not have to copy down code during class; they are not intended to stand alone outside of class.
Lecture notes files.
| LEC # |
TOPICS |
| 1 |
Goals of the course; what is computation; introduction to data types, operators, and variables |
| 2 |
Operators and operands; statements; branching, conditionals, and iteration |
| 3 |
Common code patterns: iterative programs |
| 4 |
Decomposition and abstraction through functions; introduction to recursion |
| 5 |
Floating point numbers, successive refinement, finding roots |
| 6 |
Bisection methods, Newton/Raphson, introduction to lists |
| 7 |
Lists and mutability, dictionaries, pseudocode, introduction to efficiency |
| 8 |
Complexity; log, linear, quadratic, exponential algorithms |
| 9 |
Binary search, bubble and selection sorts |
| 10 |
Divide and conquer methods, merge sort, exceptions |
| 11 |
Testing and debugging |
| 12 |
More about debugging, knapsack problem, introduction to dynamic programming |
| 13 |
Dynamic programming: overlapping subproblems, optimal substructure |
| 14 |
Analysis of knapsack problem, introduction to object-oriented programming |
| 15 |
Abstract data types, classes and methods |
| 16 |
Encapsulation, inheritance, shadowing |
| 17 |
Computational models: random walk simulation |
| 18 |
Presenting simulation results, Pylab, plotting |
| 19 |
Biased random walks, distributions |
| 20 |
Monte Carlo simulations, estimating pi |
| 21 |
Validating simulation results, curve fitting, linear regression |
| 22 |
Normal, uniform, and exponential distributions; misuse of statistics |
| 23 |
Stock market simulation |
| 24 |
Course overview; what do computer scientists do? |