Syllabus
| Term | Fall, 2020 |
| Course | CS 110: Intro to Computer Programming with Python |
| Prerequisites | None |
| Instructor | Sarah Van Wart |
| Lecture Time | Monday, Wednesday, & Friday, 10:20 - 11:10am |
| Synchronous? | I will be giving (and recording) lectures during regularly scheduled class time. You are encouraged to come and ask questions live, but it is not required. |
| Lecture Location | Online (for now) |
About the Course
CS 110 is an introduction to computer programming using Python, and assumes no prior programming knowledge. The intent of the course is twofold. First, we want to give you a sense of the kinds of problem-solving and creative pursuits that programming can support. Programming can be many different things — a representational medium, a tool for thinking about problems, a way of amplifying and/or communicating ideas, a means of performing complex calculations over massive datasets, and so forth. Most people who write computer programs are not computer scientists, but rather people who occupy a range of professions (journalists, geographers, sociologists, scientists, artists, musicians, entrepreneurs, researchers, etc.), and who use various programming languages to accomplish diverse and specialized goals. Moreover, as data and computing increasingly mediate modern life, knowing a bit about the mechanisms (and risks!) that underlie these systems is a valuable modern literacy that is likely to serve you well.
A second goal of the course is to introduce you to the fundamental constructs of computer programming, and some skills and strategies for helping you apply these low-level constructs in creative and useful ways. Towards this end, there will be quite a few drills and practice problems to get you familiar with ‘the basics.’ You need to dedicate enough time to practicing the basics: the fun, creative parts of programming are only possible when you understand the building blocks; and understanding comes from an active, consistent, and iterative engagement with new ideas. Taking this course means committing — for 10 weeks — to attending lectures and office hours, turning in assignments / projects, doing (lots of) practice problems, and most importantly, persevering when things get difficult and asking questions. We have an excellent staff of teaching assistants and peer mentors who are here just for you and your questions and ideas. With your consistent and active participation in your own learning, we can guide you through the material so that you can become a proficient programmer. Welcome to the course!
Course Format
Lectures
Lectures will a combination of synchronous and asynchronous content, which will include a combination of slides, pre-recorded lectures, “live-coding” videos (during lecture), programming exercises, tutorial activities, and (sometimes) mini-quizzes. We will still be using the scheduled lecture time for more interactive Q&A sessions on Zoom with Sarah to answer any questions about the material for that day. Organizationally, some topics/modules span multiple lectures (see the course schedule).
Bottom line: You are encouraged to attend the regularly scheduled lecture sessions on Zoom, but everything will be recorded and posted to the website, and therefore it is possible to successfully complete this course without ever attending a “live” lecture.
Tutorial Sessions (Your Participation Grade)
The best way to learn how to program is to practice writing lots of programs. To encourage this, you will sign up for a required tutorial section on on Friday, 9/18. There will be around 22 tutorial sections that you can sign up for (with around 12 students per section). Your tutorial peer mentor will be your “go to person” for the course – feel free to reach out to them with any questions or concerns that you may have.
These tutorials have a few goals:
- To help you become familiar with the types of strategies you might use to approach problems (which will be closely related to the homework / projects).
- To force you to write lots of programs (practice makes perfect!)
- To help you to gauge what you know and don’t know, so that you can make a plan to attend office hours.
Tutorials will be graded pass/fail. Even if you don’t get everything working perfectly, you will still get full credit if you demonstrate a good-faith effort. You must submit at least 7 tutorials, but are encouraged to complete them all.
Course Staff
We have 22 peer mentors (undergraduates) and 2 graduate TAs to help you:
Peer Mentors
- Cooper Barth (cooperbarth2021@u.northwestern.edu)
- Kieran Bondy (kieranbondy2021@u.northwestern.edu)
- Anthony Chen (anthonychen2021.1@u.northwestern.edu)
- Linxin Chen (linxinchen2021@u.northwestern.edu)
- Chase Duvall (chaseduvall2023@u.northwestern.edu)
- Olivier Gabison (oliviergabison2022@u.northwestern.edu)
- Olivia Gallager (oliviagallager2021@u.northwestern.edu)
- Camila Grisanti (camilagrisanti2022@u.northwestern.edu)
- Kevin Hou (kevinhou2022@u.northwestern.edu)
- Katherine Johns (katherinejohns2021@u.northwestern.edu)
- Charlotte Jones (charlottejones2022@u.northwestern.edu)
- Joshua Kennedy (joshuakennedy2021@u.northwestern.edu)
- Emmy Khawsam-ang (nichareekhawsam-ang2021@u.northwestern.edu)
- Gabrielle Klein (gabrielleklein2021@u.northwestern.edu)
- Caroline Lobel (carolinelobel2022@u.northwestern.edu)
- Andy Moran (carlosmoran2022@u.northwestern.edu)
- Athipat Pipatpinyopong (athipatpipatpinyopong2022@u.northwestern.edu)
- Rhea Ramaiya (rhearamaiya2022@u.northwestern.edu)
- Ariella Silver (a.silver@u.northwestern.edu)
- Barbara Sledz (barbarasledz2022@u.northwestern.edu)
- Nicole Villalba (nicolevillalba2022@u.northwestern.edu)
- Lily Yan (lilyyan2023@u.northwestern.edu)
Graduate Teaching Assistants
- Yunming Xiao (yunming.xiao@u.northwestern.edu)
- Andi Zang (andi.zang@u.northwestern.edu)
Course Materials and Resources
Free Online Books
- A Practical Introduction to Python Programming, by Brian Heinold
- Python for Everyone, by Chuck Severance
- How to think like a Computer Scientist, by Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers
Installing Software
As this is a programming course, you will be using some free software programs and libraries in order to write Python programs. Installing and configuring this software can be a huge hassle, but it is part of the process of developing your working computing knowledge.
If you are struggling to get Python and your code editor installed, this is (alas) normal (ask any software engineer). This is also one of the reasons why we have such a big course staff: to troubleshoot individual laptop problems with students.
Getting Questions Answered
Office Hours
Office hours (and tutorials) are hands down THE BEST resource this course has to offer. We have 22 TAs/Peer Mentors whose job is to help you to be successful and find your own power as current and future programmers. That said, it’s up to you to take initiave and cultivate a weekly / bi-weekly office-hours-going practice that works for you and your schedule. This looks different for everyone: some people go to 1-2 office hours sessions per week and finish their homework with a TA nearby (if needed). Other students never go to office hours (though this is rare, as the homeworks and projects are challenging). Also, different people connect with different TAs, so do shop around to find a TA with whom you work well…and drop in sooner rather than later!
The kinds of questions that are perfectly legitimate to ask in office hours include (but are not limited to):
- I don’t know where to start in this week’s homework. Can you help?
- My laptop won’t run the code! Help!
- My code’s not working? What’s my error?
- I didn’t understand X idea in lecture / tutorial this week. Can you explain it to me?
- What courses should I take next after CS110?
- What kinds of CS-related careers and opportunities are out there?
Piazza
For assignment- and programming-related questions you should post questions on our class Piazza site. Before you post a question, please do a quick search to make sure that one of your classmates hasn’t already asked the same question. Piazza gives you the option of posting anonymously (to your classmates) so that you don’t feel intimidated to ask a question. As a general rule, do not post ANY code that would be part of an answer to an assignment question. It is critical that you use Piazza for assignment questions; any assignment questions emailed directly to any course staff will be forwarded to Piazza.
If you have a question about code that requires you to show someone your code, please go to one of the office hour sessions. These hours (days/times/locations) are posted on a google calendar linked to from the Piazza resources page (under the ‘course information’ tab) for our class. In general, please use the peer mentor hours, these mentors were selected from a large number of applicants and are highly qualified!
Grading Questions
For grading questions/concerns you should go to the graduate TA’s grading office hours (also posted on the google calendar). You can also send them a private message through Piazza with assignment grading questions/concerns.
Other Questions
For any other issues that you think are not appropriate for the peer mentors or graduate TAs, please come talk to me. This might include things like concerns about your progress in the course, questions about content from my lectures, personal matter related to your participation in the course, larger grade concerns, advice about future courses, majors and internships, etc.
Office Hours
Office hours and locations / Zoom links are posted here. See the course Canvas page for the Zoom password.
Grading
Your course grade is calculated based on 200 points as follows:
| 2 Projects | 2 x 40 Points | 80 Points | 40% |
| 2 Quizzes (of 3) | 2 x 30 Points (lowest score dropped) | 60 Points | 30% |
| 5 Homeworks (of 6) | 5 x 8 Points (lowest score dropped) | 40 Points | 20% |
| 7 Tutorials (of 9) | 7 x ~3 Points (lowest scores dropped) | 20 Points | 10% |
| 200 Points | 100% |
Final grades are assigned on a fixed scale: 93-100 is an A, 90-92.99 is an A-, 87-89.99 is a B+, etc. Some other logistics:
- Final course grades will not be rounded or curved.
- We will not be using the final exam time for this class.
NOTE: Leniency is built into the course
Because there are unprecedented and uncertain times, I have built leniency into the design of the class. You will be able to:
- drop your lowest quiz score (best 2 of 3)
- drop your lowest homework score (best 5 of 6)
- Keep your best 7 tutorial scores (best 7 of 9)
I have done this to make the class equitable. Use this leniency wisely. In other words, skipping HW1, Quiz1, and Tutorial1-2 is an ill-advised approach. I will not grant additional exceptions unless the circumstances are truly exceptional, and this will need to go through the Dean of Students (or some similar NU entity).
Homework Grading
Homework will be approximately weekly, and is due at 11:59pm on the specified date.
We will still accept late homework up to 48 hours after the original due date, but with a 2 point penalty (25%). Homework is graded on the following scale:
| No submission / little understanding | 0 Points | Little to no understanding/effort demonstrated |
| Check minus | 3 Points | Some effort made, but significant features are missing or not working |
| Check | 6 Points | Mostly working, but some errors or issues were found |
| Check Plus | 8 Points | Working exactly as it should |
On occasion, the grader may make an error. You will receive your assignment grades on Canvas. If you have any grading questions/concerns, please send a private message on Piazza within 1 week to the graduate TA to resolve the issue. Finally, it is your responsibility to keep up-to-date on class material and announcements, as the schedule is subject to change. This includes material presented and announcements made in class, via email, or on Piazza.
Policy on Academic Honesty
In the past, there have been a few unfortunate instances in which students have presented work other than their own. For the programming assignments: You are allowed (encouraged, even!) to discuss general approaches to solving problems, but all work you submit must be your own. Working “together” and presenting variants of the same file is not acceptable. Here are some specific guidelines to make sure you don’t cross the line:
- Do not exchange programs or program fragments in any form – on paper, via e-mail, or by other means.
- Do not copy solutions from any source, including the web or previous EECS 110 students.
- While working with other students, it is perfectly acceptable to ‘look’ at each other’s code (perhaps while helping someone to debug), but you should NEVER be scribing (typing or writing) your own work while looking at someone else’s (on a computer screen, paper, whiteboard, etc.).
- Uploading materials from this course to websites that sell such content to students is prohibited by Northwestern’s academic integrity policies, and may also put you at risk for violating copyright policies in Northwestern’s Student Conduct Code.
Contact Sarah Van Wart if you have any questions about what is appropriate.
Zoom Instructions
To ensure a smooth lecture experience for everyone, we have created a Zoom Guide for you. Please refer to it to understand how to access the course Zoom sessions, and some of the recording and etiquette policies.
A Note on Class Recordings
The Provost’s office has asked instructors to publish the following language in the syllabus:
Class Recordings
This class or portions of this class may be recorded by the instructor for educational purposes. These recordings will be shared only with students enrolled in the course and will be deleted at the end of the Spring Quarter, 2020 course. Your instructor will communicate how you can access the recordings.
Policy On Unauthorized Student Recording of Classroom or other Academic Activities
Unauthorized student recording of classroom or other academic activities (including advising sessions or office hours) is prohibited. Unauthorized recording is unethical and may also be a violation of University policy and state law. Students requesting the use of assistive technology as an accommodation should contact AccessibleNU. Unauthorized use of classroom recordings — including distributing or posting them — is also prohibited.
Under the University’s Copyright Policy, faculty own the copyright to instructional materials — including those resources created specifically for the purposes of instruction, such as syllabi, lectures and lecture notes, and presentations. Students cannot copy, reproduce, display or distribute these materials. Students who engage in unauthorized recording, unauthorized use of a recording or unauthorized distribution of instructional materials will be referred to the appropriate University office for follow-up.
Accommodations for Students with Disabilities
Any student requesting accommodations related to a disability or other condition is required to register with AccessibleNU (847-467-5530) and provide professors with an accommodation notification from AccessibleNU, preferably within the first two weeks of class. All information will remain confidential.