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: Thursdays, 1:30-3:00pm in Towne 305
Instructor:
Sumit Shyamsukha ssumit@seas.upenn.edu
TAs:
Sumit Shyamsukha
Arun KirubarajanMonday: 12-2pm (Weiss Tech House)
Cassandra LiMonday: 4-6pm (Weiss Tech House)
Shivansh InamdarFriday: 11am-1pm (Weiss Tech House)
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 65% of the grade and the final project accounts for 35%.


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.

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. Part of the first lecture will be walking students through an effective and helpful Python setup on their personal computers.


Date Topic Class Material Homework
August 30 Week 1:
Introduction
Jupyter Notebook
Slides
HW 1
September 6 Week 2:
Comprehensions and Functions
Jupyter Notebook
HW 2
September 13 Week 3:
Object-Oriented Programming
Jupyter Notebook
HW 3
Test File 1
Test File 2
September 20 Week 4:
Iterators, Generators, Exceptions
Jupyter Notebook
September 27 Week 5:
HTTP and Web Scraping
Jupyter Notebook
October 11 Week 6:
HTTP and Web Development
Example Code
Lecture Notes
HW 4
October 18 Week 7:
Machine Learning
Jupyter Notebook
October 25 Week 8:
Machine Learning
Jupyter notebooks available on Piazza
November 1 Week 9:
Deep Learning and Convolutional Neural Networks
Basic Classification with Keras
CNNs with Tensorflow
Jupyter Notebook
HW 5
November 8 Week 10:
Natural Language Processing
Lecture Slides
November 15 Week 10:
Natural Language Processing
Colab Notebook