Course Title: AP Computer Science A

Instructor Name: Kathy Wooton

High School: Skyline HS, Mesa, AZ

SY: 2013-14

Email:

Course Description:

AP® Computer Science A is a yearlong course taught in a computer lab. Each student has access to a computer every day. Experience in basic computer concepts, programming, HTML or web page design is desired but not required. This class is a foundations class for any student who plans to pursue the fields of computer science, engineering, information technology, or any other college major which requires critical thinking. It is also a college prep class, so the pace is aggressive and a high level of attendance and individual work is expected and required.

This course is taught using the Java programming language. It will teach object-oriented programming methodology and the process of coding, testing, debugging and implementing well written and well documented code. Students will learn to write object-oriented programs using classes, objects, methods, inheritance and polymorphism. They will use the standard code and classes contained in the AP® Java subset. They will also learn the GridWorld Case Study and be expected to take the AP® Computer Science A Exam at the end of the year.

Major Text:

Lambert, Kenneth, and Osborne, Martin. Fundamentals of Java: AP Computer Science

Essentials, Fourth Edition. Boston: Cengage Learning, 2011.

Additional Texts / Printed Material:

Bergin, Joseph et al. Karel J Robot: A Gentle Introduction to the Art of Object-Oriented Programming in Java. Redwood City, CA: Dream Songs Press, 2005.

Sierra, Kathy & Bates, Bert. Head First Java, 2nd Edition, Sebastopol, CA: O’Reilly Media, Inc. 2005.

College Board. AP® GridWorld Case Study. New Your. College Entrance Examination Board, 2008.

http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/151155.html

AP Curricular Requirements

Curricular Requirement: The course includes all of the topics listed in the “Computer Science A” column of the Topic Outline in the AP Computer Science Course Description.

C1 - The course teaches students to design and implement computer-based solutions to problems.

C2 – The course teaches students to use and implement commonly used algorithms.

C3 – The course teaches students to use and implement commonly used data structures.

C4 – The course teaches students to develop and select appropriate algorithms and data structures to solve problems.

C5 – The course teaches students to code fluently in an object-oriented paradigm using the programming language Java.

C6 --The course teaches students to use standard Java library classes from the AP java subset delineated in Appendices A and B of the AP Computer Science Course Description.

C7 - The course teaches students to read and understand a large program consisting of several classes and interacting objects. In particular, the course enables students to read and understand the current AP Computer Science Case Study posted on AP Central.

C8 – The course teaches students to recognize the ethical and social implications of computer

use.

Course Planner

The resources list includes the following text references: Fundamentals of Java (FJ), Headfirst Java (HFJ), GridWorld Case Study (GW), Karel J Robot (KJR).

