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, 12:00-1.30pm in Towne 309
Instructor:
Harry Smith sharry@sas
TA:
Alex Frias frias@seas
Tentative Office Hours:
Harry Smith (DRL 2W11):Wednesday 1:45-3:00Thursday 10:30-11:30
Alex Frias (Weiss Tech House):Tuesday 3:15-4:15Thursday 11:30-1:30
Prerequisites: CIS 110; CIS 120 highly recommended
Links: Piazza
Canvas
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 likely 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

Installing the CIS 19x VM

Many of the homeworks/projects for CIS192 will employ exciting and powerful libraries that are not native to Python. Although it is generally simple to install these libraries on one's own personal computer, this VM is provided to the students so that personal technical issues would not prevent a student from completing an assignment on time.

Date Topic Class Material Homework
Jan 18 Week 1:
Introduction
Slides
Code
HW 1
Test 1
Jan 25 Week 2:
Data Types & Comprehensions
Slides
Code
HW 2
Test 2
Feb 1 Week 3:
Comprehensions, Functional Programming, and Testing
Testing Information Slides
Code
HW 3
Test 3
Feb 8 Week 4:
Object Oriented Programming
Slides
In-Class Code
HW 4
Test
Feb 15 Week 5: File I/O, Exceptions, Iterators, Generators Slides
Example Code
HW 5
Feb 22 Week 6: Regular Expressions Slides
Example Code
NO HOMEWORK
March 1 Week 7: HTTP Requests/HTML Parsing; Working on Web Scraper Slides
Code
Dummy Site
Dummy Site 2
Web Scraper
March 15 Week 8: Unsupervised Machine Learning Slides
Code
KMeans Visualization
PCA
Homework
Landscape
Reduced Landscape
March 22 Week 9: Supervised Machine Learning / Data Visualization Slides
Code
Scikit-learn
Matplotlib
Homework 8
March 29 Week 10: Web Apps Slides
Corrected Code
NO HOMEWORK
April 5 Week 11: Artificial Intelligence Slides
NO HOMEWORK
April 12 Week 12: NLP Slides
CFD
Markov Chains
Tweets
April 19 Week 13: Simulations & Probability Code NO HOMEWORK.
April 26 Week 14: Wrap-Up, Further Information, Fun Tips & Tricks Lectures from Previous Course Iterations
Wrap-Up Lecture
Thank you all for the great semester.