Welcome! This is a half-credit mini course on Python programming.

Why learn Python? The short answer is:

>>> print("Hello World")

The longer answer is that Python is a powerful and popular programming language, useful for building large systems as well as writing small scripts. It has intuitive syntax, extensive libraries, and supports both object-oriented and functional programming methodologies. In this class, we will explore a variety of these features through hands-on exercises and a final open-ended project.

Time/Place: Wednesdays, 1:30-3:00pm in Towne 303
Harry Smith sharry@sas
Luke Mainwaring lukemain@sas
Surabhi Suresh surabhis@seas
Office Hours:
Harry Smith (DRL 4N30):Fridays, 1:00-3:00
Luke Mainwaring (Towne Active Learning Classroom):Mondays, 2:00-3:00 PM & Wednesdays, 3:00-5:00 PM
Surabhi Suresh (CHEM 514):Thursdays, 3:00 PM-5:00 PM
Prerequisites: CIS 110; CIS 120 highly recommended
Links: Piazza
Official Python 3.4 Documentation

There will be weekly homeworks and a final project. Homeworks account for 70% of the grade, the final project accounts for 25%, and the remaining 5% is for class participation.

Homework for this class will typically take the form of weekly coding assignments, typically designed to be completed in the range of 1-5 hours of effort. Students frequently spending upwards of 10 hours on the homework assignments should seek help in office hours. In order to make the class more rewarding, there will be some weeks where the typical "recitation" section of the course is replaced by an active office hour where the instructor and TA will be on hand to guide students through and answer questions about the homework assignment for the week. These weeks will usually feature homework assignments that are slightly more challenging or lengthy. These assignments are not designed to be a burden and any extra effort spent on them should hopefully be offset by the extra assistance available. Weeks where the class will take this format will be announced well ahead of time and these will not start within the first three weeks.

Working on Homeworks - Policy

Project Requirements

40 pts Functionality Does it work? How well? Do you have your features implemented?
30 pts Content Did you choose a concept that was sufficiently interesting and challenging? Did you make a reasonable attempt to meet these goals?
15 pts Tech Demo Can you effectively present your project? Does the finished product work cohesively?
15 pts Style Good PEP8 and general style, good coding practices (e.g. "with" to open files), useful documentation

This course will be taught with a minimum Python version of 3.4. Beyond this, it is not required that students work using specific distributions or IDEs. As the course uses many libraries that are not native to Python, students will be responsible for downloading these libraries to their personal machines. To simplify installation, I recommend using the most recent Anaconda distribution, which includes all relevant libraries.

Date Topic Class Material Homework
August 30 Week 1:
HW 1
Test 1
September 6 Week 2:
Data Types & Comprehensions
Testing Info
HW 2
Test 2
September 13 Week 3:
Comprehensions, Functional Programming
HW 3
Test 3
September 20 Week 4:
Object Oriented Programming
HW 4
September 27 Week 5: File I/O, Exceptions, Iterators, Generators Slides
HW 5
Test (py)
Test (zip)
October 4 Week 6: Regular Expressions and Other Modules Slides
October 11 Week 7: Probability, Simulations, and Machine Learning I Slides
HW 7
October 18 Week 8: Unsupervised Machine Learning Slides
KMeans Visualization
Datasaurus Rex
Reduced Landscape
October 25 Week 9: Supervised Machine Learning Slides
Homework 9
Homework 9 EC (15 Pts)
November 1 Week 10: HTTP Requests, HTML Parsing, JSON Slides
Submit project proposals by Nov 8
November 8 Week 11: Web Apps (Flask) Slides
November 15 Week 12: NLP Slides
Markov Chains
Twitter Dump Generator
Example Tweet Corpus
HW 12 EC Stub
November 29 Week 13: Profiling and Concurrency Code
December 6 Week 14: Final Lecture Lectures from Previous Course Iterations