AP Computer Science A
Course Description and Philosophy
AP Computer Science A is broadly intended to be equivalent to a 1st semester introductory college CS course.
It is presented at Mountain Lakes following 2 semesters of introduction to programming. AP CS A covers some
of the same topics as introduction to programming courses but in greater depth. Significantly more emphasis is
placed on interpreting, analyzing and manipulating code written by others. AP CS A includes object oriented
design, interfaces, inheritance and polymorphism, recursion and sorting algorithms. AP CS is presented in
Java and utilizes both the labs provided by the College Board and numerous other resources.
AP CS A is targeted at students interested in computer science regardless of anticipated college major. As a
college level course the pacing is quick. Student performance will be evaluated primarily using tests & quizzes,
projects and labs. Students who perform well throughout AP CS A will be well prepared for the AP CS A Exam
and are unlikely to require outside preparation.
Updated 2015
Text Reference
Horstmann, Cay, Java Concepts, 5th ed , © 2008 by John Wiley & Sons, Inc.
Teukolsky, Roselyn, AP Computer Science A , © 2015 by Barron’s Educational Series, Inc.
AP Computer Science A Course Description, © 2014 by The College Board
AP Computer Science A Quick Reference, © 2011 by the College Board
AP Computer Science A & AB Free Response, © 2004 2015 by the College Board
2004 AP Computer Science A & AB Released Multiple Choice Exams, © 2004 by the College Board
2009 AP Computer Science A Released Multiple Choice Exam, © 2009 by the College Board
1
Official Practice A & AB Exams, © by the College Board AP Computer Science A Elevens Lab Student Guide AP Computer Science A Elevens Lab Teacher Guide AP Computer Science A Magpie Lab Student Guide AP Computer Science A Magpie Lab Teacher Guide AP Computer Science A Picture Lab Student Guide AP Computer Science A Picture Lab Teacher Guide
Unit I: Classes, Objects, Methods, References & Programming tools
Essential Questions
How do object oriented programming techniques improve programs? How can tools make programming more efficient and effective?
Objectives
Students will be able to:
Use Processing to write graphical and interactive programs Use Eclipse to write, compile and execute Java code Use Git for version control Declare and use variables Construct objects Run methods on objects Handle return values Utilize existing pre and post conditions Reference API documentation Manipulate object references
2
Write simple classes and methods
Write and use overloaded methods
Use Javadoc to document classes & methods
Test classes as black boxes
Distinguish between types of variables
Distinguish between implicit and explicit parameters
Call methods with appropriate implicit parameters and arguments
Topic/Content Skills Assessment Resources Instructional Methods
Tech Infusion NJCCCS
Development
environment
Processing
Eclipse
Git
Java programming
syntax
style guidelines
Object oriented
programming
encapsulation
procedural
abstraction
classes
objects
references
constructors &
methods
instance fields
Projects & Labs Test & Quizzes Barron’s multiple choice AP CS Free Response
Textbook Barron’s multiple choice Java API Processing website AP CS Quick Reference AP CS Free Response
Labs Discussion Lecture Pair programming
Computer lab Math 4.1.12 A 1, 2 4.1.12 B 1 4.2.12 D 1, 2 4.3.12 D 3 4.4.12 A 2 4.4.12 D 2 4.5.12 A 3 4.5.12 B 3 4.5.12 D 2 4.5.12 F 1, 2, 6 TEC 9-12.8.1.12 9-12.8.2.12
3
Documentation
Javadoc
API
pre & post
conditions
Differentiated Learning Activities
Students will use Processing to create interactive art. As an introductory assignment students have considerable freedom to choose the level of
complexity and to balance artistic and technical components. The activity allows all students to achieve success early in the course while
providing the instructor an early opportunity to assess skill levels and interests.
Sustainability Throughout this unit students will engage with code written by other programmers. Most of this code will have been written following style guidelines and documented using Javadoc. Students will be encouraged to incorporate these practices into their own programming. Future programmers can more efficiently read, maintain and extend properly documented code that follows style guidelines. Considering the long-term effects of current actions is a key aspect of sustainability efforts.
Unit II: Data types, Boolean expressions & Conditional statements
Essential Questions
How is data stored?
How can program flow be controlled?
4
Objectives
Students will be able to:
Recognize rounding errors and overflows Use casting to convert between primitive types Declare and use constants Utilize arithmetic and compound assignment operators Convert between numerical representations in different bases Manipulate String objects Use methods of the Math class Call static methods Take input using the Scanner class Write, evaluate and simplify compound boolean expressions Use conditional statements to control program flow Compare primitive types and objects for equality and order
Topic/Content Skills Assessment Resources Instructional
Methods
Tech Infusion NJCCCS
Primitive data types int double boolean
String class Numerical representations
integer bounds floating point
precision
Projects & Labs Test & Quizzes Barron’s multiple choice
Textbook Barron’s multiple choice Java API Processing website AP CS Magpie Lab AP CS Quick Reference
Labs Discussion Lecture Pair programming
Computer lab Math 4.1.12 A 1, 2 4.1.12 B 1 4.2.12 D 1, 2 4.3.12 D 3 4.4.12 A 2 4.4.12 D 2 4.5.12 A 3 4.5.12 B 3 4.5.12 D 2 4.5.12 F 1, 2, 6
5
bases (binary, octal, decimal, hexadecimal, arbitrary)
Static methods Arithmetic operations
operators operator
precedence Math class
Input
Scanner class Conditional statements
if / else statements block statements nested
comparisons Boolean expressions
comparison operators
Boolean operators
CodingBat exercises
TEC 9-12.8.1.12 9-12.8.2.12
Differentiated Learning Activities
6
The exercises on the CodingBat website provide opportunities for students at nearly any skill level to engage with interesting problems. Students
who struggle with the basics of programming often find that the immediate and precise feedback improves their skills quickly. Students who are
comfortable with the basics often enjoy engaging with the more complex exercises. Advanced students can be challenged to solve the exercises
in more efficient ways. Students can also be asked to produce their own CodingBat style exercises, complete with a comprehensive test suite,
which is considerably more complex than most students initially appreciate.
21st Century Skills
The AP CS Magpie Lab introduces students to interpreting and modifying existing code (as well as numerous other topics). Students work
collaboratively to decipher the functionality of existing code. Teams employ creativity and problem solving skills to manipulate the code to
introduce new functionality.
Unit III: Implementation techniques, Testing & debugging, Ethical implications
Essential Questions
How can we be confident that our programs work as intended?
Do the opportunities unlocked by computing invite ethical questions?
Objectives
Students will be able to:
Use topdown or bottomup design to choose appropriate classes and responsibilities for each class
Use pre & post conditions to document caller & method responsibilities
Create and use static & instance methods and fields appropriately
Develop test cases for code segments, classes and programs that achieve full coverage
Identify compiletime, runtime and logical errors
7
Use hand tracing, print statements and the debugger to correct errors Use JUnit to create and run unit tests Recognize potential ethical implications of proposed and existing programs.
Topic/Content Skills Assessment Resources Instructional Methods
Tech Infusion NJCCCS
Implementation techniques top-down bottom-up
Testing
test cases (positive, negative, edge, corner)
unit testing integration testing JUnit
Error types
compile-time run-time logic
Debugging
hand tracing adding print
statements tracing with a
debugger
Projects & Labs Quizzes Barron’s multiple choice
Textbook Barron’s multiple choice AP CS Quick Reference CodingBat exercises
Labs Discussion Lecture Pair programming
Computer lab Math 4.2.12 A 4 4.3.12 B 1 4.3.12 D 3 4.4.12 A 2 4.5.12 A 3 4.5.12 B 1, 2, 3 4.5.12 C 3 4.5.12 E 1 4.5.12 F 1, 2, 6 TEC 9-12.8.1.12 9-12.8.2.12
8
Ethical implications
Ethical Decision Making/Character Education
Students will be presented with situations in which computation has enabled something that was not previously possible. Students will be asked to consider whether the new capabilities raise ethical concerns. Students will discuss whether potential concerns can be addressed and the extent to which potential benefits justify proceeding. Students will discuss what responsibilities programmers have when working on projects that raise ethical concerns.
21st Century Skills
Students will be asked to apply debugging techniques to identify and correct errors. Students will also be asked to apply testing techniques to demonstrate that code works as intended. Prior to this lesson many students will likely have approached testing and debugging in a chaotic manner. Disciplined application of techniques known to work well is a important problem solving skill.
Unit IV: Iteration, Arrays & ArrayLists
Essential Question
Why don’t we make n variables to store n related items?
Objectives
Students will be able to:
Use for and while loops to control program flow Determine the result of a program containing loops, including nested loops
9
Use Math.random to generate random numbers Declare, initialize and use 1 and 2 dimensional arrays of both primitive types and objects Manipulate references to array objects Declare, initialize and use ArrayList objects Recognize and take advantage of autoboxing and unboxing Utilize Integer , Double and other wrapper classes Use enhanced for loops (for each loops) to control program flow Recognize the limitations of enhanced for loops Understand, implement, use and analyze (for runtime and memory efficiency) algorithms for common operations on 1D arrays, 2D arrays
and ArrayList objects Choose an appropriate data representation (1D array, 2D array, ArrayList ) for a given situation Write an ArrayList class with a subset of the original methods
Topic/Content Skills Assessment Resources Instructional Methods
Tech Infusion NJCCCS
Iteration for loops while loops Enhanced for loops Nested loops
Random number generation
Math.random Arrays
one dimensional two dimensional of primitive types of objects
ArrayList objects
Projects & Labs Test & Quizzes Barron’s multiple choice AP CS Free Response
Textbook Barron’s multiple choice Java API AP CS Quick Reference AP CS Free Response AP CS Pictures Lab CodingBat exercises
Labs Discussion Lecture Pair programming
Computer lab Math 4.3.12 D 3 4.4.12 A 2 4.5.12 A 2 4.5.12 B 3 4.5.12 E 1 4.5.12 F 1, 2, 6 TEC 9-12.8.1.12 9-12.8.2.12
10
Common algorithms
access insertion deletion traversal in assorted
orders conversion between
1D and 2D data structure
Wrapper classes
autoboxing & unboxing
useful methods & constants of the Integer & Double classes
21st Century Skills Students will be asked to implement a subset of the methods of the java.util.ArrayList class. Students will be asked to validate that their class performs exactly as the java.util.ArrayList class for the same sequence of method calls. Students will also validate other students’ work. The project itself requires the application of numerous problem solving techniques demonstrated throughout the course. The validation of other students’ code requires careful application of additional techniques. The AP CS Pictures Lab asks students to perform a number of tasks that require significant creativity and problem solving. These include steganography (hiding information within an image) and color replacement (green screen).
Differentiated Learning Activities
11
Arrays and ArrayLists are a fundamental CS topic. Some students grasp both the purpose and syntax of arrays & ArrayLists quickly while others
need considerably more practice. This unit includes several assignments that can be adjusted as needed for individual students. The CodingBat
website has a large number of array exercises at varying difficulty levels. Some CodingBat exercises become more interesting when an
additional restriction is added (ex: accomplish the task with a single pass through the array). For advanced students the implementation of a
subset of the java.util.ArrayList methods can be made much more interesting by adding an implementation of an iterator. The AP CS Pictures Lab assignments can also be reduced or extended depending upon individual student’s abilities and interests.
Unit V: Interfaces, Inheritance & Polymorphism
Essential Questions
How can we write flexible and reusable code?
How can we use code that others have already written?
Objectives
Students will be able to:
Declare, initialize and use references of interface type (including List and Comparable ) Convert between references of class and interface types
Write and call methods that accept parameters of interface type (including List and Comparable ) Create interfaces to abstract behaviors from exact types
Write classes that implement interfaces (including Comparable ) Recognize the benefits and limitations of super and sub class reference types
Convert between super and sub class reference types when appropriate
Declare and implement subclasses
Implement an inheritance hierarchy
Design an inheritance hierarchy
Implement and use polymorphic methods
12
Use public & private access modifiers to restrict access to methods and fields Use and override methods of the Object class Write and use abstract classes & methods
Topic/Content Skills Assessment Resources Instructional Methods
Tech Infusion NJCCCS
Interfaces List
Comparable
programmer defined Inheritance
hierarchies super & sub classes abstract classes &
methods constructors overriding methods Object class inheritance (is-a) vs
composition (has-a) relationships
References
limitations conversions casting
Polymorphism
early vs late binding
Projects & Labs Test & Quizzes Barron’s multiple choice AP CS Free Response
Textbook Barron’s multiple choice Java API AP CS Quick Reference AP CS Free Response AP CS Elevens Lab
Labs Discussion Lecture Pair programming
Computer lab Math 4.2.12 A 4 4.3.12 C 3 4.3.12 D 3 4.4.12 A 2 4.5.12 A 3 4.5.12 B 3 4.5.12 C 2 4.5.12 E 1, 2 4.5.12 F 1, 2, 6 TEC 9-12.8.1.12 9-12.8.2.12
13
Differentiated Learning Activities
The AP CS Elevens Lab contains several optional activities and several activities that can be adapted. The lab also leads naturally into the study of the game of blackjack. During the blackjack project students can choose to write a program that plays via basic strategy, write a program that counts cards and/or write a program that detects other players counting cards. These vary in significantly in difficulty and approach.
Ethical Decision Making/Character Education
The Blackjack Project often leads to interesting discussions about the ethics of player and casino behavior with respect to the use of computation. Blackjack basic strategy was developed using computation. Card counting strategies have been continually refined over many years using computation. Casinos use computation to identify and track players who count cards.
Unit VI: Recursion, Sorting & Searching Algorithms, Algorithm analysis
Essential Questions
In what situations is recursion an effective technique? Why do we study multiple sorting & searching algorithms that accomplish the same task?
Objectives
Students will be able to:
Determine the output of a given recursive method or methods Recognize when recursion is an appropriate technique Develop and implement recursive solutions
14
Implement selection, insertion and merge sorts (iteratively & recursively) Implement linear (sequential) & binary searches (iteratively & recursively) Analyze the runtime & memory efficiency of each algorithm on arrays with various characteristics (ex: sorted, reverse sorted, in random
order, in unknown order) Select an appropriate sort or search algorithm for a given situation Profile the runtimes of sort and search algorithms Recognize that there might be multiple ways of solving a given problem with significant tradeoffs
Topic/Content Skills Assessment Resources Instructional Methods
Tech Infusion NJCCCS
Recursive method tracing Writing recursive methods Sorting algorithms
selection insertion merge
Searching algorithms
linear (sequential) binary
Efficiency analysis
runtime memory
Projects & Labs Test & Quizzes Barron’s multiple choice
Textbook Barron’s multiple choice Java API
Labs Discussion Lecture Pair programming
Computer lab Math 4.3.12 B 1 4.3.12 D 3 4.4.12 A 2 4.5.12 A 3 4.5.12 B 3 4.5.12 C 4 4.5.12 E 1 4.5.12 F 1, 2, 6 TEC 9-12.8.1.12 9-12.8.2.12
Differentiated Learning Activities
15
The AP CS A Exam tests students’ abilities to trace recursive methods; however, students are not required to write recursive methods on the
Exam. The portion of this unit that deals with writing recursive methods can be reduced significantly for students who struggle with such a
complex topic. Recursion also provides an easy opportunity for enrichment activities since there are several fascinating problems that are most
easily solved using recursion (ex: Towers of Hanoi, 8 Queens). All 3 sort algorithms and both search algorithms can also be written recursively.
21st Century Skills
There are often multiple algorithms that correctly complete a given task. Those algorithms often have substantial tradeoffs in terms of runtime
and memory usage. Analyzing algorithms for correctness and efficiency is a critical problem solving skill. Students will analyze all 3 sort and both
search algorithms for efficiency. Many of the products and services on which we rely would not be feasible with correct but less efficient
algorithms.
16
Top Related