Computer Organization & Systems

NOTE: this website is out of date. This is the course web site from a past quarter, Summer 2021. 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.

Summer 2021

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

Scroll to see more announcements. Announcements will also be posted on the Ed forum.

  • assign5 and Final Project Grades Released Tue September 7 by Andrew The Gradebook page has been updated with all grades for the quarter, including assign5 and the final project. Awesome work this summer!

  • Final Project Posted Fri August 13 by Andrew The Final Project has been posted on the assignments page. It is meant to act as a capstone for all the topics we've covered this quarter by implementing your very own heap allocator! We hope you have fun with it. It is due Wed 8/25 at 11:59PM PT. As usual, up to 2 late days may be used for a final deadline of Fri 8/27. You can find more details on the assignment page. Important note: in order to pass the course, you must implement an implicit free list allocator that clears 70% of the functionality points (more on the assignment page).

  • assign4 Grades Released Tue August 10 by Andrew Assignment 4 grades have been posted to the Gradebook page, along with style feedback for the assignments. The quartiles of scores on the functionality portion of the assignment were as follows (/107): 1st quartile = 81, second quartile = 101, third quartile = 104. Awesome job!

  • assign5 Released! Fri July 30 by Andrew Assignment 5 has been posted in the assignments dropdown. It is meant to reinforce the topics of assembly translation, reverse engineering, and trust and privacy. The backstory: you have been hired as a security expert for Stanford Bank (a fictional on-campus bank). They need you to investigate reports of infiltration and security issues and replicate the issues so that they can fix them. There are three parts to this assignment, and each one will have you investigate supposed vulnerabilities and assess the risks the bank faces. These problems are like C/assembly "puzzles" to solve, and we hope you enjoy solving them and exploring this material as much as we enjoyed creating them! The assignment is due Fri 8/13 at 11:59PM PT. You can find more details on the assignment page.

  • assign3 Grades Released Fri July 30 by Andrew Assignment 3 grades have been posted to the Gradebook page, along with style feedback for the assignments. The quartiles of scores on the functionality portion of the assignment were as follows (/95): 1st quartile = 82, second quartile = 90, third quartile = 94. Rock on! See our Ed post for more details about the assignment feedback.

  • assign2 Grades Released Thu July 22 by Andrew Assignment 2 grades have been posted to the Gradebook page, along with style feedback for the assignments. The quartiles of scores on the functionality portion of the assignment were as follows (/94): 1st quartile = 82, second quartile = 90, third quartile = 93. Awesome job!

  • assign4 Released! Wed July 21 by Andrew Assignment 4 has been posted on the assignments page. It is meant to reinforce the topic of generics, disclosure and partiality, 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 Fri 7/30 at 11:59PM PT. You can find more details on the assignment page.

  • assign1 Grades Released Thu July 15 by Andrew Assignment 1 grades have been posted to the Gradebook page, along with style feedback for the assignments. The quartiles of scores on the functionality portion of the assignment were as follows (/90): 1st quartile = 77, second quartile = 84, third quartile = 90. Awesome job!

  • assign3 Released! Wed July 14 by Andrew 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 Wed 7/21 at 11:59PM PT. You can find more details on the assignment page.

  • assign2 Released! Wed July 7 by Andrew Assignment 2 has been posted on the assignments page. It is meant to reinforce the topic of C Strings and thorough documentation, 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 Wed 7/14 at 11:59PM PT. You can find more details on the assignment page.

  • assign0 Grades Released Wed July 7 by Andrew Assignment 0 grades have been posted to the Gradebook page, along with style feedback for the assignments. The quartiles of scores on the functionality portion of the assignment were as follows (/25): 1st quartile = 24, second quartile = 25, third quartile = 25. Way to go! Check out Ed for a short debrief of the assignment.

  • assign1 Released! Tue June 29 by Andrew 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 understanding the effects of integer representations on real-world software. We hope you have fun with it! The assignment is due Wed 7/7 at 11:59PM PT. You can find more details on the assignment page.

    We encourage you to come to Assignment Handout Helper Hours (AHH Hours) to understand the assignment better - it'll be at 1pm PT on Tuesday, with the Zoom link on Canvas.

    As you start working, we want to include a reminder about the course style guide; it contains an in-depth reference about how to ensure your programs have great style! We have also added a new codecheck tool to this assignment - check out the spec for more information. Additionally, through TA helper hours and the discussion forum, our focus will be on supporting you so that you can track down your own bugs. Please ask us how to best use tools (like the brand-new GDB!), what strategies to consider, and advice about how to improve your debugging process or track down your bug. If you have debugging questions during helper hours, please make sure to gather information and explore the issue on your own first, and fill out the QueueStatus questions with this information. Starting with a future assignment, we will require this information when signing up for helper hours for debugging help, so please make sure to provide as much information as possible.

  • Free Online CTL Tutoring Tue June 22 by Andrew The Center for Teaching and Learning reached out asking us to share the following announcement about free tutoring. "Are you a matriculated Stanford student and would like 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. We also have a variety of remote learning resources and academic coaching available to assist with all of your learning needs!"

    As a reminder, with any tutoring, please make sure to adhere to the course honor code and collaboration policy. You can find information about tutoring in particular on the collaboration page.

  • Welcome! Sun June 20 by Andrew Welcome to CS107! Class starts remotely on Monday, June 21st. We are looking forward to meeting you and starting off a great quarter together! We'll have more details to come about the format of CS107's remote summer offering. In the meantime, please feel free to check out the updated FAQ. It covers questions about recorded lectures, conflicting classes, CS107E, CS107A, and more. We hope you find it helpful! Other details and course policies listed are subject to change, so please stay tuned.

Course Logistics

Lectures: Mon & Fri 1:00PM-2:20PM PDT via Zoom (link on Canvas)

Labs: Labs are on Tuesdays through Thursdays over Zoom. Students should sign-up for and attend the same lab each week.

  • Mid-Quarter Assessment
    Assessment Window: Wed August 4 1PM PT through Fri August 6 1PM PT
    The assessment is open-book, timed, and will be taken through Gradescope, an online test and grading website. You will be able to take the assessment in any 3-hour period in the 48-hour assessment window.
    More Info: See our Mid-Quarter Assessment page.

Feedback

  • How are we doing? Submit anonymous feedback here.

Course Staff

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

Cem Gokmen

Lucas Sato

Maddy Yip

Makena Low

Ofure Ebhomielen

Seiji Eicher

Teresa Noyola