CS 124, Spring 2021
Information on the Second Test

The second test for this course takes place in class on Wednesday, March 31. The test will be given in person except for the two people who are taking the class completely remotely and people who are in quarantine or cannot come to class for some other reason. You should, of course, not come to class if you are sick. I will make arrangements with the remote students and with any students in official quarantine before the test. If you can't come to class on the day of the test for some other reason, I will make arrangements with you later to take a make-up test.

The test will cover material that we have seen since the first test, but you will still need to know earlier material about variables, control structures, arrays, and so on. The format will be similar to the first test, including programming problems, definitions, and essay-type questions.

From the textbook, the test covers all of Chapter 4 except for Section 4.5 and subsections 4.6.4 and 4.6.6, plus Sections 5.1 and 5.2. This includes subroutines, objects, and classes. You can expect the test to concentrate more on subroutines than on classes. You will certainly be asked to write some subroutines. You might be asked to write some code that calls a subroutine or to figure out the purpose of a subroutine. You might be asked to write a simple, short class. You should know how to write code that calls subroutines and code that creates and uses objects. There will not be any questions about lambda expressoins or about GUI programming on this test.

Here is a list of some of the things that you should know about:

black box
implementation of a black box
interface of a black box
how black boxes help to manage complexity
subroutines as black boxes

subroutines (also known in Java as "methods")
the syntax for subroutine definitions
the access modifiers public and private
return type of a subroutine
parameter list of a subroutine
subroutine call statements
formal parameters (also called dummy parameters)
actual parameters (in a subroutine call statement)
how actual parameters are passed into a subroutine
local variables in subroutines
global variables
returning a value from a function
using function calls in expressions
the return statement in a function:  return <value>;
using a return statement in a void subroutine
throwing exceptions in subroutines

software toolboxes and APIs
Javadoc comments and why they are used
packages; what it means for a class to be in a package
importing classes from a package

combining declaration with initialization; for example:   int x = 17;
final variables
named constants and the reasons for using them
scope of a variable

the relationship between classes and objects
creating objects from classes with "new"
instance of a class
instance variables and instance methods 
static versus non-static
how the non-static part of a class is used when objects are created from the class
pointers to objects (also called references)
classes are types, so can be used to declare variables, return types, and parameter types
declaring a variable (of object type) does not create an object
a variable (of object type) can never hold an object, only a pointer to an object
an assignment statement applied to objects will only copy a pointer, not an object
controlling access to instance variables by making them private
getters and setters and why they are used
the toString() method in a class