ICS H32 Fall 2025
Schedule


In lieu of a course textbook, assigned readings are mainly the Notes and Examples from lecture. It is a good idea to skim the assigned reading before the lecture for the main ideas, attend lecture, and then to go through the assigned reading again to fill in the details that you missed, both in your initial skim of the reading and in the lecture.

Date Lecture Topics Readings Assigned Work
Week 0
Lectures
  • Course introduction
  • What is Python?
  • What are software libraries?
  • Designing and writing larger programs (briefly)
  • Launching a Python shell
  • Expressions and evaluation
  • Types, objects, numbers, and operators
  • Variables
  • Values have types; variables do not
  • Naming conventions
  • Statements
  • Booleans
  • Writing Python scripts
  • Printing output and reading input
Week 1
Lectures
  • Strings
  • Conversions between types
  • Conditionality using the if statement
  • Truth testing and "truthiness"
  • Repetition using the while loop
  • Ranges
  • Iteration using the for loop
  • Abstraction
  • Writing functions
  • Parameters and arguments
  • Type checking and type errors
  • Scope and scoping rules
M 9/29
  • Lab sections begin meeting today
  • Project 0A due 11:59pm
F 10/3
Week 2
Lectures
  • Built-in data structures in Python
  • Tuples
  • Lists
  • Type annotations (briefly)
  • Files and the built-in open function
  • Why it's important to close files
  • Higher-level file access
  • File systems and related modules in Python's standard library
  • Paths
  • Exceptions and exception handling
  • try statements
  • try, except, else, and finally clauses
F 10/10
Week 3
Lectures
  • Testing
  • Categories of test cases
  • Automation of testing using the assert statement
  • Recursive data structures
  • File systems as a recursive data structure
  • Recursive functions
  • When recursion is — and is not — appropriate in Python
  • Python programs that span multiple files
  • Modules and the import statement
  • Namespaces (briefly)
  • if __name__ == '__main__'
Videos
  • Overview of computer networks (briefly)
  • Network input and output
  • Some necessary background on how the Internet works
  • IP addresses, ports, packets, routers, etc.
  • Sockets
  • A socket's input and output streams
  • Servers and clients
  • Using sockets in Python
  • Bytes vs. strings (briefly)
  • An example Python socket "echo" client
  • Using "pseudo-file" objects to treat socket input/output as text
F 10/17
Week 4
Lectures
  • Namedtuples
  • Sets
  • Dictionaries
  • Network protocols
  • The importance of knowing who and what to trust
  • Public and protected functions in a module
  • Implementing a custom text-based protocol in Python
  • More details about import and multiple modules
  • Naming conventions for modules
W 10/22
Week 5
Lectures
  • Why namedtuples are a limited way to create new kinds of objects
  • Classes
  • Objects and their attributes
  • Constructors, initialization, methods, and the self parameter
  • The difference between method calls and function calls
  • Why we specify some parts of a class as public and others as private
  • Naming conventions for classes
  • More about classes
  • Duck typing
  • Interfaces
  • Consistently designing multiple similar classes
  • Using objects of multiple similar classes without explicitly knowing their types
M 10/27
Week 6
Lectures
  • Web APIs
  • URLs with query parameters
  • URL encoding (briefly)
  • JSON (JavaScript Object Notation), and why it matters even if you're not writing JavaScript
  • Using Python's standard library to access web APIs
  • Objects, references, and id
  • Multidimensional data
  • Multidimensional list algorithms
Videos
  • Pushing out the boundaries even further: the web
  • URLs
  • HTTP
  • GET requests
  • Writing a Python program that downloads a web page given its URL
  • Why standards are so important on the Internet
  • Why HTTP is for more than just web browsers
M 11/3
W 11/5
Week 7
Lectures
Tu 11/11
  • University Holiday: Veterans' Day — NO LECTURE TODAY
F 11/14
Week 8
Lectures
Week 9
Lectures
Th 11/27
  • University Holiday: Thanksgiving — NO LECTURE TODAY
F 11/28
  • University Holiday: Thanksgiving — NO LABS TODAY
Week 10
Lectures
Finals Week
Th 12/11
  • FINAL EXAM: 7:00pm-9:00pm, BS3 1200