Bishop Montgomery High School AP Computer Science A 2015/2016 Course Syllabus (revision 02/04/2015) COURSE OVERVIEW Students interested in careers related to: business, engineering, computer science, information technology, bioinformatics, genetics, physics, chemistry, or math should take AP Computer Science. However, almost all occupations use some form of computer science and software. Knowledge about how software is designed, created and maintained will provide useful background. AP Computer Science is a yearlong college level course that teaches students how to program in the Java language. At the conclusion of the course students must take the AP Computer Science A examination. Students passing this is examination may receive college credit for one semester of computer science. It is a recommended to take AP Computer Science before your senior year. Your AP score can be a significant factor in scholarships and college entrance applications. Credit Successful completion of this course may provide one semester of college credit for computer science. Prerequisites Honors Algebra II: Completed, passing grade B or A Honors or AP English: Currently enrolled, passing grade B or A Student must be able to touch type. 40+ WPM is recommended. You need to be able to type without looking at the keyboard. You need to be free to watch what is happening on the screen and not thinking (most of the time) about where which key is on the keyboard. This is a college level class and not a beginner or an application class (such as word processing, graphic design, etc.). Students should be familiar with basic computer terms and operations and preferably have some experience programming before they start. A strong mathematics background with a PSAT math score of 58 or higher is a positive indication of readiness for the class. Course Objectives (AP Curricular Requirements) CR1 Students will be able to design and implement computer based solutions to problems CR2 Students will be able to use and implement common algorithms
CR3 Students will be able to use common data structures CR4 Students will be able to select appropriate algorithms and data structures to solve problems CR5 Students will be able to code fluently in an object oriented paradigm using the programming language Java {AP SUBSET} CR6 Students will be able to use elements of the standard Java library from the AP Java subset in Appendix A of the AP Computer Science A Course Description CR7 Students will participate in a minimum of 20 hours {PROBLEM BASED} hands on lab experiences CR8 Students will be able to recognize and discuss the social and ethical implications of computer use Required Text(s) Barnes, D., & Kolling, M. (2012). Objects first with Java: A practical introduction using BlueJ (5th ed.). Boston: Pearson. Litvin, G. Litvin, M. (2014). Be prepared for the AP computer science exam in Java (6th ed.). Andover, Mass.: Skylight Pub. Required Materials USB Thumb Drive (>1Gb recommended) You will be responsible to back up your programs/code. 3x5 cards Flash cards used for new vocabulary, code snippets, and other information to use for studying for tests and the AP exam. Students are not required to have a computer with an internet connection at home. It is recommended. Grading Comprehensive examinations at the conclusion of Unit 8 and Unit 14 will be the largest component of a student s grade. Examinations will be written as closely to the AP exam standards as possible. Both examinations will be pencil and paper/scantron. Your comprehensive examination grade will give you an indication of your standing in for the AP exam in enough time to take corrective action if needed. Course work will generally be finished by Week 28, leaving the rest of the year for review, AP Computer Science A, and completion of the major project. The final grade will consist primarily of Unit 14 comprehensive examination grade and the personal software project. Generally, there is a high correlation between the practice exams and your grade on the AP test. It will be nearly impossible to get an A in this course and not pass the AP examination. Every unit will have a moderate sized programming assignment/lab which will be due at the start of the following unit. The assignments, homework, and requirements are listed on the BMHS AP Computer
Science webpage (see below). Time will be allotted in class to work on these programs but work will be required outside of allotted class time. No late homework will be accepted. Class Work Students will frequently have brief programming assignments in class to illustrate a specific objectives. These will normally be due no later than the next class session. Personal software project Each student will be required to design and create a Personal Software Project which answers a research question or meets a defined purpose such a game or education program. Click here for a detailed description of the project. Be aware that the project will seriously impact the second semester grade. It will be impossible to get an a without completing this project. AP Exam The examination will be given on Tuesday, May 3, 2016 at 8AM. You must arrive 30 minutes early. The exam last three hours and consists of two parts. The AP exam contains a free response (essay, problem solving, oral responses, etc.) as well as multiple choice questions. AP Exam Grades: 5 Extremely well qualified 4 Well qualified Internet Resources 3 Qualified 2 Possibly qualified 1 No recommendation Practice typing awkward characters in code: https://typing.io/ AP Computer Science Java Subset: bit.ly/bmhs_javasubset AP Computer Science Quick Reference: bit.ly/bmhs_javareference BMHS AP Computer Science Webpage: TBD Daily/Weekly Objectives, Exercises, and Assignments: TBD Textbook Webpage: http://www.bluej.org/objects first/ IDE Software (BlueJ): http://www.bluej.org/
COURSE OUTLINE Unit 01 Week(s): 0 2 Topic(s): objects, methods, classes, parameters Fundamental concepts of object orientation Students will be given a hands on introduction to objects, classes, and method concepts. Students will exam source code, and introduced to syntax. Students will use an example of graphic shapes which can be interactively drawn. Students will discuss the schools technology usage policy, the Association for Computing Machinery s Code of Ethics, and write a small paper discussing computer ethics [CR7]. Reading: BlueJ section(s), 1.1 1.11 Lab: Classroom Enrollment System [CR6] (BlueJ 1.12 1.15) Exercise(s): BlueJ exercise(s), 1.1 1.29, syntax flash cards, base conversion worksheet [CR1], error messages worksheet [CR1] Assessment: BlueJ short answer exercise(s), 1.30 1.36 Terms: object, class, instance, method, signature, parameter, type, state, source code, return value, compiler Unit 02 Week(s): 3 4 Topic(s): fields, constructors, parameters, methods (accessor, mutator), assignment and condition statement Creating behavior Students will be introduced to class definitions and investigate how source code is written to create behavior of objects. Students will discuss how to define fields and implement methods. Students will be introduced to the first types of statements [CR2a]. The main example from this chapter is an implementation of a ticket machine. Reading: BlueJ section(s), 2.1 2.23 Lab: Ticket machine design [CR1][CR2a][CR6] (BlueJ 2.12 2.63) Exercise(s): BlueJ exercise(s), 2.1 2.82, syntax flash cards Assessment: BlueJ short answer exercises 2.83 2.93
Java Constructs: field, constructor, comment, parameter, assignment (=), block, return statement, void, compound assignment operators (+=, =), if statement Terms: field, instance variable, constructor, method, method header, method body, actual parameter, formal parameter, accessor, mutator, declaration, initialization, block, statement, assignment statement, conditional statement, return statement, return type, comment, expression, operator, variable, local variable, scope, lifetime Unit 03 Week(s): 5 6 Topic(s): abstraction, modularization, object creation, object diagrams, method calls, debuggers Multiple objects Students will expand on their understanding and discussion of how multiple objects interact [CR4]. Students will see how objects collaborate and perform common tasks. Students will discuss how one object can create or spawn another object. A LED alarm clock display is discussed, using a two number display to show hours and minutes. Another major discussion is a simulation of an email system in which messages are sent between mail clients. Reading: BlueJ section(s), 3.1 3.14 Lab: LED Clock [CR1][CR4][CR5][CR6] (BlueJ 3.8.4 3.11.3) Lab: Mail system [CR1][CR4][CR5][CR6] (BlueJ 3.12.1 3.14) Exercise(s): BlueJ exercise(s), 3.1 3.42, syntax flash cards Assessment: BlueJ short answer exercises 3.43 4.46 Java Constructs: class types, logic operators (&&, ), string concatenation, module operator (%), object construction (new), method calls (dot notation), this Terms: field, instance variable, constructor, method, method header, method body, actual parameter, formal parameter, accessor, mutator, declaration, initialization, block, statement, assignment statement, conditional statement, return statement, return type, comment, expression, operator, variable, local variable, scope, lifetime Unit 04 Week(s): 7 8 Topic(s): collections, loops, iterators, arrays Collections of objects Students will continue to build more extensive structures of objects, and begin to use collections of objects (ArrayList) [CR2b][CR5]. Students will implement a music player and auction system to
introduce collections. Students will discuss iterations over collection and have an introduction to loops. A web log analyzer is used from an example of array use. Reading: BlueJ section(s), 4.1 4.17 Lab: Web log analyzer [CR1][CR2b][CR6] (BlueJ 4.16.4 4.16.8) Exercise(s): BlueJ exercise(s), 4.1 4.80, syntax flash cards Assessment: BlueJ short answer exercises 4.81 4.87 Java Constructs: ArrayList, Iterator, while loop, null, cast, anonymous object, array, for loop, for each loop, ++ Terms: collection, array, iterator, for each loop, while loop, for loop, index, import statement, library, package, anonymous object, definite iteration, indefinite iteration Unit 05 Week(s): 9 10 Topic(s): using library classes, reading documentation, writing documentation Libraries and interfaces Students will be introduced to the Java standard library and discuss library classes [CR5]. Students will be able to read and understand library documentation. The importance and value of writing documentation in software development is discuss, and students will practice how to write suitable documentation for our own classes. Classes in this chapter are Random, Set, and Map. Reading: BlueJ section(s), 5.1 5.13 Lab: Web log analyzer [CR1][CR5][CR6] (BlueJ 4.16.4 4.16.8) Exercise(s): BlueJ exercise(s), 5.1 5.70, syntax flash cards Assessment: BlueJ short answer exercises 5.71 5.73 Java Constructs: String, ArrayList, Random, HashMap, HashSet, Iterator, Arrays, static, final Terms: interface, implementation, map, set, javadoc, access modifier, information hiding, coupling, class variable, static, constant, final
Unit 06 Week(s): 11 12 Topic(s): responsibility driver design, cohesion, coupling, refactoring Designing classes Students will discuss more formally the issues of dividing a problem domain into classes for implementation. Students will be introduced to issues of designing classes, including concepts such as responsibility driven d3esign, coupling, cohesion, and refactoring. World of Zuul will be used for this discussion. Students will go through several iterations of improving the internal class structure of the game and extending its functionality, and end with a long list of proposals for extensions that may be done as student projects [CR1][CR3][CR4]. Reading: BlueJ section(s), 6.1 6.15 Lab: World of Zuul [CR1][CR3][CR4][CR6] (BlueJ 6.2 6.15.3) Exercise(s): BlueJ exercise(s), 6.1 6.48, syntax flash cards Assessment: BlueJ short answer exercises 6.54 6.56 Java Constructs: static (for methods), Math, enumerated types, switch Terms: code duplication, coupling, cohesion, encapsulation, responsibility driven design, implicit coupling, refactoring, class method Unit 07 Week(s): 13 14 Topic(s): testing, debugging, unit testing, test automation Well behaved objects Dealing with a whole group of uses connected to producing correct, understandable, and maintainable classes. Students will cover issues ranging from writing clear, understandable code (including style and commenting) to testing and debugging. Testing strategies are introduced and a number of debugging methods are discussed in detail [CR4]. Lab: Online shopping site, and implementation of electronic calculator Reading: BlueJ section(s), 7.1 7.11 Lab: Online shopping site unit testing [CR1][CR4][CR6] (BlueJ 7.3 7.4.4) Lab: Electronic calculator debugging [CR1][CR4][CR6] (BlueJ 7.5 7.11) Exercise(s): BlueJ exercise(s), 6.1 7.37, syntax flash cards
Assessment: Cumulative examination Java Constructs: no new Java constructs are introduced in this unit Terms: syntax error, logical error, testing, debugging, unit testing, JUnit, positive testing, negative testing, regression testing, manual walkthrough, call sequencing Unit 08 Week(s): 15 16 Topic(s): inheritance, subtyping, substitution, polymorphic variables Inheritance and Polymorphism Students are introduced to the concepts of inheritance and polymorphism with many of the related issues. Students will discuss a part of the implementation of a social networking site to illustrate the concepts. Detailed discussion of code inheritance, subtyping, polymorphic method calls, and overriding [CR2a][CR2b][CR4]. Reading: BlueJ section(s), 8.1 8.10 Lab: Social network newsfeed [CR1][CR4][CR6] (BlueJ 8.1 8.7.5) Exercise(s): BlueJ exercise(s), 8.1 8.15, syntax flash cards Assessment: BlueJ short answer exercises 8.16 8.19 Java Constructs: extends, super (in constructor), cast, Object, autoboxing, wrapper classes Terms: inheritance, superclass (parent), subclass (child), is a, inheritance hierarchy, abstract class, subtype substitution, polymorphic variable, type loss, cast, autoboxing, wrapper classes Unit 09 Week(s): 17 18 Topic(s): method polymorphism, static and dynamic type, overriding, dynamic method lookup More about inheritance. Continuing with the social network newsfeed lab work, students will discuss their understanding of inheritance, and why it is central to understanding and using object oriented languages. Students will further develop their understanding on inheritance and polymorphism [CR2a][CR2b][CR4]. Reading: BlueJ section(s), 9.1 9.11
Lab: Social network newsfeed (continued) [CR1][CR2a][CR2b][CR4][CR6] (BlueJ 9.1 9.10) Exercise(s): BlueJ exercise(s), 9.1 9.12, syntax flash cards Assessment: BlueJ short answer exercises 9.11 9.13 Java Constructs: super (in method), tostring, protected, instanceof Terms: static type, dynamic type, overriding, redefinition, method lookup, method dispatch, method polymorphism, protected Unit 10 Week(s): 19 20 Topic(s): abtract classes, interfaces, multiple inheritance Predator/prey simulation Discussing additional abstraction mechanisms based on inheritance, namely interfaces and abstract classes [CR2a][CR2b][CR4]. Reading: BlueJ section(s), 10.1 9.11 Lab: Foxes and rabbits [CR1][CR2a][CR2b][CR4][CR6] (BlueJ 10.2 10.8) Exercise(s): BlueJ exercise(s), 10.1 10.66, syntax flash cards Assessment: BlueJ short answer exercises 9.67 9.72 Java Constructs: abstract, implements, interface Terms: abstract method, abstract class, concerte class, abstract subclass, multiple inheritance, interface (Java construct), implements Unit 11 Week(s): 21 22 Topic(s): constructing GUIs, interface components, GUI layout, event handling GUIs Using an image viewer and sound player, students will use these examples to discuss how to build graphical user interfaces. Reading: BlueJ section(s), 11.1 11.10
Lab: Image Viewer [CR1][CR6] (BlueJ 11.4 11.8) Lab: Music Player [CR1][CR6] (BlueJ 11.9) Exercise(s): BlueJ exercise(s), 11.1 11.76, syntax flash cards Assessment: BlueJ short answer exercises 11.77 11.79 Java Constructs: JFrame, JLabel, JButton, JMenuBar, JMenu, JMenuItem, ActionEvent, Color, FlowLayout, BorderLayout, GridLayout, BoxLayout, Box, JOptionPane, EtchedBorder, EmptyBorder, anonymous inner classes, final variables Terms: GUI, AWT, Swing, component, layout, event, event handling, event listener, from, menu bar, menu, menu item, content pane, modal dialog, anonymous inner class, final variable Unit 12 Week(s): 23 24 Topic(s): defensive programming, error reporting, exception throwing and handling, basic file processing Error handling Possible problems and solutions are discussed, and Java s exception handling mechanism is discussed in detailed [CR4]. Reading: BlueJ section(s), 12.1 12.10 Lab: Address Book application [CR1][CR4][CR6] (BlueJ 12.1 12.8.2) Exercise(s): BlueJ exercise(s), 12.1 12.53, syntax flash cards Assessment: BlueJ short answer exercises 12.54 Java Constructs: TreeMap, TreeSet, SortedMap, assert, exception, throw, throws, try, catch, File, FileReader, FileWriter, Path, Scanner, stream Terms: exception, unchecked exception, checked exception, exception handler, assertion, serialization Unit 13 Week(s): 25 26 Topic(s): discovering classes, designing interfaces, CRC cards, patterns Abstraction, structuring problems into classes and methods
Starting from a clean slate, students will discuss what the classes should be to implement an application, how they interact, and how responsibilities should be distributed. Class responsibility collaborators (CRC) cards are used approach this problem, while designing a cinema booking system. Reading: BlueJ section(s), 13.1 13.7.6 Lab: Cinema booking system [CR1][CR4][CR6] (BlueJ 13.1.2 13.1.5) Exercise(s): BlueJ exercise(s), 13.1 13.17, syntax flash cards Assessment: BlueJ short answer exercises 13.8 Java Constructs: no new Java constructs are introduced in this unit Terms: analysis and design, verb/noun method, CRC card, scenario, use case, method stub, design pattern Unit 14 Week(s): 27 28 Topic(s): whole application development Concluding the course, students will integrate many topics into a cohesive project. Application design, design of class interfaces, functional and non functional characteristics and implementation details will be discussed. Additionally, topics covered earlier in the year like be applied in a new context [CR2a][CR2b][CR3][CR4][CR5]. Reading: BlueJ section(s), 14.1 14.6 Lab: Taxi company model [CR1][CR2a][CR2b][CR3][CR4][CR5][CR6] (BlueJ 14.2 13.1.5) Exercise(s): BlueJ exercise(s), 14.1 14.28 Assessment: Comprehensive examination Java Constructs: no new Java constructs are introduced in this unit Terms: no new Java terms and introduced in this unit
Unit 15 Week(s): 28+ Topic(s): AP Computer Science A Exam Prep Students will begin to focus on and prepare for the AP Computer Science A Exam. AP Computer Science A Examination is on Tuesday, May 3, 2015 at 8:00AM. Students will have approximately three to four weeks working with practice examinations and working on problems sets provided by their instructor or their text Be Prepared for the AP Computer Science Exam in Java. Reading: BlueJ section(s), 14.1 14.6 Lab: Taxi company model [CR1][CR2a][CR2b][CR3][CR4][CR5][CR6] (BlueJ 14.2 13.1.5) Exercise(s): BlueJ exercise(s), 14.1 14.28 Assessment: Comprehensive examination Java Constructs: no new Java constructs are introduced in this unit Terms: no new Java terms and introduced in this unit