CSCI 134

Introduction to Computer Science

Lecture Videos | Labs | Resources


Instructors: Duane A. Bailey (email: bailey)
Molly Q. Feldman (email: mqf1)
Technical Support:Lida Doret (email: lpd2)
Course Calendar:
Lecture (on-line): Posted (see Lecture Videos) prior to discussion
Discussion (Remote):MWF 9:20-10:10 or 10:40-11:30
Labs (Remote):M 1:30-2:45pm, with Feldman; or
M 1:30-2:45pm or 3:15-4:30pm, with Bailey; or
T 9:45-11:00am or 3:15-4:30pm, with Bailey.
Textbook: (Recommended) Think Python (2nd Edition), found at and here
(Alternate) Introduction to Computation and Programing Using Python, (2nd Edition), found at Amazon
TAs: Hannah Ahn, Amelia Chen, Lindsey Chu, Sophie Goldstein, Hugo Hua, Surya Kotapati, Gavin Li, Lauren McCarey, Saul Richardson, Ben Shapiro, Mira Sneirson, Jules Walzer-Goldfeld, Meredith Wolf, and George Yacoub
TA Hours:Posted to the Course Calendar
Web Resources: (this page!)

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, 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. Lecture material for this course will be delivered through this page and Glow. During these lectures we investigate new concepts and problem solving strategies. Students are expected to have reviewed the lectures before attending scheduled synchronous discussion sections. There, we will discuss the material in greater detail, with a focus on applying learned techniques to sample problems. We expect a dynamic approach to class discussions that will allow us to steer our focus in directions of mutual interest. Each week students will work on a larger, independently worked lab project. Students will check in, virtually, with the teaching staff during scheduled ``laboratory'' meetings to gauge progress and receive feedback. Teaching assistants will hold regular remote hours, focused on small group interaction. Throughout the semester students will complete ``weeklies'': quick Glow check-ins with questions that will directly prepare students for quizzes. We will have three more formal Glow quizzes on March 26, April 19, and a final, on May 25.

Work. Students are responsible for watching pre-recorded lectures, and participating in discussion sections. Each week, students will complete either a \glowcourse\ weekly check-in or a formal quiz. Most weeks will require students to complete a lab, a significant programming exercise.

Grading. Your final grade will be determined according to the following: (1) Participation is expected, (2) Glow ``weekly'' check-ins: 10%, (3) Glow quizzes: 30%, and (4) Weekly lab assignments: 60%. Weekly labs will be graded on a 10 point scale. Excellent implementation of the bare minimum requirements of a lab will earn between 8.5 and 9. Higher grades will be awarded for demonstrating extended effort and dedication to thoughtful experimentation. We believe there is an aesthetic to presenting solutions to problems in Python. Students should be aware a portion of their lab grade is earned for writing beautiful programs that are easy to read and understand.


Course Syllabus
Department Honor Code and Computer Usage Policy

Lecture Videos

Description | Labs | Resources

Due Date Video Link ZIP file (contains notebook, PDF, data files)
February 19 CS134-S21: Welcome! (3 videos, 24:49)
Monday, Feb. 22 CS134: Types (5 Videos, 1:02:07)
Wednesday, Feb. 24 CS134: If Statements (26:28)
CS134: Using Jupyter Notebooks to Enrich Lectures (12:59)
Friday, Feb. 26 CS134: Functions (2 Videos, 31:54)
Monday, Mar. 1 CS134: Modes of Python Execution (21:14)
Wednesday, Mar. 3 CS134: Iteration (2 Videos, 57:04)
Monday, Mar. 8 CS134: Abstraction (9:39)
Wednesday, Mar. 10 CS134: Lists and Tuples (2 Videos, 39:23)
Friday, Mar. 12 CS134: Sets and Dictionaries (2 Videos, 36:42)
Monday, Mar. 15 CS134: Files and CSVs (1 Video, 10:01)
Wednesday, Mar. 17 CS134: Using Comprehensions (1 Video, 26:08)
Friday, Mar. 19 CS134: Mutability and The Object Model
(2 Videos, 35:12)
Monday, Mar. 29 CS134: Turtle Graphics (29:47)
Wednesday, Mar. 31 CS134: Basic Recursion (18:31)
Friday, Apr. 2 CS134: Advanced Recursion (27:20)
Monday, April 5 CS134: Simple Class Design (35:09)
Wednesday, April 7 CS134: Advanced Class Design (26:32)
Monday, April 12 CS134: Building a Container Class (17:50)
Monday, April 26 CS134: Inheritance (2 Videos, 46:00)
Wednesday, April 28 CS134: Sorting I (3 Videos, 47:53)
Friday, April 30 CS134: Sorting II (3 Videos, 27:11) (see above)
Monday, May 3 CS134: Iterators (7:41)
CS134: Generators (2 Videos, 27:02)


Description | Lecture Videos | Resources

Release Date Topic Introductory Video
February 15 Before we begin: Setting up Your Computer
February 19 Lab 1: The Python/Git Workflow Lab 1 video (12:29)
February 26 Lab 2: Computing the Day of the Week Lab 2 video (16:19)
March 5 Lab 3: Building a Python Toolbox Lab 3 video (11:58)
March 12 Lab 4: Debugging Lab 4 video (11:44)
March 26 Lab 5: Analyzing Precedent in the Supreme Court Lab 5 video (14:25)
April 2 Lab 6: Fun with Recursion Lab 6 video (14:34)
April 9 Lab 7: k-Means Clustering Lab 7 video (16:16)
April 23 Lab 8: Simple Ciphers Lab 8 video (24:18)
May 7 Lab 9: Functionally Finding Faculty Facts! Lab 9 video (16:32)


Description | Lecture Videos | Labs

Setting up Your Computer.
Duane's Incredibly Brief Intro to Unix and Emacs
Think Python, a textbook
A Python Style Guide