CSCI 134C
Introduction to Computer Science
Lectures | Labs | Homeworks | Resources
Home
Instructor: | Duane A. Bailey |
Lab Instructors: | Duane A. Bailey, Iris Howley, and Carl Rustad |
Email: | bailey@cs.williams.edu |
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 greentreepress.com 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.
Policies
Course Syllabus
Department Honor Code and Computer Usage Policy
Lectures
Description | Labs | Homeworks | Resources
Date | Topic |
---|---|
September 7 | Lecture 1. Hello, world. |
September 10 | Lecture 2. Simple calculations. |
September 12 | Lecture 3. Code reuse with scripts and functions. |
September 14 | Lecture 4. Functions and conditional code. |
September 17 | Lecture 5. The art of finding and hiding the details. |
September 19 | Lecture 6. Iteration. |
September 21 | Lecture 7. Catching up; strings. |
September 24 | Lecture 8. Interpretation. |
September 26 | Lecture 9. Lists and Tuples. |
September 28 | Lecture 10. Dictionaries and Sets. |
October 1 | Lecture 11. Files, memoization, oh my. |
October 3 | Lecture 12. Generators. |
October 10 | Lecture 13. Generators and iterators. |
Midterm Study | Midterm Sample |
October 12 | Lecture 14. Generators, the last lecture. |
October 15 | Lecture 15. Presenting data. |
October 16 | Lecture 16. Classes I. |
Laboratories
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. |
Homeworks
Description | Lectures | Labs | Resources
Due Date (place) | Topic |
---|---|
September 10 | Homework 0. Data and algorithms. |
September 17 | Homework 1. First bits of Python. |
September 24 | Homework 2. Abstraction and Simplification. |
October 1 | Homework 3. Indexing and simplification. |
October 10 | Homework 4. Mutability, references, and debugging. |
October 15 | Homework 5. Generators. |
Resources
Description | Lectures | Labs
Item |
---|
The Text |
Typical workflows |
Duane's Incredibly Brief Intro to Unix and Emacs |