Mid-Quarter Diagnostic
See About Assessments for an overview of our plan for assessments.
The diagnostic solutions and criteria overview have now been posted.
Motivation
The CS106B diagnostic is intended as a way for us to identify early on in the quarter how comfortable you feel with the course material thus far. Since the course material builds on itself, checking that you have a solid grasp of the early foundational material is critical for making sure that you have the right scaffolding to assimilate other concepts that are learned later in the class.
The primary goal of the diagnostic is to provide feedback to you, but we want you to prepare for it and take it seriously, which is why it's worth 10% of your grade. We hope you'll take the diagnostic as an opportunity to see how much you've learned in the past few weeks, as well as what work you have left to do. After taking the diagnostic and receiving your graded feedback, you will also have the opportunity to reflect on your experience taking the diagnostic and your potential areas of growth that you'd like to focus on for the rest of the quarter.
Logistics
- The Mid-Quarter Diagnostic will be available for students to complete between Friday, July 17 (starting at 12:01am PDT) and Sunday, July 19 (ending at 11:59pm PDT). This time period will be referred to in the rest of this document as the "Diagnostic Administration Period."
- The diagnostic will be distributed and administered using a digital exam software called Bluebook. Instructions on how to download and use BlueBook can be found in the BlueBook section of this page.
- The diagnostic will be designed to be completed in about an hour to an hour and a half, but students will have the opportunity to work on the diagnostic for up to 3 hours if they so choose. This decision has been made to eliminate any time pressure when it comes to answering the questions on the diagnostic.
- Students with OAE accommodations will receive extended time to complete the diagnostic pursuant to the specifics of their accommodations. More details will be sent out via email to the students for whom this information is relevant.
- Each student will select a three-hour time period that is entirely contained within the Diagnostic Adminstration Period during which to take the diagnostic. You do not have to communicate with us when you plan to take the diagnostic. However, your diagnostic download and submission times will be monitored, and both download and submission must happen within a three-hour time span.
- The assessment will be open-note, open-book, and open-internet. You are prohibited from seeking help from other human beings ( fellow students, friends, family, folks on the internet, discussion forums). You may consult only inanimate sources of information. You can find more information on the Honor Code and how it applies to the diagnsotic below.
Honor Code
- We expect you to uphold your obligations to the Stanford Honor Code for the assessment, just as with all coursework.
- You are not to give nor receive unpermitted aid of any form.
- The work you submit is expected to be your independent, original work; not jointly developed nor derived from the work of another.
- You are not to discuss the content of the assessment with any other person (except for private, individual communication with the course staff to ask clarification questions). This restriction applies during your assessment and afterwards up until the time period closes for all assessments to be completed.
- The prohibition against sharing or discussing the assessment applies to the content in any form (verbal description, problem text, solution diagrams or code, and so on) and through any media (private conversation, email, Ed post, internet forum, etc.)
- To help guide your preparation and access of resources during the diagnostic, here is a non-exhaustive list of permissible and impermissible resources that you can access while taking the diagnostic
- Permissible (Allowed)
- Looking at any materials posted on the course website (lecture slides, section problems, practice diagnostic problems, etc.)
- Using Qt Creator or Ed to run code samples
- Use a Google search to find online materials related to course content
- Making a private post on Ed to ask a clarifying question about the wording of a problem
- Impermissible (Not Allowed)
- Making a public post on Ed about the questions on the diagnostic
- Talking to another person (besides Kylie, Nick, Trip, or a section leader) about the questions on the diagnostic
- Making a post on Stack Overflow (or related online websites) about the content of the diagostic
- Discussing any information about the diagnostic with someone who is not on course staff any time during the entire diagnostic window
- Permissible (Allowed)
Format
- The general format of the diagnostic will be a collection of questions that involve both reading/understanding provided code and writing code to solve a provided problem.
- All diagnostic content will be bundled up into a single file that is compatible with the BlueBook software.
- When a student is ready to start the diagnostic, they will visit a special portion of the course website to download the diagnostic file and the diagnostic password, necessary to unlock the BlueBook file.
- Students will then have up to 3 hours (or more, if provided by OAE accommodations) to work through the content of the diagnostic file. All answers and code will be typed directly into the file by using Bluebook. The remaining time left to work on the diagnostic will be displayed by the Bluebook software.
- Upon completion of the diagnostic, students will submit their answers through BlueBook. To submit the diagnostic, you must have internet access and your 2-factor authentication device. You may have to authenticate twice. Do not close Bluebook until you get a confirmation code saying that your diagnostic has been successfully uploaded. If the diagnostic upload fails, please reach out to a member of the course staff (Kylie, Nick, or Trip). The diagnostic data is stored on your computer, and we can access it after the diagnostic manually if necessary.
Content
The diagnostic will cover up through week three of the course, with the last lecture included being Thursday, July 9. Material covered will include the first three section handouts, as well as assignments 1 through 3. In particular, we will divide the diagnostic into four sections: one with short answers on interpreting code and threein which you will be asked to write code, with one code-writing section on C++ fundamentals, one focused on ADTs, and the last focused on recursion.
BlueBook
Please make sure to download and install BlueBook on your laptop before the diagnostic. Download links–as well as a guide to using BlueBook–can be found here. BlueBook was designed for closed-note assessments so the splash screen asks you to not access the internet or other applications. We are not enforcing this this quarter, but you should check the boxes anyway.
Additionally, the Honor Code requires that the solutions you produce are your own. You're welcome to use any external resources you want, but you should not be copying pre-existing solutions on the internet. BlueBook does not allow you to copy and paste into or out of the application to ensure your solutions are your own.
A practice diagnostic that can be run on BlueBook can be downloaded below. This practice will be run under timed conditions and will give you an idea of what to expect for the actual diagnostic.
If you run into any technical issues, shoot Kylie or Nick an email and they can help you find a resolution.
Note: BlueBook runs on Windows, macOS, and Linux computers. If you do not have one of these computers (e.g. a Chromebook), please let Kylie or Nick know as soon as possible.
Be sure to download the BlueBook software and sample diagnostic below and confirm that everything works correctly on your system. Please do this in advance of the Diagnostic Administration Period to give yourself time to resolve any pesky technical issues.
Practice Materials
The practice diagnostic questions have been posted. The Bluebook file can be downloaded using this link. If this link takes you to a page full of jibberish but does not download the file, just right-click somewhere on the page and select the "Save As…" option to save the contents of the page as a file on your computer. The password to unlock the diagnostic is redpanda.
We highly recommend working through the problems in a realistic envrionment first (set aside 1.5 hours of your time to work through it, collect all the resources you plan to use during the actual diagnostic, and take the diagnostic using BlueBook) before choosing to look at the solutions.
Note: Currently, we unfortunately don't have a way for students to access their own submissions from the BlueBook practice. If you'd like to compare your answers to the posted solutions, please make sure to copy, save, or otherwise keep your answers before submitting. Apologies for some of the growing pains as we develop all of the functionality of our new electronic system!
In addition to working through the practice diagnostic, we highly recommend starting your studying by working through the lecture examples and section problems posted on the course website. In particular, try working through section problems that you didn't get a chance to touch on during section. These problems provide a great opportunity for you to test your individual problem-solving merit! We add way more problems to the section handouts than can feasibly be covered in a 50-minute section for exactly this reason.
Finally, in the spirit of giving you more practice resources, we are also going to link some practice problems from exams that have been distributed in prior quarters. Please note that the overall composition of these problems should not be used as an indicator of the composition of the diagnostic, nor the complete set of topics that are going to be covered. These files have been made by other instructors for other versions of the class that are similar but not completely the same, and none of them have been developed under the context of digital learning. However, you may find individual problems contained within to be good practice of the material we've covered in the first three weeks of our course.
- Additional practice problems
- You can replace any instance of
HashSetandHashMapwithSetandMap, respectively, since we have no yet covered the hashed versions of these data structures in our class. These data structures have the same associated methods that you can use, but their runtimes may be different. - Please note that since these problems are taken from across various exams, the numbering will not be consistent. You should use the problem names/descriptions to match them to their solutions, which will appear in an identical order as the questions appear in the practice problem file.
- You can replace any instance of
- Additional practice problem solutions
Strategies
Assessments in the CS106 courses can be challenging. You may be unsure of how to make sure the skills you use on assignments will translate well to the timed diagnostic setting. The practice diagnostic gives an idea of what to expect, and this handout gives some sage advice gathered from our current and past staff members. We hope you will find our tips useful! Remember: We are assessing your ability to think logically and use appropriate problem-solving techniques. We expect you to express yourself in reasonably correct C++, but we will be quite lenient with errors that are syntactic rather than conceptual.
Digital diagnostics
Given the transition to online learning, we will be administering the diagnostic digitally. While a digital coding diagnostic might seem similar to working on an assigment, we want you to approach the assessment more similarly to if it were being administered on paper. For example, we have deliberately designed BlueBook to prevent you from running your code during the diagnostic. In particular, in a time-restricted situation, immediate feedback can sometimes be more of an impediment than an advantage. Imagine this: you read the first problem, have a good idea how to solve it, write your solution, and trace its operation and feel good. You compile and test it. Suppose it exhibits a bug — even though it may only be a minor issue, you can see that your answer is wrong so you hunker down and rework and retest until it's perfect… even if it takes the whole time. Bad deal – since you never got to the other problems! We want you to write your best answer and move on, and if you have time to double-check your work at the end, you can do so then.
How to study for the diagnostic
"Open Resource" doesn't mean "No Review Required"
The diagnostic is open-resource, and you can refer to slides, the textbook, your notes from lecture, course handouts, and your assignments. We don’t expect you to memorize minute details, and the diagnostic will not focus on them. However, this doesn’t mean you shouldn’t prepare. There certainly isn’t enough time during the diagnostic to learn the material. To do well, you must be experienced at working through problems without needing to repeatedly refer to your resources.
Practice, practice, practice
A good way to study for the programming problems is to take a problem (from lecture or section or a sample diagnostic problem) and write out your solution under test-like conditions. This is much more valuable than a passive review of the problem and its solution, when it becomes too easy to conclude “ah yes, I would have done that,” only to find yourself adrift during the real diagnostic when there is no provided solution to guide you!
Get your questions answered
If there is a concept you’re a bit fuzzy on or you’d like to check your answer to a chapter exercise, or you wonder why a solution is written a particular way, get those questions answered before the diagnostic. Swing by the LaIR, come to office hours, or post on Ed, and we’re happy to help.
How to take the diagnostic
Scan all the problems first
Quickly peruse all questions before starting on any one. This allows you to “multitask”—as you are writing the more mundane parts of one answer, your mind can be brainstorming strategies or ideas for another problem in the background. You can also sketch out how to allocate your time between questions in the first pass.
Spend your time wisely.
There are only a handful of questions, and each is worth a significant amount. Don’t get stuck on any particular problem. There is much opportunity for partial credit, so it’s better to make good efforts on all problems than to perfect one answer while leaving others untouched.
Style and decomposition are secondary to correctness.
Unlike the assignments where we hold you to high standards in all areas, for a diagnostic, the correctness of the answers dominates the grading. Decomposition and style are thus somewhat de-emphasized. However, good design may make it easier for you to get the functionality correct and may require less code, which takes less time and provides fewer opportunities for error. Comments are never required unless specifically indicated by a problem. When a solution is incorrect, commenting may help us determine what you were trying to do when we attempt to give partial credit.
Pay attention to specific instructions
A problem statement may include detailed constraints and hints. These constraints are not intended to make things difficult; typically, we are trying to guide you in the direction of a more straightforward solution. If you disregard these instructions, you are likely to lose points, either for not meeting the problem specification and/or for errors introduced when attempting a convoluted alternative.
Syntax is not that important if it is clear what you mean.
We won’t trouble you about most small syntax errors (forgetting semicolons or spaces, for example) as long as your intentions are clear. Having said that, beware that if your syntax errors cause ambiguity, we might not get the correct meaning. For example, if we see a for loop followed by two lines with no curly braces, where both lines are vaguely indented or a third line has been added in after the fact, we may be confused about what code is really inside your for loop.
Save a little time for checking your work.
Before submitting your diagnostic, reserve a few minutes to go back over your work. Check for matching parameter names passed into functions, etc. We try not to deduct points for minor things if it is obvious what you meant, but sometimes it is difficult to decipher your true intention. You might save yourself a few lost points by tidying up the details at the end.
Miscellaneous Helpful Resources
- Syntax Reference Sheet
- Advice from Keith Schwarz about coding without an IDE
- Advice from Julie Zelenski about coding assessments
Final Thoughts (Advice and Encouragement)
Always remember why you are at school. Learning and education tend to be a more fulfilling goal than high grades. If you work hard, study lots and feel good about your understanding of computer science that is an achievement to be proud of—regardless of how many points you get relative to the other students in the class.