You are on page 1of 8


The purpose of this course is to prepare students to take a second course in computer science at the college level. Students are graded on producing college level work, though they remain in high school. While Java is the language taught, students are exposed to other languages and encouraged to understand that computer science theory is applicable across programming languages and operating system platforms. Though the A curriculum does not require a complete depth of understanding of all topics covered as in the AB course, topics that are covered in the A curriculum are taught in great detail to ensure a more than sufficient understanding. All students must have successfully completed the core-credit course, Introductory Computer Science, prior to enrollment. All underclassmen taking the course who perform successfully are encouraged to take AP Computer Science AB in the subsequent year. Students who wish to even further deepen their college preparation in computer science and technology are also encouraged to take Advanced Topics in Computer Science concurrently or subsequently. Successful completion of AP Computer Science A as evidenced by passing the AP Exam is a pre-requisite to admission into these courses.

Students are issued three textbooks for the course and are asked to purchase another. Each textbook has its purpose. Concepts must be understood in theory and in practice. The primary textbook is used to help guide students through the initial language topics in Java and then to provide a framework for further study. Whenever a student has a further question on theory or the Java language, he may reference the secondary textbooks. All students are expected to actively engage in review for the exam as topics are covered, through use of the paperback review book, as well as through the online resources.

Horstmann, Cay. Big Java: Third Edition. Hoboken, NJ: John Wiley & Sons, 2008. ISBN # 978-0-470-10554-2 Lambert, Kenneth, and Martin Osborne. Fundamentals of Java: AP* Computer Science Essentials for the A & AB Exams, Third Edition. Boston: Thomson Course Technology, 2007. ISBN # 0-619-26723-2

Teukolsky, Roselyn. Barron's AP Computer Science, [current year] (Barron's How to Prepare for the AP Computer Science Advanced Placement Examination) Barron's Educational Series, 3 edition, 2006 ISBN 10 # 0-764134-876 or ISBN 13 # 978-0-764134-876


Deitel, H.M., and P.J. Deitel. Java How to Program, Fifth Edition. Upper Saddle River, NJ: Prentice Hall, Pearson Education, 2003. ISBN # 0-13-101621-0


Weiss, Mark Allen. Data Structures and Problem Solving Using C++, 2 nd edition. Reading, Massachusetts: Addison Wesley Longman, Inc., 2000. ISBN # 0-201-61250-X

All students are to become familiar with the API site at Students should be able to find any necessary classes or methods not found or described in any of the other Java resources, e.g. the time function found in DATE().


All students should review the College Board's AP Computer Science website, found at Students are expected to read and understand the course description for the course; most especially the Topic Outline and Java Subset.

Students are expected to regularly spend at least three hours per week outside of class programming on their own, using one of their two studies, their lunch period, their break period, or programming at home. The Java programming language SDK and the JCreator IDE are installed on the computers in each lab. Students are shown how to install the SDK and the IDE on their computers at home. On average, class is held at least one hour per week in a computer lab with students actively programming.

TEACHING STRATEGIES: All appropriate known methods of instruction are included including, traditional lecture, LCD projected sample programming, online quizzing, open question review, student presentation, class review of student projects on a SmartBoard, in-class programming with peer tutoring, group projects, etc.

PROGRAMMING ASSIGNMENTS: Proper adherence to Java standards is required. Each week during the course students are expected to complete a project program corresponding to the topics covered in the class. Initially, programming projects will be small in size and, therefore, students will be expected to produce multiple programming projects for online grading per topic. As the course progresses and programming projects become longer and more object oriented, students are required to periodically review their programming work on a computer with the instructor in his office. Work is also reviewed when class is scheduled in the computer lab.

SUGGESTED TIMELINE: SPRING SEMESTER (Fall semester below is a pre-requisite)


Topic Review of Introductory Computer Science topics

Further depth on primitive arrays Introduction of the ArrayList Class

Lab: Working with a list of integers: averaging, high/low, mean, mode Topics: primitive arrays, looping, conditionals, swapping with use of temporary storage, running totals and sums, algorithmic assumptions

Object Orientation: the What, Why, and How 2 Further development of user-defined classes: client/server relationships Further use and description of pre-defined objects and classes The Math Class revisited Demonstrated use of the ArrayList class using Wrapper classes Strings in detail Topics: Objects, Wrapper Classes, ArrayList, Math Class, static methods and static class variables Lab: Working with a list of Integers: Revisit using Objects

The how of searching lists: sequential vs. binary in 3 theory Logical vs. physical size of arrays First Occurences vs. multiple occurrences and counting thereof Introduction to comparison of algorithms and Big O notation Lab: Searching lists Topics: efficiency of algorithms, Big O

Difference between objects and their references 4 Difference between shallow and deep copies Introduction to Organization of Data using Data Structures Sorting data using quadratic sorts: Bubble, Insertion, Selection Lab: Sorting a list of Integers Topics: bubble, insertion, selection sorts

