The exam will be on Monday, October 26 in lecture. It will be a conceptual exam (i.e. you will not be writing programs on a computer), although you may be asked to write pseudocode to demonstrate how an algorithm works. You cannot refer to any books, notes, programs, or other resources.
It will consist of:
The midterm can cover anything discussed up to and including lecture 14 (Tuesday, October 20). Some review material has been available throughout the semester:
There will be a review session during recitation the week before the exam: Tuesday, October 20 (Tuesday follows a Monday schedule) and Wednesday, October 21.
The following questions come from the survey on CourseWeb.
i.e. "Write a code that does _____"
Since this course is more abstract than CS/COE 401, you are not expected to write code for the exam. However, you may find it easier to answer a question by writing code rather than writing sentences. Since data structures are a Computer Science concept (and not limited to just Java), you will not be required to write Java code for the exam (see pseudocode below for more information on this).
You may be asked to look at Java code and explain what it's doing or how to modify it to do something else, but the code will be given to you and should be correct already. For example, you could be given code for ResizableArrayBag and asked to modify it so that it no longer creates a new array and copies all the values from the old to the new, but rather just allocates a new array for the new values while maintaining the old array with the old values (so, becoming a sort of linked list of arrays).
You may also be given Java code and asked to determine its runtime.
For some short answer questions, you may be asked to explain how something works. You could use sentences, or you could write code. You aren't required to write Java code for the exam (because data structures aren't limited to just Java), so you can write pseudo-code to get the idea across without worrying about Java implementation details (e.g. semicolons at the end of lines). There may be some (possibly 2 - 5, depending on how you choose to answer questions). You should be as detailed in your pseudocode as you think is necessary, but you can leave standard Java methods undefined (unless the method's definition depends on the programmer implementing it, such as the compareTo
method for any class the programmer creates). If you need a small helper function and don't want to write it out in code (or pseudocode), you can just give a brief explanation of what it does.
Will the short answer questions on the midterm be similar to those on Quiz 1? How will they be different?
How long is the midterm (how many of each type of question)?
Will there be any chances for extra credit/bonus points on the midterm?
The multiple choice, true/false, and matching questions will look similar to the Quick Quiz questions and the Quiz 1 questions. They will be different in that you may not have seen them before (i.e. I may not reuse those questions). Additionally, there will not be an "I dont't know" option.
The short answer questions will look like the ones from Quiz 1, the review page, recitation 5, and the key questions for each section.
I have no plans to put extra credit or bonus points on the midterm.
Here is an example of a midterm exam: midterm-practice.pdf. None of the questions are new; they were semi-randomly selected from the questions you already have access to. This example exam shows the question types to expect, not necessarily the distribution of topics that will show up on the exam (assume any topic is equally-like on the midterm). If you would like to know if your answers to these questions are correct, you may email your answers to the instructor or the TA.