CSCI 134

Introduction to Computer Science

Lecture Videos | Labs | Resources


Welcome video: Welcome to Introduction to Computer Science
Instructors: Daniel Aalberts (mail: daalbert)
Duane A. Bailey (mail: bailey)
Molly Q. Feldman (Lab only, mail: mqf1)
Office Hours:See the Course Calendar
Lecture (on-line): Posted Sundays, Tuesdays, Thursdays
Discussion (Hybrid):MWF 9:20-10:10, Bailey, Remote
MWF 12:00-12:50, Aalberts, in-person, Wege (TCL 123)
Labs (Remote):M 1:30-2:45pm or 3:15-4:30pm, with Bailey; or
M 1:30-2:45pm or 3:15-4:30pm, with Feldman; or
T 9:45-11:00am or 3:15-4:30pm, with Aalberts.
Textbook: (Recommended) Think Python (2nd Edition), found at and here
(Alternate) Introduction to Computation and Programing Using Python, (2nd Edition), found at Amazon
TAs:Alexandra Bonat, Amelia Chen, Kirun Cheung, Harun Curak, Caleb Dittmar, Scarlet Rusch, Benjamin Siu, Mira Sneirson, Nathan Thimothe, Jules Walzer-Goldfeld, Meredith Wolf, and George Yacoub
TA Hours:See the Course Calendar
Web Resources:
Technical Support:Lida Doret (email: lpd2)

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 on-line, through 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 October 7, November 11, and during finals.

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

Date Video Link ZIP file (contains notebook, PDF, data files)
Friday, Sept. 11 CS134: Welcome (2 Videos, 15:33)
Monday, Sept. 14 CS134: Types (5 Videos, 1:02:07)
Wednesday, Sept. 16 CS134: If Statements (26:28)
Friday, Sept. 18 CS134: Functions (2 Videos, 31:54)
Monday, Sept. 21 CS134: Modes of Python Execution (21:14)
Wednesday, Sept. 23 CS134: Iteration (2 Videos, 57:04)
Monday, Sept. 28 CS134: Abstraction (9:39)
Wednesday, Sept. 30 CS134: Lists and Tuples (2 Videos, 39:23)
Friday, Oct. 2 CS134: Sets and Dictionaries (2 Videos, 36:42)
Monday, Oct. 5 CS134: Files and Comprehensions (2 Videos, 36:09)
Friday, Oct. 9 CS134: Mutability and The Object Model
(2 Videos, 35:12)
Wednesday, Oct. 14 CS134: Iterators (7:41)
Friday, Oct. 16 CS134: Generators (2 Videos, 27:02)
Monday, Oct. 19 CS134: Simple Class Design (35:09)
Wednesday, Oct. 21 CS134: Advanced Class Design (26:32)
Friday, Oct. 23 CS134: A Container Class (17:50)
Wednesday, Oct. 28 CS134: Basic Recursion (18:31)
Friday, Oct. 30 CS134: Advanced Recursion (27:20)
Oct. 30 (for Lab 7) CS134: Turtle Graphics (29:47)
Nov. 6 CS134: Inheritance (2 Videos, 46:00)
Nov. 13 CS134: Sorting I (3 Videos, 47:53)
Nov. 16 CS134: Sorting II (3 Videos, 27:11) (see above)


Description | Lecture Videos | Resources

Date Topic Introductory Video
September 8 Before we begin: Setting Up Your Computer
September 11 Lab 1: Introduction to the Python/git Workflow Lab 1 video (6:28)
September 18 Lab 2: Computing the Age of the Moon Lab 2 video (21:33)
September 25 Lab 3: Building a Python Toolbox Lab 3 video (22:08)
October 2 Lab 4: Debugging Lab 4 video (17:49)
October 16 Lab 5: Building an Oracle Lab 5 video (38:12)
October 23 Lab 6: Clustering Data using K-Means Lab 6 video (17:04)
October 30 Lab 7: Fun with Recursion Lab 7 video (18:37)
November 6 Lab 8: Simple Ciphers Lab 8 video (27:51)
November 3 Lab 9: Trivia! Lab 9 video (UPDATED, 14:26)
November 30 Lab 10: More Efficient Covid Testing Lab 10 video (26:27)


Description | Lecture Videos | Labs

Think Python, a textbook
A Python Style Guide
Using Jupyter Notebooks, a guide for following along Jupyter-aided lectures.
Duane's Incredibly Brief Intro to Unix and Emacs
Setting Up Your Computer