
AP CS Exam Overview Barbara Ericson ericson@cc.gatech.edu March 2005 Georgia Institute of Technology
Learning Goals • Understand the AP CS Exam • What are the details of the exam? • How is the exam graded? • What is on the exam? • Tips for taking the exam • Resources to use in studying for the exam Georgia Institute of Technology
Exam Details • Two Sections (3 hour exam) • 40 Multiple choice questions (1 hour 15 min) • 5 answers to each question (a – e) • Only one right answer • At least 5 questions on the case study • A Topics: oo, Java basics, cs terms, testing, design decisions • AB Topics: data structures, big-O, and more design • Free-response questions (1 hour 45 min) • 4 questions (2-3 parts) • One question on the case study • A Topics: arrays, strings, classes, interfaces, sorting, searching, Java library classes, design • AB Topics: 2-d arrays, data structures, recursion Georgia Institute of Technology
How the Exam is Graded • Total score is • score = multipleChoiceWeight * (# correctAnswers – 0.25 * #wrongAnswers) + freeResponseWeight * freeResponseScore • Equal weight to multiple choice and free response sections • Each free response question is worth 9 points (partial credit can be given) • Free response questions are graded according to a grading standard (rubric) by high school and college teachers Georgia Institute of Technology
Final Grade Calculation (1999) Georgia Institute of Technology
Exam Hints • Read the question before reading the code • Do the easiest questions first • If you read the question and have ruled out a couple of answers guess the answer • Don’t write tricky, non-standard code • If a question has parts answer the parts you can • Don’t cross out what you have if you don’t add anything new • Write neatly and indent properly • Follow Java conventions for names and use good names • Don’t worry about imports or comments • Don’t forget the return statement • Check and follow the pre and post conditions Georgia Institute of Technology
A and AB Topics • See the Topic Outline • http://apcentral.collegeboard.com/members/article/1,3046,151-165-0-18431,00.html • Summary Table of Language Features • http://apcentral.collegeboard.com/members/article/1,3046,151-165-0-18431,00.html • A Quick Reference Guide • http://apcentral.collegeboard.com/members/article/1,3046,151-165-0-21170,00.html • AB Quick Reference Guide • http://apcentral.collegeboard.com/members/article/1,3046,151-165-0-21169,00.html Georgia Institute of Technology
Primitive Variables vs Object Variables • Primitive variables are like sliders • Allocates space for the variable value • The value can be between a min and max based on the amount of space • Object variables are like a ticket to an event • Help you find your seat ref Georgia Institute of Technology
Object Variables • Remember that declaring an object variable declares a reference to an object of that type • It doesn’t create the object • Example • String s; // declares a reference • s.length(); // throws a null pointer exception • s = “Hello”; // now it references a string Georgia Institute of Technology
Inheritance versus Association • “is a” versus “has a” • Use inheritance when the child is really “a kind of” the parent • A SlowFish “is a kind of” Fish • A Truck “is a kind of” Vehicle • Don’t use inheritance when the child can’t be substituted for the parent • A Wall isn’t a kind of Fish • A Vehicle isn’t a kind of Person • Use “has a” when one object has an object of another class associated with it • A Vehicle “has a” person associated with it (the owner) • A course session “has a” course associated with it Georgia Institute of Technology
Inheritance Test • Which is correct? • A high school is a kind of school? • An exam is a kind of question? • A marching band is a kind of school? • A dictionary is a kind of book? • A cat is a kind of animal? • You must be able to substitute the child for the parent • If I need a book will a dictionary do? • If I need a school will a marching band do? Georgia Institute of Technology
Inheritance • You can call inherited public methods directly • You can access inherited public fields directly • You can access inherited private methods indirectly • Through public methods • You can access inherited private fields indirectly • Through public accessors and modifiers Georgia Institute of Technology
Inheritance Example public class ContactInfo { private String name; private String phoneNumber; public ContactInfo(String theName, String thePhoneNumber) { this.name = theName; this.phoneNumber = thePhoneNumber; } public String getName() { return name; } public String getPhoneNumber() { return phoneNumber; } } Georgia Institute of Technology
Inheritance Example - continued public class ExtendedContactInfo extends ContactInfo { private String nickname; public ExtendedContactInfo (String nickname, String name, String phoneNumber) { // missing code } } Georgia Institute of Technology
Inheritance Example - continued • What can go in place of // missing code? • super(theName,thePhoneNumber); this.nickname = theNickname; • this.name = theName; this.phoneNumber = thePhoneNumber; this.nickname = theNickname; • this.nickname = theNickname; super(theName, thePhoneNumber); • this.nickname = theNickname; this.name = theName; this.phoneNumber = thePhoneNumber; Georgia Institute of Technology
Inheritance • The child class extends the parent class • public class ChildClass extends ParentClass • No extends means extends Object • Objects of the child class inherit all the fields and methods of the parent class • But can’t directly access private fields or methods • Use public accessors and modifiers • Can invoke parent constructor to initialize • Use super(paramList) as first line in constructor • If none found, one will be provided (no-arg) Georgia Institute of Technology
Interfaces • An interface is a way two classes can communicate without worrying about what class each one is. • Just need to know the methods • Let’s you plug in different classes • As long as they implement the interface • Interfaces can only have abstract methods and constants in them • Declare an interface with • public interface Name • A class can implement more than one interface • public class Name extends Parent implements Interface1, Interface2, … • One interface can inherit from another • Actionable inherits from Drawable in the revised case study Georgia Institute of Technology
Explaining Interfaces • First point out what happens when you hardcode a class • Like in MBCS with Fish • Then show how interfaces let you add new classes • Like Wall in the revised MBCS Georgia Institute of Technology
Polymorphism • Ability to call a method based on the type of the object the method • In Java usually refers to inheritance-based • Method is based on parent class • All objects have a reference to their class • All objects know what class they are • All methods are invoked by checking with the class of the object first • No matter what it is declared as Georgia Institute of Technology
Polymorphism Example • See ShapePanel • A shape panel has a list of shapes • ShapeCanvas has a list of shapes • When we ask a shape to draw • It first checks with it’s class to see if it has a draw method and if so will execute that • So the correct shape is drawn • If Oval draw an oval • If Rectangle draw a rectangle Georgia Institute of Technology
Polymorphism Questions • Expect questions on what is the output when a method is called on a child object that is declared as a parent object • Remember that objects know what class they are • And all methods are resolved starting with the object’s class then going up the inheritance tree Georgia Institute of Technology
Static • Static really means exists on the object that defines the class • A class named Class • Objects all have a reference to their class • getClass() will return it • Static variables are shared by all objects of a class • Static methods can be called using • ClassName.method() • Static methods can’t access object fields • No access to a current object (no this) Georgia Institute of Technology
Run Time Exceptions • NullPointerException, indicating an attempt to reference an object using an object variable that is null • int[] gradeArray; • System.out.println(gradeArray[0]); • ArrayIndexOutOfBoundsException, indicating an attempt to access an element that is not within an array’s range of indexes • gradeArray = new int[10]; • System.out.println(gradeArray[10]); Georgia Institute of Technology
Run Time Exceptions • ArithmeticException, such as division by zero for integers • System.out.println(9/0); • ClassCastException, which occurs when an attempt is made to cast a variable to a class that it does not match • List nameList = new ArrayList(); • nameList.add(new Integer(5)); • nameList.add(“Susan”); • String name = (String) nameList.get(0); Georgia Institute of Technology
Throwing Exceptions - AB • IllegalArgumentException, indicating an argument to a method that is not legal for that method public void setUser(String user) { if (user.trim().equals("")) { throw new IllegalArgumentException("missing user name"); } else { this.user = user; } } Georgia Institute of Technology
Resources • Books • Be Prepared for the AP Computer Science Exam in Java Maria Litvin • 125 Multiple-Choice Questions in JavaMaria Litvin, Gary Litvin • On-line practice tests • http://eimacs.com/LM/LMPlain.asp?F=beprepared&S=5 • Free 30 day trial Georgia Institute of Technology
Summary • The A Exam covers • Basics: variables, loops, conditionals • Debugging: Runtime exceptions, types of errors, techniques • OO concepts: classes, objects, encapsulation, information hiding, interfaces, inheritance • CS concepts: sorting, searching, algorithms, numbers in different bases, one-dimensional arrays, pre- and post- conditions, assertions Georgia Institute of Technology
Summary • The AB exam covers • Data Structures • Two-dimensional arrays, linked lists, stacks, queues, trees, heaps, priority queues, sets, maps • Algorithms • Big-Oh notation, worst-case and average-case time and space analysis • Searching using hashing • Sorting using quicksort and heapsort. • Invariants Georgia Institute of Technology