Please make note of our exam dates in the Course Info handout because we do not allow make-up exams (other than for OAE or student athletics).
Week10 Sat 12:00 PM
Final Exam
If you want to try out your solutions to problems in CodeStepByStep:
- (linked lists read)
- (linked lists write)
- binary trees read: missing
- (binary trees write)
- hashing read: missing
- graphs read: missing
- (graphs write)
- inheritance read: missing
Scores, Curve, and Other Information:
Stats:
AVERAGE | 48.4 |
MEDIAN | 52.0 |
STDEV | 14.2 |
Curve:
+0 points.
To increase the averages up to our targets, these points will be added to everyone's score, up to a maximum of 57/57 (100%).
None.
We are content with the scores as given, so there will not be a curve on the final exam.
Remember that all students' grades are fit to a distribution at the end of the quarter, so your grade may still be higher than the minimum guarantees listed on the course information handout.
If you have questions about exactly what you missed and why, please first look over your exam answers and grading on GradeScope.
The instructor, head TA, and Section Leaders don't have your exam and aren't able to answer detailed questions by email about what points you lost and why.
The system for final exam regrades is the same as on the midterm.
If you disagree with the grading of a programming problem, such as if you think your solution actually does work, or that your solution is more nearly correct than it was given credit for, you must download our code ZIP Qt Creator code project, which will contain runnable testers for the exam problems. Type your code into the project .cpp file, fixing any trivial syntax problems. Run it for yourself and see how nearly correct your solution is.
If after running the code files you still think your grade is incorrect, fill out this form. We will not accept any exam for a regrade unless the form is filled out in entirety, and we will not re-evaluate grading of the correctess of any programming questions without a typed copy of your solution being shown to us first.
Also note: When you submit an exam for a regrade, we will regrade your entire exam. If we notice anywhere that you were mistakenly given too many points, we will also correct this. So it is possible (though less likely) that a regrade request will result in you receiving a lower mark than what you started with.
All final exam regrade requests must be submitted to the instructor no later than
Jan 15, 2017, at 11:59pm.
Syntax Reference Sheet:
-
syntax reference sheet
(will be given out attached to your exam as a reference; bring your textbook to reference any other C++ syntax/libraries)
Practice Exams and Review:
Additional Sample Problems:
If you want more practice problems, here are links to some past exams given in 106B by other instructors.
They don't exactly match the current exam format, so they may be of limited use.
Some of the problems on these tests don't match the topics, difficulty level, and/or type of questions we currently plan to ask.
These links are provided merely as a convenience to help you study.
Topics to Study:
The actual exam will have roughly 10 total problems.
Those problems will be selected from the following categories.
For each category, 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 function or short program that solves a problem about that topic).
-
linked lists:
read/write code to manipulate a chain of
ListNode
objects from lecture, or a similar linked list class
-
recursion and/or recursive backtracking:
write a function that uses recursion to solve a problem, possibly one involving backtracking
-
binary trees:
simulate operations on a binary search tree (BST) such as adding or removing elements; perform traversals on a binary tree; add behavior to the
BinaryTree
class from lecture or a similar binary tree class
-
implementing data structures:
simulate operations on a data structure we implemented or discussed the implementation of in lecture, such as a tree set/map, hash set/map; stack, queue, vector; and/or, add behavior to an existing implementation class such as
TreeSet
or ArrayList
-
graphs:
look at a given graph and answer questions about it, such as connectedness, cyclicness, degrees; simulate the execution of path-searching algorithms such as DFS, BFS, Dijkstra's algorithm, A*; simulating execution of Kruskal's algorithm
-
inheritance, polymorphism, object-oriented programming:
look at a piece of code involving inheritance and interpret its output; and/or, write a class that uses inheritance to extend some existing base class
- The following topics are guaranteed NOT to be required to solve any problem on the final exam:
-
searching and sorting
-
heaps and priority queue implementation
-
drawing fractals; graphics with the
GWindow
class
-
multiple inheritance; pure virtual functions; private inheritance
-
overloading the
=
operator, copy constructors, and deep copying
-
the Standard Template Library (STL)
-
writing your own C++ template classes such as
ArrayList<T>
-
details of how to perform rotations on an AVL tree to restore its balance
-
other kinds of advanced trees such as AVL, Red/Black, Splay, or prefix trees (tries)
-
anything else not explicitly covered in lecture or homework
-
any material that is only covered in the "Overflow" slides at the end of various lecture slide decks
Week4 Sat 12:00 PM
Midterm Exam
Exam and Answer Key:
If you are an SCPD student who took the exam remotely with a proctor, you received a different midterm exam that does not exactly match the one on this page.
Go to the SCPD page to download a copy of that exam and its answer key.
Score Stats, Curve, and Other Information:
* Stats below are curved scores, and they do reflect our curve as explained below.
| pts | % |
MEDIAN | 52 | 80.0% |
MEAN | 52.0 | 80.0% |
MAX | 65 | 100% |
STDEV | 7.55 | 11.6% |
Curve?:
+5 points out of 65.
To increase the averages up to our targets, these points will be added to everyone's score, up to a maximum of 65/65 (100%).
None.
We are content with the scores as given, so there will not be a curve on the midterm exam.
Remember that all students' grades are fit to a distribution at the end of the quarter, so your grade may still be higher than the minimum guarantees listed on the course information handout.
Low Grades: Another topic some students ask about is:
If their score was lower than they hoped, how much effect will that have on their grade, or what are their options, etc.?
Most of the information to answer this can be found on this web site.
The course info sheet lists the relative grading weight of homework vs. midterm vs. final exam, so you can use that to compute the rough effect on your grade of a particular midterm score.
Also look at our FAQ page for info about pass/fail grading options, drop dates, and other information.
Picking up your exam:
We do not return the paper exams, but you can see the digital scan of your exam in the system once exam scores are published.
You should log in (or create account as needed) using your Stanford email account.
Regrade Policy:
We work hard to grade consistently and correctly, but sometimes we make mistakes in grading.
If you disagree with the grading of your exam, such as if you think your solution actually does work, or that your solution is more nearly correct than it was given credit for, the procedure for regrades is the following:
If your complaint is about the correctness of your solution to a programming question, you must download our Qt Creator code project, which will contain runnable testers for the midterm problems.
Type your code into the project .cpp file, fixing any trivial syntax problems.
Run it for yourself and see how nearly correct your solution is.
If after running the code files you still think your grade is incorrect, fill out this form. We will not accept any exam for a regrade unless the form is filled out in entirety, and we will not re-evaluate grading of the correctess of any programming questions without a typed copy of your solution being shown to us first.
Also note: When you submit an exam for a regrade, we will regrade your entire exam. If we notice anywhere that you were mistakenly given too many points, we will also correct this. So it is possible (though less likely) that a regrade request will result in you receiving a lower mark than what you started with.
All midterm regrade requests (other than simple score addition errors) must be submitted to the instructor no later than
Week8 Fri, at 11:59pm.
Reference Sheet:
-
syntax reference sheet (will be given out attached to your exam as a reference; bring your textbook to reference any other C++ syntax/libraries)
Practice Exams:
Sample midterm exam(s) posted here are intended to be very similar to the actual midterm.
The number of problems and type of problems on the actual exam will be much like what is seen on these practice exams.
You can test your answer by typing it into Qt Creator or CodeStepByStep.
Rules and Information:
-
The exam is to be completed individually and without any assistance from a partner or other students.
-
The exam is open-book for the Programming Abstractions in C++ textbook, or any other relevant textbooks you want to bring.
You can bring the current edition of the book, or the previous ring-bound "course reader" edition, but not a digital copy and not a printout of the book on loose paper.
-
The exam is closed-notes and closed for all other resources.
You may not bring or use any other printed materials such as handouts, slides, or practice exams.
(A "syntax reference sheet" of necessary syntax will be given to you at the exam.)
You may not use any computing devices of any kind including calculators, cell phones, music players, iPad/Kindles, or other electronic devices.
Please do not have any of these devices out nor use any of them during the exam.
-
Unless a question specifically mentions otherwise, your code you write will be graded purely on external correctness (proper behavior and output) and not on internal correctness (style). So, for example, redundancy or lack of comments will not reduce your score.
-
You don't need to write any
#include
statements in your exam code.
-
Please do not abbreviate any code on the exam.
Abbreviated code will be ignored during grading.
-
Unless otherwise specified, it is fine to write helper functions to implement the required behavior.
-
Please be quiet during the exam. If you have a question or need, please quietly exit the room and a nearby SL or TA will assist you.
-
Any corrections or clarifications to the exam will be written at the front of the room.
-
Please follow the Stanford Honor Code during the exam.
Work on the exam alone and submit only your own work.
Please also take action to prevent any inappropriate activity conducted by others, such as speaking to the person and asking them to stop, or reporting the activity to the instructor.
-
When you have finished the exam, please leave the room quietly and bring your exam to the instructor and SLs.
Topics to Study:
The actual midterm exam will have roughly 8-10 total problems.
Those problems will be selected from the following categories.
For each category, 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 function or short program that solves a problem about that topic).
-
C++ basics:
console input/output; strings, streams (file I/O), functions; passing parameters by value and by reference; return
-
using ADTs:
the collections from the Stanford C++ library, such as
Vector
, Grid
, Stack
, Queue
, Set
, Map
, HashSet
, HashMap
, or Lexicon
; understanding tradeoffs between various data structures
-
algorithm analysis / Big-Oh:
look at a given piece of code and answer questions about its runtime complexity, and/or write a piece of code that solves a problem within a given Big-Oh limit
-
recursion:
look at a piece of recursive code and write its output, and/or write a function that uses recursion to solve a problem
-
backtracking:
write a function that uses recursive backtracking to solve a problem
-
pointers:
write lines of code that use pointers, and/or look at a piece of pointer code and answer questions about it
(including short chains of linked nodes)
- The following topics are guaranteed NOT to be required to solve any problem on the midterm:
-
complex output formatting with the
iomanip
library (e.g. setw
, setprecision
)
-
searching and sorting algorithms
-
drawing fractals
-
the
GWindow
class or any other code related to graphical user interfaces (GUIs)
-
arrays
-
priority queues and heaps
-
creating your own classes of objects
-
writing C++ template classes
-
operator overloading
-
anything else not explicitly covered in lecture or homework
-
any material that is only covered in the "Overflow" slides at the end of various lecture slide decks
-
any material covered past the end of week 5 of the course (material from weeks 1-5 inclusive will be tested on the exam)
Here is a handout created by a past CS 106B instructor with her advice about how to study for, and take, a CS 106B exam.
Note that not all of the information and policies in this handout are correct for the current quarter; for example, in Julie's quarter the exam was open-notes, but the exam this quarter is not.
This document and its content are copyright © Marty Stepp and Victoria Kirst, 2016.
All rights reserved.
Any redistribution, reproduction, transmission, or storage of part or all of the contents in any form is prohibited without the authors' expressed written permission.