CSCI A202 - Introduction to Programming (II)

Lecture Schedule and Information

This schedule is tentative and subject to change.

Tuesday, January 12
Introduction and welcome. Overall course description. Getting started. A simple conversion program. BreezyGUI. JBuilder. Symantec Cafe.
Read: 6-11(1), 12-35(2)
Homework: 2/35

Thursday, January 14
A201 Review: Java basics. Numeric data types and literals. Variables and reserved words. Expressions. Mixed-mode arithmetic. String literals, variables, and Strings concatenation. Tester programs. More BreezyGUI: layout, objects and methods. Message boxes.
Read: 36-56 (2)
Homework: 14/58

Tuesday, January 19 : Assignment 1 Due
A201 Review: control structures. if statements. Relational operators and their precedence. The while statement. A common loop structure. Debugging loops. Logic errors including infinite loops. Data validation and robust programs. BreezyGUI: text areas and formatted output.
Read: 59-83 (4)
Homework: 1/83, 11/84

Thursday, January 21
End of review: User-defined methods. Parameters and return values. Overloaded methods. Sharing global variables versus passing parameters. Scope and lifetime of variables. Preconditions and postconditions of methods. do-while, for, switch, break, continue. Extended assignment operators. Primitive data types. Arrays. Looping through arrays, searching, sorting, inserting, and deleting array elements. Two and higher dimensional arrays. Arrays as parameters to methods.
Read: 85-96 (5), 113-120 (6), 188-207 (9)

Tuesday, January 26: Assignment 2 Due

