6.00 | Fall 2008 | Undergraduate
Introduction to Computer Science and Programming

## Calendar

LEC # TOPICS KEY DATES
1 Goals of the course; what is computation; introduction to data types, operators, and variables Problem set 0 out
2 Operators and operands; statements; branching, conditionals, and iteration

Problem set 0 due

Problem set 1 out

3 Common code patterns: iterative programs

Problem set 1 due

Problem set 2 out

4 Decomposition and abstraction through functions; introduction to recursion

Problem set 2 due

Problem set 3 out

5 Floating point numbers, successive refinement, finding roots
6 Bisection methods, Newton/Raphson, introduction to lists

Problem set 3 due

Problem set 4 out

7 Lists and mutability, dictionaries, pseudocode, introduction to efficiency
8 Complexity; log, linear, quadratic, exponential algorithms Problem set 4 due
Quiz 1 Problem set 5 out
9 Binary search, bubble and selection sorts
10 Divide and conquer methods, merge sort, exceptions

Problem set 5 due

Problem set 6 out

11 Testing and debugging
12 More about debugging, knapsack problem, introduction to dynamic programming

Problem set 6 due

Problem set 7 out

13 Dynamic programming: overlapping subproblems, optimal substructure

Problem set 7 due

Problem set 8 out

14 Analysis of knapsack problem, introduction to object-oriented programming
15 Abstract data types, classes and methods

Problem set 8 due

Problem set 9 out

Quiz 2 Problem set 9 due
17 Computational models: random walk simulation Problem set 10 out
18 Presenting simulation results, Pylab, plotting

Problem set 10 due

Problem set 11 out

19 Biased random walks, distributions
20 Monte Carlo simulations, estimating pi

Problem set 11 due

Problem set 12 out

21 Validating simulation results, curve fitting, linear regression
22 Normal, uniform, and exponential distributions; misuse of statistics
23 Stock market simulation Problem set 12 due
24 Course overview; what do computer scientists do?