Efficiency of Algorithms re-emphasized: quadratic 5 sorts vs. logarithmic sorts Quicksort and Mergesort using ArrayList Introduction to Recursion Big "O" Notation with partial mathematical explanation Test: Theory and Practice of Arrays and simple objects

Object Orientation in full detail 6 Proper structure of classes: constructors, accessors, mutators, and helper methods Lab: Old McDonald's Farm

Topics: interfaces, classes, inheritance, Visibility modifiers: public vs. private (vs. protected) polymorphism, use of super, proper Global vs. local: scope and lifetime of variables referencing Comprehensive description and use of inheritance, polymorphism, data abstraction, and information hiding Introduction of interfaces and abstract classes and abstract methods

More on classes and levels of abstraction 7 More on constructors and chaining Methods and their signatures Lab: Calculation and estimations of pi and e Topics: constructors, static methods, various

Concept of Black Box programming

algorithms, estimations, numerical imprecision, drivers and classes as clients and servers

Review, Q & A 8 Return to Recursion 9 Recursion: memory usage, activation records, elegance of coding, base cases, principles of proper recursion Implementation of Quicksort and Mergesort Lab: Sorts and more sorts Topics: proper structural decomposition, procedural vs. object orientation in depth, recursion Mid-Term Exam

Arrays revisited: matrices and two-dimensional 10 arrays in general Lab: Checkers, Person vs. Person Topics: two dimensional arrays, searching, boundary checking The Grid World Case Study 11 Understanding the narrative Downloading and running the code Lab: Grid World visited

The Grid World Case Study 12 Understanding the code in detail, reviewing each topic in the course as it appears in the case study Lab: Grid World visited and modified

Modifications to the Grid World Case Study 13 Taking the world apart and putting it back together again Exception handling Lab: Grid World with additions

Review, Q & A 14 Review of AP Free Response Questions and their 15 solutions Final Exam AP Exam



Topic Introduction to Computer Science: what, why, how

What it is and what it's not Computer as a tool, programming as a science Parts of a computer and their purpose: Hardware and software The digital world: pixels, bits, bytes, memory

Lab: Hello world! Type output Topics: general computer science: hardware & software, responsible uses of computer systems, structure of a Java program, output with System.out Quiz: Initial Information and Terminology

Ethical implications of intellectual property in the digital world Basic I/O: screen output main method, use of { }, the ";" Required structure of a program "Hello World" program

Computer setup: installing the Java SDK and an 2 IDE - Jcreator Installing .jar files, packages Java programming standards First Java programs and interactivity Keyboard input using Scanner Necessity of a reader object Concept of variable storage in memory Basic variable types: int, double, float Simple Operators Quiz: Writing basic programs Labs: Basic Math operations Topics: I/O - use of Scanner and System.out, basic math, basic primitive types, variables and memory storage

The compiler: what, why, when, how 3 Errors described: syntax, run-time, logic Debugging: independently programming successfully Executable and non-executable lines of code: comments More basic types: String, char, boolean Constants: use of final Cumulative Test: basic computer information, terminology, and writing of basic programs Labs: Increased interactivity Topics: use of I/O to determine program output, primitive types, variables, final variables (constants)

Programming reviewed 4 Basics reinforced Comfort level achieved School Mission as applied to Computer Science Ethical considerations Intellectual Property: rights and wrongs Citing information: object orientation meant to create shared resources, but must be legal and ethical Labs: Students will have completed at least 9 initial programs by this point with many class sessions on computers

Introduction to Control Statements: Conditionals=> 5-6 if, if-else Program flow and its interruption Boolean expressions: structure and syntax Concept of True or False, with no in-between boolean variables: possible uses demonstrated Becoming "parentheses happy" Quiz & Test: use of conditionals Labs: Programs involving conditionals Topics: cumulative language topics learned (as will all continuing), if, if-else, parentheses

Cumulative review of student programs 7 Student Presentations of their work Instructor led review of topics covered Q&A Mid-Term Exam: cumulative

Introduction to Control Statements: looping 8 The while statement "Make it stop!" Avoiding infinite loops Difference between conditional statements and looping statements Repeating entire programs Count controlled loops vs. sentinel structures Quiz: looping Labs: Programs involving basic looping Topics: if, if-else, while, infinite loops, program repitition

Looping shortcuts: the for statement 9 Differences and similiarities of while and for while can do it all! Lab: multiple small programs using loops, i.e. times tables Topics: looping Nested control statements 10 Loops within loops Complex conditional structures: if-else-if-else... Lab: catch up week! Test: Repetition and Conditionals

User-defined methods vs. main 11-12 Parameters Global vs. local: scope and lifetime of variables Using pre-defined methods: just what is the Math class? a .jar? Introduction to Defining Classes Passing information safely and securely Lab: Redo a program done procedurally using methods Topics: functional decomposition, parameters

Introduction to Arrays: primitive only 13-14 Theory of a list Implementation of a list Using repetition for list processing Using conditionals for list searching Lab: Averaging list of grades Topics: primitive arrays, running totals, loop processing, methods and parameters

Programming practice and review 15 Final Exam