Computer Organization & Systems

NOTE: this website is out of date. This is the course web site from a past quarter, Fall 2019. If you are a current student taking the course, you should visit the current class web site instead. If the current website is not yet visible by going to cs107.stanford.edu, it may be accessible by visiting this link until the new page is mounted at this address. Please be advised that courses' policies change with each new quarter and instructor, and any information on this out-of-date page may not apply to you.

Fall 2019

Important course announcements will be posted below and announced in class. You are responsible for all material that appears here and should check this page for updates frequently.

Announcements

  • Final Course Grades Posted Wed. Dec 18 by Nick Final grades have been uploaded to Axess. Check your Stanford email for more details about grades. Have a great winter break - we hope you enjoyed the course!

  • Final Exam Grades Released Wed. Dec 18 by Nick Final exam scores have been released via Gradescope, an online course grading website. You can find more information about the exam statistics, how to see your score, and information about regrade requests, on the exam webpage. Awesome job on the exam!

  • Assignment 7 Grades Released Tues. Dec 17 by Nick Assignment 7 grades have been posted to the Gradebook page, along with comments for your work. The median on the assignment was 100/112. Congratulations on completing your heap allocators!

  • Assignment 6 Grades Released Sun. Dec 8 by Nick Assignment 6 grades have been posted to the Gradebook page, along with comments for your work. The median on the assignment was 78/84. Congratulations on defusing your bombs and finding vulnerabilities in ATM!

  • Final Exam Fri. 12/13 8:30-11:30AM PST in Dinkelspiel Auditorium Wed. Dec 4 by Nick The CS107 final exam is on Friday, December 13th from 8:30-11:30AM PST in Dinkelspiel Auditorium. Please see the final exam webpage for information about the exam, as well as study tips and review materials. The exam will rely on the same version of BlueBook you previously downloaded for the midterm. The encrypted file for the exam will be posted in advance of the exam, and you will be notified when it is available. Download the file ahead of time so you are prepared when the exam starts. We will provide a password to unlock the exam at the start.

    If you have academic accommodations (e.g. OAE) or athletics accommodations, or if you do not have a workable laptop for the exam, please let us know by Friday, December 6 at 11:59PM PST. Limited charging outlets will be available during the exam.

    NEW: We will also be holding a CS107 final exam review session on Monday, December 9 from 7-8:30PM PST in Hewlett 201. Please come with questions! A video of the session, and other materials used during the session, will be posted on the course website afterwards.

  • Assignment 5 Grades Released Tues. Nov 19 by Nick Assignment 5 grades have been posted to the Gradebook page, along with comments for your READMEs. The median on the assignment was 32/35 - awesome work!

  • Assignment 7 Posted Mon. Nov 18 by Nick Assignment 7 has been posted on the assignments page. It is mean to act as a capstone for all the topics we've covered this quarter by implementing our very own heap allocator! We hope you have fun with it. The assignment is due Fri. 12/6 at 11:59PM PST. Because it is the end of the quarter, there is no grace period for this assignment. You can find more details on the assignment page.

  • No Lecture 11/22 + Extra Helper Hours Mon. Nov 18 by Nick There will be no lecture this Friday, 11/22 - instead, Nick will be holding extra Helper Hours in Huang Basement during the full lecture period (11:30AM-1:20PM PST). Please feel free to stop by! Check the Helper Hours calendar on the Getting Help page for more information.

  • AFS Outage 11/14 + assign6 Extension Thurs. Nov 14 by Nick University IT just informed us of a maintenance outage they are planning for tonight between 10PM-12midnight PST. What this means is that you will not be able to make a new login into myth between those times. If you log in before then, and remain logged in, you should not see any interruptions. We have also been told that this should not impact access to the course website. Because of this interruption, as well as the interruptions earlier this week, we’ve decided to extend the assign6 on time deadline until Tues 11/19 at 11:59AM PST. The grace period deadline of 11/20 at 11:59PM PST will remain the same, but we wanted to adjust the on-time deadline because of these interruptions. We hope this helps you on assign6!

  • Helper Hours Location Change 11/14 Thurs. Nov 14 by Nick Due to a conference taking place on Thursday 11/14 in the Huang basement area where we usually hold our Helper Hours, for today (11/14) only we will be holding Helper Hours in different locations in the Gates Computer Science building instead. You can find the most up-to-date locations listed in the Helper Hours calendar on the Getting Help page here. (Note: Gates B- rooms are in the basement).

  • Assignment 4 Grades Released Mon. Nov 11 by Nick Assignment 4 grades have been posted to the Gradebook page, along with style feedback for the assignments. The median on the assignment was 87/92 - nice job!

  • A Note About Makeup Labs Sun. Nov 10 by Nick We have an important note about makeup labs that we brought up in lecture on Fri. and also wanted to post here. If you cannot attend your assigned lab during a given week, you may go to a different lab than your assigned one when space is available. We want to note that we may have to turn people away who are making up a lab if there is not enough space to accommodate them. For this reason, if you need to attend a makeup, you should plan ahead accordingly to ensure you can get lab credit for that week.

  • Assignment 6 Posted Sat. Nov 9 by Nick Assignment 6 has been posted on the assignments page. It is meant to reinforce the topics of assembly translation and reverse engineering. In the assignment, you'll be exploring vulnerabilities in a provided ATM program, and defusing a "binary bomb" executable without access to its source code. We hope you have fun with it! The assignment is due Mon. 11/18 at 11:59PM PST. You can find more details on the assignment page. This assignment makes use of material covered through this coming Monday, but you are able (and welcome!) to get started before then if you'd like. Monday's lecture will talk about how function calls and the stack work in assembly.

  • Post-Midterm Advice Page Posted Tues. Nov 5 by Nick We've posted a page containing information about commonly-asked questions heading into the final weeks of the course, for example about how to interpret course grades, succeed in the remainder of the course, and more. We hope you find it helpful!

  • Midterm Grades Released Mon. Nov 4 by Nick Midterm scores have been released via Gradescope, an online course grading website. You can find more information about the exam statistics, how to see your score, and information about regrade requests, on the midterm exam webpage. Awesome job on the exam!

  • Assignment 3 Grades Released Thurs. Oct 31 by Nick Assignment 3 grades have been posted to the Gradebook page, along with style feedback for the assignments. The median on the assignment was 90/95 - awesome work!

  • Midterm Exam Ready For Download Thurs. Oct 31 by Nick The CS107 midterm exam BlueBook file is now ready to download from the midterm exam webpage. You should download BlueBook and the exam file corresponding to your exam seating in advance of the exam. We will provide a password to unlock the exam at the start. Best of luck on the exam!

  • Assignment 5 Posted Mon. Oct 28 by Nick Assignment 5 has been posted on the assignments page. It is meant to reinforce the topic of floats and give exposure to working with assembly, with exercises ranging from exploring real-world applications of IEEE floating point to investigating the implementation of an executable program without having access to its source code. We hope you have fun with it! The assignment is due Fri. 11/8 at 11:59PM PST. You can find more details on the assignment page.

  • Midterm Exam Fri. 11/1 11:30AM-1:20PM Fri. Oct 25 by Nick The CS107 midterm exam is on Friday, November 1 from 11:30AM-1:20PM in Nvidia Aud. / Cubberley Aud. (depending on last name). Please see the midterm exam webpage for information about the exam, as well as study tips. You can also find review materials, as well as a download of the BlueBook software. You should download BlueBook in advance of the exam to become familiar with it. It is a program that can administer exam files in a special file format. The encrypted file for the midterm exam will be posted on Thurs. 10/31 before the exam. Download this file ahead of time so you are prepared when the exam starts. We will provide a password to unlock the exam at the start.

    If you have academic accommodations (e.g. OAE) or athletics accommodations, or if you do not have a workable laptop for the exam, please let us know by Sunday, October 27 at 11:59PM PST. Limited charging outlets will be available during the exam.

  • Assignment 2 Grades Released Thurs. Oct 24 by Nick Assignment 2 grades have been posted to the Gradebook page, along with style feedback for the assignments. The median on the assignment was 76/80 - nicely done!

  • Assignment 4 Posted Tues. Oct 22 by Nick Assignment 4 has been posted on the assignments page. It is meant to reinforce the topic of generics, void * pointers and function pointers, with exercises ranging from implementing your own version of the ls command to implementing your own version of the sort command. We hope you have fun with it! The assignment is due Mon. 10/28 at 11:59PM PST. You can find more details on the assignment page.

  • Assignment 3 Posted Tues. Oct 15 by Nick Assignment 3 has been posted on the assignments page. It is meant to reinforce the topic of pointers, arrays and heap allocation, with exercises ranging from implementing a convenient version of a C file I/O function to implementing your own versions of the Unix "tail" and "uniq" commands. We hope you have fun with it! The assignment is due Mon. 10/21 at 11:59PM PST. You can find more details on the assignment page.

  • Assignment 1 Grades Released Mon. Oct 14 by Nick Assignment 1 grades have been posted to the Gradebook page, along with style feedback for the assignments. The median on the assignment was 76/80 - awesome work!

  • Assignment 2 Posted Tues. Oct 8 by Nick Assignment 2 has been posted on the assignments page. It is meant to reinforce the topic of C Strings, with exercises ranging from implementing tools to display environment variables to implementing your own version of the Unix "which" command. We hope you have fun with it! The assignment is due Mon. 10/14 at 11:59PM PST. You can find more details on the assignment page.

  • Apply To Section Lead! Mon. Oct 7 by Nick The application is now open to apply to be a CS106 Section Leader starting in Winter 2019! The deadline for CS107 students is Thursday, October 17th at 11:59PM. Apply at https://cs198.stanford.edu, and please email cs198@cs.stanford.edu if you have any questions!

  • Assignment 0 Grades Released Mon. Oct 7 by Nick Assignment 0 grades have been posted to the Gradebook page, along with style feedback for the assignments. The median on the assignment was 25/25 - way to go!

  • Free VPTL Tutoring Tues. Oct 1 by Nick We've been asked to post the following message from the Center for Teaching and Learning: "Want to meet with an experienced peer to discuss course concepts, think through a problem set, or prepare for an upcoming exam? CTL offers appointment tutoring for CS 107, in addition to tutoring for a number of other courses. For more information and to schedule an appointment, visit our tutoring appointments and drop-in schedule page."

  • Assignment 1 Posted Tues. Oct 1 by Nick Assignment 1 has been posted on the assignments page. It is meant to reinforce the topics of bits, bitwise operators and integer representations, with exercises ranging from implementing the core "saturated arithmetic" algorithm to a bit-level cell simulation to a modern-day character encoding. We hope you have fun with it! The assignment is due Mon. 10/7 at 11:59PM PST. You can find more details on the assignment page.

  • Lab Signups Open Fri. Sep 27 by Nick Lab signups are now open! You can sign up using the link provided on the Labs page. Signups are first-come-first-serve, so we recommend signing up early if you have many scheduling constraints. You can also use the lab signup page to switch or drop your lab. Labs start next week.

  • Lab Schedule Posted Fri. Sep. 27 by Nick Lab signups open later this morning, so we have posted our current lab time offerings on the Labs webpage if you would like to plan ahead to decide your preferences on dates/times. Note that we may add additional labs depending on enrollment. Beginning at 10:30AM, you can access the lab signup page via the link on the labs page here.

  • Lab Signups Open Fri. 10:30AM Wed. Sep. 25 by Nick We are still finalizing lab times for the quarter, and for this reason are slightly delaying lab signups opening until Fri. 9/27 at 10:30AM. We appreciate your patience!

  • Helper Hours Schedule Posted Mon. Sep. 23 by Nick We have posted our helper hours schedule for the quarter on the Getting Help webpage. The schedule may fluctuate slightly as we finalize times, so please check the calendar on that page for the latest updates. Please feel free to stop by!

  • Assignment 0 Posted Mon. Sep. 23 by Nick Assignment 0 has been posted on the assignments page. It is meant as an introduction to Unix and C, with exercises ranging from uncovering who got unauthorized access to a filesystem to modifying a provided C program to accept command-line arguments. We hope you have fun! The assignment is due Mon. 9/30 at 11:59PM PST, and there is no grace period for this assignment, so please make sure to submit by the deadline.

  • Welcome! Fri. Sep. 20 by Nick Welcome to CS107! Our first lecture is Monday, September 23 at 11:30AM in NVIDIA Auditorium. We are looking forward to meeting you and starting off a great quarter together! If you have questions about the course before the quarter starts, please feel free to check out the FAQ. It covers questions about recorded lectures, conflicting classes, CS107E, CS107A, and more. We hope you find it helpful!

