AP® Computer Science A Audit Syllabus

Mr. Jeff Brown, JFHS Computer Science Teacher

Course Overview

AP Computer Science A is designed to be an introductory college-level course in computer science. It emphasizes object-oriented programming methodology with an emphasis on problem solving and algorithm development. The coursework will include the following topics: object-oriented program design, program implementation, program analysis, the study of standard data structures and abstraction, standard algorithms, and computing in context. Current offerings of the AP Computer Science A Exam require the use of Java (those sections of the exam that require the reading or writing of actual programs), and therefore the AP Computer Science A course focuses on Java for coding.

Of course, the ultimate goal for students in this course is to develop the critical thinking and problem solving skills necessary for success in the workforce. Therefore, it is important for me to teach students how to think like computer scientists and not merely be satisfied with teaching them how to code. To accomplish this goal, I use varied teaching strategies and a heavy emphasis on hands-on learning. These teaching strategies are described in more detail after the course planner outline.

Course Resources

Main Texts:

Lewis, J., Loftus, W., & Cocking, C. (2007). Java software solutions for AP computer science A (2nd. ed.). Boston, MA: Pearson/Addison-Wesley.

Cook, C. E. (2005). Blue pelican Java; Blue pelican graphical labs.College Station: Virtualbookworm.com.

Supporting Texts and Resources:

College Board.Curriculum Module: Recursion(2013); Released Free Response Questions (2004 – 2013). New York: College Entrance ExaminationBoard.

Litvin, M. (2013).Be prepared for the AP computer science exam in Java. Andover, MA: Skylight Publishing.

Teukolsky, R. (2013). AP computer science A (6th ed.). Hauppauge, NY: Barron's.

Course Planner [C2]

Unit
(School Week) / Topic(s) / Resources / Assignments / Assessments
1
(1-2) / Computer Systems [C8]
  • Introduction to Computer Science
  • Binary / Hexadecimal Numbers
  • Hardware Components and Networks
  • Programming and Programming Languages
  • First Java Programs
  • Using System.out.println()
/ Lewis/Loftus/CockingCh. 1: Selected Multiple Choice, True / False, Short Answer questions.
Introduction to IDEs.
Example Programming Projects & Labs: Hello Java, Address Sticker, Star Designs.

Lewis/Loftus/Cocking Ch. 1 Test.
2
(2-5) / Objects and Primitive Data[C3, C4, C5, C6]
  • Introduction to Objects and Basic Coding
  • Strings, Variables and Assignments, and Primitive Data Types
  • Casting Between Data Types
  • Constants
  • Creating Objects
  • The Scanner Class
  • The Math Class
/ Lewis/Loftus/Cocking Ch. 2: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 2 Exercises (Variable Types), Lesson 3 Exercises (Simple String Operations), Lesson 4 Exercises (Using Numeric Variables), Lesson 5 Exercises (Mixed Data Types, Casting, and Constants.)
Example Programming Projects Labs: Hello Java Revisited, Names & Places, Circle Area, Name That Celebrity, Arithmetic Assignment, Die Class, Snake Eyes, Compute This, The Name Game.
Lewis/Loftus/Cocking Ch. 2 Test.
3
(6-7) / Program Statements: Sequential Program Flow and Conditionals (If, If/Else, and Switch Statements) [C3, C4, C5]
  • Boolean Statements
  • Control Flow and Basic Decision Structures (If, If/Else)
  • Compound Boolean Statements
  • Nested If/Else versus Switch
/ Lewis/Loftus/Cocking Ch. 3: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 8 Exercises (The Boolean Type and Boolean Operators), Lesson 9 Exercises (The If Statement), Lesson 10 Exercises (The Switch Statement and Char.)
Selection Statement Activity: Think about your normal schedule for the day. What kind of decisions do you make where you choose one thing over another? What do you base those decisions on? Create a pseudo-code outline of your day, using if and if/else statements.
Example Programming Projects & Labs: Even or Odd, Rock / Paper / Scissors, Weight on Alternate Planets, Computing a Raise, Data Validation, Summer Camp Activities, Graphical Lab 1 (Booleans), Graphical Lab 2 (Booleans with If/Else), Graphical Lab 3 (Switch and Modulus.)
Lewis/Loftus/Cocking Ch. 3 Test (Part 1.)
4
(7-9) / Program Statements: Repetition Statements [C3, C4, C5]
  • Repetition Statements: The While and Do-While Loops
  • Repetition Statements: The For and Enhanced For (For:Each) Loops
