AP Computer Science Principles Ultimate Guide
AP Computer Science Principles Ultimate Guide
Ultimate Guide
Chapter 1: Creative Development
Collaboration
Programming is a collaborative and creative process that brings ideas to life through the
development of software.
Software development processes used in the industry often require students to work
together in teams.
An important concept that is discussed throughout the entire course is the idea of
computing innovations.
A computing innovation uses a computer program to take in data, transform data and
output data.
Collaboration can occur in the planning, designing, or testing (debugging) part of the
development process.
Peer instruction involves students working in pairs or small groups to discuss concepts to
find solutions to problems.
Syntax Error: A mistake in which the rules of the programming language are not followed.
For Example:
a ← expression
DISPLAY (A)
A syntax error in this example occurs because the second statement attempts to display
the variable A, which is not the defined variable. Variable names are case sensitive.
Therefore, while the variable with a lowercase a in lowercase is defined by the first
statement, the variable with a capital A in the second not defined. Therefore, the rules of
the programming language were violated
Runtime Error: A mistake that occurs during the execution of a program that ceases the
execution.
For example:
DISPLAY (5/0)
In this example, there is no syntax error, because the language of the code is used
correctly. However, this causes a runtime error because you cannot divide by zero. The
execution of the program will halt at this line.
Logic Error: A mistake in the algorithm or program that causes it to behave incorrectly or
unexpectedly.
For example:
a 95
IF (a > 90)
DISPLAY("You got an A.")
IF (a > 80)
DISPLAY("You got a B.")
IF (a > 70)
DISPLAY("You got a C.")
The code in intended to correctly printout what grade the student got. Since this particular
student's score was a 95, which is greater than 90, the program should display You got an
A. However, the program actually prints out the following:
You got an A.
You got a B.
You got a C.
This logic error occurs because the students score is also greater than 80 and 70 with no
restriction that prevents multiple grades from being printed.
Overflow Error: A mistake that occurs when a computer attempts to handle a number that
is outside of the defined range of values.
For example:
x - 2000*365
DISPLAY (x)
The result is of the multiplication is a large number. In many languages, this product
would be large enough to be outside the range of certain data types. Therefore, if x is
defined as a variable of one of those data type, this multiplication will cause an overflow
error.
You should use test cases, extra output statements, examination for syntax
errors and other debugging tools to find and fix any errors.
Chapter 2: Data
Binary Numbers
Any digital data has a numerical representation using binary numbers.
A bit is the smallest unit of information stored or manipulated on a computer; it consists of
either zero or one.
Base Conversion
The metadata for the image to be created is 10 x 10; this means the picture will
be 10 pixels across and 10 pixels down.
Music as Bits
An analog signal exists throughout a continuous interval of time and takes on a
continuous range of values.
As such, a digital signal is neither continuous in time nor continuous in its range
of values.
Sampling: is recording an analog signal at regular discrete moments and converting them
to a digital signal.
Data Compression
Data compression: is used everywhere.
Mp3, mp4, rar, zip, jpg, and png files (along with many others) all use compressed data.
Data compression: is useful in computing to save disk space, or to reduce the bandwidth
used when sending data (eg, over the Internet).
Data compression deals with taking a string of bytes and compressing it down to a smaller
set of bytes, whereby it takes either less bandwidth to transmit the string or to store it to
disk.
Lossless algorithms: are those that can reconstruct the original message exactly from the
compresed message, and lossy algorithms can only reconstruct an appsimation of the
original message.
Lossless algorithms are typically used for text, and lowy algorithms for images
and sound where a little bit of loss in resolution is often undetectable, or at least
acceptable.
Lossless compression: packs data in such a way that the compressed package can be
decompressed, and the data can be pulled out exactly the same as it went in.
Lossy compression is a technique that does not decompress digital data back to 100% of
the original.
Lossy methods can provide high degrees of compression and result in smaller
compressed files, but some number of the original pixels, sound waves, or video
frames are removed forever.
Lossy is used in an abstract sense, however, and does not mean random lost
pixels, but instead means loss of a quantity such as a frequency component, or
perhaps loss of noise.
Images: high image compression loss can be observed in photos when enlarged
Music: there is a difference between an MP3 music and a high-resolution audio file
Video: moving frames of video can handle a greater loss of pixels compared to an image
The advancement in technology has promoted the rapid growth of data volume in recent
years.
Data extraction: is the process of obtaining data from a database or software such as a
social media website so that it can transport it to another software (such as spreadsheets)
designed to support online analytical processing.
The final step is to analyze using graphs and other data visualization tools.
Data sources are found in different forms like web pages, emails, and chat video
files, audio files, text documents, customer messages.
Decide the tools needed to read the data, and the repositories such as databases needed
to store the data.
Understand the data patterns and text flow. This should be done using
visualization tools.
Graphs and charts: represent data in points, lines, bars, pie charts, and scatter
plots.
Bar graphs: use either vertical or horizontal bars to represent the values.
Scatter plots: represent the data with points, and then a best-fit line is drawn through
some of the points.
Computer science algorithms: are the set of steps to solve a problem or complete a task.
Run the air conditioner when the room temperature reaches 78°F
Algorithms have the potential to solve many problems once the programs are written for
them to run.
Section of code: may work independently or can be used with other programming
modules.
Data Abstraction
A popular way of defining abstraction is information hiding.
Just as related program statements are bundled together, related program variables can be
bundled together.
Such abstractions allow us to think of the data within a program hierarchically.
A list is an example of data abstraction.
aList[3, 7, 11]
aList is described as a "list of integers."
Within a list, when accessing its parts using an integer index, aList[1] gives us the value 3,
aList[2] = 7, and so on. Lists allow for data abstraction in that we can give a name to a
set of memory cells. For instance, in a colorList, a list that holds three colors ['red', 'blue',
'green'] instead of using three separate variables, colori, color2, etc., one variable
colorList holds all the three variables. Each of the contents of the list is accessed by
changing the index value.
Variables
Variables: are placeholders for values a program needs to use.
A program may need variables for numbers, both integers and real numbers, as well as text
fields and Boolean values.
Variables are data abstractions because we do not need to know the details of how and
where the values are stored in memory.
Strings
Strings: are text fields that are just a series of characters and are denoted with quotation
marks around the string field.
When numbers are part of a string, then they will be considered to be text, like in a street
address.
In this case, you cannot use them in calculations because they are text fields, not
numbers.
Assignment Statements
The variable must be on the left and the assignment arrow points left.
The expression will be evaluated and loaded into the variable celsius.
P Parentheses
E Exponents
M Multiplication
D Division
A Addition
S Subtraction
Boolean Values
Program Statements
All programs can be written using a combination of only three types of statements.
These statements are used over and over and can be combined for more complex needs,
but there are only three.
Sequential
These are statements that are executed as written in order in the program.
As we start writing our programs, a code statement has an action that will be executed
when the program is run.
Naturally, they have to be in the correct order to accurately complete the algorithm.
Selection Statements
Notice that the code to be executed when the condition is true is surrounded by the curly
braces, { }, in the “Text” version.
The code within the braces is indented, which helps with readability.
It also makes it easier to see if you are missing a closing brace }!
Iterative
This type of programming statement also changes the sequence of lines of code that are
executed.
Code that is associated with these statements repeats as many times as specified before
continuing with the rest of the program.
Repeat Until (Condition) Loop
The REPEAT UNTIL loop has a condition to evaluate at each iteration of the loop.
The loop will continue to run while the condition evaluates to “false.”
This is similar to how an IF statement works except the condition for the IF statement must
evaluate to true for it’s code to execute.
Combining Algorithms: One of the key features of algorithms is that once they are
created, you can use them over and over, combine them for more complex problem
solving, or modify them for a new use.
Nested Conditionals
In a program or code snippet where there is an IF statement within another ser of IF
statements, these are called nested IF statements.
When the outer IF statement is executed, the inner IF statement may also get executed.
This allows for the program solution to evaluate another expression after determining the
results of a previous decision.
Common Algorithms
If you have more than two numbers, a computer can still only compare two at a time.
One number would be the current largest (or smallest), and the other would be the next
number to compare it to.
Another common algorithm is calculating the sum and average of a group of numbers.
This is fairly straightforward since it is a concept you have already learned in math class.
One key element to remember is that you need to keep count of how many numbers you
have added together so you will be able to calculate the average.
Lists
Lists: are a collection of items, such as a grocery list or a playlist of music.
A list in a program can be a collection of numbers, words, phrases, or a combination of
these.
Usually a list only contains one type of data in a single list, but some programming
languages do allow different types of data in the same list.
Lists provide the ability to store more than one value in the same variable, separated by
commas, when the variable is defined as a list.
Lists are also called arrays in some programming languages.
List Indices
Individual items in a list are called elements and are accessed by position using an index.
Index positions: are always integers and are enclosed within square brackets [index].
Built-in Methods
Most programming languages will have built-in procedures, or “methods,” of common
functionality to use with lists.
Adding an item to a specific position in a list.
The INSERT command causes elements to the right of the indicated index position, i, to
shift right one position to make room for the new element.
The above statement is a loop that will automatically repeat the code for each element in
the list.
This is called traversing a list.
The programmer chooses the name for the iteration variable “item”.
Each pass of the loop will assign the value of the next element in the list to the variable
“item”.
Processing lists with a FOR EACH loop takes advantage of features of both structures.
Common Algorithms
There are algorithms that are frequently needed for processing lists with iteration.
These include finding the largest or smallest number in a list.
Here is an example using a REPEAT UNTIL loop with a list of grades.
Another common algorithm is finding the sum and average of the values in a list.
Searching
Searching: deals with finding the needed element from everything in the dataset or
determining that it is not there.
Linear Search: Linear searches, also called sequential searches, check each individual
record, starting at the beginning and going to the end, one after the other in order to
either find the desired data or to determine it is not in the dataset.
Binary Search: Binary searches are far more efficient than linear searches.
However, data must be sorted to use a binary search.
Procedures
Procedures: are also called functions in some programming languages.
These are sections of code that will be executed only when they are called by the main
program or another procedure.
They must be defined in a program before they can be used in the program.
Parameters/Arguments
The use of parameters can make procedures more flexible.
They are passed to the procedure as arguments when the procedure is called.
The values sent to the procedure can be different each time, making the procedure more
flexible through the ability for multiple calls to the same section of code.
Calling a Procedure
When the procedure is “called,” the program will pause at that location and execute the
code in the procedure.
When the procedure finishes, control returns back to the line of code where the call
occurred.
This is another programming structure that modifies the sequential flow of the program.
Procedural abstraction: You only need to know the name of the procedure, the number
and type of parameters, and the output to expect.
Random Values
Random number generator programs: are useful tools for writing software, mainly in
designing games.
A random number generator picks a number at random out of a range of values.
Return
Procedures: have an optional feature called a return statement.
The return statement has two uses.
One purpose is to end a procedure before the end of the code is reached.
No other code in the procedure will be executed after the return statement.
The other use is to send a value back to the calling program.
Built-in Procedures: Built-in procedures are prewritten and tested code that are included
with the programming language.
DISPLAY(): DISPLAY() is a built-in procedure used for this course on the exam.
We do not know how this procedure is coded, only that we can use it multiple
times, pass it different types and values to print, and that it works.
INPUT(): It accepts data from the user, usually from the keyboard.
When the programming language sees this command, it will pause the program
and wait for something to be typed on the keyboard.
The API documentation provides the information needed to set up the interface and use
the newly connected software.
Random
Most programming languages have a library of prewritten code for a variety of random
number generators.
RANDOM needs two values passed to it using arguments, the beginning and ending range
for the selected random number.
Simulations: Simulations are designed to represent and mirror the real world for testing.
Analyzing Algorithms
An instance of a problem is a specific example.
An optimization problem is one that should find the best solution for the problem.
Algorithm Efficiency
The efficiency of algorithms deals with resources needed to run it in terms of how long it
will take and how much memory will be needed.
This becomes especially important with extremely large datasets, and efficiency is usually
stated in terms of the size of the input.
Limits of Algorithms
Algorithms have limits, and there are some problems for which we do not have efficient
enough algorithms to solve.
These algorithms can’t run in a reasonable amount of time with our current technology.
Heuristic approach: This is an approach that may not be optimal or the best but is close
enough to use as a solution.
The advantage of simulation tools is that they provide visual demonstrations for different
scenarios, both present and future.
These models are necessary tools for planning and operating traffic systems, as they help
to predict the behavior of vehicles in the traffic system.
Modeling and simulation is a powerful method to evaluate the design of a space system.
Simulation modelsrepresent valuable knowledge that scientists use to build systems to
explore space.
Undecidable/Unsolvable Problems
Decidable problem: is one where an algorithm can be written that results in a correct “yes”
or “no” answer for all inputs.
Undecidable problem: does not have an algorithm that can give a correct “yes” or “no” for
all cases of the problem.
The Internet is very hardware driven with wires, cables, and devices such as routers and
servers.
Routers are computing devices along a path that send the information along to the next
stop on the path.
Bandwidth: is a measure of the maximum amount of data that can be transferred through
a channel or network connection.
It's measured in bits per second, and it determines how quickly you can
download and upload files from the internet.
Internet protocol (IP): is responsible for addressing and routing your online requests.
Transmission control protocol (TCP): is a protocol that defines how computers send
packets of data to each other.
User datagram protocol (UDP): is a protocol that allows computer applications to send
messages without checking for missing packets to save on time needed to retransmit
missing packets.
Scalability
Scalability: is the ability for a system, network or process to handle a growing amount of
work in an efficient manner.
It can also be defined as the capacity to increase services and products quickly with
minimal interruption and cost.
Fault Tolerance
Hardware Failure
Hardware failure: is when a hardware device, such as a computer or printer, stops working
properly due to an issue with the physical components.
The cause of the failure can be anything from electrical wiring issues to incorrect
installation and configuration of hardware components.
In any case, diagnosing and repairing hardware failures can be difficult without proper
tools and experience in dealing with this type of issue.
Operational Failures
Operational failures: are any issues or breakdowns in the operation of a business,
machine, system, process, etc.
They can range from unexpected downtime to incorrect results due to faulty programming.
Operational failures can have significant impacts on profitability and reputation if not
addressed swiftly and appropriately.
Weather
The internet has cables and wires spanning the world that connect computers.
Natural disasters: could cause the hardware to be destroyed, bringing the network activity
to a halt.
They can be carried out by individuals, groups, or organizations with malicious intent.
Cyberattacks typically involve the use of malware such as viruses and ransomware that
allow attackers to gain access to a system for a variety of nefarious purposes including
stealing data and financial information or launching denial-of-service attacks.
Some cyberattack methods used today include phishing campaigns; social engineering
attacks; website defacement; distributed denial of service (DDoS) attacks; SQL injection
exploits; man-in-the middle (MITM) attack vectors etc.
Parallel computing solution takes as long as the longest of the tasks done in parallel.
A parallel computing solution takes as long as its sequential tasks plus the
longest of its parallel tasks.
These can sometimes have a huge impact, positive or negative, on people, and sometimes
have additional results not originally foreseen by the software developers.
World Wide Web: which was originally designed for scientists to share their research.
Targeted advertising: which can be helpful for businesses and consumers when looking
for a specific item.
Social media: which has been used to stream events across the globe, sometimes helps to
change history.
Machine learning and data mining: help find patterns and identify insights in data,
leading to new innovations.
Online learning: is an education model that would not be possible without the tools of
communication available via the Internet.
Programmers and businesses: try to identify potential negative uses, but it is seldom
possible to think of all the ways other people could use an innovation.
Access to Information
Cloud Computing
Cloud computing: offers new ways for people to communicate, making collaboration
easier and more efficient.
Storing documents in the “cloud” simply means they are stored on a computer server at a
location different than where the owner of the files is located.
Digital Divide
Technology has had a major impact on the world, enabling innovation through the sharing
of resources and computational artifacts.
The impact of the digital divide includes access to information, knowledge, markets, and
different cultures.
Bias: which is intentional or unintentional prejudice for or against certain groups of people,
shows up in computing innovations too.
Humans: write the algorithms, and our biases can make their way into the algorithms and
the data used by innovations without us realizing it.
Artificial intelligence programs: are used more and more in ways such as screening
applications of job candidates, determining if a person merits credit to purchase a house,
and locating what areas have more crime.
Crowdsourcing
Crowdsourcing: allows people to share information and ask the “crowd”— anyone who
accesses the site—for feedback, to help solve problems, find employment, or for funding.
Anything a person creates, including any computational artifacts created with a computer,
is the intellectual property of that person.
Material created by someone else that you use in any way should always be cited.
Peer-to-peer networks exist that are used to illegally share files of all types.
Devices that continually monitor and collect data, such as a voice-activated device we
install or video cameras used for facial recognition posted in our communities, can have
legal and/or ethical issues.
Creative Commons
Creative Commons: provides a way for creators of software, images, music, videos, and
any computational artifact to share their creations with stipulations for sharing and
permission from the author clearly indicated.
Digital data: is easy to find, copy, and paste, so ensuring you have written permission from
the creator or owner is important.
Open-Source Software
Open source software: is software that is freely shared, updated, and supported by anyone
who wants to do so.
The availability of this software for everyone has greatly expanded people’s abilities to
participate in a variety of tasks that many would not have been able to participate in
otherwise.
Open Access
The sharing of huge amounts of public data by organizations, such as the U.S. government,
provides the opportunity for anyone to search for information or to help solve problems.
Our browsers keep a list of our most frequently visited sites on their home page to help us
out.
The search engines are able to identify when more people than usual are watching a video
or searching for a topic.
Analytics: identify trends for marketing purposes and help businesses determine what and
where customers are searching for their products and their competitors’ products, how
long an item sits in a virtual shopping cart, and when people buy.
Data Mining
Machine learning uses algorithms to analyze data and predict behavior and is used in
Artificial Intelligence (AI).
Any information that identifies you is considered Personally Identifiable Information (PII).
It also includes data about you, such as your medical or financial information.
Our PII information is also used by websites to show us certain information or related
topics based on our prior visits.
Privacy
Digital footprints and fingerprints: are the trail of little pieces of data we leave behind as
a sign of our presence as we go through our daily lives.
Many people willingly provide personal information to sites to gain access or privileges,
whether it’s through sports teams, shopping, or restaurants.
Their data is stored and may be sold with or without their knowledge or
permission.
Many web browsers now have “incognito” or “private” modes so that web searches and file
downloads are not recorded in the web history.
Some web browsers attest that they do not track and retain your search data.
Many aspects of our lives are much easier today because of the easy access to all sorts of
sites and information that the Internet provides.
This can range from shopping, entertainment, and sports sites to price comparisons.
Cybersecurity: has a global impact because now anyone from anywhere can attempt to
gain unauthorized entry to someone else’s computer, data, servers, or network.
Security
The security of our data deals with the ability to prevent unauthorized individuals from
gaining access to it and preventing those who can view our data from changing it.
Cybersecurity
Cybersecurity: protects our electronic devices and networks from attacks and
unauthorized use.
These attacks can come in many forms and can have a major impact on those
affected.
Data: may be damaged or the device may be used to further spread the malware.
Phishing: attacks create e-mail and/or websites that look a legitimate hoping to induce a
person to click on the malicious link.
Keylogging software: is a form of malware that captures every keystroke and transmits it
to whomever planted it.
Cryptography
Security: also relates to encrypting data before it is transmitted to ensure it remains secure
if it is intercepted during transmission.
Public key encryption: uses open standards, meaning the algorithms used are published
and available to everyone and are discussed by experts and interested parties and known
by all.
The key is what keeps information secret until the person it is intended for
decrypts it.
This means that digital certificates can be purchased from Certificate Authorities
(CAs), which identify trusted sites.