Python Programming (Section 1)

Title Python Programming (Section 1) (51042-1)
Quarter Autumn 2017
Instructor Nicholas Ryan Flees (nickflees@cs.uchicago.edu)
Website

TBD

Syllabus

Course Description
Python is an increasingly popular, general-purpose, dynamically-typed, interpreted, object-oriented programming language used in a wide variety of contexts, including systems programming, web development, scientific computing, data analysis, and many, many others.

The course is an accelerated introduction to programming in Python 3 for students with some programming experience, albeit not necessarily in Python. Successful students will gain an understanding of the core fundamentals of the language (and of programming in general), plus experience working with several important and useful packages and modules.

Instructor Bio
Nick is a software engineer for the Barksdale Trading Group at Lupo Futures, where he writes and maintains proprietary trading, risk-analysis, and data-visualization applications for market makers in exchange-traded interest-rate derivatives. In total, he has worked for more than a decade in trading and finance, including co-founding an equity options trading firm and building an execution-optimization application for the capital markets group of a multi-billion-dollar mortgage lender.

He is an alumnus of the Master's Program in Computer Science and also holds a Bachelor of Science degree in Mathematics from the University of Michigan.

Course Format
Class will meet weekly for instructor-led, example-driven sessions, featuring both lectures and live programming. Student participation is welcome and highly encouraged.

Coursework
Assignments: Eight multi-part programming assignments.
Exams: Two in-class exams.

Textbooks

  • (Required) Learning Python, 5th Edition, Lutz (O’Reilly Media), ISBN: 978-1-449-35573-9
  • (Optional) Fluent Python, Ramalho (O’Reilly Media), ISBN: 978-1-491-9-46008

Other Resources

Tentative Schedule

Week

Topics

Reading Due

Assignments Due

1: Sep 27

Introduction

- Python Language History

- Basic overview of syntax, types, control flow, iteration, program structure

- Setting up a development environment

- Command Line Basics

None

None

2: Oct 4

What is Python?

- Python Interpreter

- Python Conceptual Hierarchy

- Python Data Model: Numbers, Sequences, Sets, Mappings, I/O Objects

Lutz 2-4, 6

Assignment 1

3: Oct 11

Functions, Modules, and Scope

- Functions, Scope

- Arguments, Pass by Assignment

- Lambda Functions

- Generators

Lutz 16-19

Assignment 2

4: Oct 18

Object-Oriented Programming I: Basics

- Objects and Classes

- Methods

- Inheritance, Encapsulation, Polymorphism,

- Operator-Overloading

Lutz 26-30

Assignment 3

5: Oct 25

Object-Oriented Programming II: Design

Decorators

Midterm Review

Lutz 31-32, 39

Assignment 4

6: Nov 1

Midterm Exam

 

Assignment 5

7: Nov 8

Working with the File System

- Python Standard Library: pathlib, glob, stat

- Command Line Tools: grep, find, stat

PyMOTW: The File System

None

8: Nov 15

Working with Data

- Data Formats: CSV, JSON, XML

- Third-Party Packages: pandas, numpy, matplotlib

- Data Persistence: pickle, Redis, SQL Databases

10 Minutes to pandas,

NumPy Quickstart Tutorial

Assignment 6

9: Nov 22

Threading and Concurrency

PyMOTW: Concurrency

Assignment 7

10: Nov 29

Designing a Larger Application

- Writing Modules and Packages

- Configuration

 

Assignment 8

11: Dec 6

Final Exam

 

None

Prerequisites (Courses)

MPCS 50101 or passing score on the programming placement exam.

Prerequisites (Other)

Satisfies

Core Programming

Time

Wednesday 5:30-8:30 pm

Location

Young 302