AP Computer Science A Course Number: Credits: 1 Pre-requisites: Pre-AP Computer Science or permission of instructor Instructor: Adrian Ott E-Mail Address: aott@dentonisd.org Conference Periods: 5th Block on A & B days Phone: 940-369-3165 Tutorials: 8:00 to 8:35 Monday through Thursdays Course Objectives and Goals: To learn the basics of Java Programming and prepare for the AP Computer Science A Exam. Textbook (provided): Big Java, 2nd or 3rd Edition by Cay Horstmann Rules/Class Procedures: Classroom Rules 1. All school rules will be enforced in our classroom. 2. Be in your seat and ready to work when the bell rings. 3. Everyone is expected to have a notebook, paper and writing utensil every day. 4. You cannot disrupt others from learning. 5. You cannot disrupt the teacher from teaching. 6. It is the responsibility of the student to obtain notes/materials when he or she is absent. 7. Have respect for yourself, others and the teacher at all times. Specific Procedures 1. Computers are for instructional use only; that means no games, no chatting, no listening to music and no ‘surfing the net’. 2. Clean up your area last 2 minutes of class a. Push in your chair when you leave the classroom. b. Put all litter in a trash receptacle. c. Put away any supplies you borrowed. d. Teacher will dismiss class; do not line up at door. 3. Treat all school property with respect. a. Food and drink must be left on the table by the door. b. Do not write on desks, computers or any other classroom equipment. c. Use only the computer assigned to you. 4. Log off from the computer when finished 5. Sharpening of pencils, throwing away of trash, getting supplies, etc. can be done whenever the teacher is not talking to the whole class. 6. Cell phones, MP3 players, cameras, and all other electronic devices must not be visible in our classroom. If these items are visible, they will be picked up and turned into the administration. 7. Leaving the classroom: a. Restrooms are close by, so grab the vest and go. b. Anywhere else requires your ID, your student planner, and the vest. c. If someone is out, you must wait until they return. 8. Heading papers: Put your name, date and assignment title on every paper you turn in to me. 9. Turning papers in: Your ON TIME assignment needs to be put in the tray labeled with your block number. If you have a LATE assignment it must be turned in before school. 10. Asking for help: You have the responsibility of asking for help from me. Supplies/Materials: (required materials other than text) 1. Binder with pockets 2. Pencil and eraser Grading Policy: (As listed in the Student Code of Conduct) District Grading Scale: Denton ISD uses numerical grades in reporting student achievement for grades 2-12. Letter equivalents are provided for reference only (transfer students, etc.). The grading scale in middle school and high school is : 90 - 100 Excellent (A) 80 - 89 Good (B) 70 - 79 Fair, Average (C) 69 or below Failing (F) Written Tests 20% Homework/Quizzes 30% Programs & Lab Tests 50% Late Work: Late work will be accepted at anytime during the first 5 weeks of a grading period. You must hand in late work in person before school (8 to 8:35). This way you will know that it has been entered in Gradespeed. Late work will NOT be accepted during the last week of any grading period. Re-Test: Any student who obtains less than an 80 on any test or quiz may request a re-test. The re-test will not be the same test as the original but will test the same objectives as the original. Requesting tutoring and/or retest is students the responsibility of the student. If a student’s score on the re-test is higher, then the new score will replace the old one. Retests must be done before school on any day or after school on Tuesday. Important Dates: AP Study Sessions: will be announced in the spring AP Practice Exam: Tuesday, April 16th, 2013 AP Testing dates: Tuesday May 7th, 2013 Scope and Sequence: The scope & sequence will be covered in a separate document. The Denton Independent School District does not discriminate on the basis of sex, handicap, race, color, and or national origins in its educational programs. Admission to career programs is based on age, grade, interest, aptitude and ability. Lack of English language skills will not be a barrier to admissions and participation in any educational programs. Please sign, detach, and return the bottom portion of this form. “I, _____________________________, parent/guardian of ____________________ have read and understand the syllabus for Computer Science A “ Parent/Guardian:____________________________________ Signature Student:___________________________________________ Signature _______________________ Date _______________________ Date AP® Computer Science Course Overview At our school AP® Computer Science is offered through a three year program. The first year in the program students take Pre-AP Computer Science. This course is an introduction into the development of computer programming techniques using the Java language. Emphasis is placed on learning and applying good object-oriented programming techniques. This course covers a portion of the AP Computer Science A curriculum. AP Computer Science A is offered in the second year of study which focuses on the remainder of the A curriculum. This course emphasizes the object-oriented programming methodology introduced in the Pre-AP course with a concentration on problem solving and algorithm development. This course also includes a major focus on the AP Computer Science GridWorld Case Study. Students who have completed the AP Computer Science A course can then opt to take AP Computer Science AB. The AP Computer Science AB course extends the concepts of AP Computer Science A with an emphasis on designing and implementing interacting classes and interfaces. Other topics studied in this course include the Java library classes included in the AB-Level Java Subset, advanced data structures (including stacks, queues, trees, linked lists, sets, and maps), advanced sorting and searching algorithms, and algorithmic analysis (Big-Oh notation). Teacher Resources Lewis, John, William Loftus, and Cara Cocking. Java Software Solutions for AP Computer Science, 1st Edition. Addison Wesley Longman, 2004. Lambert, Ken, and Martin Osborne. Fundamentals of Java Comprehensive Course, 2nd Edition. Boston: Thomson Course Technology, 2003. Teukolsky, Roselyn. Barron's AP Computer Science, 2007-2008: Levels A and AB (Barron's How to Prepare for the Ap Computer Science Advanced Placement Examination), 3rd edition. Hauppauge, N.Y.: Barron’s Educational Series, 2006. The College Board. AP GridWorld Case Study. New York: College Entrance Examination Board, 2006 Karel J. Robot and many other related ideas at the author’s site. http://csis.pace.edu/~bergin/KarelJava2ed/Karel++JavaEdition.html Units of Study Pre-AP® Computer Science Unit/Weeks Topics and Objectives Resources and Assignments Unit 1 (0-2) Unit 2 (3-7) Computer Systems Topics: Computer Systems / Networks Programming Languages Numerical Representation Computer Ethics Objectives: Describe the relationship between hardware and software Identify basic computer hardware and explain what it does Define various types of software and how they are used Understand numerical representations and limits Understand computer ethics such as acceptable use policies, copyright, and intellectual properties Jeroo (Karel J Robot) Topics: Jeroo Basics Jeroo Methods Jeroo Control Structures Objectives: Learn to create Jeroo objects and send messages to the objects Learn to create new methods Learn how to use control structures Unit 3 (8-9) Java Basics Topics: Variables and Data Types Operators Objectives: Identify the primitive data types Declare and use variables Perform mathematical computations Use operators to modify the contents of variables Unit 4 (10-13) Classes and Objects Topics: Scanner Class Math Class String Class Objectives: Define the difference between primitive data and objects Create objects and use them Explore several predefined classes Lewis 1.0, 1.1, 1.2, 1.4 Lambert 1.1 – 1.6 1.1.1 Introduction to Computer Science 1.1.2 Numerical Representation 1.1.3 Computer Ethics 2.1.1 Jeroo Basics 2.1.2 Algorithm Development 2.1.3 Simple Jeroo Program 2.2.1 Initials 2.2.2 Lake Island 2.2.3 Homeward Angel 2.2.4 The Relay 2.2.5 Scavenger Hunt 2.2.6 Skinny Island 2.2.7 Not in a Row 2.2.8 Relay Race Island 2.2.9 CrossStripes 2.2.10 StairSteps 2.2.11 Two Friends Meet 2.2.12 Circle the Ring 2.2.13 Flowers in the Net 2.2.14 Hurdles 2.2.15 Minesweeper 2.2.16 TheBetrothal Lewis 2.3, 2.4, 2.5, 3.4 Lambert 2.1 – 2.5, 3.1 – 3.6 3.1.1 Java Basics 3.2.1 StudentInfo Lewis 2.8, 2.6 Lambert 4.2 4.1.1 Variables and DataTypes 4.1.2 Operators 4.2.1 Fruit 4.2.2 Conversion 4.2.3 Arithmetic 4.2.4 Mystery Number 4.2.5 Grades 4.2.6 Baseball 4.2.7 Rectangles 4.2.8 Powers 4.2.9 Money 4.2.10 Pythagorean Theorem 4.2.11 MinMax 4.2.12 QuickPick 4.2.13 RandomRange 4.2.14 FullName 4.2.15 Substrings 4.2.16 Mixup Unit 5 (14) Unit 6 (15-16) Unit 7 (17-21) Applets Lewis 2.10, 2.11 Topics: Applets Graphics Objectives: Explore the difference between a Java application and Java applet Create an applet Create graphical programs that draw shapes Conditional Statements 5.2.1 HTML Practice 5.2.2 Modified Snowman 5.2.3 Smiley Face Topics: if statement if/else statement switch statement Objectives: Learn to use an if statement Learn to use an if/else statement Learn to use a switch statement Learn to use nested conditional statements Looping Statements (Iteration) Topics: while statement do/while statement for statement Objectives: Learn to use a while statement Learn to use a do/while statement Learn to use a for statement Compare and contrast the different looping structures Unit 8 (22) Nested Loops Topics: Nested for loop printf statement Objectives: Learn to use a nested looping structure Lewis 3.0, 3.1, 3.2, 3.3 Lambert 4.5 6.1.1 Selection 6.2.1 Compare 6.2.2 Richter 6.2.3 Triangle 6.2.4 LetterGrade 6.2.5 Fraction 6.2.6 Applet – Shapes1 6.2.7 Applet – Shapes2 6.2.8 Menu 6.2.9 Planets Lewis 3.5, 3.6 Lambert 4.6-4.7 7.2.1 whilePractice 7.2.2 RepeatWords 7.2.3 ExamScores 7.2.4 Averages 7.2.5 Applet - RandomLines 7.2.6 Applet - Circles 7.2.7 dowhilePractice 7.2.8 RepeatMenu 7.2.9 Table 7.2.10 Largest 7.2.11 Applet - Starburst 7.2.12 Applet – Spiral 7.2.13 forPractice 7.2.14 VerticalString 7.2.15 FibonnaciSequence 7.2.16 GradeDistribution 7.2.17 Applet - Gradient Lewis 3.5 Lambert 4.8 8.2.1 printfPractice 8.2.2 TacoBueno 8.2.3 SemesterAvg 8.2.4 Patterns 8.2.5 TimesTable Unit 9 (23-26) Unit 10 (27-32) Unit 11 (33-34) Unit 12 (35-36) Learn to format output using the printf statement 8.2.6 Christmas 8.2.7 Applet - Checkerboard Lewis 6.0, 6.1 Lambert 8.1-8.5 Arrays Topics: Arrays File Input Objectives: Define and use arrays Explore how arrays and other objects can be combined to manage complex information Learn to use the Scanner class for text file input Writing Classes 9.2.1 ArrayPractice 9.2.2 Reverses 9.2.3 ChangeCase 9.2.4 SportsEvent 9.2.5 HighLow 9.2.6 readInts 9.2.7 GettysburgAddress 9.2.8 RandomStates Topics: Anatomy of a class Constructors Multiple classes Applets Objectives: Identify the elements of a class Explain encapsulation and Java modifiers Explain method overloading Explore the details of method declaration Design and implement a class Animation 10.2.1 PiggyBank 10.2.2 Compas 10.2.3 SlotMachine 10.2.4 BasketballPlayer 10.2.5 FarmAnimals 10.2.6 States 10.2.7 Favorites 10.2.8 Rectangle 10.2.9 Assignment 10.2.10 Television Topics: Double buffering Timers Objectives: Define double buffering Write a program that animates a graphics object Game Programming Topics: Game Engine (Classes) Inheritance Objectives: Write a program that plays a simple game using the classes of the game engine Lewis 4.0-4.4, 4.7 Lambert 5.1-5.5 11.2.1 BouncingBall 11.2.2 BouncingBalls 11.2.3 Rocket 12.2.1 Train1 12.2.2 Train2 12.2.3 Train3 12.2.4 Tank1 12.2.5 Tank2 12.2.6 Tank3 12.2.7 Tank4 12.2.8 Tank5 AP® Computer Science A Unit/Weeks Unit 1 (0-2) Topics and Objectives Java Basics Review Topics: Objects and Primitive Data Resources and Assignments Lewis Chapters 1-3 Lambert Units 1 and 2 Unit 2 (3-4) Control Structures Objectives: Write a program that uses the basic Java control structures Writing Classes Review Topics: Writing Classes Objectives: Implement methods in classes Design and implement classes Unit 3 (5) Systems Life Cycle and Software Development Topics: Unit 4 (6) Unit 5 (7-8) Unit 6 (9-10) Systems Life Cycle Systems Analysis Systems Design Social significance and implications of computer systems Software Life Cycle Software Design Documentation GridWorld: Part 1 - Experimenting Topics: Running the Demo Exploring Actor State and Behavior GUI interface Objectives: Observe the attributes and behavior of the actors Enhancing Classes Topics: References Revisited Static modifier Exceptions Nested classes / inner classes GUI - Swing Objectives: 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 Arrays Revisited Topics: Review arrays Objectives: Define and use arrays 1.2.1 ControlStructuresPractice 1.2.2 MethodsPractice 1.2.3 Hotel Lewis Chapter 4 Lambert 5.1-5.6 2.2.1 Box 2.2.2 Car 2.2.3 SockHop 2.2.4 Hopital 2.2.5 ATM Lewis 3.0 Lambert 1.5 3.1.1 Design GridWorld Part 1 Lewis 5.0-5.6 Lambert 9.1-9.8 5.2.1 Label 5.2.2 Button1 5.2.3 Button2 5.2.4 Button3 5.2.5 BorderLayout 5.2.6 FlowLayout 5.2.7 GridLayout Lewis Chapter 6 Lambert 8.1-8.9 6.2.1 Numbers 6.2.2 Vowels 6.2.3 Tardies 6.2.4 Survey 6.2.5 GirlScouts Unit 7 (11-12) Two-Dimensional Arrays Topics: Two-dimensional arrays Objectives: Learn to use two-dimensional arrays Unit 8 (13-14) Unit 9 (15-18) GridWorld: Part 2 – Bug Variations Topics: Methods of the Bug Class Extending the Bug Class Runner Classes Objectives: Define Bug Variations ArrayLists Topics: ArrayList class Objectives: Examine the ArrayList class Implement classes that use the ArrayList class Unit 10 (19-20) Unit 11 (21-23) GridWorld: Part 3 – Classes and Interfaces Topics: Grid interface Actor class Extending the Actor class Rock class, Flower class, Bug class Objectives: Explorer the code that is needed to understand and create actors Inheritance Topics: Inheritance Abstract Classes Interfaces Objectives: Derive new classes from existing classes Explain how inheritance supports software reuse Add and modify methods in child classes Define polymorphism and how it can be done Lewis 6.6 Lambert 8.7 7.2.1 LessThan100 7.2.2 Transpose 7.2.3 StoreLargest 7.2.4 SumMatrix 7.2.5 Airline GridWorld Part 2 Lewis 6.7 Lambert 10.7 9.2.1 ArrayListPractice 9.2.2 PhoneList 9.2.3 Diet 9.2.4 NationalPark 9.3.1 SchoolRoster (FR 99-1) 9.3.2 Reservation (FR 05-1) 9.3.3 WordList (FR 04-1) 9.3.4 Retirement (FR 03-2) 9.3.5 Grocery (FR 02-2) 9.3.6 GasStation (FR 01-1) 9.3.7 Statistics (FR 02-1) GridWorld Part 3 Lewis 7.0 -7.5 Lambert 9.1-9-9.8 11.2.1 CombinationLock 11.2.2 RaceHorse 11.2.3 Scheduler 11.2.4 SportsTeam 11.2.5 Vacation 11.2.6 Photographer 11.2.7 Donation 11.2.8 Employee 11.2.9 Area 11.2.10 Quiz 11.3.1 DepartmentStore (FR) 11.3.2 Pet (FR 04-2) 11.3.3 Ticket (FR 05-2) 11.3.4 Hotel (FR) 11.3.5 Warehouse (FR) 11.3.6 College (FR 03-1) 11.3.7 Employee (FR 03-2) Unit 12 (24-25) Unit 13 (26-27) Unit 14 (28-29) Unit 15 (30-31) GridWorld: Part 4 - Inheritance in Case Study Topics: Critter class Extending Critter class Objectives: Define classes that extend the Critter class Searching Topics: Linear search Binary search Objectives: Explore searching using arrays and ArrayLists Informal comparison of running times Sorting Topics: Selection sort Insertion sort Objectives: Explore sorting with arrays and ArrayLists Informal comparison of running times Recursion Topics: Recursive thinking Recursive programming Merge sort Unit 16 (32-34) Unit 17 (35-36) Objectives: Examine recursive methods and processing steps Define infinite recursion and discuss ways to avoid it Explain when recursion should and should not be used Examine the use of recursion in sorting AP Exam Review Post AP Exam Project GridWorld Part 4 Lewis 6.2 Lambert 10.2, 11.3 13.2.1 SpellCheck 13.2.2 States 13.3.1 Books (FR 01-2) 13.3.2 Garage (FR) Lewis 6.3 Lambert 10.3 14.2.1 SortNames 14.2.2 SortStates Lewis 8.0 - 8.3 Lambert 11.1 15.2.1 Factorial 15.2.2 CountDown 15.2.3 Song 15.2.4 FibonnaciSequence 15.2.5 ReverseString 15.2.6 Palindrome 15.2.7 GCD 15.2.8 CompoundInterest Teukolsky Correlation to AP Topic Outline 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. Specify the purpose and goals for a problem. 2. Apply data abstraction and encapsulation. 3. Decompose a problem into classes; define relationships and responsibilities of those classes. Unit # 3A Unit # 3A Unit # 3A 4. Understand and implement a given class hierarchy. 5. Identify reusable components from existing code using classes and class libraries. Unit # 3A Unit # B. Class design 1. Design and implement a set of interacting classes. 2. Design an interface. 3. Choose appropriate advanced data structures and algorithms. Unit # 2A Unit # 4A Unit # 1A 4. Apply functional decomposition. 5. Extend a given class using inheritance. Unit # Unit # 11 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. Recursion C. Java library classes (included in the AB-level Java Subset) Unit # 1A Unit # 3A Unit # Unit # Unit # 1A Unit # 1A Unit # 1A Unit # 2A Unit # 4A Unit # 2A Unit # Unit # Unit # 2A Unit # Unit # 6PAP Unit # 7PAP Unit # 15 Unit # 6AB 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. Unit # Unit # 3. Perform integration testing. B. Debugging 1. Categorize errors: compile-time, run-time, logic. 2. Identify and correct errors. 3. Employ techniques such as using a debugger, adding extra output statements, or hand-tracing code. Unit # C. Understand and modify existing code D. Extend existing code using inheritance E. Understand error handling 1. Understand runtime exceptions. 2. Throw 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 3. Big-Oh notation 4. Worst-case and average-case time and space analysis H. Numerical representations 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) Unit # Unit # Unit # Unit # Unit # Unit # Unit # Unit # Unit # Unit # Unit # Unit # 5AB Unit # Unit # 1PAP Unit # 4PAP 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) B. Classes C. One-dimensional arrays D. Two-dimensional arrays E. Linked lists (singly, doubly, circular) F. Stacks G. Queues H. Trees I. Heaps J. Priority queues K. Sets L. Maps Unit # 3PAP Unit # 4PAP Unit # 9PAP Unit #6A Unit #6AB Unit #8AB Unit #8AB Unit # 6AB Unit # 6AB Unit # 6AB Unit # 6AB Unit # 6AB 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 AB-level data 1. Traversals 2. Insertions 3. Deletions 4. Iterators B. Searching 1. Sequential 2. Binary 3. Hashing C. Sorting 1. Selection 2. Insertion 3. Mergesort 4. Quicksort 5. Heapsort Unit # 7AB Unit # 7AB Unit # 7AB Unit # 7AB Unit # 13A Unit #13A Unit # 6AB Unit # 14A Unit # 14A Unit # 15A Unit # Unit # VI. Computing in Context A working knowledge of the major hardware and software components of computer systems is necessary for the study of computer science, as is the awareness of the ethical and social implications of computing systems. These topics need not be covered in detail but should be considered throughout the course. A. Major hardware components 1. Primary and secondary memory 2. Processors 3. Peripherals B. System software 1. Language translators/compilers 2. Virtual machines 3. Operating systems C. Types of systems 1. Single-user systems 2. Networks D. Responsible use of computer systems 1. System reliability 2. Privacy 3. Legal issues and intellectual property 4. Social and ethical ramifications of computer use Unit # 1PAP Unit # 1PAP Unit # 1PAP Unit # 1PAP Unit # 1PAP Unit # 1PAP Unit # 1PAP Unit # 1PAP Unit # Unit # Unit # Unit # 1PAP 1PAP 1PAP 1PAP