/ Lewis/Loftus/Cocking Ch. 3: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 11 Exercises (The For Loop), Lesson 12 Exercises (The While and Do-While Loops), Lesson 11 & 12 Contest-Type Problems.
Example Programming Projects & Labs: Processing Grades, Powers of 2, Number Guessing Game, Table of Bases, Finding Minimum and Maximum, Election Day, Tuition Cost, Graphical Lab 4 (For Loops), Graphical Lab 5 (While Loops.)
Lewis/Loftus/Cocking Ch. 3 Test (Part 2.)
5
(9-11) / Writing Classes[C3, C4, C5, C6]
  • Anatomy of Classes and Methods
  • Encapsulation and Polymorphism
  • Method Overloading
  • Method Decomposition
  • Object Relationships (Has-A, Is-A)
  • Javadocs
/ Lewis/Loftus/Cocking Ch. 4: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 15 Exercises (Classes and Objects), Lesson 16 Exercises (More On Classes and Objects), Appendix AE (Javadocs.)
Real-Life Class: Choose an item you use in your everyday life on a regular basis. Describe its attributes (what it has), and its methods (what it does.) Then, design a Java class to represent this item. Include all necessary instance data and method headers, and pseudo-code for the method bodies.
Example Programming Projects & Labs: Bank Account, Tracking Grades, Dice Revisited, Deck of Cards, Student, Vehicle, Department Store, Gas Mileage, Graphical Lab 6 (Creating Objects.) Graphical Lab 7 (Passing Arguments To a Constructor.)
Lewis/Loftus/Cocking Ch. 4 Test.
6
(12-14) / Enhancing Classes [C3, C4, C5, C6]
  • References & Passing Parameters
  • The Null Key Word
  • The Static Modifier
  • Interfaces
  • The Comparable Interface
Inheritance [C3, C4, C5, C6]
  • Designing for Inheritance
  • Abstract Classes
  • Using Super()
  • Putting Interfaces, Abstract Classes, and Inheritance Together
/ Lewis/Loftus/Cocking Ch. 5 and Ch. 7: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 36 Exercises (Inheritance), Lesson 38 Exercises (Interfaces.)
Example Programming Projects & Labs: Shapes, Sports, Vehicle Revisited, Trees, Random Walks, Comparing Instruments, Graphical Lab 7 (Passing Arguments To a Constructor) Graphical Lab 8 (Data Members & the compareTo() method), Graphical Lab 20 (Inheritance and Method Overriding.)
Lewis/Loftus/Cocking Ch. 5 & 7 Test.
7
(14-16) / Group Data Structures: Introduction to Arrays[C3, C4, C5, C6]
  • One Dimensional Arrays
  • Arrays of Objects
  • Passing Arrays as Arguments
  • Two Dimensional Arrays
  • The Integer and Double Wrapper Classes
/ Lewis/Loftus/Cocking Ch. 6: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 18 Exercises (Arrays), Lesson 19 Exercises (Advanced Array Concepts), Lesson 19 Contest-Type Problems, Lesson 21 Exercises (Wrapper Classes.)
Example Programming Projects & Labs: Grades Revisited, Tracking Sales, Reversing an Array, Shopping Cart, Bank Accounts, Checkerboard, Magic Squares, Graphical Lab 10 (String Arrays), Graphical Lab 11 (Arrays of Objects), Graphical Lab 19 (Two Dimensional Arrays.)
Lewis/Loftus/Cocking Ch. 6 Test (Part 1.)
8
(16-17) / Group Data Structures: ArrayLists[C3, C4, C5, C6]
  • The List Interface
  • ArrayLists versus Arrays
  • Iterators
/ Lewis/Loftus/Cocking Ch. 6: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 42 Exercises (The List Interface), Lesson 43 Exercises (ArrayLists), Lesson 44 Exercise B (Iterator/ListIterator.)
Example Programming Projects & Labs: Shopping Cart Revisited, Music Collection, Big Bucks Account, Cards Revisited, Contact List, Students Revisited, Graphical Lab 24 (Using ArrayLists), Graphical Lab 25 (ArrayLists and ListIterator.)
Lewis/Loftus/Cocking Ch. 6 Test (Part 2.)
NA
(18) / Midterm Week
9
(19-21) / Introduction to the GridWorldAP Case Study – Parts 1, 2, and 3 [C7]
  • Observing and Experimenting With GridWorld
  • Variations on the Bug Class
  • GridWorld Classes and Interfaces
/ College Board: GridWorld Student Manual, GridWorld Sample Questions.
Report: Use your knowledge of OOP and inheritance to explain how the classes in GridWorld fit together to form a much larger program. Then, come up with an example of another large program which is made up of many small classes, such as a video game. Create a relationship flowchart example of this example program.
10
(21-23) / Advanced Programming Structures: Sorting and Searching Group Data Structures and Recursion [C4, C5, C6]
  • Big-O Notation
  • Sorting (Selection, Bubble, and Insertion Sorts)
  • Array Searching (Linear and Binary Searches)
  • Basic Recursion
  • Recursion versus Iteration
  • Recursive Sorting (Merge Sort)
