AP CS A Course Description
version 2020 (effective through 2024-2025 school year)
version 2025 (effective beginning 2025-2026 school year)
See "Future AP CS A Revisions" for more details
Course Info Slides ( Also posted to the left)
Aspirations in Computing Award (for women, genderqueer, or non-binary students with strong interests in computer technology)
CodeHS Gitbook (Specifically the "Algorithms & Recursion", plus skipped lessons from "Classes & OOP" and "Data Structures")
In "Classes & OOP", the last 4 lessons (Starting w/ Inheritance).
In "Data Structures", the last 2 lessons (Starting w/ 2D Arrays) -Really, Hashmaps are optional.
CSAwesome (Specifically units 8-15)
Princeton's Interdisciplinary Approach to Computer Science
Think Java Textbook HTML Version PDF Version
Study Material: Library Fiveable
Slides - CS Careers
Vocab - Virginia CS101 Vocab
PracticeIt - CS Washington (Specifically Chapters 7-10, 12-13)
Downloads: Eclipse Java Developer Download JDK Download
Online Java Compiler (Code in browser) - Online GDB CodeHS
Comedy Sketch - The Expert
Though we're not officially an AP course (We're an IB School), we're still going to use the AP CS A prep material to ensure that you're fully prepared for college computer science.
***2025-2026 Edition: AP CS A Quick Reference Beginning Sept. 2025
Skim through the materials in Unit 0 - Ap CS A Overview
Make sure you complete the AP CS A Pretest
Resources:
CS Awesome has several practice test resources, including:
The following percentages are based off of information presented by the teacher @ Berkley High (csa.gigamonkeys.com). This is an approximation based off of data provided by the APCS A documentation page - the information presented some data that didn't agree with itself, so that's why it's a rough estimate.
You are welcome to take the AP CS A test. You should learn enough information between CS1, CS2, and CS3 to pass it, but I always recommend doing some practice tests to find where holes in your understanding are so you know what topics/concepts you need to focus on.
If you'd like to register for the AP CS A test, here's the latest information I received (last updated 2/9/2024):
Deadline to request "Late Test Dates": March 8th 2024
Sign up with a College Board account and enroll in AP Classroom.
Email Michael Simental <SIMENTAL_MICHAEL@salkeiz.k12.or.us> to find out what steps you should specifically follow as a non-West student taking the exam.
AP Exam Registration Cost and Dates
Cost of an AP Exam Late Registration: $138 (early registration has passed)
Deadline: November 7th-March 8th is the late registration window: $40 dollar non-refundable registration deposit due for each exam plus $40 late registration fee per exam (the $80 dollars goes toward the overall $138)
Deadline: March 8th: All registrations must be paid in full.
Any registration not paid in full will be canceled.
No exam registrations will be accepted after this date
How to pay
ALL payments (credit/check) are made directly to West Salem High School
AP Request for Accommodations
All requests for accommodations for students with documented disabilities should be made to Ms. Karla Canida or Mr. Michael Simental in the West Salem Counseling Center by December 15, 2023.
Berkley High School CS Resources
AP Central (Official AP Resources):
Free Response Questions (FRQ)
Youtube - AP CS A Exam Prep 2024
Practice Pages connected to the videos (3 MCQ Worksheets, 5 FRQ worksheets)
Quizlet - AP Comp Sci Vocab Review
Online Curriculum - CSAwesome
Article - Relaxation Techniques to Cope w/ Test Anxiety
Cheat Sheet - Java Quick Reference
Natural Language Processing is a difficult thing for computers to learn. How does a computer take the phrase "Time flies like an arrow" and come to an understanding of its meaning?
In this unit, you'll test chatbots, write a chatbot, and add improvements to the chatbot to explore how to make a program that allows the user to ask questions and get simple responses back. At the same time, you'll be doing some valuable review of CS1 concepts.
Introduction Video - Is ChatGPT finally getting it right? Our 60 year obsession with chatbots
View the Magpie and Review Unit Overview. Complete the tasks assigned within.
Expected length of time: 3-5 class days
1D arrays should be pretty easy to use, but 2D arrays offer many challenges. To simplify our learning, we're going to utilize CodeHS and tack on some CodeWars challenges.
View the 2D Array Unit Overview. Complete the tasks assigned within.
Challenges
Mathorama Picture Lab
In a Google Doc, document all questions for each unit, as well as copy & paste code for exercises. Organize the document so it's easy to traverse and find the various questions and activities for each unit.
Picture Lab Activity 1 Introduction to Digital Pictures and Color
Picture Lab Activity 2 Picking a Color
Picture Lab Activity 3 Exploring a Picture
Picture Lab Activity 4 Two-Dimensional Arrays in Java
Picture Lab Activity 5 Modifying a Picture
For the fixUnderwater exercise, there's a few solutions. Here's some ideas:
Easy solution: Reds are all really low. If you multiply all the reds by 2, 3, 4, 5, etc., you should start to see the fish get brighter and brighter. Stop when the effect is no longer improving the ability to see the fish.
Complex solutions: Try adjusting the brightness or contrast of the image.
Picture Lab Activity 6 Mirroring Pictures
Picture Lab Activity 7 Mirroring Part of a Picture
Picture Lab Activity 8 Creating a Collage
Picture Lab Activity 9 Simple Edge Detection
Picture Lab Bonus Chromakey
Picture Lab Bonus 2 Steganography
Extra Resource: Runestone's Picture Lab
Geeks for Geeks Sorting Algorithms
Write and share a Google Doc with me that covers sorting algorithms.
Make sure to include the following algorithms
Find 2 additional sorting algorithms (They don't have to be from any of the links provided)
For every sorting algorithm chosen, provide the following:
Name of the sorting algorithm
Description/purpose of the sorting algorithm
Situation when the sorting algorithm performs better (or is more useful)
Efficiency (BigO)
Algorithm pseudocode or step-by-step description of what the algorithm does.
Big O Notation
Add the following content to your Sorting Algorithm document.
What is BigO notation for? Describe it in your own words (Use more than simply the word "efficiency")
List out the typical BigO values (1, logn, n, nlogn, n^2, 2^n)
For each BigO value, describe what makes it like that.
Example: an algorithm is a BigO(n) because it has 1 loop that goes through all n items (or it has to loop through every item). If you have 100 items (n), you have to loop 100 times.
For each BigO value, list 2 algorithms/situations that have a BigO of that type.
Example: a simple linear search is a BigO(n) because it might have to go through every item in the list. In all reality, it will have an average of BigO(n/2), but BigO tends to lean towards the worst case scenario.
CSAwesome - Inheritance
Key Concepts to study
UML Diagrams for visuals
Superclass (parent) vs Subclass (child)
All public or protected data/functions is accessible to the child.
Private data/functions are part of the child, but not directly accessible by the child.
Super = classes' parent (not instance's parent)
Super keyword for Constructors
Super keyword for other functions
is-a vs has-a
Overriding vs Overloading
Polymorphism
Mick's Wicks
Mick’s Wicks makes candles in various sizes.
Create a class for the business named Candle that
contains data fields for color, height, and price.
The constructor should take in a color and hight, but not a price. The constructor should call the "setHeight" function to set the height and calculate/set the price based on info presented a few bullet points down.
Create get methods for all three fields.
Create set methods for color and height, but not for price.
When height is set (setHeight function), determine the price as $2 per inch.
Create a child class named ScentedCandle that
contains an additional data field named scent and methods to get and set it.
In the child class, override the parent’s setHeight() method to set the price of a ScentedCandle object at $3 per inch.
Write an application that instantiates an object of each type and displays the details.
In both classes, consider adding any additional functions you consider useful for these classes (like a toString)
Google Search - Recursion (click on the "Did you mean: Recursion"
Recursion is a major jump in computer science education. This is often a stumbling block for students that holds them in place until they finally get a grasp on this concept.
Basic idea: Create a function that calls itself.
Infinite recursion (No base case to stop looping)
Stack overflow error (Using up too much memory (probably on account of infinite recursion)
The Recursive Book of Recursion (Book done in Python, but concepts transferrable to Java)
Factorial
Fibonacci
Extra Challenges
Youtube - Algorithm Bias
Test - Practice Test 1
Prior to starting, make sure you read the instructions and analyze the code. In this project you have 2 objects:
StringPart
Represents an index (starting position) and a length (how long a substring is).
Functions
2 Constructor (all-param, no-param)
2 getters
0 Setters
toString
StringCoder
Represents a "master string" (some text containing every letter of the alphabet at least 1x)
2 Constructors (all-param, no-param)
Functions
findPart - This function finds the start & length of a given String in the masterString.
decodeString - you're responsible for programming this in Part1
encodeString - You're responsible for programming this in Part2
You should consider using findPart to solve this problem as it completes some of the process for you...
With this knowledge, complete the following 2 FRQ's.
FRQ - StringCoder Part A
FRQ - StringCoder Part B
AP CS A 2024 FRQ's
AP CS A 2023 FRQ's
#1 - Appointment Book
If I can get things organized, I'll start posting material down here in the order that I want them done... If I don't, just go through these items 1 folder and 1 item at a time... It's not a complete course yet, so we'll figure things out as we go.