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.
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)
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 |
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.