The first test will take place in class on Friday, September 30. It will cover the textbook through Section 3.6, as well as material from Labs 1 through 4. There will be very little from Chapter 1 on the test -- you are only responsible for a few concepts from Sections 1.1, 1.3, and 1.4, and these concepts are listed below. Note that Section 3.7 is not on the test, although we will be covering it in class this week.
You can expect a few essay questions and short-answer questions that will test your knowledge of definitions and concepts. You might be asked about the meaning of individual Java statements and code segments. You can expect to be asked to write several code segments that use the various language features that you have learned about. You might also be asked to write a short complete Java program. There might be questions related to the labs. However, there will be no questions that are specifically about Linux. And there will be no questions about drawing routines such as g.setColor and g.drawRect.
You might want to take a look at the first test from the Fall 2001 version of this course. That test, along with sample solutions, can be found at http://math.hws.edu/eck/cs124/f01/test1.html. This will give you some idea of the types of questions that might be asked.
Here are some of the things that you should know about:
CPU
Machine language
High-level language
Compiler
Interpreter
Java bytecode
Platform independence
Syntax and semantics
Subroutine
Classes and objects
The main() routine of a program
Comments in a program
Formatting of a program
Variable
Type
Primitive type
The types int, double, boolean, and char
The String type
Literals
Special chars in Strings (\n,\",...)
Variable declarations
Names, identifiers, and reserved words
System.out.print and System.out.println
String functions:
str.charAt(i), str.length(), str.equals(s)
str.equalsIgnoreCase(s), str.indexOf(ch)
Strings are objects
Math.sqrt(x)
Math.pow(x,y)
Math.random()
TextIO.getln()
TextIO.getInt() and TextIO.getlnInt()
TextIO.getDouble() and TextIO.getlnDouble()
Arithmetic operators: +, -, *, /, and %
Increment and decrement operators: ++ and --
Comparison operators: ==, !=, <, >, <=, and >=
Boolean operators: &&, ||, and !
Assignment operators: =, +=, *=, etc.
Type-casts, such as: (double)N and (int)(6*Math.random())
Precedence of operators
Control structures
Loops and Branches
Infinite loop
Block
"while" statement
"do...while" statement
"if" statement
"if...else if" statment
"for" statement
"switch" statement
"break" statement
Empty statement
Nested statements
Counting loops
Priming a loop
Using boolean variables as "flags"
Algorithm
Algorithm development
Pseudocode
Stepwise refinement
Debugging
Syntax errors (at compile time)
Run-time errors
The edit/compile/run cycle of program development
The javac command
The java command
Integrated Development Environment (IDE)
Projects in an IDE
Monte-Carlo algorithm
Using random numbers in simulations