AP ® Computer Science Mr. Houlahan Course Description: This course is designed for college-bound students who are interested in learning to program computers. The course will be taught using the Java language. Major topics will include knowledge of computer systems, variables, expressions, input-output, conditionals, loops, object oriented programming, arrays, parameters, simple recursion, searching, sorting, and strings. Application projects will be assigned. This course will help prepare students for the advanced placement test in the computer language Java. Assessment: Your assessment will be broken down by the following categories: 1. Homework – 10% of final grade 2. Programs – 40% of final grade 3. Tests and Quizzes – 50% of final grade How Do I Receive an A In This Class? Follow the expectations of the class: Come to class prepared every day on time. Finish your assignments on time. Respect everyone and everything in the classroom. Respect the time given to you during this class period. Use your brain, programming takes problem solving skills. Do the work and try your hardest. Be honest in everything you do. Get involved and have fun. If you meet all of these criteria, the rest will take care of itself. Expectations: 1. Be in the computer lab by the beginning of class ready to learn. 2. All assignments not turned in on time are worth half credit. 3. After being absent, it is your responsibility to check with the teacher or your classmates to find out what you missed. 4. Take care of the lab and its equipment. Please do not alter the computers in any way (download software, files, etc.) Course Resources: Java Software Solutions for AP Computer Science A, J. Lewis, W. Loftus, and C. Cocking, 2nd Edition, 2007, Prentice Hall. AP® GridWorld Case Study Unit 1: Introduction to the Programming Environment This unit begins teaching students how to plan their work by learning about proper pseudo code and flowchart structures. Students are led through their first program (Hello World) to explore the format of a proper Java program. They continue with learning how to use simple input/output, primitive data types, the String class, arithmetic expressions and random number generation. Resources • Lewis, Loftus, Cocking: Chapter Two Unit 2: Conditional and Repetition Students focus on how to use conditionals (if, if---else, switch) and repetition (for, while, do while) structures. Resources: • Lewis, Loftus, Cocking: Chapter Three Unit 3: Methods and Classes Students learn how to create their own classes by defining objects. Proper method and class structure is emphasized. They are also introduced to interfaces (Comparable), inheritance, and polymorphism. Resources: • Lewis, Loftus, Cocking: Chapters Four, Five and Seven Unit 4: Advanced Programming Structures This unit focuses on the creation of advanced data structures and algorithms. Topics include 1-D and 2-D arrays, Array Lists, sorting algorithms (Insertion Sort, Selection Sort, and Merge Sort) and recursion. Resources: • Lewis, Loftus, Cocking: Chapters Six and Eight • Flash animations describing recursion Unit 5: AP GridWorld Case Study, continued Students work through Parts Two, Three and Four of the AP GridWorld Case Study. Resources: • AP GridWorld Case Study Unit 6: The Computer and Society Students explore how the computer has affected society. Topics include the evolution of computer languages, ergonomics, ethics and computer careers. Resources: • Evolution of Computers Languages – comparisons between languages Unit 7: Input/Output This unit teaches students how to use input and output streams. Topics include try and catch, exceptions, standard I/O, and reading from and writing to text files. Resources: • Lewis, Loftus: Chapter Eight Unit 8: Getting Ready for the AP Exam Students work through sample multiple-choice questions and free-response questions. Students review Java theory and the AP GridWorld Case Study. Resources: • AP GridWorld Case Study • Supplemental handouts------multiple-choice and free-response questions Unit 9: Final Project Students work through a series of summative assignments that evaluate their ability to work through the development of a program. Tasks include writing a program proposal, planning the program using pseudo codes/flowcharts, creating a user’s manual, writing program code, and creating a limitations document. The project will include writing a gaming program and a read me file that provides a brief description of the program, the design of the program, a list of any bugs or known issues in the program and any special compiling instructions.