General Information
CS 106A March 28, 2022
All times listed in this handout are Pacific Time.
Course Staff
Professor: Mehran Sahami (he/him pronouns)
E-mail: sahami@cs.stanford.edu
Office: Durand Building, Room 325
Office hours: Wednesday 2:00P.M.–4:00P.M.
Head TA: Juliette Woodrow (she/her pronouns)
E-mail: jwoodrow@stanford.edu
Office: Durand Building, Room 303
Office hours:
Week 1:
Tuesday 1:30P.M.–3:00P.M.
Thursday 1:30P.M.–3:00P.M.
All other weeks:
Monday 2:00P.M.–3:30P.M.
Tuesday 2:30P.M.–4:00P.M.
Course description
Introduction to the engineering of computer applications emphasizing modern software engineering principles: program design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages. Uses the Python programming language. No prior programming experience required.
Canvas
We will use Canvas in CSÂ 106A this quarter only to post recordings of course videos. The Canvas website for our class is:
https://canvas.stanford.edu/courses/151613
All other information relevant to the class will be posted on the class web page, described below.
Class web page
The class web page for CSÂ 106A is: http://www.stanford.edu/class/cs106a/
You can also reach that webpage via the simpler URL: http://cs106a.stanford.edu/
You should regularly check the class web site for handouts, announcements and other information, including the most up-to-the-date information on assignments and errata. Please note that the class web page will have links to essential class materials including electronic copies of class handouts and assignment files.
Discussion sections
In addition to lecture, you will also be attending a weekly 50-minute section. In order to take CSÂ 106A, you must sign up for a section between 5:00P.m. Thursday, March 31st and 5:00p.m. Sunday, April 3rd. The signup form will be available on the web at the URL:
https://cs198.stanford.edu/cs198/auth/default.aspx
Section sign-ups are not first-come first-serve, so don’t worry about rushing to fill out your preferences as soon as the form opens. After a matching process, your section assignments will be emailed out to you by the evening of Tuesday, April 5th. Sections begin the second week of classes (i.e., next week). Note that you should only sign up for sections at the URL indicted previously (you should not sign-up for sections on Axess).
Attendance and participation in section will be graded and will make up 5% of your final grade in the class, so this is a required component of the class.
Section leaders and course helpers
CS106A provides extensive assistance for students. Section Leaders and Course Helpers are available from Sunday through Thursday evenings each week to help with assignments—we call this the LaIR. Check the web site http://cs198.stanford.edu/ and click on the "Helper Schedule" link for the latest schedule of Helper Hours. More information about how to access the helpers at LaIR will be posted once LaIR hours start.
Units
If you are an undergraduate, you are required to take CSÂ 106A for 5 units of credit. If you are a graduate student, you may enroll in CSÂ 106A for 3 or 4 units if it is necessary for you to reduce your units for administrative reasons. Taking the course for reduced units does not imply any change in the course requirements.
Texts and handouts
There is one required text for this class, entitled Karel the Robot Learns Python—a short interactive tutorial that introduces the major concepts in programming in the context of an extremely simple robot world—which will be available for free on the class website. In addition to this text, we will also have reference material on Python available via the class webpage as well s distribute additional material in the form of class handouts. Class handouts will be available electronically on the CS 106 web site.
Programming assignments
There will be seven programming assignments (Assignment 1 – Assignment 7) in this class. The assignments will become slightly more difficult and require more time as the quarter progresses. Thus, the later assignments will be weighed slightly more than the earlier ones. Except for Assignment #7 (which is due at the end of the quarter), each assignment is graded during an interactive, one-on-one session with your section leader, who rates it according to the following scale:
-
++ An absolutely fantastic submission of the sort that will only come along a few times during the quarter. To ensure that this score is given only rarely, any grade of ++ must be approved by the instructor and TA. Since your section leader would almost certainly want to show off any assignment worthy of a ++, this review process should not be too cumbersome.
-
+ A submission that is "perfect" or exceeds our standard expectation for the assignment. To receive this grade, a program often reflects additional work beyond the requirements or gets the job done in a particularly elegant way.
-
âś“+ A submission that satisfies all the requirements for the assignment, showing solid funtionality as well as good style. It reflects a job well done.
-
âś“ A submission that meets the requirements for the assignment, possibly with a few small problems.
-
✓– A submission that has problems serious enough to fall short of the requirements for the assignment.
-
– A submission that has extremely serious problems, but nonetheless shows some effort and understanding.
-
–– A submission that shows little effort and does not represent passing work.
From past experience, we expect most grades to be
+ and
.
Dividing the grades into categories means that your section leader can
spend more time talking about what you need to learn from the assignment
and not have to worry about justifying each point. The overall goal is
to maximize the learning experience in doing the assignments, and we
have found the "bucket" grading system to work much better for
programming assignments than assigning numeric grades from a pedagogical
perspective over many quarters of experience.
For each assignment, you must make an appointment with your section leader for an interactive-grading session. Your section leader will explain in section how to schedule these sessions and go over the grading process in more detail.
Late policy
Each of the assignments is due at the start of class on the dates specified in the syllabus. The program code for your assignments must be submitted electronically as described in a separate handout. All assignments are due at 12:15p.m. sharp on the dates indicated on the assignment handout. Anything that comes in after 12:15p.m. will be considered late.
Because each of you will probably come upon some time during the quarter
where so much work piles up that you need a little extra time, every
student begins the quarter with four free "late days." Each "late day"
is a 24-hour period (i.e., from Monday at 12:15p.m. to Tuesday at 12:15p.m. is one late day). Your free late days
allow you to turn in assignments past the regular deadline without
penalty (until you have used them all). After the free late days are
exhausted, programs that come in late (up to a maximum of five days
late) will be assessed a late penalty of one grade “bucket” per day
(e.g., a
+ turns
into a
, and
so forth). Assignments received later than five days following the
due date will not be graded. The interactive-grading session with
your section leader must be scheduled within two weeks of the due date.
Note that no late days may be used on the last assignment (#7) as
no assignments will be accepted after the last day of the quarter (June
1st).
You should think of these free late days as extensions you have been granted ahead of time, and use them when you might have otherwise tried to ask for an extension. As a result, getting an extension beyond the four free late days will generally not be granted. In very special circumstances (primarily medical problems or other emergencies), extensions may be granted beyond the late days. All extension requests must be directed to the head TA no later than 24 hours before the program is due. Only the head TA will be able to approve extensions. In particular, do not ask your section leader.
Examinations
There will be two exams during the class. The midterm exam will be a two-hour test administered outside of class from 7:00pm-9:00pm on Tuesday, May 3rd. If you have a conflict with this time, and absolutely cannot make the regularly scheduled midterm, you must send a request by electronic mail to me (sahami@cs.stanford.edu) by 5:00pm on Monday, April 25th to arrange an alternate exam time. Any alternate midterm exam will be within at most one day (earlier or later) than the regular exam time, so make sure you are available in that time window if you cannot make the regular exam.
The final examination is scheduled for Friday, June 3rd from 8:30am-11:30am. For a variety of reasons (including university policy), there will be no alternate time for the final exam. Please make sure that you can attend the final exam at the specified time before enrolling in the class. All examinations are open-book.
Grading
Final grades for the course will be determined using the following weights:
50% Programming assignments (weighted toward the later assignments)
15% Midterm examination
30% Final examination
5% Section participation
IMPORTANT NOTE: We are strong believers in mastery learning—that is, students should show mastery of the course material by engaging in all of it. Therefore, to pass the class you are required to make a real effort on and submit all the assignments, take both exams, and attend/participate in section. Exceptions can be be granted in special circumstances that are pre-approved by the head TA (e.g., medical or other emergencies). But, importantly, skipping some portion of the class because you think you “don’t need it” to pass the class is taken as an indication of lacking mastery of the material and can lead to a non-passing grade. We want you to engage with all the material in the class, not aim to do the minimal amount that you think might be required for passing. Please take this to heart when doing the work for this class.
Computer facilities
As in any programming course, the assignments in CS 106A require extensive hands-on use of a computer. The preferred platform for doing the work is the PyCharm development environment which runs under both Mac OS and Microsoft Windows. Instructions on obtaining and using the PyCharm environment—which is free to download—will be available on the class website.
Course privacy statement
As noted in the University’s recording and broadcasting courses policy, students may not make audio or video record class meetings without permission from the instructor (and guest speakers, when applicable). If the instructor grants permission or if the teaching team posts videos themselves, students may keep recordings only for personal use and may not post recordings on the Internet, or otherwise distribute them. These policies protect the privacy rights of instructors and students, and the intellectual property and other rights of the university. Students who need lectures recorded for the purposes of an academic accommodation should contact the Office of Accessible Education.
Affordability
Stanford University and its instructors are committed to ensuring that all courses are financially accessible to all students. If you are an undergraduate who needs assistance with the cost of course textbooks, supplies, materials and/or fees, you are welcome to approach the course staff directly.
If you would prefer not to approach the course staff directly, the First-Gen and/or Low Income (FLI) Office may be able to financially assist undergraduate students who are experiencing a temporary financial challenge from a hardship or who are seeking funds for an opportunity related to their academic, professional, and/or social development. Go to https://fli.stanford.edu/.
Support services
The COVID-19 pandemic is a stressful time for us all. In addition, you may experience a range of other challenges that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce your ability to participate in daily life. Stanford is committed to advancing the mental health and well-being of its students. If you or someone you know is feeling overwhelmed, depressed, and/or in need of support, services are available. You can learn more about the broad range of confidential mental health services available on campus here: https://caps.stanford.edu/
Academic accommodation
Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Office of Accessible Education (OAE). Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty dated in the current quarter in which the request is being made. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations. The OAE has contact information on their web page: http://oae.stanford.edu.
Ongoing improvements
As part of our ongoing efforts to make this course an even better experience for students, our teaching team continually conducts research to improve our teaching methods. In this course, new teaching methods may be used and various aspects of student performance may be analyzed on an ongoing basis. Information about you and your personal performance in this course will be held strictly confidential, but aggregate information for the whole class may be reported. If you would like to opt out of participating in any new teaching methods or having your performance analyzed as part of this research, you may do so without penalty. For more information, please contact the instructors.
We’re looking forward to a fun class!