Course Schedule

Readings in italic are optional recommendations for further background on the material.

Week 1

M
Sep. 12
Welcome to CSCI 0145!
We discuss the structure of the class and briefly introduce computational thinking.
Learning Objectives
Computational Thinking
Reading
Course syllabus
Collaboration and academic honesty
Course resources
Asking for help
Algorithms and bugs
W
Sep. 14
Expressions and Variables
We discuss expressions -- the simplest recipes for computations -- and variables, which allow us to store the results of computations for later use.
Learning Objectives
Computational Thinking
Python Programming
Reading
Expressions
Variables
T
Sep. 15
Guided Discovery: Introduction to Strings
We learn some ways to manipulate text, save the results, and show them to the user. We'll come back to advanced text manipulation much later in the course.
Learning Objectives
Python Programming
Applications
Activity
GD1
F
Sep. 16
Functions
Functions are reusable computational recipes. We discuss the basic ingredients of a function and work through some simple examples.
Learning Objectives
Computational Thinking
Python Programming
Reading
Functions (1-3)
ThinkPython 3.1-3.7

Week 2

M
Sep. 19
More on Functions
We discuss some important considerations for writing functions and using functions that other people have written. Our main topics are variable scope, documentation, and modules.
Learning Objectives
Computational Thinking
Python Programming
Reading
Functions (4-5)
ThinkPython 3.8-3.14
Assigned
HW1
W
Sep. 21
Control Flow
We discuss how to make decisions when executing a program.
Learning Objectives
Computational Thinking
Python Programming
Reading
Conditionals
How Pair Programming Really Works by Stuart Wray
Think Like a Computer Scientist, Chapter 7
T
Sep. 22
Guided Discovery: Practice With Functions and Control Flow
We practice writing functions that make simple decisions in response to user input.
Learning Objectives
Computational Thinking
Python Programming
Social Responsibility
Activity
GD2
F
Sep. 23
Lab: Developers as Decision-Makers
We use our skills with gathering user input, writing functions, and making simple decisions that prioritize some users over others. We also practice the human-centered design process.
Learning Objectives
Python Programming
Design and Collaboration
Social Responsibility
Activity
Lab 1
Assigned
Lab 1

Week 3

M
Sep. 26
Recursion
We study recursion, a powerful tool for writing simple solutions to complex problems by breaking them down into smaller problems.
Learning Objectives
Computational Thinking
Reading
Recursion
ThinkPython 5.8-5.14
Assigned
HW2
Due
HW1
W
Sep. 28
Recursion and Recursive Graphics
We continue our study of recursion while creating simple recursive graphics.
Learning Objectives
Computational Thinking
Reading
Turtle Graphics
Due
Lab 1
T
Sep. 29
Guided Discovery: Recursion and Performance
We learn some ways to measure and analyze the performance of functions, and use these techniques to study the performance implications of recursive techniques.
Learning Objectives
Computational Thinking
Python Programming
Activity
GD3
F
Sep. 30
Lab: Fractal Graphics with Recursion
We practice writing functions to produce recursive graphics with the turtle module.
Learning Objectives
Computational Thinking
Python Programming
Activity
Lab 2
Assigned
Lab 2

Week 4

M
Oct. 03
Iteration
We introduce definite and indefinite iteration as a method for performing repeated tasks.
Learning Objectives
Computational Thinking
Python Programming
Reading
Iteration
Think Like a Computer Scientist 8.1-8.9, 9.10-9.14
Think Python Chapter 7
Foundations of Python Programming 7.1-7.4, 14
Assigned
HW3
Due
HW2
W
Oct. 05
Lists
We introduce lists, data structures that can hold ordered sequences of arbitrary objects. We also begin to discuss some of the synergies between lists and iteration.
Learning Objectives
Computational Thinking
Python Programming
Reading
Lists
Think Like a Computer Scientist 10.1-14
Think Python Chapter 10
Foundations of Python Programming 6
Due
Lab 2
T
Oct. 06
Lab: Iteration and Lists
We write functions that check the validity of International Standard Book Numbers (ISBNs). Along the way, we practice writing functions, iteration, and map-filter-reduce operations.
Learning Objectives
Computational Thinking
Python Programming
Applications
Activity
Lab 3
Assigned
Lab 3
F
Oct. 07
Guided Discovery: Iteration and Lists
We work on several common patterns for manipulating lists using iteration.
Learning Objectives
Computational Thinking
Python Programming
Activity
HW4, Problem 1

Week 5

