CS 111: Discovering Computer Science
This course is an introduction to computational problem solving. Students will develop their abilities to abstract (or model) otherwise complex problems and generate elegant and efficient solutions. Students will practice these skills by developing computer programs that solve problems motivated by research in the sciences. Additional topics may include Monte Carlo methods, data analysis, population dynamics, computational biology, genetic algorithms, cellular automata, networks, data mining, and fractals. Absolutely no prior experience is necessary.
Topics
Week | Topic | Programming topics | Reading | Project |
---|---|---|---|---|
1-2 | What is CS?, Elementary computations in Python | variables, assignment, calling functions, strings | Chap 1-2 | |
2-3 | Abstraction and turtle graphics | turtle graphics, using objects, for loops, writing functions, documentation | Chap 3 | |
4-5 | Growth and decay with difference equations | for loops, accumulators, while loops, matplotlib.pyplot, lists | Chap 4 | Lotka-Volterra predator/prey model |
6-7 | Monte Carlo simulations | conditional statements, random, boolean operators, while loops | Chap 5 | Narrow escape problem |
7-8 | Text analysis | strings, indices, slices, iteration over strings, text files, nested loops | Chap 6 | ORF detection in DNA sequences |
9 | Program design | unit testing, assert statements, top-down design | Chap 7 | |
10 | Data analysis | lists, indices, slices, list parameters, tuples, dictionaries, tabular files | Chap 8 | Climate change |
11 | 2-D data, cellular automata, image filters | lists of lists, nested loops | Chap 9 | Ferromagnetism (Metropolis algorithm), dendrites |
12-13 | Fractals and recursion | writing recursive functions | Chap 10 | Lindenmayer systems |
14 | Organizing data (sort and search) | nested loops, recursion | Chap 11 | Final project |