The assigned readings listed below are meant to provide you reinforcement and a reference for the material discussed in lectures and used for projects. The textbook that we will use for this purpose is available as a free PDF file [if you are unfamiliar with PDF files, start here]:
Think Python
Variables, expressions, statements: Chapter 2, through Section 2.7.
Conditionals and Booleans: Chapter 5, through 5.7.
Loops: Chapter 7, particularly 7.2 through 7.4.
Functions: Chapter 3, through 3.9; Chapter 6, through 6.4.
Strings: Chapter 8, through 8.7, plus 8.10.
Lists: Chapter 10, through 10.5.
Recursion and the stack: Sections 5.8, 5.9, 6.5, and 6.6.
Objects and dotted methods: Sections 8.8, 8.9, 10.4 through 10.6, 10.8, and 10.10.
Dictionaries: Chapter 11, through 11.4.
Tuples: Chapter 12, through 12.3.
File processing and exceptions: Chapter 14, through 14.5.
Not everything that we covered is in the textbook (or, at least, not addressed by it sufficiently). Here is a (not necessarily comprehensive) list of the other topics we addressed:
Searching: Linear and binary search algorithms.
Sorting: Bubble sort, selection sort, and merge sort.
Running time estimation: Counting operations and Big-O expressions.
Divide and conquer algorithms: Splitting a problem into smaller pieces, solving the pieces, and merging the results.
Problem classes: Tractable vs. intractable vs. incomputable (e.g., the halting problem).
Intelligence and computation-as-logic: An overview of how computation works, and how far it might possibly go.