Friday, August 16

12:15-03:15PM PDT

Hewlett 200

**How do I find out my score?** Like for the midterm, the scores have been released on Gradescope. Log in to Gradescope to see your score.

The statistics of the exam scores (out of 106) were as follows:

**Mean: ** 73.54

**Median: ** 78.0

**Standard Deviation: ** 19.57

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, type your code into Qt Creator and test it out. This is the easiest way to see if your code works or not. If you still think we have made a mistake, review the posted final exam solutions. If you still think we have made a mistake, submit a regrade request through gradescope before Friday 8/23 at midnight. Your regrade request must specifically state which part of the criteria we made a mistake on. Regrade requests of the form, "I deserve more points for this question." will not be reviewed.

Practice Final Exam Exam Code: battleship | Reference Sheet | Solution

The sample final exam posted here is intended to be similar to the actual final. The number of problems and type of problems on the actual exam will be relatively similar to what is seen on these practice exams, though we do not promise that it will be exactly the same in length or in difficulty.

Remember to **save your answers** separately from BlueBook so that you can refer back to them later.

Section Handouts, CodeStepByStep, and lecture practice problems are also great ways to practice relevant material.

The logistics for the final exam are the same as for the midterm exam; please see the midterm logistics section for more information.

While the final is cumulative (it draws from material throughout the quarter), it focuses more on material taught since the time of the midterm, including the following concepts listed below. Programming is inherently cumulative in that new topics build upon old ones. So you may be asked to solve problems that involve past topics such as ADTs, recursion, big-Oh, 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 or drawing its state in memory) and/or *write* code (write a piece of code such as a method or short program that solves a given problem).

**Linked Lists:**You may be asked to write a generalized method that works for any linked list. You should be comfortable with singly- and doubly-linked lists**Trees:**You should be comfortable with binary trees, binary search trees (BSTs), tries, and heaps**Graphs:**You should understand graph syntax as well as the algorithms we discussed in class: BFS, DFS, Dijkstra, and Kruskal's (if we get to Dijkstra's and/or Kruskal's in class)**Sorting:**You should be comfortable identifying and describing different sorting algorithms.**Hashing:**Understand how hashing and HashSets/Maps work**Classes:**Understand C++ class design

Keep in mind that you are still responsible for material covered on and after lecture 23. But since you did not do an assignment on these topics, it will not be the focus of a major code-writing question. You may be asked to write snippets of code, or other conceptual questions related to these topics.

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.

Written by Nick Troccoli.