Lecture calendar

                  LecturesReading and Materials
Week 1

Lectures 1 and 2: Welcome to ESC180. Expressions and variables. A very simple program. Conditionals. The quadratic equation. Numerical types (if there is time). Lecture 1 stream, Lecture 2 stream

Suggested readings for the next couple of lectures: Downey chapters 1-2 and/or Gries chapters 1-2. Note: you're only responsible for the material in lecture. However, some people learn best by reading, which is why I'm listing readings.

Learning outcomes: be able to run a very simple Python program in PythonTutor. Undrestand that a program is a series of instructions. Understand what syntax is, both in natural (human) languages and in programming languages.

Just for fun: Timothy Gowers, Why isn't the Fundamental Theorem of Arithmetic Obvious. Colorless green ideas sleep furiously.

Week 2

Lecture slides. Sept. 9 recording. Sept 11 recording. Sept. 13 Recording. Passing data to and from functions. weare.py



Suggested readings continue reading Downey Ch. 1-2 and/or Gries Ch. 1-2.

Suggested readings: Downey Ch. 3, Gries Ch. 3

Learning outcomes: Be able to trace Python programs in PythonTutor. Be able to write simple functions. Understand the distinction between syntax errors and "name not found" errors in Python. Be able to identify some syntax errors and name not found errors in simple examples. Understand that Python executes code line-by-line and understand why Python cannot find "name not found" errors ahead of time. Understand that string, float, and int types are different. Understand the difference between int and floats types. Understand the limitations of the float types. Understand why comparisons between floats and ints can be problematic. Understand why physical measurements can usually be stored in a float. Understand conversion between different types, and understand why e.g. "42" + 42 will produce an error but "42" + str(42) won't.

Week 3

Lecture slides. wo2_trace.py. Control flow using return statements. Sept. 16 recording. Sept. 18 recording. Sept 20 recording

An analogue of project 1

Reading: Downey Ch 1.5, Downey 7.1-7.4 or Gries 9.1-9.3. (Note: the lecture content this week is a bit different from the way things are covered in either textbook).

Exercises: CodingBat Warmup-1, Warmup-2, Logic 1

Learning outcomes: Understand the different ways information is communicated to functions: passing an argument, modifying a a global variable to be read by the function. Understand the different ways information is communicated from functions: via return, and by modifying a global variable.

Week 4

Week 4 slides. Sept 23 recording, Sept 25 recording, Sept 27 recording

Topics: Loops, Boolean algebra, problem solving

Reading: Downey Ch. 7, Gries Ch. 9

Week 5

Week 5 slides. Sept 30 lec, Oct 2 lec, Oct 4 lec

Reading: Downey Ch. 7, Gries Ch. 9 Topics: Loops and lists, problem-solving with loops and lists

Week 6 Week 6 slides. Oct 7 lec, Oct 9 lec, Oct 11 lec

Reading: Gries Ch. 4, 7.3. Downey Ch. 8,

Topics: Nested loops, nested lists, problem-solving with nested loops,

Week 7

Lecture slides, Oct 16 lec, Oct 18 lec

Reading: Gries Ch. 4, 7.3. Downey Ch. 8, .

Topics: Odds and ends for lists and strings, eval, exec, problem-solving with nested sturctures, the Python memory model (maybe)

Week 8 Slides

Topics: Algorithms, problem-solving, intro to the Python memory model.

Week 9

Slides

Reading: intro to the Python memory model, continued

Week 10

Topics: The Python memory model, binary search, introduction to complxity

Reading: Computational complexity notes

Week 11

Topics: Complexity continued

Week 12 Call trees, MergeSort

Topics: Recursion, problem-solving, and complexity analysis.

ESC190 Week 1 Slides

Topics: Recursion, problem-solving, and complexity analysis.