CIS 192: Python Programming

Spring 2020

Welcome! Python is a powerful language with both imperative and functional paradigms. As one of the fastest growing languages of all time, Python is widely across academia and industry. This course aims to not only teach you valid Python syntax, but also introduce you to the rapidly growing ecosystem. In particular, this course will familiarize you with algorithms, development environments, and applications ranging from web development to machine learning through programming assignments. The course also features a final project of your choosing! In past years, these final projects have been very impressive uses of Python.


Logistics

Instructor: Jorge Mendez
Time: Wednesdays from 3:00 to 4:20 PM @ Towne 303
Teaching assistants: Jonah Miller, Daksh Chhokra
Office Hours:
Tue 1:00 to 3:00 PM @ Levine 4th Floor Bump Space zoom.us/j/867202222 (Jorge Mendez)
Wed 12:00 to 1:00 PM @ Levine 6th Floor Bump Spac zoom.us/j/462356606 (Jonah Miller)
Thu 12:00 to 1:00 PM @ Levine 5th Floor GRW zoom.us/j/462356606 (Jonah Miller)
Fri 5:00 to 7:00 PM @ Levine 5th Floor GRW zoom.us/j/913320433 (Daksh Chhokra)



Syllabus and schedule

This is a tentative syllabus and schedule. Topics and due dates are subject to change. All assignments and projects are due by 11:59:59pm Eastern time on Friday of the week listed.

Week Topics Resources Homework
Week 1 Logistics, Basic Python Syntax Slides, Examples
Week 2 Data Structures, Functions Slides, Examples HW1 out
Week 3 args, kwargs, functional programming, file I/O Slides, Examples HW1 due, HW2 out
Week 4 Exceptions, classes, iterables, iterators, generators Slides, Examples HW2 due, HW3 out
Week 5 Modules, packages, package managers, virtual environments, Jupyter, and IDEs Slides HW3 due
Week 6 NumPy, Matplotlib Slides, Examples HW4 out
Week 7 Pandas Slides, Examples HW4 due, HW5 out
Week 8 No class — Spring break
Week 9 No class — Spring break
Week 10 scikit-learn Slides, Examples, Recording HW5 due, HW6 out
Week 11 PyTorch Slides, Examples, Recording HW6 due, HW7 out
Week 12 Pillow Slides, Examples, Recording HW7 due
Week 13 Flask Slides, Recording HW8 out, Final project out
Week 14 Django Slides, Recording HW8 due
Week 15 Final project demos Final project due

Course policies

Communication:
This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TAs, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com.
Find our class page at: https://piazza.com/upenn/fall2019/cis192202/home

Grading:
Homeworks 1–8 will be worth 10% each, for a total across homeworks of 80%. The final project will be worth the remaining 20%. Everyone gets 3 free late days, which they can use in any combination across all homeworks. Late days may not be used for the final project. Beyond that, any late day will incur a penalty of 20% as of the change of date (which means 1 minute late is 20%, and 23 hours late is still also 20%).

Collaboration:
You are permitted (and encouraged) to discuss the homework problems with other class members, but these discussions are to be limited to high-level concepts. In particular, you are absolutely not permitted to copy or share code or implementation details. Similarly, you are not permitted to use or consult code found on the internet for any of your assignments. The only context in which it is permitted to share code is during the final project, during which you are allowed to collaborate with your team members.