AP CS Exam Overview by pengxuebo


									AP CS Exam Overview

    Barbara Ericson
      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

                       Georgia Institute of Technology
How the Exam is Graded
• Total score is
  – score = multipleChoiceWeight * (# correctAnswers –
    0.25 * #wrongAnswers) + freeResponseWeight *
     • 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)
              A                                    AB
        Max score 80                          Max Score 100
  (1.00 * MC + 1.1111 * FR)             (1.25 * MC + 1.3889 * FR)
  Composite        AP Grade              Composite         AP Grade
    Score                                  Score
60-80          5                     70-100            5
45-59          4                     60-69             4
33-44          3                     41-59             3
25-32          2                     31-40             2
0-24           1                     0-30              1

                     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
• 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,3
• Summary Table of Language Features
  – http://apcentral.collegeboard.com/members/article/1,3
• A Quick Reference Guide
  – http://apcentral.collegeboard.com/members/article/1,3
• AB Quick Reference Guide
  – http://apcentral.collegeboard.com/members/article/1,3
                   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

                       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
   – 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
• You can call inherited public methods
• You can access inherited public fields
• You can access inherited private methods
  – Through public methods
• You can access inherited private fields
  – 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 =
  – this.nickname = theNickname;
    super(theName, thePhoneNumber);
  – this.nickname = theNickname; this.name =
    theName; this.phoneNumber =
               Georgia Institute of Technology
• 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
     • 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
• 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
  – Like Wall in the revised MBCS

                Georgia Institute of Technology
• 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
     • And all methods are resolved starting with the
       object’s class then going up the inheritance tree

                   Georgia Institute of Technology
• 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
• 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
• Books
  – Be Prepared for the AP Computer Science
    Exam in Java Maria Litvin $13.56
  – 125 Multiple-Choice Questions in Java
    Maria Litvin, Gary Litvin $9.95
• On-line practice tests
  – http://eimacs.com/LM/LMPlain.asp?F=beprep
     • Free 30 day trial

                   Georgia Institute of Technology
• 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
• 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

To top