Unit
(Weeks) / Title, Topics, and Student Objectives / Resources, Assessments, and Strategies / Correla-tion to AP Topic Outline
1
(1) / Introduction to JAVA and OOP
Topic:
·  Intro to JAVA and BlueJ
Objectives:
·  Identify JDK, IDE; download for home use
·  Understand development environment, compiler, input/output terminal
·  Intro to OOP terminology – class, object, method
·  Write, compile and run simple JAVA programs / Resources: HFJ, FJ
Assessments:
·  “Hello World”
·  Convert Temperature / C1
2
(2-3) / Topic: Java & Computer Basics
·  Computer hardware & software
·  Java terms: objects, classes, loops, methods, conditional statements
·  Copyright laws, ethics and intellectual property
Objectives:
·  Understand hardware and software terminology: CPU, auxiliary devices, system vs. application software, RAM, ROM, LANs and WANs
·  Understand purpose and characteristics of copyright law, ethics agreements and rules of downloading
·  Understand how different parts of a computer work together
·  Edit, compile, and run simple Java programs
·  Use the Scanner class to do input
·  Use System.out.print and println to format output / Resources: FJ Ch. 1-2
Assessments:
·  Various little programs using different types of inputs and outputs
·  (p. 55) Write programs to:
·  Display student info
·  Calc. minutes / yr
·  Calc. & print momentum
·  Homework: Create timeline of computer history and significant advances (FJ 1.1)
·  Quiz: Label parts of computer and describe function (FJ 1.2)
Strategies:
·  Students must demonstrate application of their knowledge of computer laws and ethics. Imagine you (the student) have created some software that can be sold. Write a short paper explaining copyright laws on proprietary software, ethics involved and the laws of intellectual property. At some point, would you (the student) make your code open source? Explain.
·  Purpose of many small programs in this unit is to build knowledge and confidence. Also, begin to solve compiler errors on their own. / C1
C3
C4
C8
3
(4) / Topic: More Java Basics
·  Binary Representation and Conversion
·  Random Number Generation
·  Purpose of class, class launcher and main statement
Objectives:
·  Understand how to convert numbers from one base to another
·  Be aware of pre-coded methods or functions and begin to use them
·  Learn how to generate a random number In Java
·  Understand the main statement – what it invokes from where it is coded / Resources: FJ Ch. 1.3, HFJ Ch 2
Assessments:
·  Worksheets that define Base 2, 8, 10 and 16; then perform conversions to Base 10
·  Programs:
·  Guess Game
·  DrumKit
·  PoolPuzzle (annoys)
·  Unit 3 Quiz
Strategies: Start with template of program and begin to fill in pieces of code. Work on syntax, understanding program flow, solving errors and understanding the purpose of basic statements: declarations, assignment, conditionals and loops, equality and the main statement. / C1
C2
C3
C5
C6
4
(5-6) / Topic: Defining Variables, Arithmetic Expressions
·  Declare, use and understand variables
·  Arithmetic Expressions including mixed mode
·  Comments
·  Different types of errors
Objectives:
·  Understand different types of Java vocabulary: variables, constants, literals, reserved words and comments
·  Declare and initialize variables and constants in Java
·  Understand mathematical expressions in Java
·  Understand how to use casting
·  Understand different data types and their high and low limits
·  Correct use of the assignment operator / Resource: FJ Ch. 3
Assessments:
·  Various Chapter Exercises – evaluate expressions both arithmetic and strings and determine precedence
·  Labs: Income Tax Calculator: code program that calculates income tax on employee input of gross income and number of dependents
·  Modify program to ask user if they want to run it again (yes/no) and break out of loop accordingly
·  Run a given set of test data through the program and record the results
·  Project 3-4: Calculate Regular Pay and Overtime Pay
·  Again, modify so that user can run multiple times by answering yes/no at the completion of the output
Strategies: Allow students to make their own errors and give them practice in solving them. Require students to solve the logic problems first – i.e. how do you calculate overtime? Then have them convert their pseudo code into java code. / C2-C3
C4
C5-C6
5
(7-9) / Topic: Conditionals and Looping
·  If and if-else statements
·  While loops
·  For loops
·  Nested Control with Break Statements
Objectives:
·  Understand terminology: control statements, counters, increment and decrement statements, Boolean expressions, infinite loops, iterations, nested loops, break statement
·  Construct various if and if-else loops
·  Construct While loops
·  Construct For loops
·  Understand the various errors that occur within the loops and be able to debug
·  Be able to trace program flow through the loop; understand when the counter gets updated and how that affects overall processing / Resource: FJ Ch. 4
Assessments:
Unit Review Projects
ü  Project 1: Cube Surface Area
ü  Project 2: Rectangle
ü  Project 3: Renting Videos
ü  Project 4: Bookstore
ü  Critical Thinking – continuously prompts the user until certain condition; calculates totals
ü  Unit 5 Quiz
ü  First Quarter TEST
Strategies: Allow students to develop debugging skills; understand and code correct logic (both syntactically and content oriented), and understand how to use various data types and control structures. / C1
C5
C6
6
(10-12) / Topic: Introduction to Classes and OOP
·  Create and Use Classes
·  The Internal Structure of Classes and Objects
·  The Student Class
·  Structure and Behavior of Methods
·  Scope and Lifetime of Variables
·  toString()
Objective:
·  Understand terminology: constructor, accessor, mutator, instance variable, encapsulation, information hiding
·  Design and implement a simple class
·  Understand the difference between public and private access in a class
·  Understand how to declare a method and declare parameters in that method
·  Write constructors, mutator methods, and accessor methods for a class
·  Understand how messages are transmitted to methods through parameters
·  Use instance variables, local variables, and parameters appropriately
·  Learn how and when to use the toString() method when an object is printed / Resource: FJ Ch. 6
Assessments:
ü  Projects 1-2: (Student)
ü  Project 3: Fractions
ü  Project 5: Bank Acct
ü  Project 8: Rectangle
ü  TEST: Chapter 6
Strategies:
Be sure students are able to construct a class based on the specs of that class given to them. Check for appropriate representation of all variables and methods. / C2-C3
C4
C5
C6
7
(13-14) / Topic: Advanced Control Statements
·  Logical Operators
·  Nested If Statements
·  Nested Loops
·  Testing Loops
·  Verification of Loops
·  Switch / Try-Catch statements
·  Design, Testing and Debugging
Objective:
·  Construct Boolean statements using logical operators
·  Understand the logic of nested If statements
·  Construct nested loops
·  Create test data that adequately tests the code
·  Construct query driven and menu driven programs
·  Format test and numbers for output
·  Handle number format exceptions during input / Resource: FJ Ch. 7, Projects
Assessments:
ü  Project 1: Guess My Number game
ü  Project 3: Grading Scale
ü  Project 5: Euclidean algorithm
ü  Project 7: Perimeter and area of a rectangle using a range of amounts.
ü  Project 8-9 (as time permits): various tasks using words in a sentence.
ü  TEST: Chapter 7
Strategies:
Students need plenty of practice writing different types of loops and conditionals. Make sure student can hand trace the logic, as well as prepare appropriate test data. / C1
C5
C6
8
(15-16) / Topic: Arrays
·  Declare and initialize arrays
·  Manipulate arrays
·  Create parallel arrays
·  Arrays and methods
Objective:
·  Understand terminology: array, element, index, logical size, physical size, parallel arrays
·  Declare 1D arrays
·  Use initializer lists in declarations
·  Manipulate arrays using loops and indices
·  Create test data that tests the boundaries of arrays; write code to handle all exceptions
·  Define parallel arrays and determine when they are best used
·  Work with arrays of primitive data types and reference variables. Understand the difference between the two. / Resource: FJ Ch. 10, Exercises and Projects
Assessments:
ü  Various exercises throughout the chapter, checking for understanding on manipulating arrays
ü  Written Review Questions
ü  Project 1: Even-Odd
ü  Project 2: Greater than Avg
ü  Project 6: Student Test Scores
Strategies:
ü  Students need plenty of practice manipulating loops that work with arrays.
ü  Remind students that arrays start with 0
ü  Remind student of the importance of creating relevant and thorough test data / C2-C3
C4
C5-C6
9
(17-19) / Topic: Advanced Operations: Strings, Arrays, & ArrayLists
·  String Class and methods
·  Linear Search
·  Binary Search
·  Selection Sort
·  Insertion Sort
·  Bubble Sort
·  Insertions and Removals in Arrays and ArrayLists
·  2D arrays
·  Using 2D arrays
·  Use the ArrayList class
Objective:
·  Instantiate string objects
·  Terminology: immutable, meaning strings cannot be changed
·  Use appropriate String methods to solve problems
·  Understand why a sorted array can be searched more efficiently than an unsorted array
·  Understand the algorithms of searching/sorting arrays: including linear and binary search, and bubble, insertion and selection sorts
·  Write a method for searching an array
·  Perform insertions and deletions at given positions in arrays
·  Understand time constraints of different sorting/searching algorithms
·  Given different scenarios, students should be able to choose the most appropriate sort or search / Resource: FJ Ch. 11-12
Assessments:
ü  Exercise 12.1 – searching an array of objects for a target object
ü  Exercise 12.2 – describe behavior of a bubble, selection and insertion sort
ü  Various projects at chapter end: Tic Tac Toe, Golf Scores, new method for Sudoku, Magic Square and/or Penny Pitch.
ü  TEST over Units 8-9.
Strategies:
·  Be sure students practice tracing through sorts and searches to determine efficiency.
·  Explore videos of various search/sort methods and be sure students can explain how each one works.
·  Review students’ understanding of adding or replacing elements in an array. / C2
C3
C4
C5
C6
10
(20-22) / Topic: Recursion, Complexity, Searching and Sorting
·  Recursion
·  Complexity Analysis
·  Binary Search
·  Quicksort
·  Merge Sort
Objective:
·  Create a recursive method to solve a problem
·  Understand the difference between recursive and iterative solutions to a problem
·  Understand and use the Merge Sort
·  Perform Complexity Analysis on an algorithm
·  Understand how to calculate the informal runtime of merge sort and compare it’s running time to the other sorts already learned / Resource: FJ Ch. 13
Assessments:
ü  Towers of Hanoi
ü  Many Queens
ü  Factorial
ü  Fibonacci
ü  Binary Search
ü  Quicksort
ü  Merge Sort – including complexity analysis
Strategies: