1. Modeling - Explain differences between a model and what it is that is being modeled (simplification, abstraction, etc.) 2. Java Be able to write and debug programs written in Java, including: - Simple statements involving declarations, assignments, method calls. - Control flow. Sequential control, indexed for loops and while loops, if/else if/else branches. - Basic concepts of object orientation. The difference between classes and objects, class fields and methods, constants (static final fields), definition of constructors and their invocation using the reserved word "new". - Visibility rules governing public and private methods and fields. - Running and testing code. Use of the interaction pane in Dr. Java to instantiate objects and run class methods. The main method and running it. How to write comments. - Inheritance, the reserved word "extends"; polymorphism (classes that have same-named methods and the rules that govern which one applies). - Testing code. Writing main methods. - Package imports. Meaning of the reserved word "import" and the wildcard "*". Where to look in the java library for classes and methods that you can reuse. 3. Media - Pictures. The representation of digital pictures as grids of pixels. Instantiating a picture from a file or a blank picture. Getting its width and height. Getting an array of all the pixels in the picture. Getting one pixel at a specified x,y location. - Colors. RGB encoding of color. The minimum and maximum values of R,G and B and the reasons for these values. Size of the RGB color palette. Getting and setting R,G,B values of a pixel. Instantiating a new java.awt.Color and getting and setting a color of a pixel in a single operation. - Working with pictures. Using nested indexed loops to manipulate specific pixels (e.g. those within a specified rectangle). Copying and composing pictures. - Picture manipulation methods. Changing brightness. Selectively changing color/hue. Negatives of pictures. Reducing the color palette: black and white / grayscale and posterizing. - The difference between cloning an object (e.g. two identical twin pictures) and giving it an alias (e.g. two variable names for the same object). Effects of changing one but not the other in these two situations. - Turtle graphics. Intantiating worlds and turtles. Simple turtle movement using Turtle.forward, Turtle.backward, Turtle.turn, Turtle.penUp and Turtle.penDown. Trace a turtle program by drawing its result. 4. Data structures - Linked lists. Implementation of linked lists from scratch using node objects. Adding to a list at the beginning. Traversing a list from beginning to end. The meaning of NullPointerException when running faulty list processing code.