This is intended to give you a sense of what I think is important from the course so far, and what I will be thinking of when creating the exam.
I hate disclaimers, but here are some anyway. This is not a contract. I may have inadvertently left something off this list that ends up in an exam question. I make no guarantees that the exam will be 100% limited to items listed below. Moreover, I will not be able to test all of this material given the time limitations of the exam. I will have to pick and choose some subset of it.
You are permitted one 8.5 x 11 sheet of paper with notes (both sides) for use as a reference during the exam.
Here are the specifics: Students should be able to...
Demonstrate that they understand what an algorithm is.
Demonstrate that they understand the distinction between compiling and running a program, and what happens at each stage.
Demonstrate knowledge of and ability to reason about bits and bytes.
Demonstrate that they understand the differences between classes, objects, and primitives. Can appropriately interpret and use instance/class methods, instance/class variables, constructors, and parameters. Can write snippets of Java code that utilize all of these items. Can write from scratch code for a class that utilizes all of the above ideas. Can appropriately utilize a class that they have built (or I have provided) in conjunction with a main method in another class. Demonstrate that they understand appropriate use of and distinction between public and private. Show ability to appropriately use return values from methods, or lack thereof.
Demonstrate that they understand how arithmetic is done in Java, including +,-,*,/,%. Demonstrate understanding of how arithmetic is done for both int and double. Ability to correctly use methods from Math that we have used (Math.random(), Math.round()). Demonstrate ability to pick a random number appropriately. Show understanding of distinction between random and pseudo-random numbers. Demonstrate ability to cast from one type to another, knowledge of what this means, and when it is necessary.
Demonstrate understanding of how characters are ultimately represented, and how that can be used for computational purposes. Demonstrate ability to process Strings and substrings for producing desired results.
Demonstrate that they understand how conditional statements work ("if"). Can interpret and construct complex conditions involving &&, ||, !, !=, ==, .equals, <, <=, >, >=. Demonstrate understanding of differences between =, ==, and .equals. Can construct and/or interpret complex usages of "if" and "else", including nesting.
Demonstrate that they understand how loops work ("while", "for"). Can interpret and construct code that does repetitive tasks, including nested loops.
----
I will not test:
- complex use of Scanner for strange files (findInLine, useDelimiter, etc.) But standard usage on whitespace delimited data (next(), nextInt()) is reasonable.
- details of Canvas methods: I might ask you to use them, but if I do, I'll supply documentation for the methods that you need. |