CPSC 120B -- Final Exam Topics
In general, any topic that we spent a significant amount of time on in class 
or in lab is a good candidate for the final.  Here are some highlights.
- Linux  
- basic shell commands (ls, cd, pwd, mv, cp, mkdir, rm)
- file permissions
- directory structure
- commands and expressions
 
 
- Hardware  
- The von Neumann architecture
- components: bus, CPU (ALU, control unit), main memory
- fetch-decode-execute cycle
- instruction register and program counter
 
- Main and secondary memory -- characteristics, importance, differences
- Processor speed -- how it is measured (MHz), what this means
- Networks -- LAN, WAN, the Internet, IP addresses, Internet addresses
 
 
- Programming Languages
- Machine, assembly, and high-level languages
- Compilers and interpreters
- How Java is compiled and executed (byte code, JVM)
- Syntax and semantics
 
 
- Representation of Integers
- Convert a base 10 number to any other base
- Convert a number in another base to base 10
- Use the special properties of bases 2, 8, 16 to efficiently convert
between them.  Understand why this works.
- Two's complement -- convert back and forth to base 10, add twos complement
numbers, detect and understand overflow
- Bits and things -- how many things can be represented in n bits?  What
is the largest integer that can be represented in n bits interpreted as
unsigned?  As twos complement?
 
 
- Logic
- Basic operators -- AND, OR, NOT -- mathematical and Java symbols
- Truth tables, construct and interpret
- Laws of logic, use in simplifying boolean expressions
- Equivalence of boolean expressions using truth tables, laws of logic
- Circuits -- relationship to truth tables, boolean expressions.  Be
able to construct any two given the third.
 
 
- Java Programming
- Statements and expressions
- Arithmetic operators (+,-,*,/,%)
- Primitive types and type casting
- Compile-time vs. run-time errors
- Random number generation and manipulation
- Basic methods of the String class (length, concat, toUpperCase, charAt, etc)
- The toString method of any class
- Input using the Keyboard class
- If statements and Boolean expressions (no break or conditional
expression)
- Loops (while, do..while, for) 
- Loop control mechanisms (counting, ask-the-user, sentinel, other)
- Common looping tasks (counting, summing, finding average, max, min, checking
for valid input)
- Nested loops
 
- Objects, Classes, and Methods
- Storage of primitive values (direct) vs. objects (references)
- Parameter passing of primitive values and objects
- Public vs. private for variables, methods
- Instance vs. static for variables, methods
- Class design
- Use of a class given type signatures for its public components
- Constructors
- Method overloading
- Formal and actual parameters
- Return values
- Type signatures of methods
 
- GUIs, Events, Listeners, Interfaces
- Java components -- JButton, JTextField, JLabel, ContentPane
- The steps in creating a Java GUI
- The ActionListener interface and how it is used 
to handle button and textfield events.
- What an interface is, how to implement one
 
- Applets and Graphics
- The Java coordinate system
- Basic applet methods (init, paint)
- Basic drawing classes and methods (Graphics, drawRect, fillRect, etc)