Full Table of Contents for ProgramLive from http://www.datadesk.com/ProgramLive/content2.shtml Assigned readings are marked by date. [4/03] Introduction to livetexts | + Introduction to livetexts | + Exploring this book of Lessons of this | + Activities | + Using Controls in Activities | + Introduction to exercises | + The Lesson Book Page | + Changing Text | + Setting Preferences | + Global Features | + Using the Table of Contents | + Introduction to the Glossary | + Introduction to the Index | + Introduction to Bookmarks | + Page Controls | + Laboratory | + Homework | + Projects | + Web | + Help Guide | + Dealing with Java Programs \ + Learning Effectively [4/03] Introduction to Java | + Hardware and software | + Hardware versus software | + Computer memory | + Some simple Java programs | + A do-nothing Java program | + A program that prints | + A program that creates a window | + A program that draws | + Simple Java program exercises | + Components of a Java program | + Comments and whitespace | + Exercises on comments and whitespace | + Keywords and identifiers | + Exercises on keywords and identifiers | + Variables and types | + Expressions | + Exercises on variables and expressions. | + Three statements: assignment, conditional, and block | + The assignment statement | + Swapping two variables | + Conditional statements: if | + Conditional statements: if-else | + Boolean expressions | + Blocks \ + Exercises on assignment, conditional and block statements + Input/Output + Using the Java Console for output + Using the Java Console for input + A GUI: JLiveWindow + Exercises on the java console and GUIs + Graphics windows + Using a graphics window + Exercises on graphics windows [4/03] + Assertions in programs | + Relations about variables and values | + Simplifying a particular kind of relation | + Assertions \ + Additional statements and expressions [4/03] Methods and method calls | + Methods | + Methods are recipes | + The black-box view of a method | + Check your understanding of terminology | + Understanding procedure calls | + The general form of a procedure call. | + Method bodies and method calls | + The method body | + Example of method-call execution | + Executing inner calls | + Review of methods | + Writing procedure calls | + Two components of method bodies | + Local variables | + Combining declaration and initialization | + The return statement | + Functions | + Form of a function | + The function call | + Executing a function call | + Check your understanding of functions | + Top-down programming | + Top-down design | + Edgar Allen Poe used top-down design | + Anglicizing integers -- functionally \ + Anglicizing integers -- using assignments [4/03] Primitive types | + Primitive types | + The integer types | + Integral constants (literals) | + Operations on type int | + Promoting integer values to a wider type | + Casting integer values | + Review of integer types | + A minimalist view of floating-point | + Literals of type double | + Values of type double and operations on them | + Remarks about floating point | + Type char | + Literals of type char | + Char as an integral type | + A loop to sequence through characters | + Execution of the loop | + Type boolean | + The literals and operations of type boolean | + Short-circuit evaluation | + Properties of boolean operators | + Exercises on type boolean \ + The mark of a boolean tyro [4/03] Programming style | + Good Programming Practices | + Naming conventions | + Conventions for naming parameters | + Conventions for naming local variables | + Conventions for naming instance variables and class variables | + Conventions for naming constants | + Review of conventions for variable names | + Conventions for naming methods | + Conventions for naming classes | + Conventions for indentation | + Why indent? | + Points to watch out for when indenting | + Guidelines for writing methods | + The specification as a logical firewall | + Consistency of method body and method specification | + The statement-comment | + Discussion of the statement-comment | + Why indent? | + Describing variables | + Describing instance variables and | declarations of instance variables and class variables. \ + The placement of local-variable declarations [4/03] Classes | + Classes | + The class as a file drawer of methods | + Referencing static methods | + Temperature conversion | + Overloading method names | + Class Math | + The static methods in class Math | + The static fields of class Math | + Exercises on static methods and variables | + Trigonometric functions | + Classes and objects | + Using an object to aggregate information | + Referencing an object and its fields | + Definition of a class | + A Class as a type | + Creating and initializing objects | + Creating objects | + Creating String objects | + Using field declarations to initialize fields | + Scoope boxes and constructors | + The scope box of a frame | + The constructor | + Calling a constructor from a constructor | + Non-static methods | + Non-static methods | + Creating an instance of Circle | + Using instance methods of class Circle | + Hiding instance variables | + Reasons for using modifier private | + Exercises on non-static methods | + Consequences of using objects | + The scope box for a call of an instance method | + Method toString | + Evaluating a call on method toString | + Further examples of method toString | + Exercises on objects | + Object-oriented design | + Designing the classes of a program | + Problem statement: reading a clock | + Identifying the classes | + Designing classes Clock and Time | + Implementing Clock, Time, and GUI | + Designing the player and the game | + Implementing the player and the game \ + Putting it all together [5/01] Subclasses and inheritance : + Subclasses : + The need for better structuring mechanisms : + The subclass : + The subclass (continued) : + Constructors and inherited methods : + Writing a constructor for a subclass : + Overriding an inherited method : + Calling an overridden method of the superclass : + Use of keywords this and super : + Exercises on subclasses : + Access modifier protected : + The class hierarchy : + Casting and a new model of execution of method calls : + Widening : + Narrowing : + Execution of a method call : + Referencing an item within a method body : + A final look at class Employee : + Object-oriented design : + Object-oriented design with subclasses : + Classes Shape and Paralleloram : + Subclasses Rhombus and Square : + Using the shape classes [Bonus] + Abstract classes : + Abstract classes Some useful classes + Numerical wrapper classes + Wrapper class Integer + Instance methods of class Integer + Static constants and methods of wrapper class Integer + Non-numerical wrapper classes [4/03] + Strings | + String literals | + Variables of type String | + Operation catenation | + More on catenation | + Referencing the characters of a String | + Equality of Strings | + Review of string concepts \ + Class StringBuffer + Class Vector + Adding objects to a Vector + Referencing and changing objects in a Vector + Other Vector methods + Class Date Packages + Packages + The package and import statements + Package names + The class path [4/03] Loops | + Iteration | + Introduction to the while loop | + The invariant for the while loop | + Understanding a loop in terms of its invariant | + Development of a second while loop | + Execution of the second while loop | + Reading the loop with the aid of its invariant | + A variation of the while loop | + Exercises on loops | + Several examples of loops | + Thoughts on developing an invariant | + The roach explosion | + Exponentiation | + The spiral | + Loop schemata | + A schema for processing natural numbers | + A loop to count the w's | + Testing primality | + A loop schema for reading and processing nonzero integers \ + Printing the sum of nonzero input integers [4/??] + The for loop : + Transforming a while into a for loop : + Syntax and semantics of the for loop : + Developing a for loop : + Exercises on for loops [4/03] + Making progress and stopping | + The bound function | + Using loop condition k != n | + Using loop condition k < n | + Off-by-one errors | + Miscellaneous points about loops | + Counting primes | + No nested loops \ + How not to design loops Arrays [4/03] + Introduction to arrays | + Introduction to arrays | + The length of an array | + Referencing array elements | + Array initializers | + Where can array initializers be used? | + Exercises on arrays | + Talking about array segments | + The notation b[i..j] | + Picturing array segments | + Using pictures to present relations about arrays | + Some programs that use arrays | + A schema for processing array segments | + A schema for processing array segments in reverse order | + Printing input values in reverse order | + Finding the number of smaller elements | + Testing method numberLess | + Checking for equality of arrays \ + Returning an array [4/??] + Arrays and classes : + Printing a student report : + Printing a student report (continued) : + Printing a student report (continued) : + Private leaks : + Dynamic arrays : + Dynamic arrays (continued) : + Exercises on clas DynamicArray : + Some basic array algorithms : + Linear search : + Another version of linear search : + Finding the position of the minimum value : + Inserting into a sorted array segment : + Partitioning an array segment : + Median of three : + Merging two sorted array segments : + Binary search : + Selection sort and Insertion sort : + Selection sort : + Selection sort revisited : + InsertionSort [4/03] Multi-dimensional arrays | + Multidimensional arrays | + Declaring and creating two-dimensional arrays | + Referencing elements of a two-dimensional array | + Referencing the number of rows and columns | + Exercises on two-dimensional arrrays | + A non-Java notation for a subarray | + Two-dimensional array initializers | + Some programs that use two-dimensional arrays | + Printing a table of values | + A schema for processing a two-dimensional array | + An interest(ing) table | + Row-major search | + Saddleback search | + The Java concept of a multi-dimensional array | + The Java concept of a two-dimensional array | + The lengths of rows and columns | + Ragged arrays | + Exercises on Java multi-dimensional arrrays | + Programs that use ragged arrays | + Pascal's triangle | + Implementing Pascal's triangle \ + Printing Pascal's triangle [Bonus] Recursion : + Recursion : + Recursive definitions : + First recursive method : + Second recursive method : + Third recursive method : + The recursive pattern : + Exercises on recursion : + Execution of calls on recursive methods : + Execution of a call on a recursive method : + Tail recursion for procedures : + Explicit implementation of tail recursion for procedures : + Some interesting recursive methods : + Tiling a kitchen : + Computing x to the y. : + Mergesort. : + Quicksort : + Basic quicksort : + Quicksort at its best : + Quicksort at its worst : + Solving the quicksort space ineffificencies [4/03] Testing and Debugging | + Introduction to tsting and debugging | + Good programming practices | + Testing strategies | + Using GUI JLiveWindow as a test driver | + Another test driver for a method | + The test driver for a class | + Assertions in testing | + Selecting test cases and checking them | + Structural testing | + Checking test cases automatically | + Partial checking done automatically | + Debugging | + Tracking down a bug \ + Tracking down another bug [Bonus] Interfaces : + Interfaces : + The interface : + Implementing an interface : + The real use of interface ActionListener : + The interface as a type : + The interface : + Implementing more than one interface : + Extending an interface : + Exercises on interfaces : + Interface Comparable : + Interface Comparable : + Implementing class Comparable : + Casting between Pixel and Comparable : + Interface Enumeration : + Interface Enumeration : + A neat use of Enumeration [Bonus] GUIs and event-driven programming : + GUIs and event-driven programming : + Components and containers : + Layout managers : + Listening to a GUI [Bonus] Exception handling : + Output of thrown Exceptions and Errors : + Throwing-an-Exception output : + The concept of a throwable object : + Throwable objects : + Catching a thrown exception : + The try statement : + Using the try-statement in JLiveWindow : + Using the try-statement in JLiveRead : + Propagation of a thrown object : + Exercises on exceptions : + The throw-statement : + The throw-statement : + Catching and throwing an Exception further : + Checked exceptions and the throws clause : + The throws clause : + Hints on using exceptions Applets + Applets + Using applications and applets + A first applet + The structure of an applet + HTML and applet commands + An overview of HTML + The applet command + Example of applets + Applet: Drawing a clock + Applet: Summing two double values The IDE Visual Cafe + The IDE Visual Cafe + The components of the Visual Cafe window + Overview of the Visual Cafe window + Toolbars + The Project window + The Source window + Field Events/Methods + The Status bar and Workbook tabs + Opening and creating projects + Opening an existing project + Creating a new project from template + Creating a new project from given Java files + Inserting files into a project + Deleting files from a projectt + Executing an application + Executing an application + Stopping execution of an application + Specifying the class with method main + Dealing with syntax errors + Miscellaneous points about Visual Cafe + Docking and undocking a toolbar + Docking and undocking a window + Accessing the API specs [4/03] The IDE CodeWarrior | + The IDE CodeWarrior | + Files and projects | + Packages | + The components of the CodeWarrior window | + Overview of the CodeWarrior window | + Toolbars | + Manipulating Project and Source windows | + The Project window | + The Source window | + The Source-window toolbar | + Opening and creating projects | + Opening an existing project | + Creating a new project from stationary | + Inserting files into a project | + Deleting files from a project | + Creating a new project from given Java files | + Executing an application | + Executing an application | + Specifying the class with method main | + Inserting Swing into a project | + Creating stationery \ + Dealing with syntax errors