AP Computer Science A Syllabus

advertisement
AP Computer Science A
Syllabus
Course Overview
AP® Computer Science A is both a course for potential computer science majors and a foundation
course for students planning to study in other technical fields such as engineering, physics,
chemistry, and geology. The course emphasizes programming methodology, procedural abstraction,
and in-depth study of algorithms, data structures, and data abstractions, as well as a structured lab
component comprised of a minimum of 20 hours of hands-on lab experiences integrated throughout
the course. [CR6] Instruction includes preparation for the AP Computer Science A Exam. In
teaching this course, my reward comes when students can apply the programming tools they have
learned to real-life examples on their own. Computer science is more than just programming.
Students should leave my class with a clear understanding of Java and the ability to adapt to any new
programming language that they are taught in college. I want them to have the confidence to tackle
any problem-solving obstacles they encounter.
Lab
Students will participate each day in a computer lab setting, plus they will have time before and after
the school day to come in and work on projects. Lab work will consist of a series of smaller
programs to learn concepts, and larger projects to apply what they have learned. The computers all
have the Sun Java SDK and Eclipse interactive development environments on them. All of the
software is available for students to mirror their school environment at home.
Text & Supplementary Resources
 Java Software Solutions for AP Computer Science A, third edition, John Lewis, William
Loftus, Cara Cocking, 2011
 Be Prepared
for the AP Computer Science Exam
in Java. Maria Litvin. Skylight
Publishing, 2014.
 Blue Pelican Java, Virtual Book Worm, 2005-2013
Software Resources
 Java JDK – java.oracle.com
 Codingbat code practice – http://codingbat.com/java.
 Light-Bot – www.kongregate.com/games/Coolio_Niato/light-bot
 Object Oriented Programming Web–http://www.oopweb.com/Java/Files/Java.html
Course Planner
Unit
1 – Intro to
Computer Science,
Ethical Computing,
& Computer
Systems
Concepts
Computer Systems
Numerical representations; limitations of
finite representations; number bases and
conversion; hardware (primary and
secondary memory); programming
languages; and language interpreters and
compilers.
Curricular
Requirements
[1]
JSS Textbook Chapter 1
Resources
Light-bot
Java Software
Solutions
(JSS)
Cisco Binary
Game
Blue Pelican
Java
(BPJ)
2 weeks
2 – “Objects and
Primitive Data”
Curricular
Requirements
[1, 5]
Intro to Eclipse IDE
Students learn to setup IDE for
assignments and projects








AP Computer
Science
Quick
Reference
Guide (QRG)
Discuss the importance of
documentation/comments
Define the difference between
primitive data and objects.
Define and use Strings
BPJ
Declare and use variables.
Define and use enumerated variable
types
Perform mathematical computations.
Create objects and use them (begin
abstraction and encapsulation
discussion)
Introduce Input (Scanner class)
JSS Textbook Chapter 2
3 weeks
JSS
3 – “Program
Statements”
Curricular
Requirements
[1, 3, 4]





Discuss basic program
development steps.
Define the flow of control
through a program.
Learn to use if statements.
Define expressions that let us
make complex decisions.
Learn to use while and for
statements.
JSS Textbook Chapter 3
JSS
BPJ
QRG
Codingbat
(CB)
3 weeks
4 – “Writing
Classes “
Curricular
Requirements
[1, 4]
3 weeks
 Define classes that act like
blueprints for new objects, made of
variables and methods.
 Explain constructors,
encapsulation and Java modifiers.
 Explore the details of method
declarations.
o Review method invocation
and parameter passing.
o Explain and use
method overloading.
o Learn to divide complicated
methods into simpler,
supporting methods.
 Describe relationships between
objects.
JSS
BPJ
QRG
CB
5 – “Enhancing
Classes”





Curricular
Requirements
[1, 5]

Define reference aliases.
Explore passing object references
as parameters.
Learn to use the static modifier.
Define formal interfaces and
their class implementations.
Define nested classes and inner
classes
Learn about basic graphical user
interfaces.
JSS
BPJ
QRG
JJS Textbook Chapter 5
4 weeks
6 –Arrays,
ArrayLists,
Searching, and
Sorting




Curricular
Requirements
[ 1, 2, 3, 4, 5]





Define and Use Arrays
Describe how arrays and array
elements are passed as
parameters.
Explore how arrays and other
objects can be combined to
manage complex information.
Explore searching within an array
– sequential and binary search
Explore sorting within an arrays
Selection, insertion, and
mergesort
Learn to use multidimensional
arrays.
Examine the ArrayList class.
Discuss when to use arrays vs.
ArrayList
JSS
QRG
BPJ
Practice AP
Exams from
AP Central
(APE)
JJS Textbook Chapter 6
3 weeks
7 – “Inheritance”


Curricular
Requirements
[4, 5]

Derive new classes from existing
ones.
Explain how inheritance supports
software reuse.
Add and modify methods in child
classes.
JSS
QRG
BPJ
GW
APE





Discuss how to design
class hierarchies.
Define polymorphism and how it
can be done.
Discuss the use of inheritance in
Java
GUI framework.
Examine and use the GUI
component class hierarchy
JJS Textbook Chapter 7
4 weeks
8 – “Recursion”


Curricular
Requirements
[1, 2, 3]