M
Oct. 10
List Operations: Map, Filter, and Reduce
We discuss the map-filter-reduce paradigm for operating on lists of data, and work several examples.
Learning Objectives
Computational Thinking
Python Programming
Reading
Lists, Section 2
Lecture script
Assigned
HW4
W
Oct. 12
More Data Structures: Dictionaries and Tuples
We discuss two other useful data structures, with a special emphasis on the role of dictionaries in representing relationships between pieces of data.
Learning Objectives
Computational Thinking
Python Programming
Reading
Data Structures
Lecture script
T
Oct. 13
Lab: Developers as Future-Makers
We write functions that filter applicants to an opportunity according to a set of numerical criteria, and reflect on the ethical challenges associated with such filters. Along the way, we practice iteration and working with lists.
Learning Objectives
Computational Thinking
Python Programming
Social Responsibility
Activity
Lab 4
Assigned
Lab 4
F
Oct. 14
No Class!
Midterm Recess

Week 6

M
Oct. 17
Review: Recursion
We work together on several problems to reinforce core concepts and techniques for recursive problem-solving.
Learning Objectives
Computational Thinking
Python Programming
Reading
Recursion
Lecture Script
Due
HW4
W
Oct. 19
Representing Data: Integers
We begin a discussion of why computers represent data in binary, and how to convert between binary and decimal representations of integers.
Learning Objectives
Computational Thinking
Reading
Representing Data
Lecture Slides
Due
Lab 4

Week 7

M
Oct. 24
Representing Data: Floating Point Numbers
We continue our discussion of data representation. We highlight some of the challenges for computers in representing floating point numbers.
Learning Objectives
Computational Thinking
Reading
Representing Data
Lecture Slides
Assigned
HW5
W
Oct. 26
Representing Data: and Images
We discuss representations of digital images as arrays of pixels.
Learning Objectives
Computational Thinking
Python Programming
Applications
Reading
Representing Data
Image Processing
Lecture Slides
Assigned
HW5
T
Oct. 27
Lab: Image Manipulation
We write functions that allow us to manipulate digital images. We implement brightening, contrast-heightening, reflection, and several other transformations.
Learning Objectives
Computational Thinking
Python Programming
Applications
Activity
Lab 5
Assigned
Lab 4

Week 8

M
Oct. 31
Introducing Object-Oriented Programming
We begin a discussion of object-oriented programming, the standard approach in Python for writing complex programs by combining data (attributes) and behavior (methods).
Learning Objectives
Computational Thinking
Python Programming
Reading
Object-Oriented Programming
Lecture Slides
Assigned
HW5
W
Nov. 02
More Object-Oriented Programming
We continue using object-oriented programming to implement complex program behavior.
Learning Objectives
Computational Thinking
Python Programming
Reading
Object-Oriented Programming
Lecture Slides
Assigned
HW5
T
Nov. 03
Lab: Object-Oriented Programming
We use object-oriented programming to create a set of interacting classes that model a computer science course.
Learning Objectives
Computational Thinking
Python Programming
Activity
Lab 6
Assigned
Lab 6

Week 9

M
Nov. 07
Unit Testing
We introduce unit testing, an automated framework for checking correct functionality of small pieces ("units") of code.
Learning Objectives
Python Programming
Applications
Reading
Blog Post on Medium
Assigned
Lab 6
W
Nov. 09
More Unit Testing
We continue with an extended example of unit-testing.
Learning Objectives
Python Programming
Applications
Reading
Blog Post on Medium
Assigned
Lab 6
T
Nov. 10
Lab: Developers as Prioritizers
We develop our skills using object-oriented interfaces while reflecting on some of the difficult choices posed by automated vehicles and rescue services.
Learning Objectives
Social Responsibility
Applications
Activity
Lab 7
Assigned
Lab 7

Week 10

M
Nov. 14
String Methods
We survey several important string methods and use them for basic text analysis tasks.
Learning Objectives
Python Programming
Applications
Reading
String methods reference
A Guide to Formatting with f-strings in Python
Assigned
Lab 6
W
Nov. 16
Case Study: Lines in Plays
We use string methods in combination with our iteration and data structure skills to count the number of lines spoken by each character in Shakespeare's Hamlet.
Learning Objectives
Python Programming
Applications
Reading
String methods reference
A Guide to Formatting with f-strings in Python
Assigned
Lab 6
T
Nov. 17
Lab: The Hedonometer
We implement sentiment analysis in the style of The Hedonometer at the University of Vermont, and use it to analyze the emotional arc of several famous speeches.
Learning Objectives
Social Responsibility
Applications
Activity
Lab 8
Assigned
Lab 8

Week 11

M
Nov. 21
Thanksgiving Break!
No class this week, enjoy the holiday!

Week 12

M
Nov. 28
Introducing Analysis of Algorithms
We begin the study of analyzing the worst-case runtime of algorithms using big-O analysis.
Learning Objectives
Analysis
Computational Thinking
Reading
Computational Complexity
ThinkPython2e, Appendix B
Assigned
Lab 6
No matching items



© Philip Claude Caplan, Andrea Vaccari, and Phil Chodrow, 2022