| 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
|
|
|