AP Computer Science A - fc.mtlakes.orgfc.mtlakes.org/Curriculum_Resources/FAV2-00102E40/MLHS-AP...

16
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

Transcript of AP Computer Science A - fc.mtlakes.orgfc.mtlakes.org/Curriculum_Resources/FAV2-00102E40/MLHS-AP...

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 top­down or bottom­up 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 compile­time, run­time 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