AP Computer Science A Course Syllabus Textbook: Litvin, Maria and Litvin, Gary. Java Methods: Object-Oriented Programming and Data Structures. Skylight Publishing, 2011 http://www.skylit.com Course Description: AP Computer Science A introduces students to computer programming, methods, and the use of the Java language. The course is intended for students planning to study computer science or other technical majors in college. The course introduces to programming techniques, methodology, algorithms, and data structures. There is a detailed examination of the Grid-World Case study which is currently used on the AP exam. Extension of programming techniques, methods, and algorithms will be applied to various platforms beyond the desktop including handheld media such as cell phones and tablets as well as robotics microcontrollers. Instructional Strategies: Teacher Presentations, discussions, and modeling: Class lectures and discussions will be held one to two hours a week. Students will be required to discuss with the class various content, scenarios, proposed solutions, and coding techniques. Student discussion and presentations: Students will discuss and/or present solutions to homework questions at least once a week. Computer Lab Component: Students will work independently one to hours a week coding solutions to their homework. The instructor will rotate around the class helping as needed. Students will need to partner up occasionally to provide feedback on each other’s programs. List of Units of Study Unit: Introduction to Programming (2 weeks) – [C1, C8] Topic Introduce Computer Science Hardware / Software / Communications Compilers and Interpreters Input / Output Object Oriented Instructional Lessons Assessment Lecture and discussion of Computer Science vs programming vs hacking. Ethical and social implications within the context of the class, school and academia, and society as a whole. Intellectual property, copyright laws, privacy and public/consumer safety are explored. Students present on a current topic highlighting these issues. Lecture and discussion. Problem sets relating memory sizes and base numbers, boolean logic, input devices, output devices, basic network terminology. Installation, setup, and environment overview. Hello world compiled in different ways Lab and discussion of how to manage input and output using Java syntax. Class Discussion and presentations Lecture and discussion of procedural programming vs 1 Worksheet Lab Class discussion and Lab Class Programming objected oriented programming, hierarchy, classes, and inheritance. Variable types, arithmetic operators, If/Else statements, conditionals Student discussion of program examples utilizing basic software algorithms. Students practice coding in the IDE using these basic approaches. Students modify existing Java programs to utilize keyboard input, making a simple calculator, and create basic banners and graphics. Discussion and Test Lab and student presentations, Unit Test Unit: Gridworld Case Study and Java Library Subset (2 weeks) – [C1, C6, C7] Topic Activity Classes, definitions and declarations Lecture and Lab. Introduce the GridWorld package. Students follow Part 1 of the GridWorld Student Manual Objects, instance variables/fields, constructors, and methods Introduce Inheritance Lab and discussion. Students follow Part 2 of the Grid World student manual. Students modify BugRunner to create and modifying Actors and their attributes. Students apply inheritance techniques to create a UTurnBug, BoxBug, RandomBug. Students examine the Java Library subset of classes as outlined in the AP Computer Science Quick Reference Guide. Java Library Assessment Lecture Presentation and Lab Lab, homework Lab and discussion Lab, discussion and Unit Test Unit: Arithmetic and Algorithms (3 weeks) – [C1, C2, C4, C6] Objective Activity Operators, compound/increment operators (+, -, *, /, %, +=, -=*=, /=, %=, ++, --) Iterations and recursions Students are presented with an overview of operators and examples of use. Students learn how to use flowcharts and pseudocode. Lecture and discussion, homework Students write code to determine the greatest common factor, exponential power, binomial expansion, and the golden ratio. Students explore the File Manager case study and how to count the number of files in a folder. Lab and discussion Binary searching and Lists Assessment Lab and discussion, Unit Test Unit: Syntax, Data Types, and Variables (3 weeks) – [C1, C2, C5, C6] Objective Comments and documentation, Syntax vs. Style Primitive data types and memory allocations Variables: Fields, Local variables, and parameters Activity Assessment Students are presented with examples of code that is well documented and commented vs. code without it. Students practice commenting on uncommented code and present to class. Students fix syntax errors in several example programs. Students discuss various data types, scope, and size. Students create a program to compute the roots of a polynomial equation using the quadratic formula. Students are presented descriptions and examples of variables. Students are to use fields, local variables, and parameters to create a program that draws a rainbow with different colored arcs. Lecture, Student presentations, homework 2 Lab and discussion Lecture and Lab Strings and Constants Students are introduced to Strings and how they can be converted. Students create a program to conduct a Poll and then display the results of the Poll on a pie chart. Lecture and Lab, Unit Test Unit: Control loops (3 weeks) – [C1, C2, C4, C5, C6] Objective Activity Boolean Expressions, IfElse, Conditional operators (<, >, <=, >=, ==, !=), Logical operators (&&, ||, !) Students are presented an overview of conditional/relational operators and the basics of conditional programming. Students use if-else statements to create a program that calculates the absolute value of a number. Students use ifelse statements to create a program that plays a game of “Dice” Students are presented the uses of Switch/case statements. Students rewrite their “Dice” program to utilize switch/case. Students discuss the uses of While and For loops. Students create a program that calculates the factorial of a number. Use a control loop to determine the first four “perfect” numbers. Switch statement While and For loops, DoWhile loops Assessment Lecture and Lab, Homework Lecture and Lab Discussion and Lab, Unit Test Unit: Classes and Implementation (3 weeks) – [C1, C2, C5, C6] Objective Public and Private features of a Class Constructors Methods Activity Students write a program to add and multiply fractions (numerator and denominator) using public and private classes. Students write a program to convert Celsius to Fahrenheit using constructors Students are presented multiple ways of calling methods and accessing fields. Overloading methods is explored. Students explore the Snack Bar Case Study in which a program keeps an inventory of snacks in Vending Machines. Students modify the program to determine the net daily sales from all the machines. Assessment Lab and discussion Lab and discussion Lecture, discussion, Lab. Unit Test Unit: Strings (2 weeks) – [C1, C2, C6] Objective Activity Literal Strings, Syntax, and Constructors Students review basic string syntax and common constructors. Students are presented the idea of immutability and memory management. Students use various approaches to write a program to change a character within a string. Students are presented with the commonly used String methods. Students re-write their previous program to utilize these new methods. Students write a program to validate an ISBN number of a book. Students explore the character method in more depth. Students write a program to determine whether a word is a palindrome. Students write a program to play a game of hangman. String Methods Numbers to Strings and Strings to Numbers. Character Method and StringBuffer Class 3 Assessment Lecture and Lab Lecture and Lab Lab Lab, Unit Test Unit: Class Hierarchy and Interfaces (3 weeks) – [C1, C2, C5, C6, C7] Objective Activity Inheritance, polymorphism, and superclasses. Students are presented examples of inheritance and applicable terminology. Students modify the GridWorld Actor class to include a Rolling Rock subclass. Students examine the use of abstract classes and write their own abstract class for Poems that includes subclasses Limerick, poem, and Haiku. Students are presented with examples of superclass constructors and methods. Students examine the GridWorld case Study involving dancing bugs as outlined in Part 2, 3 and 4 of the GridWorld student manual. Students write a new class for GridWorld called SlowBug using just two constructors and one act method. Students implement a Dance interface using a concrete class. Abstract classes Superclass Constructors and methods Interfaces Assessment Lecture and Lab Discussion and Lab Lecture and Lab Lab. Unit Test. Unit: Arrays (4 weeks) – [C1, C2, C3, C4, C6, C7] Objective Array types and dimensions Two dimensional Arrays Iterations for handling arrays and lists Inserting and removing elements ArrayList’s constructors and Methods Activity Students are presented with an introduction to Arrays, elements, and their uses. Students write a simple fortune telling applet using an array of strings Students explore the Chomp Game case study and the use of 2-d Arrays within it. Students write a method to generate Pascal’s triangle in a 2-D array. Students are presented with the technique of for-each to conduct traversal procedures. Students create a polynomial class that returns the degree of the polynomial. Students create a polynomial multiply method to return the product of two polynomials Students create a document index utilizing ArrayList. Students examine the GridWorld case study and its Critter subclasses as outlined in Part 3 of the GridWorld student manual. Students create a cow and mosquito classes with unique attributes. Assessment Lecture and Lab Lab Lecure and Lab Lab Lab, and Unit Test Unit: Searching and Sorting Arrays (3 weeks) – [C1, C2, C3, C4, C6] Objective Comparing objects Sequential and Binary Search Sorting algorithms Activity Assessment Students are introduced to the equals, compareTo, and compare methods. Students write a program to compare countries by population. Students write a program to sort a word list alphabetically. Lecture and Lab Students are presented with a variety of algorithms to conduct selection, insertion, merge, and quick sorting. Students write a benchmark testing program that creates an array of random numbers and sorts them using a variety of algorithms. Lab and Unit Test 4 Lab Unit: Streams and files systems (2 weeks) – [C1,C3,C5] Objective Java.io.File class and Scanner PrintWriter class Activity Students use Java.util scanner methods to read a text file. Students write a program that scans a source file to check if the braces within it are balanced. Students use PrintWriter to create a text file. Students write a program to merge two sorted files into one sorted file. Assessment Lab Lab and Unit Test Unit: Review (4 weeks) – [C6, C7] Objective Review GridWorld Case Study Review Released AP Computer Science Exams Student Activity Students Review all classes and methods in GridWorld and review the Grid World student manual Students take previously released AP Computer Science exams as practice. 5 Assessment Discussion and Lab AP Exam