A201 REVIEW MINI-EXAM (30-40' in class)

Strategies for implementation and testing: top-down, bottom-up, extending capabilities and mixed. Testing strategies. Finding the location of run-time errors. More primitive data types: boolean, char, int, double, other numeric data types. The cast operator. Constants, Math and String objects, logical operators. Peculiarities of computer arithmetic.
Read: 96-110 (5), 120-131 (6), 133-147 (7)
Homework: TBA

Thursday, January 28

The readings for Thursday will be: pp. 298-307, and pp. 321-333 from your text. As announced, there will be several changes made to the this syllabus page as we will reorganize some of the topics a little bit. I'll post a summary of the changes on the announcements page.
Loop invariants. Using loop invariants to reason about loops: computing the GCD of two numbers, the Balzano bisection, convergence algorithms. Strings revisited: the StringBuffer and StringTokenizer classes. User-defined classes. Instantiation. Objects. Constructors. Instance and class variables and methods. Structure of a class template. BreezyGUI: Menus and the title.
Read: 148-156 (7), 158-169 (8)
Homework: TBA

Tuesday, February 2: Assignment 3 Due
User-defined classes continued. Constructors. The static modifier. Class constants. Primitive types, reference types, and the null value. Copying objects. Comparing objects for equality. The methods finalize and dispose. BreezyGUI: checkboxes, radio buttons, scrolling lists, and choice lists.
Read: 169-185(8), 207-215 (9)
Homework: TBA

Thursday, February 4
Arrays revisited. Case study: a polynomial evaluator. The model/view pattern. Case study: student test scores (a simple gradebook program).
Read: 215-237 (9)
Homework: TBA

Tuesday, February 9: Assignment 4 Due
Inheritance, abstract classes, and polymorphism. Implementing a simple Shape hierarchy. Constructors and super. Other methods and super. Protected variables and methods. Implementation, extension, overriding and finality. Extending the Shape hierarchy. Arrays of Shapes.
Read: 242-256 (10)
Homework: TBA

Thursday, February 11
Shapes as parameters and return values. More examples: an Employee hierarchy. A case study: the painter's friend. Object oriented analysis and design guidelines.
Read: 257-274 (10)
Homework: TBA

Tuesday, February 16: Assignment 5 Due
Recursion. Conceptual view. The methods factorial, odd and even, the Hanoi tower problem. Complexity analysis. Sum methods, other O(n) methods. An O(n2) method. Common Big-O values. An O(rn) method. Binary search, quick sort, merge sort. Comparing sort algorithms.
Read: 275-286, 286-292, 292-296 (11)
Homework: TBA

Thursday, February 18
Simple graphics. Coordinate systems. The Graphics class. Drawing lines, circles. Drawing text. The methods paint and repaint. Color. Data graphs: line, bar and pie charts. Case study: multiple views of data. Visualization of processes (sorting algoritms, the Hanoi tower problem, relaxation networks). Threads.
Read: 298-307, 310-316 (12)
Homework: TBA

Tuesday, February 23: Assignment 6 Due
Events. Tracking the mouse. A simple sketching program. Transient and refreshable images. Fractals and recursive graphics. Turtle geometry. Defining and using a geometric class. Case study: dragging circles. Text properties.
Read: 316-325, 325-333, 307-310 (12)
Homework: TBA

Thursday, February 25
Files. File input. Opening and closing a FileInputStream. Exception handling. Reading data from a text file: one character at a time, one line at a time, one word at a time. Case-study: a text analyzer.
Read: 336-347 (13)
Homework: TBA

Tuesday, March 2: Assignment 7 Due
File output. Opening and closing a FileOutputStream. Writing data to a PrintWriter. Case-study: employees and payroll. Data input and output streams.
Read: 347-358 (13)
Homework: TBA

Thursday, March 4
Covers: arrays, classes (inheritance, abstraction and polymorphism), graphics, recursion (complexity) and files.

Tuesday, March 9
Serialization and object streams. Terminal input and output. File dialogs. Vectors. Vectors vs. arrays. Tables. Enumerations. Primitive types and wrapper classes. Manipulating primitive types in a vector. BreezyGUI: dialogs.
Read: 358-364 (13, 366-376 (14)
Homework: TBA

Thursday, March 11: Assignment 8 Due
Case studies: an employee maintenance system. An exercise in parsing and translation: Eliza (the Therapist program).
Read: 376-389 (14)
Homework: TBA

March 13-21: SPRING BREAK

Tuesday, March 23
Abstract data types (ADTs): one-way lists. The axioms of the ADT and a first implementation: linked-list class implementation.
Read: 391-403 (15)
Homework: TBA

Thursday, March 25
The one-way list ADT revisited. Vector representation and implementation. Complexity analysis of the two implementations. Related ADTs: two-way lists, stacks, queues. More examples.
Read: 404-413, 413-414, 414-417 (15)

Tuesday, March 30: Assignment 9 Due
HTML and applets. GBApplet. Converting a stand-alone application into an applet (switching from GBFrame to GBApplet).
Read: 419-442 (16)
Homework: TBA

Thursday, April 1
The AWT. The AWT philosophy. GBFrame vs. raw AWT. Variations on implementing with AWT.
Read: 443-451, 451-458 (17)
Homework: TBA

Tuesday, April 6: Assignment 10 Due
GUI components. The Component class hierarchy. Canvases. Scroll bars. Menu components. Popup menus. Container clases. Layouts: border, flow, grid, gridbag, and card layouts. Panels. Events and components. Listeners. Events methods. Experimenting with events.
Read: 458-482 (17)
Homework: TBA

Thursday, April 8
AWT Dialogs. The model/view/controller pattern. Case-study: a color meter application. Applets and the AWT.
Read: 482-493 (17)
Homework: TBA

Tuesday, April 13: Assignment 11 Due
Introduction to advanced topics: a simple ray-tracing program using a basic illumination model.
Read: TBA
Homework: TBA

Thursday, April 15
Introduction to advanced topics: a discipline of programming. Applied logic, and program correctness and verification.
Read: TBA
Homework: TBA

Tuesday, April 20: Assignment 12 Due
Introduction to advanced topics: operating systems. Threads. A simple resource allocation program. Shared resource with concurrent clients.
Read: TBA
Homework: TBA

Thursday, April 22
Introduction to advanced topics: language processors, compilers, interpreters. A simple interpreter (evaluator).
Read: TBA
Homework: TBA

Tuesday, April 27: Assignment 13 Due
Practical exam review.
Read: TBA
Homework: TBA

April 22-23, Labs: PRACTICAL EXAM

Thursday, April 29
Final exam review and course-wrap up.

May 6
The exam will be from 2:45pm - 4:45pm in class.