You are responsible for all of the material up through HTML.
Java Basics
Make sure you know how to write a Java program
Make sure you understand the differences between C++ and Java
Know how to use pointers to create linked data structures
Java has no stack-allocated objects, including arrays
To create an array of TreeNodes, you must write
TreeNode forest[] = new TreeNode[10];
for (i = 0; i < forest.length; i++)
forest[i] = new TreeNode();
Java I/O
Scanners
For reading lines
For tokenizing lines (remember to close these scanners)
For file I/O (drop a FileReader object into a BufferReader
object which in turn is dropped into a Scanner
object)
String => Number Conversion using Integer.parseInt and
Double.parseDouble
Garbage Collection
Reference Counting
Tracing Collectors
Mark-sweep
Stop-and-copy
Generational collectors
How to execute a Java program
Use the package prefix
Use the -classpath or -cp flag to tell the interpreter where to
find packages
How to execute a .jar file
Inheritance
How to draw an inheritance tree
Interfaces versus classes
interfaces are declarations of types (specify an API)
classes are concrete implementations of types (provide implementation)
Types/Subtypes and Classes/Subclasses: Note the relationship
between types/classes and also that subinterfaces represent
subtypes
i. Abstract type: A set of operations only (Stack)
ii. type: A set of values + a set of operations (Stack of ints)
Virtual methods: Know the difference between virtual, pure virtual,
and non-virtual methods
i. virtual methods provide an implementation that may be
overridden by a subclass
ii. pure virtual methods: provide no implementation and hence
subclasses must provide an implementation
iii. non-virtual method: a method whose implementation must be
accepted by all subclasses (i.e., it cannot be overridden)
Know Java and C++ syntax for inheritance (abstract, extends, implements,
access modifier before each method)
C++ Inheritance Issues
1) Initialization lists for constructors and why they are more
efficient than assignments in constructor bodies
2) Multiple inheritance
a) What it is
b) Shared versus replicated inheritance
3) How to inherit implementation but not interface by subclassing
using the protected keyword
Modules
Packages (Java)
Namespaces/Friends (C++)
void */putting structs in .c rather than .h files to hide
implementation (C)
Disadvantages of Friends
one-way: requires O(n^2) declarations to share implementation
among n classes
not inherited: subclasses must also be declared friends
Java adds package-level access: know the difference between
package-level and protected access
Generics (Templates)
Polymorphism-Parametric versus subtype
parametric (templates): same piece of code operates on different
types
explicit (C++, Java): explicitly provide the type parameters
implicit (scripting and functional languages): the runtime
environment infers the types of the parameters
subtype (inheritance): different piece of code may operate on
different types but the behavior must be the same
Know how to write a template class in Java and C++
Use void * in C to get generic functions/data structures
Template Properties
Java C++ C
Compilable yes no yes
Primitive Types no yes no
Java uses type erasure to compile template code: it replaces each
type parameter with its upper bound
Exceptions
Try/throw/catch in Java/C++
use try/catch rather than exit so that stack frames get popped
and destructors executed in C++. These destructors can
do the appropriate thing with partially completed resources.
setjmp/longjmp in C
variables stored in registers may be lost
volatile variables solve the problem but require a write-through
to memory which can jam the processor pipeline
know how to write Java and C++ code with exceptions
1) try/catch: try executes error-free code and catch executes
error handling code
2) throw: does not have to appear in a try statement, but if
it does not, then the exception is thrown out of the function
3) throws declaration: Java requires that exceptions of type
Exception be declared as not handled using a "throws"
statement if they are not caught by a catch statement. This
is true even if the exception is thrown by a called function
rather than the function itself
4) finally always executes
know the different Java exception classes and what they do
1) Throwable--top-level exception class
2) Error--unrecoverable hardware errors
3) Exception--for user-defined exceptions--these are checked
by Java and must either be caught or declared unhandled
4) RuntimeException--the one type of Exception object that does
not have to be caught or declared unhandled
Information Management
There are 4 aspects to information management
1) Content capture
2) Content management/storage
3) Content navigation/analysis
4) Content presentation
Content capture: The important concepts are
1) Sampling
2) Compression: Lossy versus lossless
Content Storage: The important concepts are
1) Color models: Bitmap, grey scale, full color, color models
2) Know the trade-offs between different storage formats and
when they are mostly used (e.g., photos for JPEG, graphics for
GIFS, documents for PDF).
3) Know the difference between Ascii and Unicode and the difference
between Unicode and its different encodings.
Content Management: Know the different ways to store content and when
they are typically used
1) Relational databases: For well-structured, dense data.
a) They provide a DDL, DML, and various important access
controls
2) Document collections: For semi-structured, sparse data.
3) Digital libraries: For human-curated collections of data, often
with multi-media components. Often include meta-data, such as
catalogs.
4) Software repositories: a collection of information published by a
single organization. Typically not currated and typically lacks
meta-data so it is more "raw" than a digital library.
5) Hypertext: Uses markup language and links for navigation. Good
for personal web-pages and "front-facing" content for organizations.
6) Spreadsheets: Good for non-programmers needing to store information.
Secondary Storage
The four main types are:
1) Hard disks
2) Solid state devices (SSD)
3) USB devices
4) Tapes
Hard disks are slow because of seek time and rotational latency
SSDs have almost no seek time and no rotational latency. The
transfer rates for cheap SSDs is comparable to transfer rates
for enterprise hard disks whereas enterprise-level SSDs used
in cloud storage have 10 times higher transfer rates than
enterprise hard disks.
SSDs are roughly 4 times more expensive than hard disks per gigabyte.
Indices: Uses to speed up the performance of queries
Know the difference between
1) Primary index
2) Cluster index
3) Secondary index
Know the difference between a range and point query
Content Presentation
1) The human eye is the primary way we gather sensory information
so most computer output is visual
2) Human visual properties
a) 20-30 frames per second is required to gain the illusion of
smooth, continuous motion.
b) Review the facts on human color sensitivity
c) Animation: The human eye is strongly attracted to animation
so generally include only one animation at a time and stop
the animation after a brief time if it was only meant to
attract the user's attention. Continous animation interferes
with a person's ability to concentrate
3) Color models
a) RGB: Used by computers to generate colors and used by
image formats to represent colors
b) HSV: Color model most familiar to humans and how humans generally
express color.
c) CMY: Reflective color model used by printers and artists.
4) Text Presentation
a) Serif fonts: Use for printed material where the curls help
the reader's eye move through the page.
b) Sans-serif fonts: Use for computer displays where the lack
of curls helps improve readability on lower-resolution displays.
c) Typewriter fonts: Hardly ever used except for code in computer
programs
HTML and CSS
1) HTML is used to specify the content and structure of a document.
CSS is used to specify the presentation and appearance of a document.
2) Basic HTML tags
a) p, div, blockquote, pre: create blocks of content
b) span, q: creates inline content that can be styled using CSS
c) tt, strong (b), em (i), ul, sub, sup: ways to emphasize text
d) table, th, tr, td: used for creating tables
e) img: used to include an image
f) {ol, ul}, li: created ordered and unordered lists
g) a: creates links to other content
h) h1-h6: creates headers/sections
i) hr: creates a horizontal line
j) br: creates a line break without creating a new paragraph
k) head: specifies the meta-data for the document and goes before
the body
l) body: specifies the viewable content of the document
m) html: specifies the beginning of the document--goes before head.
3) HTML attributes: Used to provide meta-data about an element's content.
Important attributes are:
a) id: uniquely identifies an element
b) class: used by CSS for styling similar elements, such as the first
paragraph in a section
c) name: used by HTML widgets when they transmit key/value pairs to
a server
d) src: used by the img tag to indicate the file to be included
e) colspan: used by the td tag to indicate the number of columns
spanned by this cell.
f) style: used to specify a CSS style for that specific tag. It is
generally considered poor form to use this attribute. You should
put rules for the tag in a stylesheet instead. The one exception
is using the style attribute to specify the pixel width/height of
an image. You do this per image to prevent the page from flickering
as it is loaded.
4) HTML comments: Start with <!-- and end with -->. For example:
<!-- This is a comment -->
5) HTML entity codes: Used to represent reserved HTML characters such
as <, >, and & or to represent characters that do not
appear on a keyboard, such as π or ⊂.