Exam Logistics
- The exam is Friday, July 18, 1:30 - 3:30 PM.
- We have assigned seating, and we are using multiple exam rooms!
- Please check this seat assignment page (Stanford login required) for your seat location. We recommend stopping by your assigned classroom to locate your seat at least one day before the exam. You'll be required to take the exam in your assigned room and seat.
- We recommend taking a screenshot ๐ท of your seating assignment in case the seating page goes kaput on the day of the exam. (That happened in Spring '24!)
- The general exam room breakdown is as follows:
- Most people will be in 420-040.
- Those with special circumstances (CGOE, OAE, athletic conflicts) can view the arrangements for their exam (time and place) on the seating assignment webpage linked above.
- The exam is closed-book, closed-notes, and closed-device. We will provide a printed copy of this reference sheet to jog your memory about the Stanford library functions. No additional aides are permitted.
- The exam will be proctored, and to ensure the integrity of the testing environment, the following policies and procedures will be in place:
- You will need to take the exam in your assigned seat. See link above for details.
- You will need to turn in your exam and present a Stanford ID when leaving the room.
- Backpacks are not allowed at your seats. You may have a small purse or fanny pack, as long as it is tucked out of sight during the exam. Any backpacks will have to be left at the front of the classroom. To avoid the possibility of lost or stolen property, please do not bring backpack to the exam room if possible.
- Accessing a cell phone, calculator, or other electronic device during the exam is prohibited, even to check the time. We'll make sure there's a readable clock in the classroom.
- If you need a restroom break during the exam, you must check in with a proctor before leaving the classroom.
Motivation
The midterm exam is intended to gauge your comfort and facility with the content from the first half of the course. Since the course topics build on each other, confirming you have a good grasp of the foundations and identifying which gaps to shore up now puts you on a solid path to be ready for what comes next.
Coverage
The exam will cover material from the start of the quarter through recursive backtracking. This means all content up through and including Lecture 12, Section 3, and Assignment 3.
Backtracking will still be fairly new to you at the time of the midterm, and you will not yet have completed a backtracking assignment. If we include any backtracking problems on the exam (which is not necessarily guaranteed), we will keep that in mind and very carefully moderate the difficulty of those questions. Keep in mind that reviewing backtracking problems should help shore up your understanding of recursion in general and therefore leave you in great shape to do well on any recursion questions that appear on the exam, even if they aren't explicitly focused on backtracking.
Format
The exam is a traditional pencil-and-paper exam and will not involve or require computers. Most questions will ask you to write a function or short passage of code that accomplishes a particular task. Other questions may ask you to read a provided passage of code and analyze or reason about its behavior. There may also be short answer questions to answer in prose.
If you're curious, you can read about our thoughts on coding without an IDE on exams.
Practice Exams and Other Resources
We have curated a collection of additional section problems (with solutions) to give more practice with core course concepts:
We have also assembled the following collection of practice exams for you to refer to as you prepare for the midterm. These are actual exams given in recent quarters, and they should be largely representative of what you can expect on your exam in terms of scope, content, difficulty, and format. We strongly recommend setting aside at least one of these exams to use as a practice exam where you sit down in a quiet, distraction-free environment and try to complete it in a two-hour block with no breaks and no reference materials (other than the official reference sheet that we will provide you with for this exam).
| โ ๏ธ | Please use these practice exams responsibly. Namely, do not expect that simply working through all these exams is a sufficient way to prepare for the midterm. It's important to focus on building a strong foundation in all the topics covered in class so far, to the point where being able to pass these exams becomes a natural side effect of your studies, rather than the primary goal that drives your studies. Seeking a deep understanding of all the topics and examples covered in class -- as well as getting repeated exposure to those topics over time -- will ensure that you're prepared to slay even if the structure, topic distribution, or style of this quarter's midterm exam deviates from the exams below. As part of your exam preparations, you should revisit the lecture notes for the course to ensure you're comfortable with all the topics we've covered. You should also ensure that you conquered all programming assignments and practice problems so far through sincere, individual effort that allowed you to build the important skills you were intended to acquire from them along the way. |
| ๐ | Keep in mind that if you peruse these exams with no time constraints, they might seem significantly easier than they would be if you were taking them with a strict time limit. Try to take at least one practice exam in exam-like conditions, including a strict three-hour time limit. |
- Higher priority practice exams:
- Practice Exam 4 and solution
- Practice Exam 5 and solution
- Practice Exam 6 and solution
- Practice Exam 7 and solution
Full disclosure: I think Practice Exam 7 might have been a bit on the easier and less imaginative side, particularly with its treatment of recursion. I expect this quarter's midterm to be more aligned with the difficulty and variegation of the other exams on this list.
- Lower priority practice exams:
We have also prepared a review session. You can find slides with the problems covered here, and a recording of the session here.
Additional practice resources include:
- Be sure to work through all lecture quizzes.
- Work the exam prep section at the bottom of each page of lecture notes.
- Revisit our section materials. We pack each weekly section handout with many more exercises that fit in the section meeting, so there are plenty of good options there. Many section exercises are similar size and scope to those we use for exams. (In fact, many section exercises originally appeared on exams in previous quarters).
- The exercises in the textbook are another great source for practice.
- The online coding practice site Code Step By Step has been recommended by past students as a useful tool. It offers many practice problems and autogrades your answers to give immediate feedback.
Advice
We absolutely want you to come out on top! The lectures, sections, and assignments work together to guide you toward mastery of the course learning goals and the exams serve as an assessment of your progress. The absolute best outcome everyone has a great grasp on the material to nail the exam.
Read on for our advice on how to make that happen for you!