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.
Final Project Posted Fri. Mar 5 by Lisa 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! You will implement both an implicit free list allocator and an explicit free list allocator! This is an individual project. We hope you have fun with it. It is due Wednesday 3/17 at 11:59pm Pacific. Late submissions will be accepted until Friday 3/19 at 11:59pm Pacific.
Note: As part of the CR requirement in CS107, you must implement a implicit free list allocator that clears 70% of the functionality points (more on the assignment page).
Gradebook Updates Thurs. Mar 4 by Lisa You can now visit your Gradebook page to see your current final weighted score incorporating labs, lectures, the MQA, and assignments through assign4. More info in this Ed post and in our syllabus. This score will be updated again after we finish grading assign5.
Mid-Quarter Assessment Grades Released Wed. Mar 3 by Lisa Mid-quarter assessment scores have been released via Gradescope, an online course grading website. Solutions and exam stats are here. The original mid-quarter assessment (in PDF form) is here. More information about submitting regrade requests is on the mid-quarter assessment webpage. Awesome job on the assessment!
No lab this week Tue. Mar 2 by Lisa Our last lab will be next week. See you all then!
Assignment 4 Grades Released Mon. Mar 1 by Lisa 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 (/92): 1st quartile = 79, second quartile = 88, third quartile = 92. Awesome job!
Mid-Quarter Assessment Next Week Thu. Feb 18 by Lisa The CS107 mid-quarter assessment is next week, with an assessment window from Wednesday February 24 at 1PM PT through Friday February 26 at 1PM PT, and you can take the assessment during any 3-hour block in that window. Please see the mid-quarter assessment webpage for information about the assessment, as well as study tips. You can also find review materials, as well as a download of the BlueBook software. You should download BlueBook as soon as possible to become familiar with it. It is a program that can administer assessment files in a special file format. The encrypted file for the assessment will be available next week at the start of the assessment window.
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 3 Grades Released Sun. Feb. 21 by Lisa 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 = 86, second quartile = 91, third quartile = 95. Rock on!
Assignment 5 Posted Thu. Feb. 18 by Lisa Assignment 5 has been posted on the assignments page. It is meant to reinforce the topics of assembly translation and reverse engineering. There are two parts to this assignment. The first part is about an ATM withdrawal program containing some vulnerabilities - you'll need to use your C and assembly skills to find and demonstrate how to exploit these vulnerabilities. The second part is the binary bomb program, where you're given an executable "bomb" program to "deactivate" using your assembly and reverse-engineering skills. 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. 3/5 at 11:59PM PT. You can find more details on the assignments page.
Assignment 2 Grades Released Sat. Feb. 13 by Lisa 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 (/80): 1st quartile = 72, second quartile = 76, third quartile = 80. Nice work!
Assignment 4 Posted Wed. Feb 10 by Lisa 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
lscommand to implementing your own version of the
sortcommand. We hope you have fun with it! The assignment is due Wed. 2/17 at 11:59PM PT. You can find more details on the assignments page.
Assignment 3 Posted Wed. Feb. 3 by Lisa Assignment 3 has been posted on the assignments page. You will practice more pointers, arrays and heap allocation through implementing a file I/O function and your own versions of the Unix tail and uniq commands. The assignment is due Wed. 2/10 at 11:59PM PT.
You can find more details on the assignments page.
Note: Starting with assign3, you are required to fill out the QueueStatus questions for any debugging questions in helper hours. Our focus is on supporting you so that you can track down your own bugs, and our goal is to help you to take ownership of your own code and drive your own debugging. Please ask us how to best use tools, what strategies to consider, and how to improve your debugging process. The two questions to fill out on QueueStatus are (1) What question do you have? Please provide as much information as possible. and (2) What steps have you already taken to try and answer your question? (e.g. running gdb/valgrind, reading Resources page, etc.). This information is required for help with debugging questions. If you don't provide enough information on QueueStatus, we may ask you to please re-sign up in the queue once you can provide more information.
Assignment 1 Grades Released Wed. Feb. 3 by Lisa Assignment 1 grades have been posted to the Gradebook page, along with style feedback for the assignments. The quartiles of scores on assign1 functionality were (/80): 1st quartile = 70, second quartile = 77, third quartile = 80. Way to go!
Assignment 2 Posted Wed. Jan 27 by Lisa Assignment 2 has been posted! It is meant to reinforce the topic of C Strings, and you will parse environment variables and implement your own version of the Unix "which" command. We hope you have fun with it! The assignment is due Wed. 2/3 at 11:59PM PT. You can find more details on the assignments page.
Assignment 0 Grades Released Tue. Jan 26 by Lisa 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, which is all kinds of awesome. Keep that up!
Free Online CTL Tutoring Tue. Jan 26 by Lisa The Center for Teaching and Learning reached out asking us to share the following announcement about free tutoring. Feel free to get in touch with them if you're interested!
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!
Assignment 1 Posted Mon. Jan 18 by Lisa 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 Wed. 1/27 at 11:59PM PT. 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! 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.
Sign up for TreeHacks! Sun. Jan 17 by Lisa A CS107 alumna has asked to share the following announcement with all CS107 students: TreeHacks, Stanford’s largest annual hackathon! Applications are open at www.treehacks.com until January 24th - Stanford students get in automatically! TreeHacks is beginner-friendly, committed to supporting diversity and inclusivity, and prepared with a ton of incredible learning opportunities to fuel your high-impact creation. You can find more info about this year’s challenges and applying at treehacks.com or through Instagram or Facebook. Come to make lifelong friends, meet reps from future employers, and build something you really care about.
Helper Hours Schedule Posted Mon. Jan 11 by Lisa We have posted information about Helper Hours on the Getting Help page. We'll be using a tool called 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. Jan 11 by Lisa 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. 1/18 at 11:59PM PT, 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) Mon. Jan 4 by Lisa (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 PT on Friday, January 15. 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 CA) at email@example.com.
Welcome! Mon. Jan 4 by Lisa Welcome to CS107! Class starts remotely on Monday, January 11th. 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 fall 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.
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!
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 Feb. 24 1:00PM PT through Fri Feb. 26 1:00PM PT
The assessment is open-book, timed, and will be taken through BlueBook, an electronic test-taking software that runs on all modern operating systems. You will be able to download and complete the assessment in any 3-hour period in the 48-hour assessment window. More information to be released during the quarter.
Info: mid-quarter assessment webpage
- General Information and Syllabus contains a summary of the course logistics and policies.
- Honor Code and Collaboration details how the Honor Code applies in this course, including specific examples of acceptable and unacceptable collaboration.
- The FAQ contains answers to course questions and information about CS107E and CS107A.
- How are we doing? Submit anonymous feedback here.
Visit the Getting Help page for information about how to contact the course staff.