Python Programming Fall 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
      
        
          Instructors
          
            
              Lamont Samuels
              Email: lamonts@cs.uchicago.edu 
              Office: Remote for the Quarter 
              Office hours: Thursday 1:30pm-3:30pm CT. Check Piazza for signup 
            
           
         
        
          TA
          
            
              Collin Olander 
              Email: Contact on Piazza 
              Office hours: Monday 5pm-7pm CT. Please sign up on Piazza. 
            
           
         
       
      
      Course Information
      
        
          | Lectures | Online videos will be posted on Thursday evenings | 
        
          | Discussions | Monday 2:00pm–3:00pm CT, (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 Fall 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 RamalhoPython in a Nutshell, by Martelli, Ravenscroft, and HoldenPython Essential Reference, by David Beazley | 
        
          | Course Software | At least Python 3.7: 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 (Fall 2020) 
      As we transition to online learning for Fall 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, final project, and one exam.
        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.
      Please note that having a heavy workload in a given week does not qualify as an extraordinary circumstance.
      The purpose of the two 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. 
      
Process of Submitting a Regrade Request
      
        -  Post a private message on Piazza to all instructors.
        
-  Make sure the subject states "Regrade Request for HW #N or Project #N", where N is the project or homework
          number.
        
-  Regrade requests must be submitted on Piazza. No other form of requests (e.g., email) will be considered.
        
      Please note that there is no timeline for processing regrade requests. However, you regrade request will be
      handled before the end of the quarter.
      
      
  NOTE : The assigned and due dates for homework and projects 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.
      You will be given 4 days to complete the online exam.
      
        
          
            | Exam | Length | Exam Date | 
        
        
          | Quarter Exam | 90 minutes | Thursday November 19th 12:00pm CT - Monday November 23rd 12:00pm CT (Week 8) | 
        
      
 
      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 
      Policies
      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.
      
      Zoom guidelines
       We will be using Zoom in this class. We expect your interactions via Zoom to be consistent with an in-person
        class experience. Respect the people you’re working with. Enter the Zoom meetings muted if possible
        (unfortunately, it will not be possible if you’re calling in), and unmute to speak. Raise your hand if you’d
        like to speak. [There’s a “Raise Hand” button on the participant page.] If your background is unusually noisy,
        use the chat channel instead of unmuting. We strongly encourage you to have your camera on during our Zoom
        sessions, but we’ll understand if some of you prefer to keep your video off.
      
        Note that you can set your name in your Zoom profile, so you don’t have to go with whatever was assigned. We
        encourage you to include your pronouns in your name (if so, please include them after your last name). 
       Our Zoom class meetings will be recorded and saved to the cloud to allow students in this class to review the
        discussion, and especially to allow students who can’t participate the opportunity to benefit from class. We
        will not make these recordings available to anyone but class participants, we will not make them available after
        the quarter, and students will not be allowed to save copies. However, we have no way to guarantee that students
        will follow this policy. If you have FERPA concerns, please mask yourself accordingly, e.g., by turning off
        video and using an alias. 
      Diversity statement
      The University of Chicago is committed to diversity and rigorous inquiry that arises from multiple perspectives.
      We concur with that commitment and also believe that we have the highest quality interactions and can creatively
      solve more problems when we recognize and share our diversity. We thus expect to maintain a productive learning
      environment based upon open communication, mutual respect, and non-discrimination. We view the diversity that
      students bring to this class as a resource, strength and benefit. It is our intent to present materials and
      activities that are respectful of diversity: gender, sexuality, disability, socioeconomic status, ethnicity, race,
      religious background, and immigration status. Any suggestions as to how to further such a positive and open
      environment in the class will be appreciated and given serious consideration.
      If you have a preferred name different from what appears on the class roster, or preferred gender pronouns you
      would like us to use, please let us know.
      
Accessibility
      The University of Chicago is committed to ensuring equitable access to our academic programs and services.
      Students with disabilities who have been approved for the use of academic accommodations by 
Student Disability Services (SDS)  and need a reasonable
      accommodation(s) to participate fully in this course should follow the procedures established by SDS for using
      accommodations. Timely notifications are required in order to ensure that your accommodations can be implemented.
      Please meet with me to discuss your access needs in this class after you have completed the SDS procedures for
      requesting accommodations.  
      Phone: (773) 702-6000 
      Email: disabilities@uchicago.edu
      
      COVID-19 Policies
      UChicago Health Pact
      All students on campus are required to adhere to the guidelines in the UChicago Health Pact in order to promote a
      safe environment in the classroom.
      
        - Secure face coverings must be worn appropriately at all times at all times while in University buildings
        
-  Maintain a distance of 6 feet from others
        
-  Do not attend and in-person class if you feel unwell or are experiencing COVID-19
          related symptoms
          The complete text of the UChic
      
      Reporting COVID-19 Related Concerns
      Any concerns over inappropriate PPE usage, physical distancing, cleaning/disinfection, or other COVID-19 related
      public health concerns should be directed to 
UCAIR. If there is an
      emergency, call 773-702-8181 or dial 123 on any campus phone.
      
      Reporting COVID-19 Exposure or a Confirmed Case
      If you were potentially exposed to COVID-19 or your COVID-19 test results come back positive, reach out
      immediately to C19HealthReport@uchicago.edu.
      
      Recording and Deletion Policies for Academic Year 2020-1
      The Recording and Deletion Policies for the current academic year can be found in the Student Manual under 
        Petitions, Audio & Video Recording on Campus.
      
 
        - Do not record, share, or disseminate any course sessions, videos, transcripts, audio, or chats.
        
-  Do not share links for the course to those not currently enrolled.
        
-  Any Zoom cloud recordings will be automatically deleted 90 days after the
          completion of the recording.
      
      Attendance
      Students who have been exposed to or who are experiencing symptoms of COVID-19 should contact 
UChicago Student Wellness immediately to be tested, and reach out to
      their area Dean of Students to request accommodations for classes until:
      
        -  At least 10 days have passed since symptoms first appeared and;
        
-  At least 3 days (72 hours) have passed since recovery- defined as resolution of fever without the use of
          fever-reducing medications and improvement in respiratory symptoms (e.g., cough, shortness of breath).
      
      Credits
      I would also like to thank, 
J. Alex Halderman, for allowing me to adapt his
      web site design for this course.