AP Computer Science: Difference between revisions
m Fcarmody moved page AP Computer Science (A & AB) to AP Computer Science over redirect |
No edit summary |
||
Line 4: | Line 4: | ||
==AP Computer Science A== |
==AP Computer Science A== |
||
[AP Computer Science A] emphasizes [[object-oriented programming]] methodology with an emphasis on problem solving and [[algorithm]] development. It also includes the study of data structures and abstraction, but these topics were not covered to the extent that they were covered in AP Computer Science AB. The [[Microsoft]]-sponsored program [[Technology Education and Literacy in Schools]] (TEALS) aims to increase the number of students taking AP Computer Science classes.<ref name="Bishop2012-07-27">{{cite news |last=Bishop |first=Todd |date=2012-07-27 |title=Geek of the Week: Kevin Wang is putting computer scientists into high schools |url=http://www.geekwire.com/2012/kevin-wang/ |newspaper=[[GeekWire]] |accessdate=2015-07-05 |archiveurl=http://www.webcitation.org/6Zo1zm7iP |archivedate=2015-07-05 }}</ref> |
|||
==AP Computer Science AB (discontinued)== |
==AP Computer Science AB (discontinued)== |
||
[AP Computer Science AB] included all the topics of AP Computer Science A, as well as a more formal and a more in-depth study of [[algorithms]], [[data structures]], and [[data abstraction]]. For example, [[binary trees]] were studied in AP Computer Science AB but not in AP Computer Science A. The use of [[Recursion (computer science)|recursive]] data structures and [[dynamic allocation|dynamically allocated]] structures were fundamental to AP Computer Science AB. Due to low numbers of students taking the AP Computer Science AB exam, it was discontinued after the 2008-2009 year.<ref>Cech, Scott J., [http://www.edweek.org/ew/articles/2008/04/09/32ap.h27.html "College Board Intends to Drop AP Programs in Four Subjects"], Education Week, 9 April 2008</ref> |
|||
==AP Computer Science A Topic outline== |
|||
Topics covered by the course include:<ref>{{cite web |url=http://apcentral.collegeboard.com/apc/public/repository/ap-computer-science-course-description.pdf |title=Computer Science A Course Description |format=PDF |pages=8–10 |publisher=College Board |date=Fall 2010 |accessdate=5 March 2012}}</ref><ref>{{cite web |url=http://apcentral.collegeboard.com/apc/public/repository/ap09_compsci_coursedesc.pdf |title=Computer Science A Computer Science AB Course Description |format=PDF |date=May 2009 |pages=10–13 |publisher=College Board |accessdate=5 March 2012}}</ref> |
|||
*[[Object-oriented analysis and design|Object-Oriented Program Design]] |
|||
**Program Design |
|||
***Read and understand a problem's description, purpose, and goals. |
|||
***Specify the purpose and goals for a problem. (AB only) |
|||
***Apply [[abstract data type|data abstraction]] and encapsulation. |
|||
***Read and understand class specifications and relationships among the classes ("[[is-a]]", "[[has-a]]" relationships). |
|||
***Decompose a problem into classes, define relationships and responsibilities of those classes. (AB only) |
|||
***Understand and implement a given class hierarchy. |
|||
***Identify reusable components from existing code using classes and class libraries. |
|||
**Class Design |
|||
***Design and implement a class. |
|||
***Design and implement a set of interacting classes. (AB only) |
|||
***Design an interface. |
|||
***Choose appropriate data representation and algorithms. |
|||
***Choose appropriate advanced data structures and algorithms. (AB only) |
|||
***Apply functional decomposition. |
|||
***Extend a given class using inheritance. |
|||
*Program [[Implementation]] |
|||
**Implementation techniques |
|||
***[[Methodology (software engineering)|Methodology]] |
|||
****[[Object-oriented programming|Object-oriented]] development |
|||
****[[Top-down and bottom-up design|Top-down development]] |
|||
****Encapsulation and information holding |
|||
****Procedural [[Abstraction (computer science)|abstraction]] |
|||
**Programming constructs |
|||
***[[Primitive types]] vs. [[Object (computer science)|objects]] |
|||
***[[Declaration (computer science)|Declaration]] |
|||
****[[Variable (programming)#Constants|Constant]] declarations |
|||
****[[Variable (programming)|Variable]] declarations |
|||
****[[Class (computer science)|Class]] declarations |
|||
****[[Interface (computer science)|Interface]] declarations |
|||
****[[Method (computer science)|Method]] declarations |
|||
****[[Parameter (computer science)|Parameter]] declarations |
|||
***[[System console|Console]] [[output (computing)|output]] (System.out.print/println) |
|||
***[[Control flow|Control]] |
|||
****Methods |
|||
****[[Sequential]] |
|||
****[[Conditional (programming)|Conditional]] |
|||
****[[Iterations]] |
|||
****[[Recursion]] |
|||
**Java library classes (included in the A or AB-level AP Java Subset) |
|||
*Program Analysis |
|||
**[[Software testing|Testing]] |
|||
***Test classes and libraries in isolation |
|||
***Identify boundary cases and generate appropriate test data |
|||
***Perform integration testing |
|||
**[[Debugging]] |
|||
***Categorize errors: [[Syntax error|compile time]], runtime, [[Logic error|logic]] |
|||
***Identify and correct errors |
|||
***Techniques: use a debugger, add extra output statements, hand-trace code |
|||
**Understand and modify existing code |
|||
**Extend existing code using inheritance |
|||
**Understand [[Exception handling|error handling]] |
|||
***Understand runtime exceptions |
|||
***Throw runtime exceptions (AB only) |
|||
**Reason about programs |
|||
***[[Precondition]]s and [[postcondition]]s |
|||
***[[Assertion (computing)|Assertions]] |
|||
***[[Invariant (computer science)|Invariants]] (AB only) |
|||
**Analysis of algorithms |
|||
***Informal comparisons of running times |
|||
***Exact calculation of statement execution counts |
|||
***[[Big O notation]] (AB only) |
|||
***[[Best, worst and average case|Worst-case and average-case]] time and [[Information space analysis|space analysis]] (AB only) |
|||
**Numerical representations and limits |
|||
***Representations of numbers in different [[Radix|bases]] |
|||
***Limitations of finite representations (e.g., [[integer]] bounds, imprecision of [[floating-point]] representations, and [[round-off error]]) |
|||
*Standard [[Data Structures]] |
|||
**Simple [[data types]] ([[Integer (computer science)|int]], [[boolean data type|boolean]], [[Double precision|double]]) |
|||
**[[Class (computer science)|Classes]] |
|||
**One-dimensional [[array data structure|arrays]] |
|||
**Two-dimensional arrays |
|||
**[[Linked lists]] (singly, doubly, circular) (AB only) |
|||
**[[Stack (data structure)|Stacks]] (AB only) |
|||
**[[Queue (data structure)|Queues]] (AB only) |
|||
**[[Tree (data structure)|Trees]] (AB only) |
|||
**[[Heap (data structure)|Heaps]] (AB only) |
|||
**[[Priority queues]] (AB only) |
|||
**[[Set (computer science)|Sets]] (AB only) |
|||
**[[Associative array|Maps]] (AB only) |
|||
*Standard Algorithms |
|||
**Operations on data structures listed above |
|||
***Traversals |
|||
***Insertions |
|||
***Deletions |
|||
***[[Iterators]] (AB only) |
|||
**[[Search algorithm|Searching]] |
|||
***[[Linear search|Sequential]] |
|||
***[[Binary search algorithm|Binary]] |
|||
***[[Hash function|Hashing]] (AB only) |
|||
**[[Sorting algorithm|Sorting]] |
|||
***[[Selection sort|Selection]] |
|||
***[[Insertion sort|Insertion]] |
|||
***[[Mergesort]] |
|||
***[[Quicksort]] (AB only) |
|||
***[[Heapsort]] (AB only) |
|||
*Computing in Context |
|||
**Major hardware components |
|||
***[[Primary memory|Primary]] and [[Secondary storage|secondary]] memory |
|||
***[[Processors]] |
|||
***[[Peripherals]] |
|||
**System software |
|||
***Language translators/[[compilers]] |
|||
***[[Virtual machines]] |
|||
***[[Operating systems]] |
|||
**Types of systems |
|||
***Single-user systems |
|||
***[[Computer networking|Networks]] |
|||
**Responsible use of computer systems |
|||
***[[Reliable system design|System reliability]] |
|||
***Privacy |
|||
***Legal issues and [[intellectual property]] |
|||
***Social and ethical ramifications of computer use |
|||
==AP Computer Science exam== |
|||
Since 2003, the AP Computer Science exam has tested students on their knowledge of computer science through [[Java (Sun) | Java]]. Before 1999, the AP exam tested students on their knowledge of [[Pascal Programming Language|Pascal]]. From 1999 to 2003, the exam tested students on their knowledge of [[C++]] instead. The AP exam in Computer Science was first offered in 1984. |
|||
The exam is composed of two sections: |
|||
*Section I: Multiple Choice [1 hour and 15 minutes for 40 multiple-choice questions] |
|||
*Section II: Free-Response [1 hour and 45 minutes for 4 problems involving extended reasoning] |
|||
As of 2015, the Multiple Choice section was extended by 15 minutes while the Free-Response section was reduced by 15 minutes for the following: |
|||
*Section I: Multiple Choice [1 hour and 30 minutes for 40 multiple-choice questions] |
|||
*Section II: Free-Response [1 hour and 30 minutes for 4 problems involving extended reasoning] |
|||
==Case Studies and labs== |
|||
Historically, the AP exam has used several programs in its free-response section to test students' knowledge of object-oriented programs without requiring them to develop an entire environment. This practice has been discontinued as of the 2014-15 school year. There will be no question on the specific content of the labs on the AP exam. Instead, there will be questions that test the concepts developed in the labs. The College Board has instead created three new labs which instructors are invited to use, but they are optional and are not tested on the exam. These are three labs:<ref name="labreq">{{cite web | url=http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/221994.html | title=New Computer Science A Lab Requirement | accessdate=10 July 2014}}</ref> |
|||
(1) The Magpie Lab |
|||
(2) The Elevens Lab |
|||
(3) The Picture Lab |
|||
==Discontinued Case Studies== |
|||
===Marine Biology Case Study=== |
|||
The Marine Biology Simulation Case Study (MBCS) was a program written in [[C++]] until 2003, then in [[Java (programming language)|Java]], for use with the A and AB examinations. It served as an example of [[object-oriented programming]] (OOP) embedded in a more complicated design project than most students had worked with before. It replaced the Big Integer case study that was in use prior to 2000. |
|||
The case study was designed to allow the [[College Board]] to quickly test a student's knowledge of [[object oriented programming]] ideas such as [[Inheritance (computer science)|inheritance]] and [[encapsulation (computer science)|encapsulation]] while requiring students to understand how objects such as "the environment", "the fish", and the simulation's control module interact with each other without having to develop the entire environment independently, which would be quite time consuming. The case study also gives all students taking the AP Computer Science exams with a common experience from which to draw additional test questions. |
|||
On each of the exams, at least one free-response question was derived from the case study. There were also five multiple-choice questions that are derived from the case study. |
|||
This case study was discontinued from 2007, and was replaced by [[GridWorld]]. |
|||
===GridWorld Case Study=== |
|||
{{main|GridWorld}} |
|||
The [[GridWorld]] Case Study was used as a substitute for writing a single large program as a culminating project. Due to obvious time restraints during the exam, the GridWorld Case Study was provided by the College Board <!-- commented out direct link just in case it can be used as a reference in the future [http://apcentral.collegeboard.com/apc/public/repository/GridWorldCode.zip]--> to students prior to the exam. Students were expected to be familiar with the classes and interfaces (and how they interact) before taking the exam. The case study was divided into five sections, the last of which was only tested on the AB exam. |
|||
Roughly five multiple-choice questions in Section I were devoted to the GridWorld Case Study, and it was the topic of one free response question in Section II. |
|||
GridWorld has been discontinued and replaced with a set of labs for the 2014-2015 school year. |
|||
==Grade distributions for AP Computer Science A== |
|||
In the 2014 administration, 39,278 students took the exam. The mean score was a 2.96 with a standard deviation of 1.55. The grade distribution since 2003 was: |
|||
{|class="wikitable" |
|||
!Score |
|||
!2003 |
|||
!2004 |
|||
!2005 |
|||
!2006 |
|||
!2007 |
|||
!2008 |
|||
!2009 |
|||
!2010 |
|||
!2011 |
|||
!2012<ref>{{cite web | url=http://apcentral.collegeboard.com/apc/public/repository/ap12_comp_sci_A_ScoringDist.pdf | title=AP Computer Science A 2012 Score Distribution | publisher=College Board | accessdate=12 January 2014}}</ref> |
|||
!2013<ref>{{cite web | url=http://media.collegeboard.com/digitalServices/pdf/ap/apcentral/ap13_comp_sci_A_ScoringDist.pdf | title=AP Computer Science A 2013 Score Distribution | publisher=College Board | accessdate=12 January 2014}}</ref> |
|||
!2014<ref>{{cite web | url=http://media.collegeboard.com/digitalServices/pdf/research/2014/STUDENT-SCORE-DISTRIBUTIONS-2014.pdf | title=Student Score Distribution | publisher=College Board | accessdate=28 February 2015}}</ref> |
|||
!2015<ref>{{cite web | url=http://www.totalregistration.net/AP-Exam-Registration-Service/2015-AP-Exam-Score-Distributions.php | title=2015 AP Exam Score Distributions | publisher= Total Registration |accessdate=8 July 2015}}</ref> |
|||
|- |
|||
|5 |
|||
|17.1% |
|||
|18.6% |
|||
|17.9% |
|||
|21.9% |
|||
|19.3% |
|||
|21.7% |
|||
|23.2% |
|||
|26.3% |
|||
|24.9% |
|||
|23.6% |
|||
|26.6% |
|||
|21.3% |
|||
|24.4% |
|||
|- |
|||
|4 |
|||
|24.5% |
|||
|23.6% |
|||
|23.2% |
|||
|22.2% |
|||
|22.8% |
|||
|21.7% |
|||
|25.7% |
|||
|24.7% |
|||
|24.8% |
|||
|24.3% |
|||
|26.6% |
|||
|23.1% |
|||
|24.6% |
|||
|- |
|||
|3 |
|||
|19.6% |
|||
|15.3% |
|||
|14.9% |
|||
|14.4% |
|||
|14.5% |
|||
|13.9% |
|||
|13.2% |
|||
|13.9% |
|||
|14.2% |
|||
|15.6% |
|||
|13.9% |
|||
|16.8% |
|||
|15.3% |
|||
|- |
|||
|2 |
|||
|9.2% |
|||
|9.4% |
|||
|9.9% |
|||
|7.7% |
|||
|9.5% |
|||
|9.0% |
|||
|8.2% |
|||
|7.9% |
|||
|7.9% |
|||
|7.7% |
|||
|7.0% |
|||
|7.7% |
|||
|7.1% |
|||
|- |
|||
|1 |
|||
|29.6% |
|||
|33.1% |
|||
|34.0% |
|||
|33.7% |
|||
|33.9% |
|||
|33.7% |
|||
|29.8% |
|||
|27.1% |
|||
|28.2% |
|||
|28.7% |
|||
|25.9% |
|||
|31.1% |
|||
|28.6% |
|||
|- |
|||
|Mean |
|||
|2.90 |
|||
|2.85 |
|||
|2.81 |
|||
|2.91 |
|||
|2.84 |
|||
|2.89 |
|||
|3.04 |
|||
|3.15 |
|||
|3.10 |
|||
|3.06 |
|||
|3.21 |
|||
|2.96 |
|||
|3.09 |
|||
|- |
|||
|Students |
|||
|14,674 |
|||
|14,337 |
|||
|13,924 |
|||
|14,662 |
|||
|15,049 |
|||
|15,537 |
|||
|16,622 |
|||
|20,120 |
|||
|22,176 |
|||
|26,103 |
|||
|31,117 |
|||
|39,278 |
|||
| 48,994 <ref>{{cite web | url=https://secure-media.collegeboard.org/digitalServices/pdf/research/2015/Program-Summary-Report-2015.pdf | title=PROGRAM SUMMARY REPORT | publisher=College Board | accessdate=27 October 2015}}</ref> |
|||
|} |
|||
==Grade distributions for AP Computer Science AB== |
|||
AP Computer Science AB Examination has been discontinued as of May 2008. |
|||
In the 2008 administration, 4,995 students took the exam.<ref>{{cite web |url=http://www.collegeboard.com/student/testing/ap/compsci_ab/dist.html?comsciab |title=2008 Computer Science AB Grade Distribution |archiveurl=http://web.archive.org/web/20090620160536/http://www.collegeboard.com/student/testing/ap/compsci_ab/dist.html?comsciab |archivedate=20 June 2009 |publisher=College Board |accessdate=5 March 2012}}</ref> The mean score was a 3.52. The grade distribution for 2008 was: |
|||
{|class="wikitable" |
|||
!Score |
|||
!Percent |
|||
|- |
|||
|5 |
|||
|38.9% |
|||
|- |
|||
|4 |
|||
|19.1% |
|||
|- |
|||
|3 |
|||
|15.1% |
|||
|- |
|||
|2 |
|||
|9.0% |
|||
|- |
|||
|1 |
|||
|18.0% |
|||
|} |
|||
==AP Computer Science Principles== |
==AP Computer Science Principles== |
||
[AP Computer Science Principles] encourages the application of creative processes while developing artifacts to solve problems. The course focuses on learning to create computational artifacts. Students enrolled in the course learn the role and impact of technology and programming in society. Students also develop an appreciation of programming and technology as a way to personally significant artifacts and an understanding of programming and technology as a way to to create solutions to computational problems. The courses focuses on an iterative approach to creation of programmatic and digital artifacts similar to the processes used by professional engineers and computer scientists. AP Computer Science Principles is expressly designed to encourage participation in computer science by under represented student communities by allowing flexibility in instruction for the use of a variety of computing tools and languages. The course introduces students to a survey of computing topics and provides a comprehension of fundamental programming, the wide variety of applications of programming and programmings trans-formative potential for our global society. <ref name="NSF2014-12-08">{{cite news|title=College Board launches new AP Computer Science Principles course|url=http://www.nsf.gov/news/news_summ.jsp?cntn_id=133571|accessdate=2016-02-22|agency=National Science Foundation|publisher=National Science Foundation|date=2014-12-08|archiveurl=http://www.webcitation.org/6fUSSVCWp |archivedate=2016-02-22 }}</ref> |
|||
A new exam, titled '''Advanced Placement Computer Science Principles''' is going to be available in the 2016-2017 school year. It is designed not to be a replacement for AP Computer Science A, but rather as a parallel option that will focus on computational thinking and fluency. |
|||
==References== |
==References== |
Revision as of 21:44, 22 February 2016
![]() |
Advanced Placement Computer Science (also called AP Comp Sci, APCS, AP Java, or CSAP) is an Advanced Placement course and examination offered by the College Board to high school students as an opportunity to earn college credit for a college-level computer science course. AP Computer Science A[1] is meant to be the equivalent of a first-semester course in computer science. The AP exam currently tests students on their knowledge of Java. AP Computer Science AB, which was equivalent to a full year, was discontinued following the May 2009 exam administration.[2] The current Chief Reader for AP Computer Science is Liz Johnson,[3] associate professor of computer science at Xavier University.
AP Computer Science A
[AP Computer Science A] emphasizes object-oriented programming methodology with an emphasis on problem solving and algorithm development. It also includes the study of data structures and abstraction, but these topics were not covered to the extent that they were covered in AP Computer Science AB. The Microsoft-sponsored program Technology Education and Literacy in Schools (TEALS) aims to increase the number of students taking AP Computer Science classes.[4]
AP Computer Science AB (discontinued)
[AP Computer Science AB] included all the topics of AP Computer Science A, as well as a more formal and a more in-depth study of algorithms, data structures, and data abstraction. For example, binary trees were studied in AP Computer Science AB but not in AP Computer Science A. The use of recursive data structures and dynamically allocated structures were fundamental to AP Computer Science AB. Due to low numbers of students taking the AP Computer Science AB exam, it was discontinued after the 2008-2009 year.[5]
AP Computer Science Principles
[AP Computer Science Principles] encourages the application of creative processes while developing artifacts to solve problems. The course focuses on learning to create computational artifacts. Students enrolled in the course learn the role and impact of technology and programming in society. Students also develop an appreciation of programming and technology as a way to personally significant artifacts and an understanding of programming and technology as a way to to create solutions to computational problems. The courses focuses on an iterative approach to creation of programmatic and digital artifacts similar to the processes used by professional engineers and computer scientists. AP Computer Science Principles is expressly designed to encourage participation in computer science by under represented student communities by allowing flexibility in instruction for the use of a variety of computing tools and languages. The course introduces students to a survey of computing topics and provides a comprehension of fundamental programming, the wide variety of applications of programming and programmings trans-formative potential for our global society. [6]
References
- ^ AP Computer Science A Home Page, The College Board
- ^ AP Computer Science AB Home Page
- ^ Johnson, Dr. Liz [1]
- ^ Bishop, Todd (2012-07-27). "Geek of the Week: Kevin Wang is putting computer scientists into high schools". GeekWire. Archived from the original on 2015-07-05. Retrieved 2015-07-05.
- ^ Cech, Scott J., "College Board Intends to Drop AP Programs in Four Subjects", Education Week, 9 April 2008
- ^ "College Board launches new AP Computer Science Principles course". National Science Foundation. National Science Foundation. 2014-12-08. Archived from the original on 2016-02-22. Retrieved 2016-02-22.