Interdisciplinary Problems, Principles, and Python Programming
Second Edition
by Jessen Havill
Publisher website
This is a sample schedule for an introductory CS course based on the textbook. This particular outline is oriented toward scientific applications. When I teach a section oriented more toward applications in the social sciences, I usually omit Sections 4.4, 6.8, and 9.6, and add Chapter 11 (Networks).
problem solving, pseudocode, functional decomposition, introduction to Python
Chapter 1: How to Solve It
Section | Title | Exercises |
---|---|---|
1.1 | Understand the problem | 1-3 |
1.2 | Design an algorithm | 1(b)-(c), 2(b)-(c), 4-9, 11, 13 |
1.3 | Write a program | 1, 3-6, 8-11, 13, 15, 18, 20, 22 |
1.4 | Look back | 1, 3(c), 3(f) |
turtle graphics, functions, program structure
Chapter 2: Visualizing Abstraction
Section | Title | Exercises |
---|---|---|
2.1 | Data abstraction | 1, 3, 5, 7, 8, 10 |
2.2 | Drawing flowers and plotting earthquakes | 1, 3, 4, 7, 10, 11 |
2.3 | Functional abstraction | 1, 3, 4, 11, 13, 14, 23, 26 |
2.4 | Programming in style | 3, 4, 8 |
2.5 | A return to functions | 4-9, 11-14, 17, 18, 20, 22 |
2.6 | Score and namespaces (briefly) | 2, 3, 4, 6, 9 |
loops, accumulators, lists, plotting
Chapter 4: Growth and Decay
Section | Title | Exercises |
---|---|---|
4.1 | Accumulators | 1-3, 6-8, 12, 14, 17-19, 20, 23, 28, 32(a-b) |
4.2 | Data Visualization | 1, 2, 7-9 |
4.3 | Conditional iteration | 2, 3, 5, 6, 8-10 |
4.4 | Continuous models | 1-8 |
4.6 | Summing up |
Project: Lotka-Volterra model
fetch and execute cycle, memory, binary, computer arithmetic
Chapter 3: Inside a Computer
Section | Title | Exercises |
---|---|---|
3.1 | Computers are dumb | |
3.2 | Everything is bits | 1-13 |
3.3 | Computer arithmetic | 3, 5, 6-8, 11, 12, 15, 16 |
if statements, random numbers, Booleans, while loops, testing
Chapter 5: Forks in the Road
Section | Title | Exercises |
---|---|---|
5.1 | Random walks | 3-5, 8, 9, 15, 16, 18, 19 |
5.4 | Back to Booleans | 2, 3, 6, 8, 10, 11, 16, 19, 23, 24, 26 |
5.5 | Defensive programming | 2, 6, 10, 11 |
5.6 | Guess my number | 2-4, 6 |
Project: Escape!
strings, string accumulators, files, searching
Chapter 6: Text, Documents, and DNA
Section | Title | Exercises |
---|---|---|
6.1 | First steps | 2, 4, 5, 8, 11, 14, 19-26 |
6.2 | Text documents | 1, 2 |
6.3 | Encoding strings | 1-4, 7, 10, 12-14, 18, 19 |
6.4 | A concordance | 1, 3-5, 13 |
6.5 | Word frequency trends | 5, 7 |
6.8 | Computational genomics | 2, 4-7, 11, 13, 19 |
Project: Finding genes
lists, dictionaries, CSV files
Chapter 7: Data Analysis
Section | Title | Exercises |
---|---|---|
7.1 | Summary statistics | 2, 3, 5, 8-11, 14, 17 |
7.2 | Wrangling data | 1, 3-6, 12, 13, 18 |
7.3 | Tallying frequencies | 2, 3, 6, 12, 17, 22 |
7.4 | Reading tabular data | 2, 4, 5, 7 |
Project: Climate change
lists of lists, nested loops
Chapter 8: Flatland
Section | Title | Exercises |
---|---|---|
8.1 | Tabular data | 1-3, 7-10 |
8.2 | The Game of Life | 4, 5, 10 |
8.3 | Digital images | 1, 4, 7, 9 |
Project: Simulating an epidemic
Chapter 9: Self-similarity and recursion
Section | Title | Exercises |
---|---|---|
9.1 | Fractals | 1-5 |
9.2 | Recursion and iteration | 1-6, 9, 10, 13-15 |
9.3 | The mythical Tower of Hanoi | 1, 2 |
9.4 | Recursive linear search | 3, 5 |
9.6 | Lindenmayer systems |
Project: Percolation
Chapter 10: Organizing Data
Section | Title | Exercises |
---|---|---|
10.1 | Binary search | 2, 4-6 |
10.2 | Selection sort | 1, 2, 5, 6, 8 |
10.4 | Efficient sorting | 1, 4, 6, 7 |
Final project (group-designed)