Term | Winter 2025 |
---|---|
Course | COMP_SCI 110: Introduction to Computer Programming |
Prerequisites | None |
Instructor | Prof. Connor Bain (connor.bain@northwestern.edu) |
Co-Instructor | Prof. Anjali Agarwal |
Lecture Time | Monday, Wednesday, & Friday, 10:00am - 10:50am |
Lecture Location | Ryan Family Auditorium (Technological Institute) |
Required Materials | Zero Cost Course – (All course materials are open educational resources) |
Please note that this syllabus is subject to change prior to January 6, 2025.
About the Course
CS 110 is meant as an introduction to the key ideas of computer programming and assumes no prior programming knowledge. In this course, we’ll use the programming language Python with two goals: first, we want to give you a sense of the kinds of creative activities, both directed problem-solving and creative pursuits, that programming can support; and two, we want to introduce you to the fundamental constructs (and associated skills and techniques) of computer programming.
Programming is a powerful medium for creative expression: it can be 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 more. Being a computer scientist is not a prerequisite for creating useful or advanced programs. In fact, 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., use programming languages to accomplish diverse and specialized goals. And as data and computing increasingly influence and perfuse modern life, understanding the mechanisms (and risks!) that underlie these systems is a valuable modern literacy that is likely to serve you well.
The second goal of the course is to introduce you to the fundamental constructs of computer programming and how to apply these low-level constructs in creative and useful ways. Learning a programming language is not dissimilar to learning a new spoken/written language–first, you need to understand basic rules like grammar and syntax, then you need exemplar buildings blocks like adjectives, nouns, and prepositions, and only then can you use these ideas together to create computer programs. What this means is that you must dedicate enough time to practicing the basics in order to allow yourself to progressively move to more and more complex programming practice.
Taking this course means committing — for 10 weeks — to attending lectures, tutorials, and office hours, turning in assignments / projects, doing (lots of) practice problems, and most importantly, persevering when things get difficult. Asking questions throughout the class is not a sign of weakness–it shows that you are actively trying to understand what you know and what you do not know. We have an excellent staff of teaching assistants and peer mentors who are here to answer your questions, help you understand course material in different ways, and push you to your fullest learning potential. With your consistent and active participation in learning, you can navigate the material in the course and become a proficient programmer by the end of the quarter.
Course Format
While some of our reserved class periods will be used for interactive lectures where new concepts will be introduced, other days will be reserved for in-depth tutorials where students will be expected to review course materials (recorded lecture videos, slides, and notes) before the class period and during class we will work in small groups to complete an in-depth programming assignment.
The rough schedule of the course will be (there are some exceptions):
- Mondays - Lecture Day
- Wednesdays - Tutorial Day
- Fridays - Practice Day
For lecture days, we’ll have interactive lectures where we introduce a new topic and focus on building a core understanding. For Tutorial days, you’ll work in your tutorial groups to complete an assignment during class time. On Practice+ days, we’ll do a little more practice along with previewing the next components of the course.
When we assign a pre-recorded lecture, students must watch the video before coming to lecture. Organizationally, some topics/modules span multiple lectures.
Tutorial / Study Groups
The best way to learn how to program is by writing lots of programs. To facilitate this, and to provide a more close-knit learning setting within the context of our larger class, you will each take part in weekly tutorial sessions with one of our Peer Mentors (PMs). You will sign up for a Tutorial Group at the end of the first week of class and then, each week of the quarter, you’ll work with your group to complete a tutorial under the guidance of a PM/TA.
By completing the tutorials, you will become familiar with the types of strategies you might use to approach problems (which will be closely related to the homework exercises / projects), push you to write lots of programs, and help you assess what you know and don’t know so that you can know when to ask for more help in lecture or in office hours.
Office Hours
Office hours are a crucial component of this course. We have a huge team of TAs/peer mentors whose job is to help you to be successful in the course and find your own power as current and future programmers. That said, it’s up to you to take the initiative and cultivate a weekly / bi-weekly practice of going to office hours 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 exercise with a TA or peer mentor nearby (if needed). Other students never go to office hours (though this is rare, as the homework exercises and projects are challenging). Also, different people connect with different TAs/peer mentors, so do shop around to find a person with whom you work well.
Office hours are meant to be a time where you can ask questions that you need answered. That being said, we ask that you come to office hours having already thought about the assignment or issue you have been having. Please try your best to come to office hours prepared to ask questions like:
- I didn’t understand X idea in lecture / tutorial this week. Can you explain it to me?
- I’m having trouble finding a good place to start in this week’s homework. Can you help?
- My laptop won’t run this code from class. What am I doing wrong?
- My program is returning this error which I’ve tried to fix. What am I missing?
- What courses should I take next after CS 110?
- What kinds of CS-related careers and opportunities are out there?
Office hours and locations / Zoom links are posted on the shared Google Sheet that we used to sign-up for tutorials. It’s also linked on our Canvas home page. Some office hours will be in person. Others will be virtual.
Course Staff
This is a very large class and in order to better support each of your learning goals, we have a huge course staff. Our Peer Mentors (PMs) and TAs serve as your first point of contact in the course and you’ll each be assigned to a PM/TA throughout the quarter. You can see them on our Course Staff Directory which is available on Canvas.
Course Grading Policy
Your course grade is calculated as follows:
Tutorials | 10% |
Mini-Quizzes | 5% |
Homework Exercises | 25% |
2 Projects | 25% |
3 Quizzes | 35% |
There will be approximately 1 tutorial, 2 mini-quizzes, and 1 assignment (either homework exercise or project) due per week.
Final grades are assigned on a fixed scale which is set by the registrar’s office:
A | 94 - 100 |
A- | 90 - 93.99 |
B+ | 87 - 89.99 |
B | 84 - 86.99 |
B- | 80 - 83.99 |
C | 70 - 79.99 |
D* | 60 - 69.99 |
F | 0 - 59.99 |
(*) Note that The Graduate School does not recognize D letter grades meaning if you are enrolled in the class as a graduate student, the range for the F grade is 0-69.99.
- Final course grades will not be rounded or curved.
- We will not use the registrar’s final exam time for this class.
Quizzes
There will be three cumulative assessments of your knowledge and practice of the course material administered during our assigned class time (50 minutes). There will be no Final Exam outside of these three quizzes. The tentative dates of these quizzes can be found on our Course Schedule.
Note: because this class is offered by the Computer Science department which is housed in the McCormick School of Engineering, we will still have class during Weinberg’s “Reading Period”.
Exercise Grading
Exercises will be approximately weekly and is due at the Canvas specified date. You will submit your homework assignments on Canvas.
We will still accept late homework up to 48 hours after the original due date, with a 10% deduction per 24 hour period.
We do not accept resubmissions of assignments after the UNTIL deadline on Canvas. This means it is up to you to verify that:
- You have submitted the correct file.
- That your program runs without intervention (except those assignments that ask for human input).
- That your program is NOT dependent on running on your specific computer.
If you are submitting a partially complete assignment, add a Canvas comment that explains which parts of the assignment you completed and which parts you did not. If you were having a specific problem with completing that part of the assignment (other than “ran out of time”), make sure to describe what you tried and why you were unable to fix it. Since the exercises are graded by a computer – it’s usually best to simply leave those parts “blank” rather than writing a syntactically incorrect version.
If your program does not run, you will not receive full credit no matter how small the error.
Mini-Quizzes
These will be short quizzes for each module of the course that serve as a check of your attendance and/or asynchronous participation in the course. For those that complete the Mini-Quiz in class, you will receive full credit for your attendance and full participation. If you choose to complete the Mini-Quiz remotely, you will need to complete the Canvas version of the quiz within 60 hours of your scheduled class time.
If you attend class but do not receive credit but don’t receive credit, you can fill out this Completion Grade Petition form.
Tutorial Grading
The idea of the Tutorials is to provide you with opportunities to both practice your own programming skill as well as learn to communicate with and help other programmers. As such, these Tutorials will be held on Wednesdays during our scheduled class time during the quarter.
These will start the second week of class and you will sign up for a particular Tutorial group at the end of Week 1.
By completing the tutorials, you will become familiar with the types of strategies you might use to approach problems, write lots of programs, and assess what you know and don’t know so that you can know when to ask for more help in lecture or in office hours.
This course is meant to a be a learning community which requires the dedicated participation of all members. Attendance is required for the first Tutorial, but you may choose to submit future tutorials remotely.
If you attend the Tutorial session in-person, work diligently, and make a legitimate attempt (up to the discretion of your Peer Mentor) at completing the assignment, you will receive full-credit. If you choose not to attend in-person, then your assignment will be reviewed for completion and accuracy meaning you may nor may not receive full credit.
If you attend a tutorial session but do not receive credit, you can fill out this Completion Grade Petition form.
We will not accept late tutorial submissions.
Project Grading
There are two larger programming assignments in the course which we will refer to as Projects. These Projects are a significant portion of your course grade and represent quite a bit more work than the usual homework exercises. These assignments will be graded based on a rubric provided with the assignment description.
Late submissions of Projects will not be accepted.
The second project will be due at the start of the university’s assigned final exam block for this course which is March 20th at 3pm.
Grading Equity Policies
The course is specifically designed to be academically equitable to all students when it comes to assessment and has two special policies related to grading: 1. An emergency erasure policy; 2. A deliberate Late Waiver policy.
These two policies are provided to accommodate the myriad situations that students encounter over the life cycle of the class (e.g. student org travel, sickness, etc.). This built-in leniency means that there will be no other exceptions to the course syllabus without prior authorization from the Dean of Students at Northwestern. I cannot offer any other leniency, make-up assignments, extensions, etc., outside these policies.
Note: If you are found in violation of the Academic Honesty Policy at any point in the course (including misrepresenting your attendance, submitting LLM-generated code, etc.), you will lose access to these policies. This penalty will also apply retroactively meaning that if you were found in violation of our Academic Honesty Policy in Week 10, but used a Late Penalty Waiver in Week 2, your waiver would be retroactively removed.
Late Penalty Waivers
This applies ONLY to Homework Exercises and is meant to accommodate students who may have a particular week during the quarter where they are unable to complete the assigned exercises on-time. Students may apply (using a Google Form included at the bottom of each assignment) and receive a waiver of the late penalty on homework exercises:
- Students must request the extension via the form at least 24 hours in advance of the exercise deadline.
- Students may not request more than 2 Late Penalty Waivers in a quarter.
The policy is deliberate in that you, as a student, must actively consider at least 24 hours in advance of the deadline that you will need extra time to complete this assignment. If you find yourself needing extra time on consecutive assignments, this is a good sign that you need to reach out to someone on the Course Staff for help.
There will be no exceptions to this policy. Once you apply for a valid extension, it cannot be voided.
No assignments are accepted after 48 hours. This policy does not extend the final due date, it only waives the late penalty.
Emergency Grade Erasure Policy
The emergency grade erasure policy acknowledges that often times life situations occur that make it impossible to keep up in a course. Do not use this a planning or scheduling device. This is specifically meant to take care of emergencies that happen in your life during the quarter.
- Your lowest quiz score (including 0s) is dropped (we keep the best 2 of 3).
- Your lowest tutorial score (including 0s) is dropped.
- You may not drop the final tutorial (in Week 10).
- Your lowest exercise score (including 0s) is dropped.
- Your lowest 2 mini-quiz scores (including 0s) are dropped.
- You may NOT drop project scores.
Note you should not choose to drop an assignment as this is meant for emergencies. No exceptions will be made regardless of circumstance.
This policy will be automatically applied (on all of these categories) at the end of the quarter for all students. No action is required on your part.
Accessibility
Northwestern University is committed to providing the most accessible learning environment as possible for students with disabilities. Should you anticipate or experience disability-related barriers in the academic setting, please contact AccessibleNU to move forward with the university’s established accommodation process (e: accessiblenu@northwestern.edu; p: 847-467-5530). If you already have established accommodations with AccessibleNU, please let me know as soon as possible, preferably within the first two weeks of the term, so we can work together to implement your disability accommodations. Disability information, including academic accommodations, is confidential under the Family Educational Rights and Privacy Act.
All accommodation requests must be processed through AccessibleNU.
Statement of Inclusivity
This course strives to be an inclusive learning community–respectful of those with differing backgrounds and beliefs. As a community, we aim to be respectful to all learners in this class, regardless of race, ethnicity, socio-economic status, religion, gender identity, or sexual orientation. There will be an optional survey administered at the beginning of the quarter asking you to provide the name and pronouns that you use. This information will be shared with all members of the instructional staff. You are welcome to correct us on your name or preferred pronouns if a mistake is made. If you have concerns, please contact Prof. Bain.
Wellness and Mental Health
Northwestern University is committed to supporting the wellness of our students. Student Affairs has multiple resources to support student wellness and mental health. If you are feeling distressed or overwhelmed, please reach out for help. Students can access confidential resources through the Counseling and Psychological Services (CAPS), Religious and Spiritual Life (RSL) and the Center for Awareness, Response and Education (CARE). Additional information on all of the resources mentioned above can be found here:
- https://www.northwestern.edu/counseling/
- https://www.northwestern.edu/religious-life/
- https://www.northwestern.edu/care/
Course Materials and Resources
Course Software
As this is a programming course, we will be using some free software programs and libraries in order to write, debug, and run Python programs. Installing and configuring this software can be a huge hassle, but it is part of the process of developing your computing proficiencies. There are many ways to install Python and its associated libraries on your computer, however, we can only provide support for the methods of installation described in class during Week 1. We will try our best to support student needs, but because of the large number of students in the course, we cannot feasibly support every method of installation.
Please note, you will need a computer capable of running Python 3+ in order to participate in this course. Any Windows/Mac/Linux computer from the last decade should be fine, however, you may encounter difficulties using a Chromebook, iPad, or other non-standard operating system. If you do not have access to the appropriate computing hardware, please let the course staff know as soon as possible so that we can help you make other arrangements.
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.
edSTEM
edSTEM is a Question-and-Answer site like Piazza/Campuswire that allows students to ask questions that can then be answered by either Course Staff or other students in the course.
To register for the course edSTEM (you will only have to do this once), please use the link on Canvas.
For any other issues that you think are not appropriate for the peer mentors or graduate TA, please talk to Prof. Bain. This might include things like concerns about your progress in the course, questions about content from lectures, personal matters related to your participation in the course, larger grade concerns, advice about future courses, majors, and internships, etc.
Supplementary Materials (optional)
- 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
Academic Honesty
In the past, there have been incidents 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 CS 110 students.
- You may not ask someone with more experience to write code on your behalf – ever.
- Do not use auto-generated code as part of your solutions to anything you submit in this class.
- 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.
Students in this course are required to comply with the policies found in the booklet, “Academic Integrity at Northwestern University: A Basic Guide”. All assignments submitted for credit in this course must be submitted electronically unless otherwise instructed by the professor. Your written work may be tested for plagiarized content. For details regarding academic integrity at Northwestern or to download the guide, visit: https://www.northwestern.edu/provost/policies-procedures/academic-integrity/index.html.
Contact Prof. Bain if you have any questions about what is appropriate. Please note that all suspected incidents of violating the Academic Integrity of the course will be reported immediately to the Dean of Students.
Statement of Inclusivity
This course strives to be an inclusive learning community–respectful of those with differing backgrounds and beliefs. As a community, we aim to be respectful to all learners in this class, regardless of race, ethnicity, socio-economic status, religion, gender identity, or sexual orientation. There will be an optional survey administered at the beginning of the quarter asking you to provide the name and pronouns that you use. This information will be shared with all members of the instructional staff. You are welcome to correct us on your name or preferred pronouns if a mistake is made. If you have concerns, please contact Prof. Bain.
Northwestern University Syllabus Standards
This course follows the Northwestern University Syllabus Standards. Students are responsible for familiarizing themselves with this information.