Computer Organization & Systems

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

Important course announcements will be posted below, on Ed Stem, 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. Updates will also be posted on the discussion forum.

  • assign5 Released! Saturday July 29 by Joel 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 Sunday Aug 6th at 11:59PM PT. You can find more details on the assignment page. We strongly recommend getting started early on this assignment! Goodluck everyone!
  • assign4 Released! Sat Aug 22 by Joel 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 Sun 7/30 at 11:59PM PT. You can find more details on the assignment page.
  • assign3 Released! Sat July 15 by Joel 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 5/3 at 11:59PM PT. You can find more details on the assignment page.
  • assign2 Released! Fri July 7th by Adam & Joel 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 has a hard deadline of Sunday, July 16th at 11:59PM PT. Note that we've also updated the codecheck tool to now check for indentation issues. Starting with the next assignment, part of your style grade will be dependent on having no code issues when run through the codecheck tool, so make sure to try it out! You can find more details on the assignment page.

  • assign0 Grades Released Fri July 7th by Adam & Joel 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 (/26): 1st quartile = 24, second quartile = 25, third quartile = 26. Way to go! Remember, always reach out if your struggling or stuck. We're here to help!

  • assign1 Released! Fri July 7th by Joel 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 Friday 7/7 at 11:59PM PDT. You can find more details on the assignment page.

    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. Also, please make sure to provide as much information as possible at office hours so that we can help you as best as we can! Goodluck!

  • Lab Assignments PostedMon. April 10 by Adam We have posted lab assignments - you can view your assignment from the "labs" dropdown in the top toolbar. We did our best to assign everyone to one of their top choices. On this form, if you'd like, you can also join a different lab with space available. Unfortunately, if a lab is full, we are not able to accommodate additional students at this time, but check back later, as enrollments may shift over time.

    Labs start Wed., and this week your lab leader will introduce themselves and explain everything about lab and what it's all about. You can find more information about labs and lab policies on the course information page. We'll see you in lab this week in Gates 100!

  • Welcome Survey Sun. June 25th by Adam & Joel Hey everyone! Please make sure to fill out this welcome survey. Your input is invaluable in helping us get to know you better, understand your goals for the quarter, and determine the most effective ways to support you during this time. Thank you in advance for your participation!

  • Welcome! Sat. June 24th by Adam & Joel Welcome to CS107! Class starts on Monday, April 3th at 3:00PM in NVIDIA Auditorium. We are very excited for the summer session and look forward to meeting you and beginning a great quarter together! The website features the core information that you will need for the class including an FAQ, which can help guide you through common questions!

Course Logistics

Lectures: Mon/Wed/Fri 3:00PM-4:15PM in NVIDIA Auditorium

Labs: Wed & Fri at 12:30 PM - 2:00 PM in Gates 100.

Exams:

  • Midterm Exam
    Date/Time: Wednesday, August 9th & Friday, August 11th 3:00PM-4:15PM (During the normal lecture time)
    Location: NVIDIA Auditorium
    Info: Midterm Webpage


Feedback

  • How are we doing? Submit anonymous feedback here.

Course Staff

Instructor email: joel101@stanford.edu, akeppler@stanford.edu
Head TA email: rebelsky@stanford.edu
Visit the Getting Help page for more information about how to contact the course staff.

Adam Keppler (Instructor)

Joel Ramirez (Instructor)

Daniel Rebelsky (Head-CA)