You are on page 1of 6

CS107 Summer 2012

Handout 01 June 25st, 2012

CS107 Course Information


Instructor: Email: Phone: Office: Office hours: Lectures: Jerry Cain jerry@cs.stanford.edu 415-205-2242 (after 7 a.m. and before 9 p.m.) Gates 192 MWF 1:15 4:15 p.m. in Gates 192 MWF 11:00 a.m. 12:15 p.m. NVIDIA Auditorium 5 units. Only matriculated graduate students with RA- or TA-ships can register for fewer than five units. Undergraduates and SCPD students need to enroll for all five. Daniel Hollingshead (dhollingshead@stanford.edu) Nicholas McGee (ndmcgee@stanford.edu) Lilian Tran (liliant@stanford.edu) CS107 TAs attend lectures, hold office hours, lead coding laboratories, evaluate your program submission, and grade your midterm and final exams. One huge plus is that all of our TAs have taken CS107 before, and many have already TAed it. They all know the material inside and out, and because theyve worked with all of the very same programs youll be working on, they already know what your questions and pain points will be. Labs: Each student participates in a two-hour lab session every week, working in pairs on short, targeted exercises. The labs are, in my opinion, the most useful part of CS107 instruction, because youre forced to investigate the details of the material in a chill setting. Labs will, at least initially, be held in Gates B08 on Tuesdays and Thursdays. Normally, we require lab attendance. But the reality of summer quarter is that most students have multiple things going on, so Im not going to require lab attendance, but rather strongly encourage it unless you need to work or youre out of town. You are still required to work through the labs (even if you do them outside of your officially scheduled lab slot) and then email completed lab worksheets to your TA by Sunday at noon.

Units:

TAs:

2 The labs will formally begin the week of July 2nd. Visit the Sections tab of the course web site to sign up for a section. Students are accommodated on a first-come, first-served basis, and once a section fills up, you cant sign up for that section. (SCPD students neednt sign up for a specific lab time unless you plan to come to campus to participate.) Well also hold labs this week (starting tomorrow), but you only need to attend if youve never used UNIX before and you need a little help getting off the ground. And just this week, you can go to any listed lab times you want to, and not necessarily the one that you sign up for under the Sections tab. Were ber flexible about Week 1 labs, because we know that only about two-thirds of you will attend, and well have plenty of room. Prereqs: The prerequisite for the class is programming and problem solving at the CS106B/X level. CS106B and CS106X started teaching C++ about ten years ago, so Im assuming that virtually all of you know a reasonable amount it. If you dont know C++, then you have your work cut out for you these first few weeks, as its ultimately your responsibility to teach yourself enough C++ to brave our forays into low-level C programming. The hard prerequisite: you should be reasonably comfortable with arrays, pointers, references, classes, methods, dynamic memory allocation, recursion, linked lists, binary search trees, hashing, and function pointers. You should be able to write well-decomposed, easy-to-understand code, and do so not just because we make you, but because you understand why its the right way to code. Readings: The required text is "Computer Systems: A Programmer's Perspective" by Bryant and O'Hallaron, 2nd edition. This text was written for a similar course at Carnegie Mellon and provides thorough but accessible coverage of the core topics with an emphasis on acquiring practical skills. The bookstore is stocking a custom version we commissioned that includes only the chapters we cover (though you can also use the regular full edition if you have it or would prefer to buy the entire book.) Assigned readings from the text are important preparation for lecture and lab. You will also want a C language reference. We also recommend "The C Programming Language" by Kernighan and Ritchie for clear and succinct coverage, but other books or web resources on C can also be used. Web site: http://cs107.stanford.edu is your favorite new website. There youll find all of the reading assignments, staff email addresses, homework assignments, lab exercises, and the full list of office hours. If

3 you have any suggestions as to how to make the course website even better, then please feel free to drop Jerry an email. Software: The shared UNIX workstations (myth machines in Gates B08 and Gates B30, available via ssh) provide all of the development tools needed for the labs and the assignments. In most cases, you should technically be able to work on any platform you choose, provided you port your code back to the workstations for final testing and submission. But honestly, it makes more sense for you to work directly under UNIX and to not bother with any porting efforts during the 11th hour. Virtually all systems classes postCS107CS140, CS143, CS144, etc.require UNIX, so it makes sense to get the experience now when you have a dedicated staff willing to help. Everyone needs a SUNet ID in order to log into Stanfords UNIX machines. Returning students have most certainly taken care of this by now, but some new SCPD students may not have. If you need a SUNet ID, then you need to visit http://www.stanford.edu/dept/as/mais/applications/sunetid/ and step through the series of instructions outlined there. If you dont have a SUNet ID already, then you should do this as soon as you read this! Setup time can take 24 48 hours. There is a class mailing list that will be used for important or late-breaking announcements. All students enrolled in CS107 are automatically subscribed to the cs107-sum1112-students@lists.stanford.edu mailing list. The list server is in touch with Axess and automatically includes everyone enrolled in the course. Please make it a point to register for CS107 if you havent already, as I tend to make liberal use of the mailing list more during the first week of the course than any other time. You can follow cs107 at http://www.twitter.com. I rarely tweet as cs107, but I do on occasion, and several students tag cs107 when theyre exceptionally pleased or, more often, exceptionally angry with me. If you have a question you think would be of interest to other students and you think other CS107 students might be able to answer it, visit the Forums tab on the course website. The course staff will also participate in the question-and-answer process, and well edit questions and answers if we feel a clarification or correction is needed. When you have a private question for the course staff (such as one that pertains to your own code), please send your email to cs107@cs.stanford.edu where we maintain a shared question queue. We prefer this over e-mailing the staff members individually as it gets you the

