Python Programming Spring 2020
Course Description
Python is a general-purpose programming language that is used in many application areas, including web
development, scientific computing, graphical user interfaces, systems programming, gaming, rapid prototyping,
data mining, and more. This course provides a thorough overview of the Python 3 language with an emphasis
on writing idiomatic code in Python and object-oriented design patterns and is suitable for students with
prior programming experience. We will develop an understanding of the core features of the languages and gain
exposure to commonly used standard-library, third-party modules, data structures and algorithm analysis.
The following information below about the course is subject to change.
Course Staff
Instructor
Lamont Samuels
Email: lamonts@cs.uchicago.edu
Office: Remote for Spring 2020
Office hours: Wednesday 3:30pm-5:00pm. Please sign up on Piazza.
TA
Collin Olander
Email: Contact on Piazza
Office hours: Monday 6pm-8pm. Please sign up on Piazza.
Course Information
Lectures |
Online videos will be posted on Monday evenings |
Discussions |
Wednesday 7:30pm–8:30pm, (Zoom meetings) |
Communication |
All forms of communication such as important class announcements, general discussion, course material,
etc. will be done on Piazza.
With the transition to online learning for Spring 2020, it is crucial that you regulary check
Piazza. You are required to check it at least twice a day! Piazza is also the best place to get help
quickly.
The TA's and I will monitor Piazza as frequently as possible and often be able to answer immediately.
Students
are encouraged to help their peers on Piazza by contributing when it is convenient.
|
Textbook |
While there are no required textbooks for this course, the following books may be useful for reference:
- Learning Python, by Mark Lutz (Main text)
- Fluent Python, by Luciano Ramalho
- Python in a Nutshell, by Martelli, Ravenscroft, and Holden
- Python Essential Reference, by David Beazley
|
Course Software |
At least Python 3.5: https://www.python.org/downloads/
Git: http://git-scm.com/downloads/
Visual Studio Code (suggestion, not required): https://code.visualstudio.com
|
Getting Help |
I will be available during office hours. The pace of this course is rapid,
so please email me or come to office hours if you feel you're falling behind or need help.
|
Course Content
Topics that will be explored in the course will include (but not limited to) the following:
- Python Basics: types, variable, operations, control flow, iteration
- Functions, recursion, generators and scope
- Classes and objects
- Decorators and dynamic attributes
- Python Data Model
- Modules, packages, & distribution
- Data structure design and analysis (lists, stacks, hash tables, queues, trees)
- Scientific computing and data manipulation (pandas, numpy, etc)
- Designing larger applications (Object-oriented analysis and design, program decomposition techniques)
- Intro to concurrency in Python (if time permits)
A detailed description of when each topic will be discussed is on the course schedule page.
Course Content Distribution (Spring 2020)
As we transition to online learning for Spring 2020, the way in which lecture material and
course content will be delivered will change. The course lectures will be provided
in two ways:
Coursework
The course will include weekly homework and two exams.
The weekly homework will contain practice programming problems to help enforce the concepts learned via the
course content sessions. Please look at the homework page to
check the assigned and due dates for each assignments.
Late submissions
All students may use up to two 24-hour extensions for the programming assignments during the quarter. These
extensions are all-or-nothing: you cannot use a portion of an extension and have the rest “carry over” to
another extension. If extraordinary circumstances (illness, family emergency, etc.) prevent a student from
meeting a deadline, the student must inform their instructor before the deadline.
You cannot use an
extension for the final project!
Please note that having a heavy workload in a given week does not qualify as an extraordinary circumstance.
The purpose of the three extensions is precisely to give you some flexibility in weeks when you are busier
than usual.
Regrades
We sometimes make mistakes, and are happy to review any grading decision that you feel is unfair or
unjustified. However, it is also your responsibility to make these requests in a timely manner. Requests for
regrades must be submitted
no later than one week after a graded piece of work is returned to you.
After that
time, we will not consider any requests for regrades, regardless of whether the regrade request is reasonable
and justified.
NOTE : The assigned and due dates for the problem sets are subject to change with notice.
Exams
There will be one exam in this course. The exam will be a mixture of coding exercises and short-answer
questions.
Exam |
Length |
Exam Date |
Quarter Exam |
TBD |
During Week #7 |
The exact details about how this exam will be adminstered will come as we approach the exam date.
Missed exams and late registrant policy
There are no make-up exams in this class. There also will not be any earlier exams taken unless due to
extraordinary circumstances such as an
medical emergency.
Grade Evaluation
The final grade is determined as follows:
|
Weight |
Homework |
60% |
Quarter Exam |
25% |
Final Project |
15% |
Grading Scale
Grades are not curved in this class. The follwing is set of grading boundaries for this course:
- 95-100: A
- 90-94: A-
- 85-89: B+
- 80-84: B
- 75-79: B-
- 70-74: C+
-
<70: Dealt on a case-b y-case basis
Academic Honest
You must adhere to The University of Chicago and the Masters Program in Computer Science policy on academic
honesty:
The universitys' and programs' rules have the final say in all cases, but the following rules of thumb summarize
honesty as it
pertains to this course:
- Do not copy anyone's work.
- Do not allow your work to be copied by anyone.
- Do not submit work identical to another student's.
- Document all collaboration.
- Credit your sources.
To expand on the second rule, sharing completed or partially completed work in advance of its deadline in
any way, including posting to the Internet, is expressly forbidden.
We take academic honestly seriously and dishonest behavior will result in serious consequences.
Credits
I would also like to thank,
J. Alex Halderman, for allowing me to adapt his
web site design for this course.