Explain the underlying ideas of
recursion.
Examine recursive methods and
processing steps.
Define infinite recursion and discuss
ways to avoid it.
Explain when recursion should
and should not be used.
Demonstrate the use of recursion to
solve problems.
Examine the use of recursion in
sorting.
JSS
QRG
BPJ
APE
JJS Textbook Chapter 8
3 weeks
9 – Review, AP,
3 weeks
Final Exam, Ethical
and Social
Implications of
Computer Use
Review/Project
Presentations
Curricular
Requirements
[7]
5 weeks
Ethical and Social Implications of
Computer Use; AP Examination
Responsible use of computer systems
(system reliability, privacy,
intellectual property, legal issues, and
social and ethical ramifications of
computer use).
Be Prepared
JSS
QRG
BPJ
GW
APE
10 – Group and
other Projects
In groups, students will design games
(such as Checkers, Connect 4, etc...)
using GridWorld)
JSS
GW
2 weeks
Curricular Requirements
CR1
The course teaches students to design and implement computer based
solutions to problems.
CR2a
The course teaches students to use and implement commonly used
algorithms.
CR2b
The course teaches students to use commonly used data structures.
CR3
The course teaches students to select appropriate algorithms and data
structures to solve problems.
CR4
The course teaches students to code fluently in an object-oriented paradigm
using the programming language Java.
CR5
The course teaches students to use elements of the standard Java library
from the AP Java subset in Appendix A of the AP Computer Science A
Course Description.
CR6
The course includes a structured lab component comprised of a minimum of
20 hours of hands-on lab experiences.
CR7
The course teaches students to recognize the ethical and social implications
of computer use.
Lesson - Semester
Correlation to the AP Topic Outline
(When topic is addressed)
L-S
I. Object-Oriented Program Design
The overall goal for designing a piece of software (a computer program) is to correctly solve the given problem.
At the same time, this goal should encompass specifying and designing a program that is understandable, can be
adapted to changing circumstances, and has the potential to be reused in whole or in part. The design process
needs to be based on a thorough understanding of the problem to be solved.
A. Program Design
1. Read and understand a problem description, purpose, and
goals.
2. Apply data abstraction and encapsulation.
3. Read and understand class specifications and
relationships among the classes (“is-a,” “has-a”
relationships).
1-1, 4-1
2-1,5-1, 1-2
5-1,1-2
4. Understand and implement a given class hierarchy.
5. Identify reusable components from existing code using
classes and class libraries
1-2
2-1, 1-2
B. Class design
1. Design and implement a class.
5-1,7-1
2. Choose appropriate data representation and algorithms.
4-1,7-1
3. Apply functional decomposition.
4. Extend a given class using inheritance.
5-1
1-2
II. Program Implementation
The overall goals of program implementation parallel those of program design. Classes that fill
common needs should be built so that they can be reused easily in other programs. Object-oriented
design is an important part of program implementation.
A. Implementation techniques
1. Methodology
a. Object-oriented development
b. Top-down development
c. Encapsulation and information hiding
d. Procedural abstraction
B. Programming constructs
1. Primitive types vs. objects
2. Declaration
a. Constant declarations
b. Variable declarations
c. Class declarations
d. Interface declarations
e. Method declarations
f. Parameter declarations
3. Console output (System.out.print/println)
4. Control
a. Methods
b. Sequential
c. Conditional
d. Iteration
e. Understand and evaluate recursive methods
C. Java library classes
Object
Comparable
Integer
Double
String
Math
Random
2-1
4-1
5-1
5-1
2-1
2-1
2-1
5-1
7-1
5-1
5-1
2-1
5-2
4-1
4-1
4-1
2-2
1-2
7-1
2-1
2-1
2-1
2-1
2-1
ArrayList
8-1
III. Program Analysis
The analysis of programs includes examining and testing programs to determine whether they correctly meet
their specifications. It also includes the analysis of programs or algorithms in order to understand their time and
space requirements when applied to different data sets.
A. Testing
1. Test classes and libraries in isolation.
2. Identify boundary cases and generate appropriate test data.
3.
B.
1.
2.
3.
Perform integration testing.
Debugging
Categorize errors: compile-time, run-time, logic.
Identify and correct errors.
Employ techniques such as using a debugger, adding extra
output statements, or hand-tracing code.
7-1
7-1
7-1
1-1
1-1, 7-1
1-1, 7-1
Entire Year
C. Understand and modify existing code
1-2
D. Extend existing code using inheritance
E. Understand error handling
1. Understand runtime exceptions.
F. Reason about programs
1. Pre- and post-conditions
2. Assertions
G. Analysis of algorithms
1. Informal comparisons of running times
2. Exact calculation of statement execution counts
H. Numerical representation and limits
1. Representations of numbers in different bases
2. Limitations of finite representations (e.g., integer bounds,
imprecision of floating-point representations, and round-off error)
7-1
5-1
5-1
8-1
8-1
1-1
2-1, 4-1
IV. Standard Data Structures
Data structures are used to represent information within a program. Abstraction is an important theme in the
development and application of data structures.
A. Simple data types (int, boolean, double)
2-1
B. Classes
2-1, 5-1
C. Lists
8-1, 4-2
D. Arrays
8-1
V. Standard Algorithms
Standard algorithms serve as examples of good solutions to standard problems. Many are intertwined with
standard data structures. These algorithms provide examples for analysis of program efficiency.
A. Operations on data structures previously listed
1. Traversals
2. Insertions
8-1
8-1
3. Deletions
B. Searching
1. Sequential
2. Binary
C. Sorting
1. Selection
2. Insertion
3. Mergesort
8-1
8-1
8-1
8-1
8-1
2-2
VI. Computing in Context
An awareness of the ethical and social implications of computing systems is necessary for the study of
computer science. These topics need not be addressed in detail but should be considered throughout the
course.
A. System reliability
2-1
B. Privacy
2-1
C. Legal issues and intellectual property
2-1
D. Social and ethical ramifications of computer use
2-1
Download