Syllabus

  1. Overview
  2. Course Staff
    1. Peer Mentors
    2. Graduate Teaching Assistants
    3. Office Hours
  3. Course Materials and Resources
    1. Free Online Books
    2. Software
    3. Computer Labs
  4. Getting Questions Answered
    1. Assignment & Programming Questions
    2. Grading Questions
    3. Other Questions
  5. Tutorial Sessions
  6. Grading
    1. Grading Notes
  7. Policy on Academic Honesty
  8. Accommodations for Students with Disabilities

Overview

Term Winter, 2019
Course EECS 110: Intro to Computer Programming with Python
Prerequisites No experience necessary!
Instructor Sarah Van Wart
When Tu, Th 4:00-5:20pm
Where Tech, Lecture Room 5

This course 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 labs, 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 Staff

Peer Mentors

Titobioluwa Williams, Matthew Nicholson, Josh Kennedy, Emily Blackman, Suzy Lee, Joseph Kim

Graduate Teaching Assistants

  • Begum Egilmez (BegumEgilmez2019@u.northwestern.edu)
  • Victor Bursztyn (victorbursztyn2022@u.northwestern.edu)

Office Hours

Office hours and tutorial location and times are posted on the course’s Google Calendar.

Course Materials and Resources

Free Online Books

Software

As this is a programming course, you will be using the free software programs listed below. This software will take about 3GB of space to install. Installing and configuring programming software can be a hassle, but it is part of the process of developing your working computing knowledge. We will help you.

  • Python3
  • Jupyter Notebook
  • Visual Studio Code

Computer Labs

If your computer is down, you may also use Python in the EECS labs:

  • The Wilkinson Computing Lab (Tech M338)
  • The “T-lab” (Tech F252, near the bridge between Tech and Ford)

Within one week of the start of classes, your Wildcard should be granted access to these labs. You will also be sent login credentials (i.e. username and password) for these machines by the end of the first week of classes (you don’t use your netid password for these machines). If you need to use the labs and haven’t received login information, please send email to root@eecs.northwestern.edu saying that you’re in this class and need access login credentials for the lab.

Getting Questions Answered

Assignment & Programming Questions

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 peer mentor office hours. 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.

Tutorial Sessions

This course involves weekly small-group tutorial sessions where you will work with a member of the teaching staff, beginning in the second week of the class. For logistical reasons, we couldn’t allow people to sign up for them as a normal part of the CAESAR registration process, so you will sign up for tutorials at the end of the first week of class.

Attending these tutorial sessions is strongly recommended. However, if you need to miss your tutorial session for whatever reason, you can do the tutorial on your own, and turn it in by 6PM Friday and still receive full credit (harder, but useful if you have a time conflict).

Grading

Your course grade is calculated based on 400 points as follows:

2 Exams 2 x 80 Points 160 Points 40%
2 Projects 2: 1@60, 1@72.5 Points 132.5 Points 30%
6 Homeworks 6 x ~11.25 Points [1] 67.5 Points 20%
8 Tutorials 8 x 5 Points [2] 40 Points 10%
    400 Points 100%

Grading Notes

  1. First 3 homeworks worth 10 points. Last 3 homeworks worth 12.5
  2. You may miss one tutorial session without it affecting your grade.
  3. Project 2 has been re-weighted from 60 to 72.5 (as HW7 dropped).

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. Final course grades will not be rounded or curved.

We will not be using the final exam time for this class. Exam 2 will be on the last day of class (March 14). If you plan to leave town during or before finals week, it is your responsibility to make sure that you can submit your third project assignment on time to Canvas (that is, be sure that you will have a stable internet connection).

Homework will be approximately weekly. They are due at 11:59pm on the date specified. We will still accept late homework up to 48 hours after the original due date, but with a 30% penalty. Homework is graded pass / fail (either 0 points or 10 points). If you fail your first homework submission, you have one week to revise and resubmit to receive full credit. If you turn your homework late (within 48 hours of the deadline) you will be penalized 30%. If you resubmit after first turning in a late homework assignment, you can only receive a maximum of 7 points.

In EXTREME circumstances (e.g, if you leave town for a funeral), you must contact your dean of students (like Joe Holtgreive) and have them contact me if they deem it necessary to give you an extension or make other accommodations. Please understand that we do this to make things fair for all students – I don’t want to be in charge of vetting individual students’ situations, and I don’t want students to have to tell me their personal troubles if they don’t want to.

In your programming assignments, it is critical that you name your functions/classes/files EXACTLY as specified. More generally, failure to follow the specification given in the assignment will result in a significant score penalty. Because of the nature and size of the class, we will find it necessary to do some automated testing of your programming assignments. On occasion, this testing/grading 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 TAs (Begum Egilmez and Victor Bursztyn) to resolve the issue. We will NOT drop any scores in this class, but may offer up to 15 points of extra credit. Finally, it is your responsibility to keep up-to-date on class material and announcements. 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:

  1. Do not exchange programs or program fragments in any form – on paper, via e-mail, or by other means.
  2. Do not copy solutions from any source, including the web or previous EECS 110 students.
  3. 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.).
  4. 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.

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.