CSCI 134C

Introduction to Computer Science

Lectures | Labs | Homeworks | Resources

Home

Instructor: Iris Howley
Co-Instructor: Duane A. Bailey
Email: iris@cs.williams.edu
Office: Chemistry 308
Office Hours:Iris (TCL308): Tues. TBD, Wed. 12:30-2:30p, Thurs. 1-2:30p
Duane (TPL306): Mon. 2:30-4:30p, Tues. 7:30-9p, Thurs. 9:45-11:20a
Lectures: MWF 11-11:50 Chemistry 123 (Wege)
Labs: M 1-2:30pm, 2:30-4pm, T 10-11:30am, 1-2:30pm, 2:30-4pm, TCL 217a
Textbook: Think Python (2nd Edition), found at greentreepress.com and here
TAs:Noah Andrew, Chris Anton, Will Burford, Jimmy DeLano, Jacob Justh, Julia Kawano, Aidan Lloyd-Tucker, Grace Mazzarella, Nevyn Neal, Nathan Thimothe, Alex Trevithick, Linda Zeng
TA Hours:Sun. 4-10pm, Mon-Thu. 7-10pm, +Wed. 2-4p (in TPL312), +Wed. 4:30-6:30pm, Thu. 6-10p., + Thu. 4-5:30p (All office hours in TCL217a, unless otherwise described)

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, we 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. We expect that this work will be continued outside of scheduled time. There are also weekly written homework assignments to support lecture and lab learning.

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 March 5 (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
February 1Lecture 1. Hello, world.
February 4Lecture 2. Variables & Assignment. | POGIL 1. Intro to Python. | POGIL 3. Arithmetic & Assignment.
February 6Lecture 3. Functions. | POGIL 12. Void Functions. | POGIL 13. Value-Return Functions.
February 8Lecture 4. Booleans & Conditionals. | POGIL 5 & 7. Booleans & Nested Conditionals. | POGIL 6. If-Else Statements.
February 11Lecture 5. Loops & Abstraction. | POGIL 8. While Loops. | POGIL 9 & 10. For Loops & Nested Loops.
February 13Lecture 6. Lists & Mutability. | POGIL 16. Lists. | POGIL 11. Pre-defined Built-in Functions
February 13Lecture 7. Strings. | POGIL 18. More Lists and Strings.

Laboratories

Description | Lectures | Homeworks | Resources

Date Topic
February 4 Lab 1. Introduction to the Python/git workflow
February 11 Lab 2. Implementing an Algorithm (Moon Age)

Homeworks

Description | Lectures | Labs | Resources

Due Date (place) Topic
February 4 (in-class)Homework 0. Data and algorithms.
February 11 (in-class)Homework 1. Arithmetic.
February 18 (in-class)Homework 2. Abstraction.

Resources

Description | Lectures | Labs

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