Subjects

Subjects

More

AP Computer Science Principles Full Review

5/8/2023

526

22

Share

Save


Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p)
Edited by: Gaby Querino
AP COMPUTER SCIENCE
PRINCIPLES STUDY GUIDE
1.

Sign up

Sign up to get unlimited access to thousands of study materials. It's free!

Access to all documents

Join milions of students

Improve your grades

By signing up you accept Terms of Service and Privacy Policy

Information from: Fiveable (https://library.fiveable.me/ap-comp-sci-p) Edited by: Gaby Querino AP COMPUTER SCIENCE PRINCIPLES STUDY GUIDE 1.1 Creative Development and Collaboration Computing Innovations Computing innovations, according to the College Board, are innovations that use a program as a key part of their function. Put simply, they wouldn't operate without a computer program making them work. If you can use the word "computer" or "coded" when describing this innovation, it's probably a computing innovation. Another way to identify computing innovations is to think about data. Does the innovation you're thinking of collect data and use it when operating? If so, you've probably got a computing innovation on your hands. Computing innovations can be both physical and non-physical, and they come in all shapes and sizes. Examples of Computing Innovations: Physical ● Self-driving cars ● Smart appliances (fridges/watches/toasters) ● Tablets (Kindles/iPads) ● Smart Phones • Gaming devices (Nintendo Switch/Xbox) ● Robots (Roombas, for instance) Non-Physical Picture Editing Software (Photoshop/Adobe Lightroom) ● Word Processors (Word/Pages/Google Docs) ● Communication platforms (email/text messaging/video conferences) Digital video games (Dark Souls/Minecraft/Super Mario Kart) Applications (iPhone Apps) Even some concepts, like e-commerce or social networking, count Collaboration in Computer Science While a lot of code-writing is independent by nature, the computer science field has a lot more collaboration in it than you'd think. Programmers of all sorts have to work with coworkers and bosses when dealing with large projects. They also have to work with...

Can't find what you're looking for? Explore other subjects.

Knowunity is the # 1 ranked education app in five European countries

Knowunity was a featured story by Apple and has consistently topped the app store charts within the education category in Germany, Italy, Poland, Switzerland and United Kingdom. Join Knowunity today and help millions of students around the world.

Ranked #1 Education App

Download in

Google Play

Download in

App Store

Knowunity is the # 1 ranked education app in five European countries

4.9+

Average App Rating

13 M

Students use Knowunity

#1

In Education App Charts in 11 Countries

900 K+

Students uploaded study notes

Still not sure? Look at what your fellow peers are saying...

iOS User

I love this app so much [...] I recommend Knowunity to everyone!!! I went from a C to an A with it :D

Stefan S, iOS User

The application is very simple and well designed. So far I have found what I was looking for :D

SuSSan, iOS User

Love this App ❤️, I use it basically all the time whenever I'm studying

Alternative transcript:

their clients to make sure what they're coding meets client needs. Different people have different backgrounds, perspectives and ways of thinking. Here are some ways such diversity is helpful when creating a computing innovation: ● ● ● ● More hands working on a project can sometimes get it done faster than one person can alone, (despite what the results of your last group project might indicate). Thanks to the multiple perspectives on deck, more discoveries can be made. Biases can be avoided during the development process, creating a more inclusive innovation. Working with users and clients specifically during the development process can ensure that the finished product is one everyone is happy with, saving both time and energy. Of course, collaboration only works to its fullest when the final product represents all the different ideas and contributions of the people that produced it. This isn't always possible, but it's a goal to shoot for! Especially in AP CSP. Collaboration Between Users and Developers During the creation of a computing innovation, users and developers will communicate with each other. For example, video games will have testers that check the product for bugs and report them to the developers. Often, this conversation begins even before the product is made. Some companies will conduct market research to determine what features would be best to include in their newest innovations. [link to crowdsourcing] However, communication doesn't stop there! Even after the product is released, developers will often ask for feedback and offer areas for users to report any problems they may have. Computing Developments that Foster Collaboration Collaboration between programmers isn't a new concept. The computer science field has several models designed to foster collaboration, such as pair programming. </> Image source: Mateus Chagas at Portuguese Wikipedia Pair programming is a programming model where two people share one computer. One person codes while the other person oversees the work, and the two often switch places. At the same time, the internet makes collaboration between developers easier. You can see a version of this in your own life: most people today use Google Docs or Slides to work on shared projects. Here are some examples for programmers: ● Project management tools: These tools allow programmers to track tasks, assign work, and manage projects in real-time, with features such as task tracking, project timelines, and collaboration features. Examples include Basecamp and Trello. Collaborative document editing tools: There are also programs that allow you to code on the same coding document at the same time. Examples include Microsoft's Visual Studio Live Share software. ● ● Ways to be a Good Team Player! In the AP CSP class, there are times where you'll have to collaborate with others to work on projects in class. The final Create project also gives you the option to work with another person during the development phases of the project. Github and Bitbucket are famous examples of collaborative development websites where multiple people can work on the same project and share documents. Here are some tips, AP CSP-style, to make your collaborative team the most successful it can be! ● The biggest tip I have is to communicate kindly and often. In 1.3 Program Design and Development we'll talk about ways to communicate within a code document. Create norms such as establishing team roles or policies to help mediate any conflicts that might arise. It's important to have everyone on the same page. It's very easy for the stronger coders or more assertive people in a team to take over the whole project, which can make a team unbalanced. Practice consensus building within your team by listening to every member within it and taking their perspectives into consideration. A team project is a team effort, and that means everyone in the group needs to have a say. Sometimes, that might mean compromise. ● ● 1.2 Program Function and Purpose The last guide was about the people needed to make a computing innovation. In this guide, we'll be discussing another fundamental basis of computing innovations: a program's function and purpose. In this first question, you're asked to describe the purpose, input, and output of a program, all words covered in this topic. So, let's get started by looking at the purpose of computing innovations. Computing Innovations and Their Purposes The purpose of a computing innovation is what it's designed to do. Solving problems is one of the major purposes of computing innovations. For example, text messaging and video-chat platforms solve the problem of needing to communicate quickly over long distances. This doesn't have to be a complicated problem like climate change or income inequality. To go back to our adding program, that program solves the "problem" of needing to add two numbers together. A computing innovation can also be a form of creative expression. ● For example, making a video game, or creating a program that draws squares on a screen, are examples of designing a computing innovation as a form of creative expression. Having a clear purpose for a computing innovation is like having a good thesis for an essay. It focuses the work of creating the innovation and establishes what the goals of the innovation are. In short, it strengthens the coder's ability to make the thing they want to make. Concepts to Know purpose of computing innovations solving problems creative expression mportance of a clear purpose Programs and Code Segments... with Cake Source: GIPHY, from Reddit A program is a collection of instructions that a computing device executes, or carries out. Programs are also known as software or applications. ● A program is like a cake recipe. Just as we can bake a cake by following each step of the recipe, a computer operates by following each step the program tells it to do. Within a program, you have code segments. ● A code segment is a smaller collection of statements that are part of a program. It's like the part of a cake recipe that tells you how to make the frosting. There's no clear definition of what separates one code segment from another, so, in theory, you can take any collection of lines to be a code segment. Each code segment is made up of statements, or individual instructions. It's like a line in your recipe that says, "Crack three eggs into the bowl." In summary, a computer program is made up of code segments, which themselves are made up of statements. Describing Programs A program can be described in a broad sense by what it does. Programs run on inputs and outputs and exhibit specific behaviors. We'll describe these more in the next few passages. Concepts to Know program inputs program behaviors code statements program outputs code segments Program Inputs programs/software/applications Programs run on inputs, which are pieces of data that a computer takes in and processes. For example, the two numbers you need to add in an adding program are the inputs for that program. These inputs can be directly submitted by the user or they can come from other programs. The above example is a user-submitted input. Types of Inputs ● Auditory (ex: spoken words or music notes input into a sound processor) Visual (ex: photos input into a photo editor) Tactile (ex: strokes of a keyboard, swipes on a touchscreen) Text (ex: words input into a translation program or numbers input into a calculator) Program Outputs If program inputs are data that a computer takes in, program outputs are the data that the computer returns. In the adding program example, the program output is the final sum that the program returns. Types of Outputs Outputs can be in any of the formats inputs can be in. Auditory (ex: music that plays when you press a play button) Visual (ex: an edited photo from a photo editor) Tactile (ex: a video game controller vibrating in response to in-game movement) ● Text (ex: translated text from a translation program) ● ● CPU, Memory, Input & Output by Khan Academy and Code.org Program Events In order for a program to receive inputs, an event needs to happen. A program event is simply an action that gives a program data to respond to. For example, pressing the left arrow causes a video game's program to make an avatar go left. Pressing the key is the event in this case. Events cause programs to change how they're running. In the previous example, pressing the left key caused a change. If the arrow hadn't been pressed, the avatar would've kept moving in the direction it was before (or standing still, as the case may be.) Examples of Common Events: ● ● clicking a button moving a mouse starting a program ● pressing a key a timer running down to zero Event-Driven Software A lot of modern software is event-driven, which means that it's designed to respond to events in order to run. Let's go back to our adding machine example. You start the program, which is an event. Then, you type the two numbers in and input numbers into the program, another event. The program is designed to respond based on these events, so it's considered event-driven. On a larger scale, your phone's software is event-driven as a whole because it responds primarily to your taps, clicks, and swipes. Concepts to Know program event event-driven software Program Behavior When you run a program, you expect it to perform in a certain way. This is known as a program's behavior. Usually, program behaviors are defined by how a program will respond to a user interacting with it. It's important to think of what behavior you want your program to have before you code it. In order to figure that out, you'll need to know what the purpose of your program is, how program events will give inputs for the program to process, and how the program will output information. Even if the programmer doesn't define a program's behavior for a certain scenario, the program will exhibit behavior in response to it anyways. That response is often to crash. Obviously, you don't want an adding program to crash your computer or return the numbers multiplied together instead of added together. However, it can be very hard to fully define the behavior of a program. Let's say you're making a relatively basic video game, like Snake. For those who don't know, Snake is a game where you play as a snake eating food, and each time you eat food your tail grows. The goal of the game is to eat as much food as you can and try to avoid your own tail. Clearly, the game should do the above description: make the snake eat food, make the snake's tail grow, and make the game end when you hit your tail. However, there's also the question of how the program should behave when the game starts: should there be a welcome screen? When the snake hits its tail, should the game end or should the game give you multiple chances/lives? What if you want to make the snake change colors every time it eats a piece of food? In AP CSP, you're not expected to make a video game. However, this example demonstrates how many questions potentially need to be answered when defining program behavior.* Even our adding program has lots of different questions about its behavior to answer: for example, what happens if the user inputs letters instead of numbers? So, how do you develop all of this clearly? The answer to that lies in the development process. *For the AP CSP Create Program, you won't need to define the behavior your program should exhibit for every possible scenario it could run into. You also won't be asked to define every single behavior of anything on the AP CSP test. It's just important to know that programs run into a lot of different scenarios, and have a lot of different responses in response. Those responses are known as program behavior. 1.3 Program Design and Development The development process for a program is how it's made. It consists of the steps it takes to go from planning to programming and beyond! Image source: HuffPost and How It's Made You'll get to work with development processes yourself in your Create Project. The College Board doesn't define a specific development process for the Create Project, so it'll be up to you and/or your teachers to decide what the best way to develop your program is. In this guide, we'll be talking about the types of development processes, phases of program development, and a tool critical to the development process: program documentation. Types of Development Processes There are many different ways to create a program. Traditionally, program development follows a set path. It is orderly and intentional. One of the most well-known frameworks for developing software is known as the waterfall development model. It's characterized by a step-by-step process, where one step flows naturally into another. Requirements Design Implementation Verification Maintenance Over the years, new methods of creating programs were created, such as the Agile and DevOps development methodologies. These methods can offer a more flexible approach to development, and help foster collaboration between developers and users. There can also be variations within methods. For example, programmers have created variations and modifications to the waterfall development model over the years. Some development processes aren't intentional. They're exploratory in nature: the programmer experiments as they go along. This can happen when a program doesn't have specific guidelines behind it or when developers are under time constraints. There are two general types of development processes that the College Board wants you to know about: iterative and incremental development processes. Iterative and Incremental Development Processes When you think of "iteration," think of repetition. In an iterative development process, programmers develop working prototypes of their programs and go back through the stages of their development method to make their programs better. In an incremental development process, programmers will break the program they're working on into smaller pieces and make sure that each piece works before adding it to the whole. Programs can be developed using both of these models, or any combination of the two. For example, you can take a code segment of a larger program and revise it until you finish developing it completely, then move on to another part of the program. You're using an iterative process by revising that code segment to completion, but an incremental one for the program at large. The Drawing Board: Phases of Program Development The beginning steps for most development processes are the planning phases. Lots of work goes into a program even before anyone opens a code editor. Investigation and Reflection This is the game-plan stage of the development process. The goal of this investigation is to make the goal of the programmers as clear as possible. In this stage, programmers establish what their purpose is and the problem they're trying to solve. They figure out what their program will need to do, and also what their program will need in order to function properly. They'll often have program specifications to help them with this task. Program specifications are descriptions of the goals of the program agreed on by both the programmers and the clients. In order to get a clear picture during this stage, programmers have to consult with many sources. If their program is for a client, the client will be consulted to determine what they want. If they're working in a group, they may have to consult each other to make sure all parts of their program will work together. They may also have to do external research to discover what sorts of programs are similar to the one they're trying to make. Ways Programmers Investigate: collecting data through communication channels, such as surveys ● user testing conducting interviews with clients to assess what their needs are direct observation of the project in action if the project has already been through one or two loops of development In an iterative process, this stage can also include a reflection aspect on ways the project could improve or why something isn't working. With every repetition, the questions to investigate and reflect on change. As a result, they become more specific over time. Designing Code The design phase of the development phase details how to accomplish the goals of the program. This design phase may include: ● ● brainstorming planning and story-boarding organizing the program into modules and functional components creating diagrams that represent the layouts of the user interface developing a testing strategy for the program (see 1.4 Identifying and Correcting Errors) Program Requirements and Specifications Through investigation, programmers are able to discover their program's requirements. Program requirements describe how a program works. What should a user be able to do? What does a user need to provide for the program to work? These details are defined by the program specifications. Once the program specifications, defining the program requirements, are written, programmers are free to start building, prototyping and testing their programs to their hearts' contents. While they're writing their programs, they'll need to record what they're doing. They'll do this through the process of writing program documentation. Program Documentation Program documentation, at its simplest, is a description of how something in your program works. Sometimes, this description can include how your program was developed, such as why you chose one method of coding over another. The documentation could describe a code segment, event, procedure, or even the whole program itself. Think of documentation as notes and summaries for your code. Why is documentation used? Programmers document a program in order to break it down and explain it. They need to do this for a variety of reasons. ● Programs are complex things. It can be impossible to understand a program just by reading the code alone, and that's where documentation comes in. Documentation is crucial for understanding how every part of the program works. Documentation also fosters collaboration. Someone other than the original programmer may someday need to work with this code, and documentation helps explain what's going on. Documentation makes it possible to use code someone else wrote without having to understand exactly how it works. Documentation ensures that everyone (including the original programmer) knows what a piece of code does. With this in mind, let's turn to a common form of program documentation: comments. Comments One of the most common forms of program documentation is known as comments. Comments are documentation written directly into the program itself. 178 179 186 181 182 183 184 185 186 187 88 default", global scale setting FlowsProperty name="Scale", win-8.81, max-1.900.0 default-1.0, def execute(self, context): # get the folder folder path (os.path.dirname(self.filepath)) # get objects selected in the viewport viewport_selection bpy.context.selected_objects # get export objects obj_export_list viewport_selection if self.use_selection_setting = False: obj_export_list = [i for i in bpy.context.scene.objects] #deselect all objects. bpy.ops.object.select_all(action='DESELECT") for item in obj_export_list: item.select True ff item, type == 'MESH': file path os.path.join(folder_ ath, ").obj".format(item.name)) bey.ps.export scene.obj (filepath-file_path, use_selection-True, axis forward-self.axis_forward_setting, axis up-self.axis_up_setting, use animation-self.use_animation_setting, use nesh modifiers-self.use_mesh_modifiers_setting, usendges-self.use_edges_setting, groups-self.use smooth groups_setting, seth groups bitflags-self.use_smooth_groups_bitflags_setting, une normala-self.use normals setting, www-self.amerials, setting, Image by Johnson Martin from Pixabay In the above image, the grey portions of text with the number symbol (#) in front of the words are comments. Each comment describes what the code below it is intended to do. Comments are often marked by some sort of symbol, like the number symbol, that tells the computer to disregard the text when running the program. ! While most of the programming languages you'll be working with in this class will support comments, there are some that won't. In this case, you'll need other documentation methods. Sourcing Your Work As you travel further and further on the path of computer science study, you may come across a situation where you're using code that someone else helped make. Maybe you and a friend were working together on the Create project. Maybe you had a group project. Maybe you found this really nice code segment that does exactly what you need... Not so fast, buster! There are some things you need to do before using code that other people helped create. First, check with your teacher: are you allowed to use this code for class? Next, verify that you have permission to use this code. Code is often licensed in a way that will tell you what your usage permissions are. You may need to get the original coder's permission. Finally, you need to cite your sources. Just like when writing an essay or making a PowerPoint, it's important to cite your sources and acknowledge any work that you didn't make. Fortunately, this can be done within your program's documentation. The way that you need to cite code varies. Overall, your citation should include who originally wrote the code and where the code came from. There are plenty of online guides about how to cite code, and you're in good hands! Here's a comprehensive one to get you started. 2.2 Data Compression The need for hexadecimal representations of binary values brings up an important point about digital data: there's a lot of it, and it can quickly munch into the number of bytes you have for storage (no pun intended.) It's also notoriously difficult to send files like photos or videos over text or email because of how large they are. That's why data compression is needed. **Data compression** is the process (or processes) by which the size of shared or stored data is reduced. This in essence reduces the number of bits. The amount you can shrink your file by depends on two things: 1. the amount of redundancy, or repeated information, that you can remove in your original data 2. the method you use to compress your file Many data compression methods work by using symbols to shorten the data. Data Compression Examples A simple form of data compression is known as run-length encoding. It works by replacing repeating data, such as colors in an image or letters in a document, with a run that represents the number and value of the repeated data. For example, the string "FFFFFIIIIIIVVVVVVVEEEE" would be stored as 5F617V4E, greatly reducing the number of bytes needed to store it. Run-length encoding is used to compress some simple images, such as bitmaps. It is also used by fax machines. Another method of data compression that replaces repeating data with symbols is known as the LZW compression algorithm. It's used to compress text and images, most notably in GIFs. Let's take a look at two of the most common compression types: lossless and lossy. Lossless vs. Lossy Data Compression Lossless Data Compression Lossless compression algorithms allow you to reduce your file size without sacrificing any of the original data in the process. You're generally able to restore your original file if you want. Run-length encoding and the LZW algorithm are both examples of lossless compression because they only shorten data to compress it, and all the information remains the same. If your main concern is the quality of your file or if you need to be able to reconstruct your original file, lossless algorithms are usually the better option. This type of storage might be important in databases, where a difference in a compressed versus an uncompressed file could skew the information being represented. This concern about skew also applies to both medical and satellite imaging, where small differences in the data could have large impacts. Many software downloads also use lossless compression methods because the programs need to be recreated exactly on your computer in order to work. Lossy Data Compression In contrast, lossy compression algorithms sacrifice some data in order to achieve greater compression than you can achieve with a lossless method. They usually do this by removing details, such as replacing similar colors with the same one in a photo If your main concern is minimizing how big your file is or how long it'll take to send or receive it, go with a lossy method! A lot of lossy compression methods make changes that are barely detectable or even undetectable to your average viewer, and they can save you a lot of space. It's commonly used in photo, audio, and visual compression, especially for downloading purposes. Although there are two main types of data compression, you don't have to choose just one. Indeed, many modern compression software systems use a combination of the two methods in some way. 2.3 Extracting Information from Data One of the neat things about data is that we can get information from it! By examining it closely, we can identify trends, make connections and address problems. This is true in almost every field, from science to history. One or a few data points may not be enough to create a coherent conclusion-you could be dealing with an outlier, and it's difficult to see trends. With larger data sets (often very large data sets, known as big data), you can establish more comprehensive patterns. However, it is important to note that correlation does not necessarily indicate that a casual relationship exists. A correlation just suggests areas for additional research to understand the exact nature of the relationship between As the world gets bigger and more interconnected, a vast amount of data becomes more accessible and needs to be tracked. Take a look at this visual of global shipping in the year 2012! To create this graphic, researchers had to track millions of shipments over months. This is just one example of the rapidly-growing need for big data processing. As the data sets get larger and larger, computers become a necessary tool to help us process it. They can process data faster and with less error than humans. (Imagine sorting through all of that shipping data by hand...). At larger scales, you may even need multiple computers or parallel systems to process all the data involved. This demand has even led to the creation of server farms, areas where many large computers are housed for the purpose of meeting intense processing needs such as dealing with big data sets. Server farms are often located in large data centers, but they can also be stored in much smaller rooms as well. imgIX imgix imci imc imgix imgix Servers in a data farm. Image source: imgix on Unsplash When you're working with data sets in a system, you need to consider how scalable the system is. Scalability is the ability of a resource to adapt as the scale of the data it uses increases (or decreases). Although a scalable resource might require, for example, more servers or access points, it won't have to change the basics of how it operates. The more scalable a system is, the more data you can process and store within it. In terms of data processing, you're only as good as the tools you have to work with. The more powerful your computer is, the better the data processing you'll be able to do. One of the ways to make processing data easier is through the use of metadata. Metadata Metadata is data about data. It's like the packing label on a box in the mail or the tags on a piece of clothing: it gives you information about the item it's attached to. For example, the metadata for a YouTube video could include the title, creator, description, and tags for the video, as well as when it was uploaded and how large it is. Metadata This file contains additional information, probably added from the digital camera or scanner used to create or digitize it. If the file has been modified from its original state, some details may not fully reflect the modified image. Camera manufacturer Camera model Author Exposure time F Number Date and time of data generation Lens focal length Canon Canon EOS 30D unknown 1/160 sec (0.00625) Show extended details f/5.6 20:21, 20 January 2005 400 mm Image source: Editor at Large / Public domain If you change or delete the metadata, it doesn't affect the data itself. For example, if you change the description of a video, you don't affect the video itself. Metadata is used to help find and organize data: you can use it to sort and group it. It can also provide additional information to help you use your data more effectively. For example, metadata that tells you when a video was uploaded or a post was made can help you decide whether or not the information you're looking at is outdated. Problems Collecting and Processing Data Regardless of how large they are, data sets can be challenging to deal with. Fortunately, computers can help us deal with some of these issues. For example, data may not be uniform due to its collection process. Imagine you made a Google Survey to find out what class people like the most at your school. You create a form that looks like this: Favorite Class Questionnaire What's your favorite class? Your answer Submit Looking at the results, you see that a lot of people say AP Computer Science Principles is their favorite class! However, they don't all choose to say it the same way. AP CSP AP Comp Sci AP Computer Science Principles ap csp Ap Csp Image source: Google Surveys Miss. Lovelace's 5th period ...the list goes on. This lack of uniformity could make it very difficult to work with your data, especially if you're potentially looking at hundreds of entries. You might also run into this uniformity issue if you're compiling data from many different resources, where formatting standards may be a little different. For example, let's say you're working with a friend to track what time of day people find the most productive, but you're writing down results using 12 hour time while they're using 24 hour time. (Probably just to be difficult.) The way that computers deal with this is through a process known as cleaning data. This process makes data uniform by eliminating all of these differences. Cleaning data can also help flag or remove invalid and incomplete data. Data Biases Data sets may be biased for a variety of reasons. Taking the favorite class questionnaire as an example, there are many ways in which bias could sneak in: ● ● People have to take the initiative to fill out this form, which means they're more likely to have strong opinions about the topic when compared to the rest of the population. People who don't really have a favorite class or don't care about school in general won't be all that represented in the study, skewing results for your school overall. This survey just looks at one school, which could also bias results. Your AP Comp Sci teacher might just be a really good teacher, for example, so people might like the class for the teacher rather than the subject. The context of your survey might also impact results. The results you get if you post this survey in your AP Comp Sci class could be completely different from the results you'd get if you posted it in a Basketball group chat. Data can also be biased on societal lines such as race and gender. Just collecting more data won't make this problem go away by itself; you need to identify potential biases in your data and take steps to correct them, such as surveying people from different schools or classes. 2.4 Using Programs with Data With the current demand for data processing, it's no wonder that so many computer programs exist for that very purpose. In fact, there's even a name for it: the process of examining very large data sets to find useful information, such as patterns or relationships, is known as data mining. A common example is a spreadsheet program, such as Google Sheets or Microsoft Excel. You can use these programs to record, modify, and organize data. If you're using numbers, you can write equations and perform operations on your data as well. You can also process text data using text analysis (or text mining) tools. Text analysis looks for patterns within a written piece (anywhere in length from a clause to a novel and beyond) to categorize or classify it. If you've ever had a program tell you what the tone of your writing was, you've seen text analysis at work. Text analysis can be used to sort product reviews, detect trends in public opinion and identify anonymous authors. Data processing programs can also allow you to make tables and diagrams, such as line or bar graphs, to visualize your data. Creating visualizations of data allows you to convey what the data means and to make trends apparent. It's much easier to see positive or negative trends from a line chart, for instance, than when the data's sitting in a table. This is especially true when a lot of data is involved. Other examples of data processing programs include search tools, like the ones that Google uses for images: You can use these to make finding information easier and faster and to specify what it is that you're looking for. For example, if you want an image in a certain color for a mood-board, you can find it using the color filter. If you want images taken before or after a certain date, you can use the time filter. Different engines have different search tools based on what the search engine is used for. The search tools for an online academic journal, for instance, differ from the search tools that Google Images uses. Some programs also have data filtering capabilities, which means that they can create and extract different subsets of data for users to work with. These subsets can be based on time (like only looking at results from the winter) or value (like only looking at values below 30 or only positive values). Transforming Data One of the cool things that programs can do with data is to transform it! This is when you edit or modify data in some way to extract more information from it. Data Transformation Examples: Modifying every element of a data set. This can be an arithmetic modification, although it isn't necessarily one. O Ex. Multiplying each number by some constant value (Like if you wanted to convert a list of measurements from liters to millilitres.) O Another non-arithmetic example is adding a grade level or class rank to a list of student records. Filtering a data set by category, as mentioned above. O Besides time or value, data sets can also be filtered by quality, such as which extracurricular activities a group of students are in. Combining or comparing data in some way. O Ex. Comparing the average SAT score of students going to all the colleges in one state and combining that data with average scores from other states. ● Creating data visualization tools. ● O Ex. graphs, charts, and word-bubbles. These tools are often used in an iterative and interactive process by users. You get to choose what filtering tools you want to use or what subsets you want to look at. You can also run data through data processing programs multiple times, depending on what information you want to look for. For example, you can look at data by the date it was collected, then sort it again by the location where it was collected from. Manipulating data by combining, clustering or classifying it can bring out new information and patterns previously unseen in the raw data, making it a helpful tool for data analysis. Data Analysis Discoveries Some of the things we can discover by analyzing data are: ● Patterns ● O O Trends O O O What repeats again and again? Ex: Does a product sell particularly well over one season or in one area over many years? Is there a steadily rising trend? A falling trend? Any fluctuations, or variances, in the data? Ex: Here's a graph of the interest trends over time for Fiveable since its founding in 2018. (Note the two spikes around AP exam season.) O Interest over time 75 50 25 ● Data Source: Google Trends Apr 8, 2018 Dec 30, 2018 Sep 22, 2019 Correlations, or relationships Ex: Is there a relationship between extracurricular choice and favorite subject? Time of day and performance on tests? Driving experience and number of traffic tickets? O Is there a positive correlation? A negative one? None at all? O Remember that correlation does not equal causation! Just because two things correlate with each other doesn't mean that one caused the other. +< Jun 14, 2020 Outliers O Are there any outliers? Why is there an outlier? 4.1 The Internet It's difficult to imagine the world today without the internet and all of the wonderful and horrible things it does. We can all name things we do on the internet: watch funny cat videos, connect with our friends, read Fiveable articles... However, defining the internet itself is a tricky thing. The College Board defines the Internet as "a computer network consisting of interconnected networks that use standardized, open (nonproprietary) communication protocols." The word, "internet," comes from the combination of two words: interconnection and networks. What does any of this mean? In this guide, we'll break down the definition of the Internet and explain what it means to be a part of it. Computing Devices, Systems, and Networks The internet connects computer networks, which are systems of computing devices. Let's start small and work our way up. A computing device is a physical machine that can run a program. Examples include computers, tablets, servers, and routers (which we'll discuss more later in this guide). A computing device can also be a smart sensor such as a smart thermometer. When computing devices connect to each other, they form computing systems. The primary type of computing system that we'll talk about is a computer network. A computer network is a group of computing devices that can share data with each other. A computer network can be a simple connection between two devices, such as the connection between your printer and your computer. It can also be a more complex connection, such as one that links all the computing devices in your workspace or city. The internet takes all of these computer networks and connects them to one another. This creates the digital world we know today, one where any computer in the world can connect to any other it chooses. In this sense, it is the very largest of computer networks, covering billions of users and multiple continents. Data Streams, Packets, and Routing Information goes through the internet in data streams. (Remember from Big Idea 2 that data is a collection of facts that computers store in bits.) When you send or receive data from the internet, you have to get this data from one place to another. Oftentimes, a photo, video or website is made up of too much data for it all to be sent in one transaction. The data is therefore broken up into packets. Packets contain a section of the data you want to send out. They come with a header that contains metadata (data about data) used to tell the routers where this packet is from, where it's going, and how it should be reassembled once it gets to its final destination. Computing devices create these packets, then send them out through paths. Paths are sequences of connected computing devices, primarily known as routers, that begin at the sender and end at the receiver. There are many different paths that a packet could take to get from one device to another. The process of finding a path to take is known as routing. Routing paths aren't usually planned out in advance. The routers moving data along make their path decisions as packets are sent to them. Due to this method of breaking up and sending information, packets can arrive at their destination in order or out of order (or even not at all if something goes wrong.) If you've ever clicked on a website where the text loads before the photos do as you scroll down it, you've seen how the data doesn't always come together in exactly the right order. If everything's working correctly, the packets of data will be reassembled in the correct order once they get to their final destination, and you'll be good to go! Here's a visual example of how packets go through the internet: The original message is Green, Blue, Red. Host 1 Node A Node B Node C Node D Bandwidth Node E Node F Image source: Oddbodz/ CC BY-SA Node G Node H Host 2 How fast you get these packets depends on your computer network's bandwidth. The bandwidth of a computer network is the rate of data transfer it allows from one device to another. In other words, it's the maximum amount of data a network connection can move in a certain amount of time. Although bandwidth was once measured in bits per second, these days it's usually measured in megabits per second, where one megabit is a million bits. This illustrates just how fast the internet is growing! (For those of you physics nerds out there, the relationship between bandwidth and data is a little like the relationship between power and work. Power is the amount of work done over a given time and Bandwidth refers to the amount of data transferred over a given time.) Internet Protocols In order for computing devices to communicate with each other over the internet, they all have to use the same protocols. A protocol is a standard set of rules that everyone agrees on. The protocols used to communicate on the internet are open, which means that they're not tied to a certain company. Everyone has access to them. Another word for open, in this case, is nonproprietary. Two major protocols for transporting information over the internet are known as TCP/IP and UDP. TCP/IP is the older of the protocols, designed in the 1970s. It stands for Transmission Control Protocol/Internet Protocol. The TCP governs how packets are created and reassembled, while the IP moves packets to their destinations. It also dictates how devices are given addresses to communicate with each other (which is where the name IP address comes from.) The UDP is newer by about ten years and functions as an alternative to TCP/IP. It offers a way to deliver a faster stream of information by eliminating a lot of the error checking that TCP/IP does. Therefore, it's often used for connections that need to happen rapidly, such as those used by online games and live videos. The World Wide Web One of the main ways we use the internet is through the World Wide Web, a system of web-pages, programs, and files. Take care to note that the World Wide Web is not the same thing as the internet, which is a network of computing devices. The World Wide Web runs on the internet. The World Wide Web is governed by the HTTP protocol, which controls how web page data is transmitted. While TCP/IP and UDP from above are protocols used to transmit data over a variety of networks, HTTP is a specific protocol used to transmit data over the World Wide Web. HTTP is built on top of the TCP/IP protocol and uses it to transmit data between devices. Check out this website for more information about the World Wide Web! Scalability Finally, it's important to know that the Internet was designed to be scalable. The scalability of a system is defined by College Board as "the capacity for the system to change in size and scale to meet new demands." If a computer system gets larger because more devices are connected to it or a greater volume of data is sent over it, we would say it is scalable if it's able to handle that change without a significant decrease in performance. With billions of devices using the internet each day, and new devices connecting all the time, the scalability of the internet is crucial to keep it running and us connected to the world, each other, and those funny cats 4.2 Fault Tolerance In the last guide, 4.1 The Internet, we mentioned that information goes through the internet in data streams, broken up into packets, and that there are many different paths that packets could take in order to reach its final destination. One of the advantages of this system is that if a node (a device on the network) on the route is down or a connection isn't working, the packets can still reach their destination through another path. This is an example of fault tolerance. What is Fault Tolerance? If a system is fault tolerant, it can function properly even in the event of one part failing. Itmann eraurach irchaich Viereth-Trunstadt 14, 15 rach 12 18 Stettfeld Baunach 13 Breiten güßbach Kreuz Ifeld 18 di GAUSTADT Greifen- 7 Teuchatz stein Heiligen- stadt 15 22 Strullendorf urgwindheim Burgebrach Frensdorf Hirschaid 254819 Streitberg Herrnsdorf 1505 Schloss 14 Weißenstein Pommersfdn.. inch- inach eigerwald 12 Walsdorf Altenburg Höchstadt ard.A. Lonnerstadt Uehlfeld Emskirchen ck Markt Erlbach Mühlbsn. Aisch 22 a Weisendorf Neustadt a. d. Aisch Birnbaum Heßdorf RO Ludwag Memmelsdorf Bamberg Hallem- dorf Adelsdorf 16 24 Aurach, 9Heroldsbach 3 Baiersdorf Dechsendf 81 00 Herzogen aurach Plath 25 Kr. Fürth 35 Erlangen ScheBlitz 23 Langen-Veitsbronn VAC zenn. Ouchersteld OF Eggols- heim Wonsees 22 och 15 Königsfeld Hollfeld Veldensteiner Forst Glashütten Plankenfels Aufseß 17 Ahorntal Waischenfeld n Freiahorn Rabenstein Muggendorf Oberails Trockat 76 feld Fränkische 6A 79Eberman12 73 470 : 97 OERLANGEN Tennenlohe-14 Herolds berg Schweiz Kirchehrenbach Egloff- stein Forchheim 11 Kunreuth Effeltrich Gräfenberg2 Bubenreuth 114194 sadt Pretzfeld Gößwein-Potten- stein stein Regenthalo Leupoldstein 22 Hiltpoltstein P -91 ✔ 11 Lauf 5. a.d.P. 423 Rückersdorf NeunkirchenSimmels- 47.n ka.Br. Forth Bayreuth dort E51 Rothenbach A Pegnitz 6 Bronn 10 Mistel- bach 15 Betzen 46 Fränkisches stein Wunder Plech land 16 Creußen 8 185 20 Steinensittenbach Schnaittach Hersbruck Heinersreuth Pegnitz Michel- feld Velden Neuhaus Königstein Neukchn b.S.R. Pommelsbrunn, Image source: Thomas Kinto on Unsplash Kirchen- thumbach steinach 5 14 Happurg Hartmanns- hof Weidenberg Auerbach d.o. Sperrgebiet Maximilians- 7.8 grette Bo Speichers dort 13 11 (85) 10 Edelsfd g Erben 66 299 Neustadt am Kulm 12 Hessenreuther und Speinshart 04 470 5 Pressath Manteler 470 Eschenbach Schwarzen-Pa mit Kirch Parks d Grafenwöh bach Vilseck Hahnbach, 5 Sivayor Neusorg Kemnath ming NO Ste Fried Kaltenbrunn 1 Freihung Mant Etzi 299 Geben- Hirschau bach 8 A Sulzbach-88 Rosenberg 14 20 Traßlberg 13 Freudenb Ft 226 Koh ba A non-digital example of fault tolerance is the road system in your city. There are usually multiple paths to get from one place in town to another. If there's a crash or construction on one road and it's blocked, you can still get to your destination. The road system can function even if one road stops operating, so we would call it (relatively) fault tolerant. Another example would be having a backup generator in your house or multiple heaters in an apartment. In both of these cases, the power or heating system in question can continue to work even if a part (one of the generators or one of the heaters) fails. Fault tolerance is important for AP CSP because the internet was designed to be fault tolerant. It does this primarily through redundancy. Redundancy One of the major aspects of a fault-tolerant system is the presence of redundancy. Redundancy is defined by College Board as the inclusion of extra components that can be used to mitigate failure of a system if other components fail. Unlike what your English teacher told you about redundancy in your essays, redundancy in the digital world is beneficial and helps keep everything running. In the opening example, redundancy took the form of having multiple paths for one packet to be able to go through. (This is often literally having multiple physical cables and/or routers.) However, implementing redundancy takes several forms. ● ● For example, a company that wants to create a more fault-tolerant internet connection could use multiple internet providers or multiple wire channels. If one ocean-floor wire gets chewed on by a hungry fish or one router gets struck by lightning, the packet can go through a different wire/router and get to its destination. For another example, websites use two main types of solutions to promote redundancy: load balancing and failover: Load balancing solutions use load balancers, machines that allow websites to run using multiple servers, and can distribute incoming traffic across them. This creates a way for the website to continue running even if a server is down because the website can just rely on the other server. Failover solutions are used in the event of part or system failure, and basically entail switching to a backup machine. ! Load balancing and failover solutions won't be on the AP CSP test. They're just examples! Benefits of Fault Tolerance Fault tolerance helps reduce at least two vulnerabilities to failure found in digital systems: hardware malfunctions and cyberattacks. It also makes the system more scalable. 1. The fault tolerance of a system increases how reliable it is because it prevents malfunctions from completely shutting it down. Parts of a system can and do fail. They can fail at the most unpredictable of times, potentially leading to a long wait before someone's available to fix them, and they often fail in groups. ● For example, a natural disaster that destroys one piece of equipment in a certain area is likely to knock other pieces out in the same area, owing to the nature of weather events. Fault tolerance keeps the system from shutting down. When the system in question is, say, the transatlantic communications system between Europe and the US, shutdowns could be very harmful for people's use of the system, the systems that rely on that system, and society at large. 2. Fault tolerance can also make it easier to reduce the damage done by some cyber-attacks. For example, a Distributed Denial of Service Attack (DDoS) takes place when a server or network is overwhelmed with a flood of traffic, causing it to slow or even crash. In this situation, having a redundant server or network connection could allow you to go around the attack and continue to operate. 3. Finally, redundancy, a method of fault tolerance, makes it easier for a system to expand. It helps the system in question be more scalable than it would be otherwise (Remember scalability from 4.1?). This is because the existence of additional processing methods allows more devices to connect to the system and traffic to flow through it. For example, a fault redundant routing system, with multiple options to get a packet between two points, can handle more packets going through it than one that isn't fault redundant because there are more paths for the packets to go through. Disadvantages of Fault Tolerance Developing fault tolerance requires more resources than would be needed otherwise. For example, more cables and routers are needed for a fault-tolerant routing system than one that isn't because there need to be all those additional paths. It can be quite expensive in materials, contruction cost and maintainence to build these new resources, and places with fewer resources can face more vulnerable computing networks as a result. Not everything can be duplicated or made fault-tolerant due to cost and design concerns. (You can't have two steering wheels on a car, for example!) Developers often have to pick and choose what they need to develop fault tolerance for. 4.3 Parallel and Distributed Computing Traditionally, programs are made with sequential computing in mind. That's when program instructions are processed one at a time. However, as the demand for computers to become faster increased, sequential processing wasn't able to keep up. This is in part because you can only make a single processor so fast before the amount of heat it's generating literally causes it to melt. A very accurate representation of the melting process; Image source: cicoGIFs This problem led to the creation of new models of computing known as parallel and distributed computing. Parallel and Distributed Computing Definitions Parallel computing is where a program is broken into smaller sequential computing operations. Some of these operations are done at the same time using multiple processors. Most modern computers use parallel computing systems, with anywhere from 4 to 24 cores (or processors) running at the same time. There are several advantages to parallel computing. Performing tasks at the same time helps to save a lot of time, and money as well. ● Parallel computing solutions are also able to scale more effectively than sequential solutions. This means if there's a change in scale (ex: more instructions to process than before), these solutions will handle the change better than sequential computing models would. ● Distributed computing, on the other hand, is where multiple devices are used to run a program. These devices can be in different locations around the world, communicating by sending messages to each other. With a distributed computing model, two "heads" are better than one. You get the power of two (or more) computers working on the same problem. Using distributed computing allows people to solve problems that they wouldn't be able to otherwise, due to a lack of storage or needing too much processing time otherwise. Modern search engines, applications that store data somewhere separate from the user's computer like Gmail and Google Docs, and *sigh* cryptocurrency mining all use distributed computing. Due to their increased capacities, a parallel or distributed computing model can process large data sets or solve complex problems faster than a sequential computing model can. They come with the added perk of not melting your computer while they're doing it. Execution Time, Efficiency, and Speedup Calculations The AP CSP test will have conceptual questions about parallel and distributed computing, but they'll also have some calculation questions, too. The test may ask you to calculate the execution time of a sequential or a parallel computing solution. They may also ask you to compare the efficiency of two solutions. Finally, the test may ask you to calculate the speedup of a certain parallel solution. Calculating Execution Time Sequential Solutions A sequential solution takes as long as the sum of all steps in the program. For example, if your program has three steps that take 40, 50, and 80 seconds respectively, the sequential solution would take 170 seconds to complete. Parallel Computing Solutions The speed of a parallel computing solution, on the other hand, depends on the number of cores involved. The more cores, the faster (to an extent) the solution is. One of the best ways to understand this calculation is with examples. Going back to our original example with those three steps of 40, 50, and 80 seconds, a parallel computing solution where two processors are running would take 90 seconds to complete at its fastest. Why is that? Well, it's important to first acknowledge that we're working under the assumption that all steps are independent. The 40-second step, for example, doesn't depend on the result of the 80-second step in order to start. Therefore, the processors are free to do the steps in any order or combination. Generally, you'll be looking for the minimum possible time, so we're going to want to do the longer processes first and at the same time. Let's call the two Processors Processor 1 and Processor 2. To minimize the amount of time needed, Processor 2 should do the 80-second step, and Processor 1 should do the 40 and 50-second steps sequentially. Processor 1 would complete the 40-second and the 50-second step in 90 seconds (taking the sum of each sequential step) and Processor 2 would complete the 80-second step in... well, 80 seconds. Even though Processor 2 only took 80 seconds, it still has to "wait" for Processor 1 before the solution is complete. In the example above, it was Processor 1's 40 and 50-second sequential tasks that determined the final speed of the solution. However, this isn't always the case. In some cases, the longest parallel task will determine the final speed. If the task Processor 2 needed to do had taken 100 seconds, then the computing solution would have taken 100 seconds in total because of it. Still confused? Check out the practice problem below. Practice makes perfect with these questions! Clearly enough, the parallel computing solution is faster. A way to quantify just how much faster is called the speedup. Calculating the Speedup The speedup of a parallel solution is calculated by dividing the time it took to complete the task sequentially by the time it took to complete the task in parallel. In the example above, that would be 170 (the time it took sequentially) divided by 90, or 1.88. Speed Limits Note that a parallel computing model can only be as fast as the speed of its sequential portions. Some steps need to be done sequentially, such as steps that require data from earlier steps in order to begin, and this will affect the overall speed. For a non-programming example of this, imagine that some students are making a slideshow. One student is in charge of turning in the slideshow at the end. That student has to wait until everyone else is done to turn in the slideshow-that step can't be done in parallel with the steps it takes to work on the slideshow. It is not an independent step. Before you start a speed calculation problem, make sure you know whether or not all steps are independent. Don't just assume they all are. (The question should tell you if they are or not.) Eventually, the speedup effect of adding more parallel processors will wane the more and more you add them. This is because, inevitably, you'll need to wait on something that parallel computing can't speed up: either for sequential steps to complete or for other overhead such as communication time between processors. Example Problem Now, let's try this example problem, straight from page 177 of the College Board's CED: 12. A certain computer has two identical processors that are able to run in parallel. Each processor can run only one process at a time, and each process must be executed on a single processor. The following table indicates the amount of time it takes to execute each of three processes on a single processor. Assume that none of the processes are dependent on any of the other processes. (C) 80 seconds (D) 90 seconds Process Answer X Y Z Which of the following best approximates the minimum possible time to execute all three processes when the two processors are run in parallel? (A) 60 seconds (B) 70 seconds The answer is C: 80 seconds. Execution Time on Either Processor 60 seconds 30 seconds 50 seconds The easiest way to think of this is to walk through how the processors will operate. We know that the computer has two processors, and that each processor can only run one process at a time. We have three processes to finish: a 60-second, 30-second and 50-second one. None of the processes are dependent on each other, which means that they're free to run in any order and to run parallel to each other. In other words, you don't need to wait for any of the processes to finish before you start another. Let's call these processors Processor A and Processor B. So, what would the processors do? 1. The question tells us we're looking for the minimum possible time, so we're going to want to do the longer processes first and at the same time. When computing begins, Processor A starts running the 60-second process and Processor B starts running the 50-second process. 2. Processor B finishes the 50-second process and begins the 30-second process while Processor A is still running the 60-second process. 3. Processor A finishes running the 60-second process and finds that there aren't any more processes to run. At this point, 60 seconds have passed overall, and Processor B is 10 seconds into running the 30-second process. 4. Processor B finishes running 20 seconds later. (It might help to draw a picture if you're having trouble keeping track of all the processes.) Looking at this list, we can see that it takes 60+ 20 seconds to complete everything, which will add up to make 80 seconds in total. Another way to think of this is to think about how long it will take the processor with the most work to do to finish its work. One of the processors has to complete both the 50-second and 30-second processes in series (while the other one only needs to do one, 60-second process), which adds to make 80 seconds. The 60-second step, done in parallel, is shorter than the time needed. That means it occurs while the sequential step is still running and doesn't affect the total time. 5.2 Digital Divide The digital divide refers to the gaps between those who have access to technology and the internet and those who don't. Factors that Influence the Digital Divide Internet and technology access varies across several factors: ● Demographic ● O Younger people are more likely to be comfortable with the internet and technology than older people. O People with higher levels of education tend to use the internet or technology more than people with lower levels of education. In some places, women have less access to technology and the internet than O men. Socioeconomic O People with higher incomes are more likely to be able to purchase and maintain digital tools than people with lower incomes. This includes being able to afford the initial cost of a device, but also the ability to repair that device if it breaks or upgrade that device if it gets too old. Geographic O Some areas allow for more internet access than others Ex: from one country to another from one part of a country to another ■ ■ As you can see, the difference in access can be financial (ex: not having the money for a computer or stable Wi-Fi), but it can also be educational (ex: not knowing how to use digital devices) and regional (not having the opportunity to use digital devices or the internet). These access disparities can overlap: someone without financial access to technology might also not have educational access. The digital divide is both an intra-national and international issue: it occurs both within countries and between countries. For example, countries in the Western world tend to have a larger percentage of internet users than those outside of it. However, there are also digital divides within countries. Take, for example, the United States, where reportedly millions of Americans lack access to reliable, high-speed internet. ■90-100% 80-89% -70-79% 60-69% 50-59% • 40-49% 30-39% ▪20-29% ■10-19% 0-9% This graphic shows the number of internet users in each country as a percentage of their total population. Image source: Jeff Ogden (W163)/CC BY-SA The digital divide can also affect both groups and individuals. Certain groups may have less access to digital resources than others, but certain individuals may also have less access to digital resources than others. For example, two students in the same school or two members of the same family might have vastly different access to digital resources. Harmful Impacts of the Digital Divide The existence of the digital divide raises, and reflects, issues of equity, access, and influence, both within our communities and within the whole world. With the internet and technology becoming such an important part of our lives, thinking about the digital divide encourages us to ask: Who is being left behind as schools and companies rely more and more on technology and the internet? Whose voices do we hear on digital platforms? Who gets to make decisions about how the internet or organizations on the internet are run? Here are just two examples of ways the digital divide can be harmful. Educational Opportunities Think about how crucial technology and the internet are to you as a student. There's a good chance you've taken at least one virtual class or turned assignments in on online platforms such as Canvas. We can see the digital divide very starkly in recent (ish) world events. During the 2020 COVID Pandemic, many schools across the United States shifted to virtual learning systems, with classes being held over video calls. As a result, students without stable internet connections or efficient technological devices didn't have the same experience as their better-connected peers, and many suffered educationally as a result. Students without access to the internet or technology, or without digital know-how, are also denied learning resources such as Fiveable because they either can't use or find them. These are just some of the ways the digital divide can hurt students. Employment Opportunities Furthermore, the digital divide can also have negative economic impacts. Those without access to the Internet and digital technologies may be at a disadvantage in terms of finding and applying for jobs, with so many employers now hiring on online sites like Indeed or LinkedIn. Employees may also be hindered from being able to do their jobs without a stable internet connection or good computers. They may also find it difficult to access resources to help them advance their careers or find better employment opportunities. It should come as no surprise that the digital divide can exacerbate already present inequalities between rich and poor, between certain races, and between (well-connected) urban and (not well-connected) rural communities. Reducing the Digital Divide Fortunately, there are steps that individuals, organizations, and governments can take to help reduce the digital divide. Here are some examples! Can you think of any others? ● Organizations can release educational resources to teach people how to navigate the internet. They may create and release digital literacy programs: programs that teach people how to use the Internet and digital technologies. Organizations with the funding and resources can provide devices and/or hotspots to people that need them. O Examples: Schools, libraries, universities Local and national governments can fund businesses that provide internet access to areas that don't currently have access. Governments can also help support institutions that provide communal internet access, such as libraries. Here are some organizations in the United States working to close the digital divide: Federal Communications Commission (FCC): https://www.fcc.gov/ EveryoneOn: https://www.everyoneon.org/ ● Code.org: https://code.org/ Digital Promise: https://www.digitalpromise.org/ 5.3 Computing Bias What is Bias? As we've discussed throughout these guides, computing innovations can reflect existing biases. Biases are tendencies or inclinations, especially those that are unfair or prejudicial. Everyone has their own biases, but certain biases, especially those based on someone's identity, can be actively harmful to society. Biases exist in the world and in individuals. Computing innovations use data from the world around them, data that people pick out to feed to the computing innovation to use. Therefore, computing innovations can reflect those existing biases. Examples of Bias Bias can be embedded at all levels of development, from the brainstorming phase to the work done after release. This can take the form of a bias written into the algorithm itself or bias in the data used. Let's look at some examples. ● Criminal risk assessment tools are used to determine the chances that a defendant will re-offend, or commit another crime. This information is then used to influence decisions across the judicial process. O However, these algorithms are trained to pick out patterns and make decisions based on historical data, and historical data is historically biased against certain ● ● races and classes. As a result, risk assessment tools may disproportionally flag people from certain groups as risks. Facial recognition systems are often trained on data sets that contain fewer images of women and minorities than white men. Algorithms might be biased by exclusion because they're trained on sets of data that aren't as diverse as they need to be. Recruiting algorithms used by companies to help them sort through large quantities of applicants can be biased against certain races or genders. For example, if successful candidates for a position tend to be men because historically only men have applied, an recruting algorithm might teach itself that male candidates are preferred over female ones. What can we do to prevent bias in computing? Luckily, people can take steps to combat these biases, and the first step is understanding and acknowledging that bias could exist. Here are some working suggestions for preventing biases: ● Use diverse and representative data sets: Using data sets that are diverse and representative of the overall population can help to reduce bias in machine learning models (such as our facial recognition program above). Review algorithms for potential biases: Carefully reviewing algorithms for potential biases, and testing them on diverse data sets, can help to identify and mitigate any biases that may be present. Incorporate fairness metrics: Using fairness metrics, such as demographic parity or equal opportunity, can help to ensure that machine learning models do not produce discriminatory outcomes. ● Address human bias: It is important to be aware of the potential for human bias in the development and use of technical systems, and to actively seek out and address potential sources of bias. Increase diversity in the tech industry: Increasing diversity in the tech industry can help to bring a wider range of perspectives and experiences to the development of technical systems, reducing the potential for bias. ● By taking these actions, we're not only benefitting our programs, but also society as a whole. After all, algorithms are written by people. Being able to find and eliminate bias in computers can help us eliminate bias in ourselves as well. 5.4 Crowdsourcing The rise of the internet has led to a rise in the amount of data and human capital available to researchers. This free flow of data and information makes identifying and solving problems easier, and more people have access to the solution once it's found. Think about all the problems you've been able to solve with a quick Google Search, where before you'd have to consult a manual or a professional. Today, the findings of scientific research are available in online journals or news articles that can be accessed all around the world, whereas before you'd have to get a physical copy or hear through word of mouth. The internet can foster a spirit of collaboration, on a good day. Science has benefitted from this collaborative spirit. Two examples are citizen science and crowdsourcing. Citizen Science Citizen science is scientific research that the general population helps to conduct. Ordinary citizens, often non-scientists, help contribute data to research projects using computing devices. ● They might, for example, count birds they see at local feeders or observe the sky to help find new galaxies. In both of these cases, a computing device (like a smartphone) is the tool used to send data from the citizen to the scientists. Citizen science gives a wide range of people the ability to contribute to scientific studies and, in turn, provides more diverse data for scientists to work with. Scientists are able to do more across a wider range than if they were just working alone or with a small group of researchers in a lab. Examples of Citizen Science Here are some examples of citizen science in action! Name Description URL Christmas Every winter, the Audubon Bird Society hosts the Christmas Bird Count, where volunteers go out and count birds. The data s then used to help heasure the health of bird populations. Birds Bird Bird is an online database of bird hformation that birdwatchers help to collect. It is among one of he world's largest biodiversity-related science projects," with hore than 100 million bird sightings contributed per year. https://www.audubon.org/conservation/science/ch tooniverse hosts over 50 projects in a wide range of istmas-bird-count https://ebird.org/home tooniverse the largest platform for https://www.zooniverse.org/ citizen science, Nasa ields, from the arts to stronomy. Nasa hosts several citizen https://science.nasa.gov/citizenscience science projects, from racking penguin colonies o studying giant kelp orests. National National Geographic also Geographi sts a wide range of citizen science projects, hainly in the fields of biology and earth science. Crowdsourcing https://www.nationalgeographic.org/topics/citizen- science/?q=&page=1&per_page=25 Crowdsourcing is the practice of getting a large amount of input or information from people on the Internet. Citizen science is an example of crowdsourcing, but crowdsourcing can also take other forms. Just like citizen science, crowdsourcing gives a wide range of people the ability to contribute to organizations in general, not just scientific endeavors. The organizations also get more diverse data to work with and can do more than gather information by hand. (Spot a pattern?) Another advantage of crowdsourcing (for organizations, anyways) is that when organizations crowdsource they often don't need to pay for the information or the labor it takes to input it. Examples of Crowdsourcing Companies can turn to the "crowd," or the general public, for feedback. O Examples: Online reviews of restaurants or products, surveys (like the ones you get from College Board) ● They can crowdsource for employment or volunteers. O Uber and Airbnb, for example, crowdsource their labor force of drivers and ● renters. O Wikipedia relies on crowdsourcing for its workforce, as it relies on volunteers from the internet to write its articles. They can also crowdsource to solve problems or to get content. O Innovation contests incentivize people to submit their ideas and solutions in hopes of winning a contest. They can be used to tackle many challenges, from designing a new product to solving global issues. Crowdsourcing can also take the form of financial support in a process known as crowdfunding. Crowdfunding sites like GoFundMe, Kickstarter, and Patreon allow people to raise money for all manner of causes, from creating works of art to (unfortunately) funding medical bills.