Final Exam | Solutions | Code (Eclipse project for testing your answers)
How do I find out my score? Like for the midterm, scores have been released on Gradescope. Log in to Gradescope to see your score.
If you have questions about exactly what points you missed and why, please look over the grade and markings made by the grader, compare it with our solutions, and then contact your section leader if you still have any questions.
The statistics of the exam scores (out of 180, to the nearest whole number) were as follows:
Mean: 138
Median: 152
Standard Deviation: 37
We work hard to grade consistently and correctly, but sometimes we make mistakes in grading. If you believe part of your exam was incorrectly graded, please first download the Eclipse project linked to above and run your answer. This is the easiest way to test your code. If, after running your code, you still believe your grade is incorrect, submit a regrade request for the question you believe was graded incorrectly through Gradescope. Regrade requests need to point out the aspect of the problem that was correct, but for which points were taken off. We use a detailed rubric to grade exams, so simply requesting that an incorrect answer "should be worth more points" is not likely to result in additional points.
We reserve the right to re-grade the whole exam to make sure there are no other grading issues present - this may result in a lower total score.
All regrade requests must be submitted by 4:00PM PST on Tuesday, August 20, 2019. This is a hard deadline.
| Exam Type | Download Links |
|---|---|
| Regular Seating Sat. 8:30-11:30AM | Regular Exam |
| Remote 3-hour exam | Remote Exam |
| OAE 150% extra time | OAE 1.5x Exam |
Section Handouts and CodeStepByStep lecture practice problems (on the schedule page) are also great ways to practice relevant material.
The exam is on your computer but otherwise closed-book and closed-notes. You should bring:
Your laptop and charger
The device you use for two-step authentication
Two double-sided sheets of notes
A power strip / extension cord (optional, but recommended if you have access to one)
If you don't have a working laptop let us know AS SOON AS POSSIBLE and we will get you set up with one.
Like the midterm, the final exam is administered on a digital tool called BlueBook. If you still have BlueBook from the midterm, skip this section. If you have a new laptop, please make sure to download and install BlueBook on your laptop before the exam.
Note: If you're using a Mac and you get an error saying that the Disk Image is from an unidentified developer, don't panic! Simply open up the Mac-BlueBook-1.1.0.dmg file in your finder, and right click it and select "Open." The same window will pop up, but this time you'll have a chance to open it anyway. On Windows, if you get a message that says, "Windows protected your PC," you can click on "More info" and then "Run anyway."
The logistics for the final exam are the same as for the midterm exam (except for an updated syntax reference sheet); please see the midterm logistics section for more information.
The final focuses on material taught since the time of the midterm, including the following concepts listed below. However, programming is inherently cumulative in that new topics build upon old ones. So you may be asked to solve problems that involve, though not necessarily focus primarily upon, past topics such as Strings, int, double, boolean, random numbers, loops, if/else, parameters, return, expressions, variables, constants, file input with Scanner, and so on. Note that you may be asked to read code (look at a piece of existing code and answer questions about it, such as writing its output) and/or write code (write a piece of code such as a method or short program that solves a given problem).
Pass-by-value vs. pass-by-reference: demonstrate your understanding of objects vs. primitive values (i.e., passing objects, primitives, or arrays as parameters)
GraphicsPrograms: write Java code to implement a graphics program with certain behavior using Stanford's libraries; this may include drawing shapes such as GRect, GOval, etc., animation, and/or handling mouse events.
Arrays: interpret/write code that uses a 1D array to solve a problem.
2D Arrays: interpret/write code that uses a 2D array (possibly from the pixels of a graphical image, possibly not) to solve a problem.
ArrayLists and HashMaps: interpret/write code that uses ArrayLists and/or HashMaps to solve a problem.
Objects and Classes: interpret/write a class and/or add behavior to an existing class.
Interactors: interpret/write a program that uses GUI components (buttons, labels, text fields) and events to produce a given behavior.
The following concepts will NOT be tested on the final:
Karel the Robot
Material from the "The Internet", "Building Your Own Java Project", or "Life After CS 106A" lectures
Graphical shapes not used in lecture/section, such as GArc and GPolygon.
converting numbers to/from other bases, such as binary or hexadecimal
the switch statement
static methods or data (other than static final constants)
throwing exceptions with the throw statement
any Stanford library functionality not explicitly taught in class, section or homeworks
anything else not explicitly covered in lecture, section or homeworks
The recommended exam strategies for the final exam are the same as for the midterm; please see the midterm exam strategies section for more information.