Introduction to Computer Science

Lectures | Labs | Homeworks | Resources


Instructor: Duane A. Bailey
Lab Instructors: Duane A. Bailey, Iris Howley, and Carl Rustad
Office: Physics 306
Office Hours:Duane (TPL306): T1-3pm, W7:30-9:30pm, R1-3pm
Iris (TCL308): W11-2pm
Carl (TCL206): R7-10pm
Lectures: MWF 9-9:50 Physics 203
Labs: M 1-2:30pm, 2:30-4pm, T 8:30-10am, 10-11:30am, 2:30-4pm, TCL 217a
Textbook: Think Python (2nd Edition), found at and here
TAs:Taylor Beebe, Will Burford, Betsy Button, Peter Christie, Javier Esparza, Abby Fournier, Ariel Koltun-Fromm, David Lee, Grace Mazzarella, Maria Mejia, Dzung Pham, Alexander Smith-Bove, Alex Taylor
TA Hours:Sun-Thu 7-10pm, Tues 8-11am, Wed 10am-noon, Thu 9am-Noon (TCL 217a)

Course Description

We are surrounded by information. This course introduces fundamental computational concepts for representing and manipulating data. Using the programming language Python, this course explores effective ways to organize and transform information in order to solve problems. Students will learn to design algorithms to search, sort, and manipulate data in application areas like text and image processing, social networks, scientific computing, and databases. Programming topics covered include procedural, object-oriented, and functional programming, control structures, structural self-reference, arrays, lists, streams, dictionaries, and data abstraction. This course is appropriate for all students who want to create software and learn computational techniques for manipulating and analyzing data.

Organization. During lecture hours we will typically learn new concepts through the building of new tools to solve simple problems. While the learning process is initially supported by an online text, I expect a dynamic approach to the class that will allow us to steer lectures in directions of mutual interest. During formal lab hours, we will meet for 90 minutes to begin work on a more extended problem. I expect that this work will be continued outside of scheduled time. As the end of the semester nears, we'll individualize common projects to focus on topics of our own interest. On occasion, we may meet in lab during our lecture hours.

Work. You are responsible for reading supporting material and participating as the semester progresses. In addition, some topics may require you to investigate online resources (documentation, tutorials, and the like). Each week you will be responsible for completing a programming assignment (35 percent) in addition to a written homework (15 percent). There will be a midterm examination on October 16 (25 percent) and a scheduled final (T.B.A., 25 percent). We reserve the right to adjust grades by as much as 5 percent to reflect course participation.


Course Syllabus
Department Honor Code and Computer Usage Policy


Description | Labs | Homeworks | Resources

Date Topic
September 7Lecture 1. Hello, world.
September 10Lecture 2. Simple calculations.
September 12Lecture 3. Code reuse with scripts and functions.
September 14Lecture 4. Functions and conditional code.
September 17Lecture 5. The art of finding and hiding the details.
September 19Lecture 6. Iteration.
September 21Lecture 7. Catching up; strings.
September 24Lecture 8. Interpretation.
September 26Lecture 9. Lists and Tuples.
September 28Lecture 10. Dictionaries and Sets.
October 1Lecture 11. Files, memoization, oh my.
October 3Lecture 12. Generators.
October 10Lecture 13. Generators and iterators.
Midterm StudyMidterm Sample
October 12Lecture 14. Generators, the last lecture.
October 15Lecture 15. Presenting data.
October 16Lecture 16. Classes I.


Description | Lectures | Homeworks | Resources

Date Topic
September 10 Lab 1. Introduction to the Python/git workflow
September 17 Lab 2. Computing the Age of the Moon
September 24 Lab 3. Building a Python toolbox.
October 1 Lab 4. Debugging.
October 15 Lab 5. Presenting Data.


Description | Lectures | Labs | Resources

Due Date (place) Topic
September 10Homework 0. Data and algorithms.
September 17Homework 1. First bits of Python.
September 24Homework 2. Abstraction and Simplification.
October 1Homework 3. Indexing and simplification.
October 10Homework 4. Mutability, references, and debugging.
October 15Homework 5. Generators.


Description | Lectures | Labs

The Text
Typical workflows
Duane's Incredibly Brief Intro to Unix and Emacs