SUNet IDs:

Class email:

Web 2.0

Forums:

Staff email:

4 quickest response and helps us load balance. It also allows us to track which questions are being asked repeatedly so we can post a clarification on the Forums for the benefit of everyone. Warning: Understand ahead of time that we will not respond very positively to questions generically framed around a bug somewhere in an attached file. You need to work to isolate where the bug is and include only a few linesor perhaps a very small function and the call siteif youre to get a meaningful response out of us. The Ive-been-looking-at-this-for-days-and-I-cant-fix-itcan-you? will be answered with a crisp request to further isolate the problem. Grading: This class is offered with both the graded and CR/NC options. The course grading is divided between programming assignments, laboratory writeups, one midterm, and a final exam. The approximate grade breakdown is: Assignments Labs Midterm Final 50 % 10 % 20 % 20 %

To receive a passing grade, you must pass at least one of the two exams. Restated, if you fail both the midterm and the final exam, then you will fail the class in spite of your stellar work on the assignments. Grades in CS107 tend to be very good: Between one third and one-half of CS107 students pull some form of an A, and all but a handful end up with a Bor better. Exams: The (open-book, open-lecture-notes, closed-computer) midterm will be given on Wednesday, July 25th from 7:00 p.m. 9:00 p.m. in a location to be announced. My midterms arent intentionally written to fill the entire time, but in the interest of removing time pressure I give what I hope is more than an adequate amount of time. If Wednesday evening doesnt work for you, then youll need to take the exam during some two-hour window before the normal exam timelikely Tuesday night or Wednesday during the day. Because the exam is held outside the normal class time, I am more than happy to accommodate all reasonable requests. The three-hour, open-book, open-lecture-notes, closed-computer final exam will be offered on Saturday, August 18th from 8:30 a.m. until 11:30 a.m. Im not giving an alternate final, since this time slot is set aside for

5 classes that meet MWF at 11:00 a.m. The fact that its a Saturday morning isnt something I can change. Late Policy: The class material builds on itself and getting behind is taboo, as it tends to impede progress on subsequent assignments. Late submissions make us grumpy, so any assignment turned in late will be assessed a penalty of 10% per day (24-hour period). Assignments will not be accepted more than two days after the original assignment due date. The TAs are as busy as you are, and its unfair to have them go back and grade a second wave of late assignments when Im pressuring them to grade the on-time ones as quickly as possible. One exception: all Assignment 1 submissions must be submitted on time. We need to be particularly aggressive about grading these so we can get them back to you before Assignment 2 falls due. That said, we all have our emergencies. I suffer from personal drama from time to time, and I expect you do too. Instead of demanding that you ask for special allowances on an individual basis, I will give each of you the privilege of granting yourself small extensions whenever crises arise. You get three free late days (24-hour periods) that you may use to extend the due dates of any assignment without penalty. You may use one or two of your free late days for any particular assignment. If an assignment is due on Wednesday night, then using one late day brings extends the deadline to Thursday night, and using two late days extends the deadline to Friday night. If an assignment is due on Friday night, then using one late day brings extends the deadline to Saturday night, and using two late days extends the deadline to Sunday night. Understand that requests for additional late days are consistently denied unless the three free ones were used for the very best of reasons. If you would be comfortable going up in front of the class and explaining why your situation is exceptional and requires special consideration, then you probably have one of the very few legitimate arguments for an additional late day or two. (Once all your free late days are gone, you can still hand work in late, but that 10% penalty kicks in.) Disabilities: Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Student Disability Resource Center (SDRC) located within the Office of Accessible Education (OAE). SDRC 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

6 the request is being made. Students should contact the SDRC as soon as possible since timely notice is needed to coordinate accommodations. The OAE is located at 563 Salvatierra Walk (phone: 723-1066). Incompletes: You may take an incomplete in the class if and only if you've completed everything except the last assignment and the final exam. Unless you need the incomplete because of a personal emergency (death of a close friend of family member, severe illness requiring you to remain in bed or in the hospital), I will cap your final grade at a B+. Honor Code: Although you are encouraged to discuss ideas with others, your programs are to be completed independently and should be original work. Whenever you obtain significant help (from other students, the TAs, students in other classes, etc.) you should credit those who helped you in your program write-up, e.g. "The idea to use qsort to alphabetize the names came from a discussion with my TA, Nick McGee." Any assistance that is not given proper citation will be considered a violation of the Stanford Honor Code. To be even more specific, you are not allowed to collaborate on the coding of your programs, nor are you allowed to copy programs or even parts of programs from other students. The following three activities are among what I consider to be Honor Code violations in this course: 1. Looking at another students code. 2. Showing another student your code. 3. Discussing assignments in such detail that you duplicate a portion of someone else's code in your own program. Unfortunately, our department sees more than its share of Honor Code violations. Because its important that all cases of academic dishonesty are identified for the sake of those playing by the rules, we exercise our right to use software tools to compare your submissions against those of all other current and past CS107 students. It isnt my intent to create some Gestapo environment; Im just being clear about how far Ill go to make sure the consistently honest feel their honesty is valued. If the thought of copying code has never crossed your mind, then you neednt worry, because Ive never seen a false accusation make its way through Judicial Affairs. But if youre ever tempted to share codewhether its because you dont understand the material or you do understand but youre short on timethen you need to remember this paragraph is here.

You might also like