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: Wednesday 12:00-1:30pm in Towne 309
Instructor:
Robert Rand rrand@seas
Office Hours: Friday 2:30 - 4:30pm, Levine 513 and by appointment.
TAs:
Adel Qalieh adelq@seas Monday 3-5pm, DRL 2C2
Dan Gillis dagillis@seas Thursday 4-6pm, DRL 4N30
Harry Smith sharry@sas Tuesday 3-5pm, Moore 212
Prerequisites: CIS 110; CIS 120 recommended
Links: Piazza
Canvas
Official Python 2.7 Documentation

You should have Python 2.7 installed on your machine (we'll be using this popular version of Python in order to explore several libraries that still lack support for Python 3).

You should have Python development environment (we recommend Eclipse with PyDev, but other options include Emacs, vim, Notepad++, Textmate, Sublime or the Python specific IDLE or iPython) for following along with examples in class.

There will be weekly homework and a final project. Homework accounts for 65% of the grade, the project accounts for 30%, and the remaining 5% is for class participation. Homework is due on Sunday at 11:59pm eleven days after it is assigned.

March 13th: Deadline for submitting project proposal (name of team member(s) and one to two paragraphs description).

April 27th: Final Projects Due.

April 28th, 29th: Project Demos.

-->
Date Topic Class Material Homework
Jan 20 Week 1:
Introduction
Slides
Code
HW 1 (Due: Jan 31)
Test 1
Jan 27 Week 2:
Data Structures
Slides
Code
HW 2 (Due: Feb 7)
Test 2
Feb 3 Week 3:
Functional Programming
Slides
Code
HW 3 (Due: Feb 14)
Test 3
Feb 10 Week 4:
Object-Oriented Programming
Slides
Code
HW 4 (Due: Feb 21)
Test 4
Feb 17 Week 5:
Iterators, Exceptions and IO
Slides
Code
HW 5 (Due: Feb 28)
Test 5, Inputs
Feb 24 Week 6:
Regular Expressions
Slides
Code
HW 6 (Due: March 6)
Test 6, Inputs
March 2 Week 7:
Probability and Simulations
Slides
Code
HW 7 (Due: March 20)
March 16 Week 8:
Machine Learning (part 1)
Slides
Code
HW 8 (Due: March 27)
Test Image
March 23 Week 9:
Machine Learning (part 2)
Slides
Code
HW 9 (Due: April 3)
Data
March 30 Week 10:
HTTP Requests and HTML Parsing
Slides
Code
HW 10 (Due: April 10)
Test 10
April 6 Week 11:
Django and Web Development
Slides
Code
Django Tutorial (Optional)
Work on Project
April 13 Week 12:
Data Visualization
Slides
Code
Practice Data
Work on Project
April 20
Week 13:
Graphical User Interfaces
Slides
Code
Sign up for demo slot
Work on Project
April 27
Week 14:
Parallel and Distributed Computing
Slides
Code, Fabric
Fabric Tutorial (Optional)
Submit Final Project