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. The level of this course is equivalent to CS 109 and 110; therefore students may earn credit for at most one of CS 109, 110, and 111. Absolutely no prior experience is necessary.