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