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

Course syllabus

Textbook