/ Lewis/Loftus/Cocking Ch. 8: Selected Multiple Choice, True / False, Short Answer questions.
Cook: Lesson 40 Exercises (Recursion), Lesson 41 (Sorting Routines), Lesson 51 Exercises (Binary Search.)
Example Programming Projects & Labs: PriceSorting, StudentSorting,PhoneBook, Multiple Key Sort,Factorial, Fibonacci, Palindrome, GCD Finder, Pascal’s Triangle, Towers of Hanoi, Graphical Lab 23 (Using Recursion), Graphical Lab 26 (Sorting and the compareTo() method), Graphical Lab 28 (Using a Comparator Object to Sort.)
Lewis/Loftus/Cocking Ch. 8 Test (includes sort & search questions from Ch. 6.)
11
(24-25) / Introduction to File Input / Output [C4, C5, C6]
  • File Input With the Scanner Class
  • The FileWriter and PrintWriter Classes
  • Throwing Exceptions
  • Handling Exceptions (Try/Catch/Finally)
/ Cook: Lesson 25 (Processing File Input With Scanner), Lesson 26 (Writing to a Text File), Lesson 37 Exercises (Exceptions.)
Example Programming Projects & Labs: Quote Examiner, Number Input, Reformatted Number Input, Student Averages, Weather Averages, Measuring Elevation, Graphical Lab 13 (File Input With Scanner), Graphical Lab 14 (Writing to a File), Graphical Lab 22 (Exceptions – Try/Catch.)
Cook: Unit 11 Test.
13
(25-27) / Free Response Question Practice [C4, C5, C6]
  • Analyzing Free Response Questions
  • Importance of Step-By-Step Algorithm Design
  • Group Practice
  • Individual Practice
/ College Board: Released Free Response Questions from Previous AP Computer Science A Tests.
Example Programming Projects & Labs: WordList, Robot, Pet, StudentRecord, TaxableItem, DailySchedule, SelfDivisor, StudentAnswerSheet, Checker, ClimbingClub, HorseBarn.
14
(27-29) / The GridWorld AP Case Study – Part 4 [C7]
  • Object Interaction
  • Object Design
/ College Board: GridWorld Student Manual, GridWorld Sample Questions.
Example Programming Projects & Labs: Design Your Own Critter.
Teukolsky: Practice GridWorld Multiple Choice and Free Response Questions.
College Board: Released GridWorld-Related Free Response Questions from Previous AP Computer Science A Tests.
15
(30-32) / AP Computer Science A Practice Tests
  • Timed Practice Tests
  • Review and Remediation
/ Teukolsky: Practice Tests.
Litvin: Practice Tests.
NA
(33) / AP Test
16
(34) / Issues and Ethics in Computer Science [C9]
  • The Role of Ethics in Technology
  • Software Piracy
  • Viruses
  • Privacy
/ Research Paper and Presentation: Synthesize scholarly articles referencing ethics in technology, software piracy, viruses, and privacy into a research paper. Decide on a common thread which connects them all together, and present your findings to the class.
17
(35-36) / Introduction to Programming For Android
  • Developing for Tablets & Smartphones Versus the Computer
  • Using Open Source Libraries
  • Android Versus iOS App Development
/ Developer.android.com: Building Your First App
Other online tutorials.
Final Project: Following OOP design principles, design and create a simple game or app of your choice in Java for Android. You must include the design documents along with the actual project files.


Teaching Strategies

For each topical unit, lecture is interspersed with both guided and independent practice. When a topic is first introduced, students work in pairs to create handwritten code fragments for in-class exercises; they then present them on the document camera to explain how they solved the problem. After getting some practice in pairs, students work independently to write code fragments of their own. This provides a good basis for the lab programming projects, which students complete in class approximately twice a week. These in-class labs are integral for providing vital hands-on practice. While the students are working on their labs, I am able to circulate through the class and assess or assist when necessary. These independent labs also serve as a good formative assessment tool, as they show me areas that I may need to reteach for better student mastery. During formative lab assignments, students are encouraged to ask other students for help if they are having difficulty. Not only does this help prevent students from having to wait solely on me when they are stuck and I am helping another student, but the student assisting also benefits from verbalizing how he or she solved that part of the problem.

In addition to the in-class exercises and labs, take-home programming projects and other homework are used each unit to allow students more repetition of the unit concepts. The intent is not to provide busy work, but instead to provide added practice when necessary. Thus, the amount of homework assigned varies from unit to unit.

In all cases, consistent practice is the key to student mastery; therefore, the coursework is designed to provide students with multiple versions of hands-on learning.