- Monday, November 4: Midterm exam from 5:30 pm - 6:30 pm
- Tuesday, November 12: Last day to change to or from S/NS grade option; last day to drop courses using Annual Drop.
- Tuesday, December 10: Final exam from 12:30 pm - 2:20 pm
Exam Rules and Information:
You will have an assigned seat and you must sit in that seat. If you
arrive for the exam and find someone else in your seat, ask them to move
because we will move students to their assigned seats. We will take
pictures of the room to help us verify that students sit in their
assigned seats (please contact us if you have a concern about this).
Students are expected to make a reasonable effort to sit in their
assigned seat. Students who demonstrate an egregious disregard for the
seating assignments will receive a 5-point penalty (e.g., if a student
goes to the wrong room or refuses to move when asked to).
We may ask to check your UW ID card during the exam so please have it
You will have 60 minutes to complete the midterm and 110 minutes to
complete the final. We will distribute the exam early and you can read
and fill out the cover page of the exam, but you should not look at the
exam questions until you are told to begin. At the end when time is
called, you are required to stop writing and close your exam. Students
who look at the exam before being told to begin and students who make
changes to their exam after time is called will receive a 10-point
penalty. Students who do not close their exam booklet when time is
called may also receive a 10-point penalty.
The exams are closed-book and closed-note. You must work alone and may
not use any computing devices of any kind including calculators or
digital copies of the textbook. Cell phones, music players, and other
electronic devices may NOT be out during the exam for any reason.
There will be a cheat sheet included as the last page of the exam. Space
will be provided for your answers. If you need additional scratch paper,
raise your hand and a TA will give it to you. You are not allowed to use
your own paper during the exam.
Unless a question specifically mentions otherwise, the 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 are,
however, required to declare all data fields as private, to use generics
properly, and to declare variables and parameters using interfaces when
possible. The midterm cheat sheet mentions important restrictions on
stacks and queues that you must follow.
Unless otherwise specified, you should write each solution as a public
instance method. You may define helper methods as part of your solution,
but they should be declared to be private.
You are allowed to abbreviate "compiler error" and "runtime error" for
the inheritance question on the final (as in "ce" and "re" or "c.e."
and "r.e.") and "S.o.p" or "S.o.pln" for printing,
but you should otherwise NOT use any abbreviations on the exam.
You don't need to write any
import statements in your exam
You are not allowed to use advanced material to solve exam problems. In
general, you are restricted to the classes and methods listed on the exam
You are not allowed to use break, continue, a return from a void method,
try/catch, or Java 8 features.
For standard Java classes such as Math and String, you are limited to the
methods listed on the cheat sheet. You are not allowed to use the Arrays
or Collections classes or other standard classes and methods that aren't
included on the cheat sheet.
Please be sure that your answer is clearly indicated. This is
particularly important if you provide more than one answer or if you have
notes in addition to your answer. You can draw a box around the answer
you want to have graded and you can draw an "X" through anything that you
do not want to have graded.
You do not need to turn in scratch paper unless you have all or part of
an answer on that sheet of paper (you can take the other sheets of paper
with you). If you have a sheet of paper with all or part of an answer,
please write your name on that sheet of paper, staple the entire sheet to
the end of your test (not in the middle) with a single staple in the
upper-left corner, and clearly indicate under the corresponding problem
that your answer is attached on an extra sheet of paper. A stapler will
Please be quiet during the exam. If you have a question or need
assistance, please raise your hand.
When you have finished the exam, please turn in your exam quietly and
leave the room.
You may not leave the exam room in the last 5 minutes of the testing period.
After the Final
- Guide to reading Gradescope scoresheets
- The average was 76.55, the median was 78, the standard deviation was 15.8
- Final key
- Regrade policy
- Regrade requests cannot be submitted before Monday, December 16th at 8am and must be submitted before Friday Januray 10th at 11:00 pm. Results of the requests will be sent after the deadline.
Like the midterm, we will be providing an extra credit opportunity for the final if you fill out a pre-exam survey. There is only one part to this extra credit opportunity and it is worth 0.5 points if you fill out the survey.
- Complete the Pre-Final Preparation Survey on Canvas by Monday December 2nd at 11:30pm. This survey should take about 15 minutes.
There will be an independent, 0.5 point extra credit opportunity during the actual final. These two extra-credit opportunities are not related and you can do both or only one of them if you wish. If you do both, you will receive a total of 1 extra credit point on the final (each is worth 0.5).
The questions on the final exam will be selected from the following. Each question will be worth between 5-20 points:
- Binary Tree Traversals
- What is it? Perform pre-order, in-order and post-order traversals on a tree
- What's an example? traversal2
- Binary Search Trees
- What is it? Given a set of values, add them to a binary search tree
- What's an example? Mew/Pikachu/Zubat/Ditto from Old Exam Database
- Polymorphism mystery
- What is it? Given a set of classes with inheritance relationships, a set of variables declared using those classes, and a set of method calls made on those variables, write the output (similar to section 11/21 problems)
- What's an example? FeeFieFoFum
- Note: In the case the answer is an error, you will be asked to identify if the error is a run-time error or a compiler
- Comparable programming
- What is it? Write a complete class and make it Comparable based on a given set of comparison criteria (similar to section 11/19 problems).
- What's an example? Location
- Note: You will not be asked to extend another pre-existing class like some problems seen on past exams
- Collections programming
- What is it? Write a method that uses one or more class from the Java Collections framework (with focus on Sets, Maps and Lists).
- What's an example? commonHobbies from Old Exam Database
- Binary tree programming
- What is it? Add a method to the IntTree class from lecture (similar to section 11/12 problems)
- What's an example? numEmpty
- Binary tree programming
- What is it? Add a method to the IntTree class from lecture. Similar in spirit to the previous question but more challenging (similar to section 11/14 problems)
- What's an example? completeToLeve
- Linked list programming
- What is it? Add a method to the LinkedIntList class from lecture (similar to section 10/15 or 12/03 problems)
- What's an example? removeRange
The following topics are guaranteed NOT to be explicitly tested on the final exam:
- detailed knowledge of Big-O (some questions may ask you to solve them within a certain big-O limit, but mainly this is just to ward off extremely inefficient answers)
- detailed knowledge of search/sort algorithms
- tracing or writing code with 2-D arrays
- catching exceptions
- priority queues
- input/output streams
- abstract classes
- inner classes
- implementing an
- implementing a "generic" class (one that accepts type parameters such as <T>)
- extending a pre-existing class for the Comparable problem
We strongly suggest that you try to solve all of these problems yourself, on paper, without a computer, and without looking at the answer key until you're done. A very important skill to doing well on the test is being able to look at your solution and figure out if it works without relying on a computer or the answer key since you will have neither of those available during the test. Check out more info here.
We also suggest that you save the Practice Exams until later in your studying so you can actually use them as a resource to time yourself like you would be on the real exam.
- There will be a review session on Friday 12/6 from 4:30 to 6:30 in GUG 220. A practice exame will be handed out during the review session that will be posted online after the session is over. The review session is designed to be as effective as possible for you, so the time is there for you to get one on one help with a TA on any problems you want to talk about.
- Sample cheat sheet. A cheat sheet will be provided as the last page of the exam, but methods may be added/removed to fit what you need on the test.
- TA final strategies
- Old exam questions database
- Practice Exams coming soon. Keys will be posted on 12/4. Even after the keys are posted, please take the practice exam and try to figure out if your solutions work on your own before comparing to the set of possible answers on the keys.
After the Midterm
- Guide to reading Gradescope scoresheets
- The average was 74, the median was 76, the standard deviation was 16
- Midterm key
- Regrade policy. Regrade requests cannot be submitted before Tuesday, November 12th at 8am. Regrade requests must be submitted before Monday Novermber 18th at 5pm. Results of the requests will be sent after the deadline.
- The midterm is worth 20% of your grade - that means about 50% of your grade is still to be determined! If the midterm didn't go as well as you would have liked, come talk to me about study tips and exam approaches to use on the final. You can also use Grade-a-nator to compute your approximate grade so far.
We are providing an extra-credit opportunity for the midterm. The focus of this exercise is to help you explicitly practice the skill of metacognition. To receive credit, you will need to reflect on plan to prepare for the exam and then after the exam, reflect on how your preparation went. The ultimate goal here is to help you identify how to best adapt your study strategy for the final (and for your future classes).
If you finish the following 3 tasks on time, you will receive 1 point of extra credit on the midterm. Credit is only awarded if you complete all 3 tasks on time. Your submissions are awarded credit based on completion and effort. There are no late submissions accepted.
- Complete the Pre-Midterm Preparation Survey on Canvas by Sunday October 27th at 11:30pm. This survey should take about 15 minutes.
- On the midterm, there will be a bonus question asking you to predict your exam score. You should fill this out during the exam. Many students forgot to fill out this question on the exam last time. Don't be one of those students!
- Complete the Post-Midterm Reflection Survey on Canvas by Monday November 18th at 11:30pm. This survey should take about 30 minutes and must be completed while looking over your graded exam on Gradescope.
Material from Weeks 1-5 is considered "fair game" for questions on the midterm. The actual midterm exam will have 6-8 total problems. Those problems will be selected from the following kinds of questions (and no other kinds of questions):
ArrayIntList programming (add a method to the
ArrayIntList class from lecture)
Collection programming (write a method that uses Java collections such as
stack and queue programming (write a method that uses
linked list node manipulation (write a few lines of code to change a "before" picture of some linked nodes into an "after" picture; this is NOT the problems where you have to use loops and writing for the LinkedIntList class)
recursion tracing (look at a piece of recursive code, and write its output)
recursion programming (write a method that uses recursion)
- The following topics are guaranteed NOT to be required to solve any problem on the midterm:
- programming with inheritance (extending a class, etc.)
- Inheritance/Polymorphism mystery
- writing an interface (though you might have to write a method that accepts a parameter of interface type, such as
- testing, debugging, commenting
- implementing Comparable (though you may have to be a client of TreeSet and/or TreeMap which require the elements to be comparable)
- implementing sorting algorithms (though you may have to be a client of TreeSet and/or TreeMap which maintains the elements in sorted order
- There will be a review session on Friday 11/1 from 4:30 to 6:30 in GUG 220. A practice exame will be handed out during the review session that will be posted online after the session is over. The review session is designed to be as effective as possible for you, so the time is there for you to get one on one help with a TA on any problems you want to talk about.
- A cheat sheet will be provided as the last page of the exam and you are only allowed to use methods and classes shown on the cheat sheet on the exam. Here is a sample cheat sheet from a previous quarter which is a good example, but some specific methods/classes may be added or removed.
- TA midterm strategies
- Old exam question database
- Note: Practice-It! has many full CSE 143 midterms which can be great to practice to help you with timing, but be careful since these exams are quite old and have problem types that are guaranteed to not be on your exam; great examples of this are inheritance and programming LinkedIntList with loops. If you are curious what is and will not be on the exam, re-read the section above.
- Full sample midterms that are more representative of what you will see on the exam. You should save these for last so you can use them to time yourself. Answer keys will be posted Wednesday 10/30.