Course Description

CS107 is the third course in Stanford's introductory programming sequence. The CS106 courses provide you with a solid foundation in programming methodology and abstractions, and CS107 follows on this to build up and expand your breadth and depth of programming experience and techniques. The course will work from the C programming language down to the microprocessor to de-mystify the machine. With a complete understanding of how computer systems execute programs and manipulate data, you will become a more effective programmer, especially in dealing with issues of debugging, performance, portability, and robustness. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management.

The class has two lectures a week and a weekly lab designed for hands-on learning and experimentation. There will be significant programming assignments and you can expect to work hard and be challenged by this course. Your effort can really pay off - once you master the machine and advance your programming skills to the next level, you will have powerful mojo to bring to any future project!

Course Logistics

Lectures: Mon & Fri 11:30AM-12:50PM in NVIDIA Auditorium; Note that this is shorter than what Axess says. We will only use the full Axess-listed timeslot for the Midterm exam.

Labs: Tue/Wed/Thu at various times in Gates B08; students sign up for labs after the quarter begins.

Exams:

Course Policies

Feedback

Course Staff

Visit the Getting Help page for information about how to contact the course staff.

Instructor:

CAs:

Aleksander Dash

Eric Yang

Jason Lin

Jennifer Tao

Julia Truitt

Krishna Patel

Nikhil Athreya

Nolan Handali

Rifath Rashid

Timothy Le

Zack Cinquini

CS107A CA:

Jennie Yang