This course closely follows the AP Edition of “Java Concepts”, 4th edition by Cay Horstman. While no subject matter will be skipped, certain areas of instructor preference will be covered including object-oriented design, graphics and programming logic as demonstrated with flow-charts, real-world problems and by examples. “Programming Graphics”, chapter 5, and “Event Handling”, chapter 12, listed as optional in Java Concepts will be included as input, output, graphics and images makes for a more engaging Java course for students.
The AP Computer Science classes will be taught in a computer lab, with each student having access to their own pc connected to the Internet. Lectures will be interspersed with ‘keyboard time’. While students are working on assignments, as the Instructor, I will be available for individual questions, pacing the classroom to inspect work and be personally available to help. My college teaching experience has shown that the introduction of a new topic requires more lecture time initially, but it will likely balance out to be approximately 1/3 lecture, and 2/3 lab assignments.
Personal Philosophy
My programming experience comes from teaching over 80 courses (approximately 1500 hours) in Java and Object-Oriented Programming for UCLA, UC Irvine, UC Santa Barbara and UC Berkeley Extension. In addition, I teach Java programming online for the Bachelors degree program at University of Phoenix.
Development of software programs should be far more than a theoretical exercise. Intangible concepts such as objects need to be described using practical examples. I stress object-oriented programming through exercises such as describing the attributes (properties, methods and events) of common house-hold objects rather than using abstractions such as databases. With a background in graphical applications including 3D programming, objects such as cameras, lights and actors in 3D scenes makes for ideal ways to describe the concept of objects. Another good application demonstrating objects are cell phones, providing students a further opportunity to produce their own practical applications while challenging them to think through an application they would like to make.
Textbooks and Resources
Horstmann, Cay, AP Edition Java Concepts. 4th ed., New Jersey, John Wiley & Sons, 2005
Trees, Frances P., Advanced Placement Computer Science Study Guide to Accompany Cay Horstmann’s Java Concepts. 4th ed., New Jersey, John Wiley & Sons, 2006
The College Board’s GridWorld Case Study
Sun’s Java web site: http://java.sun.com
http://www.w3schools.com web site
Course Outline
The course is divided into 3 week sections
Fall Semester:
Unit 1: weeks 1, 2, 3
Topics:
Introduction to Java, first program “Hello World” and print statements
Compilers and Java Runtime Environment programs
Introduction to Applets vs. Stand-alone Java programs
Objects and Object-oriented programming (on-going)
Boolean algebra, binary and Hexadecimal numbers. Also 2’s compliment for negative numbers.
AND, OR and XOR gates and how they are used to build circuits such as in 32-bit addition to demonstrate the CPU’s functions.
Machine and Assembly code as a prelude to Java. Demonstrate assembly code programming with basic ADD, MOV, CMP functions, registers and memory access.
Differentiate Java’s byte-code from C++. Java’s multi-platform capability versus C++ on a specific CPU.
Objectives:
Present the transitions and evolution from machine code, to assembly code, the first high-level programming languages to object-oriented programming and finally multi-platform programming with Java.
Describe the functions of the compiler and the run-time.
Introduce Boolean algebra and related binary math.
Quick Start on programming.
Introduce essentials of writing, compiling and running Java.
Allowing students the opportunity and instant gratification to post their own Java applets, if they have their own outside web space.
Distiniguish the various data types (int, short, long, double, float, Boolean, string and byte) by their bit-length, max and min values.
Introduction of the Java Library classes (Appendix C in the Horstmann book)
Objectives:
Demonstrate the power of programming through iterations and lists in arrays.
Learn extended applications of arrays in double arrays and enumerated lists.
Use Date and/or Calendar object(s) for new applications and demonstrations of arrays of days of week and months.
Introduce Class concepts, it’s inheritance of other objects, and reinforce Object concept as a set of properties, methods and events
Reading:
Java Concepts, chapters 7 & 8
Programs:
GridWorld, Part 1
Unit 4: weeks 10, 11, 12
Topics:
Introduction to functions
Introduction and Implementing Classes: public and private types, and constructors.
Programming graphics
Objectives:
Describe functions as a prelude to classes.
Introduce classes, the compliment to object-oriented programming.
Use graphics to visually demonstrate the concept of classes.
Reading:
Java Concepts, chapters 3 & 5
Programs:
GridWorld, Part 2
Unit 5: weeks 13, 14, 15
Topics:
Graphical User Interfaces (GUI)
Event Handling
1st term projects
Objectives:
Introduce the related topics of GUI, Java Swing, and Event Handling.
With a background in graphical user interfaces, graphics and sufficient programming, give students an opportunity to challenge themselves with their own projects.
Reading:
Java Concepts, chapters 12 & 14
Programs:
Student’s own selected projects, with Instructor’s prior approval. Assignment can include a calculator, graphing device, body-weight-height index, calorie calculator, etc.
Unit 6: weeks 16, 17, 18
Topics:
Testing and Debugging
Designing Classes
Extend existing classes by building upon Java Library classes (Appendix C in the Horstmann book) as an example.
1st term projects continued.
Objectives:
Combine and distinguish related topics: compiler errors versus run-time errors.
Continue discussion of classes through creation of their own classes.
Continue student projects as a major component of their mid-term grade.
Reading:
Java Concepts, chapters 9 & 10
Programs:
Student’s 1st term projects continued
Spring Semester:
Unit 7: week 19, 20, 21
Topics:
Advanced Classes: Interfaces and Polymorphism
Class Inheritance
Objectives:
Begin new semester with advanced topics and professional features of classes. Includes related topics of Interfaces, Polymorphism and Inheritance.
Reading:
Java Concepts, chapters 11 & 13
Programs:
GridWorld, Part 3
Unit 8: week 22, 23, 24
Topics:
Exception Handling
Reading/Writing Files and Input/Output Streams
Objectives:
Address issues of unexpected or erroneous user input that can be associated with reading and writing files.
Also handle exception conditions such as divide-by-zero, users typing in letters where numeric values are required (and vice versa).
Reading:
Java Concepts, chapters 15 & 16
Programs:
GridWorld, Part 4
Unit 9: week 25, 26, 27
Topics:
Object-Oriented Design
Java on Cell Phones (Java Micro Edition or J2ME) moved to unit 11
Discuss social and ethical issues related to Computer Science, such as reverse engineering of software, open-source coding and owner’s rights, the role of industry consortiums in the specification development process and respecting use-licenses versus actual product ownership.
Objectives:
Re-emphasize Object-oriented programming and design.
Introduce data structures like binary trees and recursion applications.
Begin students on team projects applying software engineering strategies such as the book’s waterfall method, or Fred Brook’s ‘Mythical Man-Month’ model.
Provide students insights into the professional development environment and what is good business practice versus unethical behavior and potential violation of the law.
Reading:
Java Concepts, chapters 17 & 18
Programs:
Team projects on cell phone project or Java Applet
Unit 10: week 28, 29, 30
Topics:
Applications and Issues: Sorting and Searching
Data Structures: linked lists, FILO (first-in, last-out; such as a stack of golf balls in a single-opening tube), FIFO (first-in, first-out; such as a line at the checkout stand), and Circular Data structures (such as a conveyor belt).
Analyze the performance of sort and search algorithms using Big-Oh notation which quickly identifies the basic ratio of two sort algorithms (past a certain threshold).
Adding and removing items from single linked list and double linked lists.
Introduce common programming applications for data searches.
Begin programming of data structures.
Provide students with tools to determine the most efficient sorting and searching algorithms.
Application of Stacks and Queues, and the data types that support their construction (Lists) and their traversal for searches, inserts, updates and item deletion using Iterator.
Reading:
Java Concepts, chapters 19 & 20
Programs:
GridWorld, Part 5
Team projects on cell phone project or Java Applet continued
Unit 11: week 31, 32, 33
Topics:
Advanced Data Structures: binary trees and hash tables.
Using the ‘Set’ data type to create a collection of items.
Specific Set types including Maps and Hash tables, including the organization of Hash tables.
Demonstrations and exercises of Binary Trees, how to traverse a tree, tree maps, and advantages over linear searches.
Analysis of Heap sorts, their traversal and maintenance (fixing) to stay balanced.
Other Java programming topics possibly including Java on Cell Phones (Java Micro Edition or J2ME)
2nd term projects
Objectives:
Complete the book’s discussion of Java.
Use Recursion to parse Binary Trees.
Demonstrate and describe various data structures and algorithms used for fast searches and sorting including Hash tables, binary trees and heap sorts.
Introduce J2ME using Cell phones. Expose students to a new development environment. Examine a potential future career.
Students to continue Team projects.
Reading:
Java Concepts, chapters 21 & 22
Programs:
Team projects on cell phone or Java Applet or Application continued
Unit 12: week 34, 35, 36
Topics:
Team projects completed and demonstrated.
2nd term students projects (continued)
Finish any remaining topics.
Introduce Java and XML (optional)
Java with other media: video and audio
Objectives:
Students to finish a Team project for the experience of actual real-world software development.
Students to do individual projects with audio or video as a fun challenge.
Programs:
Team projects on cell phone project or Java Applet continued.
Individual student projects with Java for audio or video.