Session J1: An Introduction to Java. Discussion.
A hello world program.
Compilation.
Reading input.
Concatenating strings.
Variables.
Numeric input and output.
Applets.
Experiments.
Experiment J1.1: Executing your first program.
Experiment J1.2: Extending your first program.
Experiment J1.3: When things go wrong.
Experiment J1.4: Executing and extending a program with input.
Experiment J1.5: Numeric input and output.
Experiment J1.6: Your first applet.
Experiment J1.7: Some common applet errors.
Post-Laboratory Problems.
Problem J1-A: Generating verse.
Problem J1-B: Name replication.
Problem J1-C: Errors galore.
Problem J1-D: Predicting output.
Problem J1-E: Temperature conversion.
Problem J1-F: Bar graphs.
Notes.
Session J2: Objects and Methods. Discussion.
Objects.
Creating objects.
Coordinating objects.
Building your own methods.
Creating your own classes.
Return values.
Static methods.
Detour: The main method.
Assigning objects.
Fonts and graphics for applets.
Experiments.
Experiment J2.1: Printing out a point.
Experiment J2.2: Coordinating classes.
Experiment J2.2A: Coordinating classes (graphical application).
Experiment J2.2B: Coordinating classes (textual application).
Experiment J2.3: Your own method.
Experiment J2.4: Your own class.
Experiment J2.5: Return values.
Experiment J2.6: Static methods.
Experiment J2.7: Copying objects.
Experiment J2.8: Changing the font.
Experiment J2.9: Some simple pictures.
Post-Laboratory Problems.
Problem J2-A: Shifting points.
Problem J2-B: Shifting points, revisited.
Problem J2-C: Drawing a grid.
Problem J2-D: Drawing a grid, revisited.
Problem J2-E: Happiness.
Problem J2-F: Initials.
Problem J2-G: Rainbow Text.
Problem J2-H: Other Drawing Methods.
Problem J2-I: Determining Text Width.
Notes.
Session J3: Building Your Own Classes. Discussion.
Class capabilities.
Program state.
Object state.
Constructors.
Overloading.
Creating a bordered square class.
Experiments.
Experiment J3.1: Program state.
Experiment J3.2: Fields.
Experiment J3.3: Fields, revisited.
Experiment J3.4: Constructors.
Experiment J3.5: Constructors, revisited.
Experiment J3.6: Overloading read methods.
Experiment J3.7: Overloading.
Experiment J3.8: Borders.
Experiment J3.9: A bordered-square class.
Post-Laboratory Problems.
Problem J3-A: Shifting points.
Problem J3-B: Refined points.
Problem J3-C: Distance from origin.
Problem J3-D: A date class.
Problem J3-E: Converting dates to strings.
Problem J3-F: Stick figures.
Problem J3-G: House components.
Problem J3-H: Boxed text.
Notes.
Session J4: Boolean Expressions and Conditionals. Discussion.
Boolean expressions.
Operations on Booleans.
Conditionals.
The switch statement.
Applet parameters.
Experiments.
Experiment J4.1: Extending the SimpleDate class.
Experiment J4.2: Simple boolean methods.
Experiment J4.3: More boolean methods.
Experiment J4.4: Improved output.
Experiment J4.5: More fun with conditionals.
Experiment J4.6: Using the switch statement.
Experiment J4.7: Applet parameters.
Experiment J4.8: More applet parameters.
Post-Laboratory Problems.
Problem J4-A: Rethinking precedes.
Problem J4-B: Incrementing a date.
Problem J4-C: Is the date valid?
Problem J4-D: Correcting dates.
Problem J4-E: Printing dates, revisited.
Problem J4-F: Printing dates, revisited again.
Problem J4-G: isWinter, revisited.
Problem J4-H: Selecting colors, revisited.
Problem J4-I: Selecting colors, revisited again.
Problem J4-J: Multiple greetings.
Problem J4-K: Parameterized drawings.
Problem J4-L: Stick figures.
Notes.
Session J5: Control Structures for Repetition. Discussion.
Repetition while loops.
Detour: Overloading revisited for loops.
Detour: Arithmetic shorthand Loops and applets.
Experiments.
Experiment J5.1: Simple loops.
Experiment J5.2: Counting the day of the year.
Experiment J5.3: Simple for loops.
Experiment J5.4: Arithmetic shorthand.
Experiment J5.5: Rainbow text.
Experiment J5.6: A grid applet.
Experiment J5.7: A bouncing ball.
Post-Laboratory Problems.
Problem J5-A: daysUntil.
Problem J5-B: daysSince.
Problem J5-C: Reflection.
Problem J5-D: Loop mechanisms.
Problem J5-E: Grade averaging.
Problem J5-F: Maximum grade.
Problem J5-G: Revising the rainbow's shape.
Problem J5-H: Revising the rainbow.
Problem J5-I: A complete grid.
Problem J5-J: Improving the bouncing simulation.
Notes.
Session J6: Arrays and Hash Tables. Discussion.
Counting scores.
Arrays.
Some important details.
Counting words.
Hash tables.
Experiments.
Experiment J6.1: Counting scores.
Experiment J6.2: Introducing arrays.
Experiment J6.3: Arrays and references.
Experiment J6.4: Counting words.
Experiment J6.5: Hash tables.
Post-Laboratory Problems.
Problem J6-A: Improving daysUntilStartnOfMonth.
Problem J6-B: Counting grades.
Problem J6-C: Counting different scores.
Problem J6-D: Copying arrays.
Problem J6-E: Hashing words.
Problem J6-F: Game boards.
Notes.
Session A1: Recursion. Discussion.
Mathematics and recursion.
Fibonacci numbers.
A guessing game.
Exponentiation.
Experiments.
Experiment A1.1: Simple recursive functions.
Experiment A1.2: Factorial.
Experiment A1.3: Fibonacci numbers.
Experiment A1.4: Exponentiation.
Post-Laboratory Problems.
Problem A1-A: Printing information on recursive calls, revisited.
Problem A1-B: How large can a factorial be?
Problem A1-C: Large Fibonacci numbers.
Problem A1-D: More efficient iterative computation of Fi-bonacci numbers.
Problem A1-E: More efficient recursive computation of the Fibonacci numbers.
Problem A1-F: Understanding the Fibonacci numbers.
Problem A1-G: Counting steps during exponentiation.
Problem A1-H: From recursion to iteration.
Notes.
Session A2: Searching. Discussion.
Sequences.
Detour: Random sequences.
Sequential search.
Detour: The number game, revisited.
Binary search.
Problems with binary search.
Finding the smaller elements of a sequence.
Experiments.
Experiment A2.1: Integer sequences.
Experiment A2.2: Random sequences.
Experiment A2.3: Sequential search.
Experiment A2.4: The guessing game.
Experiment A2.5: Binary search.
Experiment A2.6: Problems with binary search.
Post-Laboratory Problems.
Problem A2-A: An iterative binary search.
Problem A2-B: Evaluating binary search.
Problem A2-C: Searching through names.
Problem A2-D: Finding the first element.
Problem A2-E: Extending the number game.
Problem A2-F: Variations on search.
Problem A2-G: Smallest, revisited.
Problem A2-H: Further readings.
Session A3: Analyzing Algorithms. Discussion.
Timing algorithms.
Problems with wall-clock timing.
Counting steps.
Problems with counting.
Binary search, revisited.
Finding groups of smallest entries.
Experiments.
Experiment A3.1: Wall-clock timing.
Experiment A3.2: Comparing wall-clock times.
Experiment A3.3: Counting steps.
Experiment A3.4: Comparing steps.
Experiment A3.5: Binary search.
Experiment A3.6: Finding the smallest element.
Experiment A3.7: Finding smaller elements.
Post-Laboratory Problems.
Problem A3-A: Plotting exponentiation.
Problem A3-B: Comparing exponentiation.
Problem A3-C: Plotting exponentiation, revisited.
Problem A3-D: Comparing exponentiation, revisited.
Problem A3-E: Sorting.
Problem A3-F: Sorting, revisited.
Notes.
Session G1: Graphics and Applets. Discussion.
Applets.
Painting pictures.
A circle applet.
Colors.
Pixels vs. coordinates.
Applet dimensions.
Repainting.
Applet parameters.
Experiments.
Experiment G1.1: A colored circle applet.
Experiment G1.2: Experimenting with colors.
Experiment G1.3: Drawing vs. filling.
Experiment G1.4: Getting boundaries.
Experiment G1.5: Repainting.
Experiment G1.6: Setting parameters.
Post-Laboratory Problems.
Problem G1-A: A real drawing.
Problem G1-B: A parameterized face.
Problem G1-C: Rainbow text.
Problem G1-D: Repositioning the moving circle.
Problem G1-E: Multiple circles.
Problem G1-F: Looping circles.
Problem G1-G: Colors, revisited.
Notes.
Session G2: Java's Abstract Windowing Toolkit. Discussion.
Components.
Events and control flow.
An important event.
Your first graphical application.
Adding a Quit button.
Adding more buttons.
Separate listeners.
Experiments.
Experiment G2.1: Your first AWT program.
Experiment G2.2: Creating multiple windows.
Experiment G2.3: Adding a Quit button.
Experiment G2.4: Adding a Help button.
Experiment G2.5: Improving actionPerformed.
Experiment G2.6: Building separate listeners.
Post-Laboratory Problems.
Problem G2-A: A customizable alert.
Problem G2-B: Multiple frames.
Problem G2-C: Multiple frames, revisited.
Problem G2-D: Separate frames.
Problem G2-E: Layout managers.
Problem G2-F: Widgets.
Problem G2-G: AWT widgets.
Notes.
Session G3: Java's Abstract Windowing Toolkit, Continued. Discussion.
The AWT, reviewed.
Getting user input.
Getting numeric input.
Experiments.
Experiment G3.1: The AWT, reviewed.
Experiment G3.2: Getting input from the user.
Experiment G3.3: String manipulation.
Experiment G3.4: A simple calculator.
Experiment G3.5: Supporting real numbers.
Experiment G3.6: Adding a quit button.
Post-Laboratory Problems.
Problem G3-A: Observing the user.
Problem G3-B: Capitalization.
Problem G3-C: Passwords.
Problem G3-D: Setting the size of text fields.
Problem G3-E: Beginning a real calculator.
Problem G3-F: Adding calculation.
Notes.
Session O1: Object-Oriented Design. Discussion.
Narratives.
Question and answer sessions.
Beginning coding.
Narrating interactions.
Diagrams of relationships.
Generalization and encapsulation.
Experiments.
Experiment O1.1: Determine potential objects and classes for an Othello simulation.
Experiment O1.2: Refining your descriptions.
Experiment O1.3: Beginning coding.
Experiment O1.4: Narrating interactions.
Experiment O1.5: Selective coding.
Experiment O1.6: Diagramming.
Experiment O1.7: Generalization.
Post-Laboratory Problems.
Problem O1-A: Describe a game.
Problem O1-B: A simple Othello interface.
Problem O1-C: Update Board.
Problem O1-D: Update Rules.
Problem O1-E: Changing Othello's board.
Problem O1-F: Changing Othello's rules.
Problem O1-G: Changing Othello's pieces.
Session O2: Inheritance. Discussion.
Reuse.
Inheritance.
Overriding methods.
From rectangles to squares.
Multiple inheritance.
Experiments.
Experiment O2.1: Building a new point class.
Experiment O2.2: A simple extension of the Point class.
Experiment O2.3: Adding functionality to ExtendedPoints.
Experiment O2.4: Overriding methods.
Experiment O2.5: Overriding the toString method.
Experiment O2.6: From Rectangle to Square.
Post-Laboratory Problems.
Problem O2-A: Extending Points.
Problem O2-B: Putting Points on a grid.
Problem O2-C: Validating Squares.
Problem O2-D: A hierarchy of shapes.
Notes.
Session O3: Interfaces and Polymorphism. Discussion.
Polymorphism.
Interfaces.
Generalized methods.
Generality through inheritance.
Building generalized methods with Java's interfaces.
Experiments.
Experiment O3.1: Polymorphism.
Experiment O3.2: NewPoints and PointPrinters.
Experiment O3.3: Using ExtendedPoints.
Experiment O3.4: Printing points.
Experiment O3.5: Printing revisited.
Post-Laboratory Problems.
Problem O3-A: makePrintable vs. toString.
Problem O3-B: Cloning points.
Problem O3-C: Abstract classes.
Problem O3-D: Interfaces vs. inheritance.
Problem O3-E: Defining polymorphism.
Notes.
Session X1: Primitive Types. Discussion.
Representing integers.
Representing reals.
Coercion and casting.
Representing characters.
Precedence.
Experiments.
Experiment X1.1: Facts about integers.
Experiment X1.2: Other integer types.
Experiment X1.3: Exceeding limits.
Experiment X1.4: Facts about reals.
Experiment X1.5: The limits of reals.
Experiment X1.6: Casting.
Experiment X1.7: Facts about characters.
Experiment X1.8: Precedence.
Experiment X1.9: Concatenating strings and numbers.
Post-Laboratory Problems.
Problem X1-A: Converting cases.
Problem X1-B: Rounding or truncation?
Problem X1-C: Rounding or truncation, revisited.
Problem X1-D: Encryption.
Problem X1-E: Coercion.
Problem X1-F: Unicode representation.
Problem X1-G: Operators and precedence.
Problem X1-H: Big integers and big reals.
Notes.
Session X2: Vectors. Discussion.
Vectors.
Other vector capabilities.
Determining the class of vector elements.
Storing primitive values in vectors.
Experiments.
Experiment X2.1: Heterogeneity and arrays.
Experiment X2.2: Vector basics.
Experiment X2.3: Testing limits.
Experiment X2.4: Additional vector methods.
Experiment X2.5: Course management.
Experiment X2.6: Modifying vector elements.
Experiment X2.7: Primitive objects.
Post-Laboratory Problems.
Problem X2-A: Default size of vectors.
Problem X2-B: Implement sets.
Problem X2-C: Other vector capabilities.
Problem X2-D: Implementing vectors.
Problem X2-E: Printing arrays.
Problem X2-F: A grading program.
Notes.
Session X3: Input, Output, Files, and Exceptions. Discussion.
Output and System.out.
Starting to build SimpleOutput.
Output files.
Exceptions.
Closing files.
Input.
Input and System.in.
Converting strings to other types.
Experiments.
Experiment X3.1: Using System.out.
Experiment X3.2: Building your own output class.
Experiment X3.3: Output to files.
Experiment X3.4: Output to files, revisited.
Experiment X3.5: Starting to build your own input class.
Experiment X3.6: Reading numeric input.
Post-Laboratory Problems.
Problem X3-A: Printing integer arrays.
Problem X3-B: Printing string arrays.
Problem X3-C: Redirecting output to a different file.
Problem X3-D: Redirecting output to standard output.
Problem X3-E: Reading input from files.
Problem X3-F: Reading parts of lines.
Problem X3-G: Redirecting input.
Notes. 0201612674T04062001