MPCS 51042 Python Programming (Autumn 2017)

Section 1
Instructor(s) Ryan Flees, Nicholas (nickflees)
Location Young 302
Meeting Times Wednesday 5:30pm - 8:30pm
Website: TBD
Fulfills Core Programming


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.

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


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



Reading Due

Assignments Due

1: Sep 27


- Python Language History

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

- Setting up a development environment

- Command Line Basics



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


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


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



Course Prerequisites

MPCS 50101 or passing score on the programming placement exam.

Other Prerequisites

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 55001-2 -- Algorithms