Computer Organization & Systems

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

Spring 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

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

  • Final Project Grades Released Tues. June 15 by Nick Final Project grades have been posted to the Gradebook page, along with comments for your work. The quartiles of scores for the functionality portion of the project (which included functionality tests, the readme, and scores for dump_heap and validate_heap) were as follows (/122): 1st quartile = 80, second quartile = 110, third quartile = 118. Congratulations on completing your heap allocators!

  • Assignment 5 Grades Released Tues. June 15 by Nick Assignment 5 grades have been posted to the Gradebook page, along with feedback for the readmes. The quartiles of scores were as follows (/102): 1st quartile = 87, second quartile = 97, third quartile = 100. Congratulations on disarming your vaults, exploring dataset aggregation and finding vulnerabilities in ATM!

  • CS107 Recap Page Posted Tues. June 8 by Nick As an additional resource to our final wrap-up lecture, we've posted a CS107 Recap Page that sums up everything we did this quarter, where you could go next, and ways to explore the CS107 material further if you're interested. We encourage you to check it out!

  • Assignment 4 Grades Released Thurs. May 27 by Nick 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 = 98, second quartile = 103, third quartile = 107. Awesome job!

  • Final Project Posted Tues. May 25 by Nick The Final Project 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. It is due Fri. 6/4 at 11:59PM PST. Because it is the end of the quarter, no late submissions will be accepted for the final project. 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).

  • Post-Assessment Advice Page Posted Thurs. 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!

  • Assessment Grades Released Sun. May 16 by Nick Mid-quarter assessment 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 mid-quarter assessment webpage. Nice job on the assessment!

  • Assignment 5 Posted Thurs. May 13 by Nick 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 Mon. 5/24 at 11:59PM PST. You can find more details on the assignment page.

  • Assignment 3 Grades Released Sun. May 10 by Nick 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 = 85, second quartile = 93, third quartile = 95. Rock on! See our Ed post for more details about the assignment feedback.

  • Watch Parties Policy Update Fri. May 7 by Nick We have updated our course policy for watch party attendance to no longer require attending 1 watch party. Instead, we will count attending at least one watch party as the equivalent amount of extra credit, and if you haven't yet had a chance to attend one but would like to, you can receive this extra credit for attending anytime through the end of the quarter.

  • Mid-Quarter Assessment Next Week Fri. April 30 by Nick The CS107 mid-quarter assessment is next week, with an assessment window from Wednesday May 5 at 1PM PDT through Friday May 7 at 1PM PDT, and you can take the assessment during any 3-hour block in that window via Gradescope, on online assessment website. Please see the mid-quarter assessment webpage for information about the assessment, as well as study tips and review materials.

    If you have academic accommodations, e.g. through OAE, and have not already let us know, please let us know as soon as possible.

  • Assignment 2 Grades Released Thurs. April 29 by Nick 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 = 85, second quartile = 90, third quartile = 94. Nice work!

  • Assignment 4 Posted Thurs. April 29 by Nick 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 Wed. 5/12 at 11:59PM PST. This is an extended deadline due to the mid-quarter assessment in the middle (normally we would give about a week-and-a-half for the assignment). You can find more details on the assignment page.

  • Assignment 3 Posted Thurs. April 22 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 Wed. 4/28 at 11:59PM PST. You can find more details on the assignment page.

  • Assignment 1 Grades Released Wed. April 21 by Nick 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 = 78, second quartile = 86, third quartile = 90. Awesome job!

  • Apply to Section Lead! Thurs. April 15 by Nick We wanted to pass along the following message from the CS198 Coordinators about applying to section lead. They gave an overview of the program at the start of the lecture 5 live session, so check that out if you'd like as well! "We are now accepting applications for CS106 section leaders for Autumn 2021! To apply, you must be currently enrolled in, have completed, or have equivalent experience to CS106B/X.

    Section leaders hired this quarter will begin in the Autumn. Section leading is a two-quarter commitment, but you are still welcome to apply if you plan to go abroad in the fall (or next winter).

    Our deadlines are Thursday, April 22nd at 11:59PM PT (for students who have completed CS106B/X) and Saturday, May 8th at 11:59PM PT (for current CS106B students only). Apply here, and please let us know if you have any questions!

  • Assignment 2 Posted Thurs. April 15 by Nick 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. 4/21 at 11:59PM PST. You can find more details on the assignment page.

  • Assignment 0 Grades Released Wed. April 14 by Nick 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.

  • Lecture Watch Parties Start This Week Mon. April 12 by Nick We are officially rolling out watch parties starting this week. Lecture watch parties are informal times when you can get together with other students and TAs to watch lecture videos together. You can pause the videos whenever you'd like, stop to ask questions or discuss, and better understand the lecture material together.

    The watch parties page is accessible from "Lectures" dropdown. Check it out for upcoming watch parties, or to add your own! Each week (starting this week, we are adding to the calendar now), TAs will host watch parties for different subsets of the lecture videos. We also encourage you to host your own as well! If you want to add your own watch party to the calendar, click "Host a Watch Party" and enter the information for when you'll hold your watch party and what you plan to watch. We want to encourage you to try them out to see if they're something you find helpful to learn the lecture material; for that reason, part of your lecture quiz grade (worth 1 lecture) is to attend one TA-hosted lecture watch party before the mid-quarter assessment.

  • Assignment 1 Posted Tues. April 6 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 understanding the effects of integer representations on real-world software. We hope you have fun with it! The assignment is due Wed. 4/14 at 11:59PM PST. 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 stylecheck 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 Sun. April 4 by Nick The Center for Teaching and Learning reached out asking us to share the following announcement about free tutoring. 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. We also have a variety of remote learning resources and academic coaching available to assist with all of your learning needs! The CTL team is also looking for tutors for the 21-22 academic year — to learn more about this opportunity, check out our website or email Alex Ayers (aeayers@stanford.edu) directly."

    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.

  • Lab Assignments PostedSun. April 4 by Nick 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 Tues., and there's nothing you need to do before lab this week - you will be able to find Zoom links for all labs on Canvas (you will see all lab links, but join just the one you are assigned to) closer to the start of your lab. 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!

  • Lab Signups Open at 5PM until Sat. 5PM Tues. March 30 by Nick Lab preferences submissions open at 5PM PDT today. From then until Saturday at 5PM PST, please submit your lab preferences for which lab you would prefer to attend this quarter. Note that preferences are not first-come first-serve; you may fill out your preferences anytime between those dates, and you may come back to update your preferences later as well. We may add more labs later in the week, and will let you know if more options become available. You can access the preferences form in the "Labs" dropdown at the top of the page. For more information about labs including attendance, missing labs, and other policies, see the labs section of our course information page.

  • Additional Short Lecture 1 Video Posted Tues. March 30 by Nick Since we didn't have time to go over all the information about C in the lecture 1 slides yesterday, we've posted a short additional lecture video going over more details about C that are helpful to know as you get started with the first assignment. We hope you find it helpful!

  • Helper Hours Schedule Posted Tues. March 30 by Nick We have posted information about Helper Hours on the Getting Help page. We'll be using Nooks this quarter to facilitate Helper Hours and staff shifts during Helper Hours. Please join our Nooks community to work with other students, and to get help from the TAs! You don't need to have questions to come by Helper Hours - feel free to drop in and chat with others anytime! You can also see the calendar for Staff Helper Hours on the Getting Help page as well.

  • Assignment 0 Posted Mon. March 29 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. 4/5 at 11:59PM PST, and there are no late submissions accepted for this assignment (late days or otherwise), so please make sure to submit by the deadline.

  • Apply to CS107A (ACE/Pathfinders) Sun. March 28 by Nick (based on CS106B post written by Sonja Johnson-Yu) CS107A, also known as CS107 ACE, is a 1-unit supplementary section designed to build a stronger foundation in computer science. Students participating in ACE will attend an additional weekly section and participate in special office hours and ACE-specific review sessions. Section is scheduled for Tuesdays and Thursdays 10-11:00AM PT, but an asynchronous option will be available for students in international time zones or with class conflicts.

    ACE is one of the School of Engineering’s Equity and Inclusion Initiatives. We especially want to provide an opportunity for students who come from educationally disadvantaged backgrounds or for anyone who feels they might need additional support in order to succeed. We limit enrollment to enable small classes that allow students to have one-on-one interactions with the CA.

    If you are interested in joining the ACE section, please apply online - click here. The application will be open until 5PM PDT on Friday, April 2. Prior to application results being released, any student who's applying/planning to apply should attend CS 107A sections. You can find more information about CS107A on our FAQ page. If you have further questions about ACE, feel free to reach out to Andrew Benson (CS107A TA) at adbenson@stanford.edu.

  • Welcome! Sun. March 28 by Nick Welcome to CS107! Class starts remotely on Monday, March 29th. 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 spring 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: Tue/Wed/Thu at various times on Zoom; students sign up for labs after the quarter begins.

  • Mid-Quarter Assessment
    Assessment Window: Wed May 5 1PM PT through Fri May 7 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. Info: mid-quarter assessment webpage

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.

Aditi Gaur

Alex Bucquet

Brynne Hurst

Cem Gokmen

Gurdeep Sullan

Jonathan Kula

Maddy Yip

Makena Low

Manav Aggarwal

Sean Konz

Seiji Eicher

Sharan Ramjee

Varin Nair

CS107A CA: