1.1 Brief history
1.2 Computers all around us
1.3 Computational problem solving
1.4 The creative process
1.5 Computational artifacts
1.6 Collaboration
1.7 Information system development

2.1 Abstraction in computing
2.2 Representing information as bits
2.3 Unsigned binary numbers
2.5 General number bases
2.6 Naming numerous bits
2.7 Floating-point numbers

3.1 Basic hardware
3.2 Cache, memory, drive
3.3 Types of computers
3.4 Moore’s Law
3.5 Hardware trends
3.6 Computers and programs (general)
3.7 Programming: Machine language
3.8 Gates
3.9 Programming: Assembly language
3.10 Programming: High-level language

4.1 Computer models and simulations
4.2 Large data sets
4.3 Data visualization
4.4 Compression
4.5 Image and video data
4.6 Computer graphics
4.7 Audio
4.8 Creating and editing digital media

5.1 Programming (general)
5.2 Programming basics
5.4 Problem solving
5.5 Code and pseudocode
5.6 Language survey

6.1 Variables and assignments (general)
6.2 Variables (integer)
6.3 Identifiers
6.4 Arithmetic expressions (general)
6.5 Arithmetic expressions (integer)
6.6 Example: Health data
6.7 Floating-point numbers (float)
6.8 Using math functions
6.9 Random numbers
6.10 Integer division
6.11 Type conversions
6.12 Modulo operator
6.13 Data types
6.14 Constants
6.15 Code: Variables and assignments

7.1 Branches
7.2 More branches
7.3 Equality and relational operators
7.4 Detecting ranges using branches
7.5 Logical operators
7.6 Order of evaluation
7.7 Example: Toll calculation
7.8 Floating-point comparison
7.9 Code: Branches
7.10 Code: More branches

8.1 Loops (general)
8.2 Loop basics
8.3 More loop examples
8.4 Looping N times
8.5 Loop examples iterating N times
8.6 While and for loops
8.7 Nested loops
8.8 Code: While loops
8.9 Code: For loops

9.1 Array concept (general)
9.2 Arrays
9.3 Array iteration drill
9.4 Iterating through arrays
9.5 Swapping two variables (general)
9.6 Code: Arrays

10.1 User-defined function basics
10.2 Return
10.3 Reasons for defining functions
10.4 Functions with branches/loops
10.5 Libraries and APIs
10.6 Code: Functions
10.7 Code: Functions with array parameters

11.1 Troubleshooting: Hypotheses and tests
11.2 Logic of troubleshooting
11.3 Creating hypotheses
11.4 Ex: Dog whimpering
11.5 Knowledge
11.7 Ex: USB car charger

12.1 Basic debugging
12.2 Ex: Calculation error
12.3 Ex: Logic error
12.4 Ex: Loop error
12.5 Ex: Function error
12.6 Programming knowledge

13.1 Introduction to algorithms
13.2 Algorithm efficiency
13.3 Searching and algorithms
13.4 Binary search
13.5 Sorting: Introduction
13.6 Heuristics

14.1 Internet basics
14.3 Home networking
14.4 Cellular networks
14.5 Web basics
14.6 Web search engines
14.7 Web search tips
14.8 Domain names and URLs
14.9 Setting up a website

15.1 Users leave footprints
15.2 Users aren’t anonymous
15.3 Information Is valuable
15.4 Someone could listen
15.5 Sharing releases control

16.1 Security basics
16.2 Viruses and malware
16.3 Antivirus software and firewalls
16.4 Internet scams and spam
16.5 Cryptography
16.6 Denial of service (DoS) attacks
16.7 Digital certificates

17.1 Social networking
17.2 Email basics
17.3 Text messages
17.4 Blogs
17.5 Cloud computing applications
17.6 Crowdsourcing
17.7 E-commerce
17.8 Intellectual property
17.9 IP licensing and theft
17.10 Cybercrime and punishment
17.11 Cyberbullying
17.12 Digital divide

## What You’ll Find In This zyBook:

### More action with less text.

• Provides an exceptionally approachable introduction to foundational programming concepts that aligns with the College Board AP Computer Science Principles curriculum.
• Presents a highly interactive overview of the AP Computer Science Principles’ big ideas: Creativity, Abstraction, Data and Information, Algorithms, Programming, The Internet, and Global Impact.
• Provides real insights, experiences, and practical skills relating to the exciting world of computing technology.
• Initially uses flowcharts to teach basic programming concepts including variables, data types, assignment statements, arithmetic operations, decisions, loops, arrays, and functions, while teaching coding for each concept.
• Uses a new, ultra-simple programming language, Coral, featuring a unified flowchart and code version and coming with a free web-based educational simulator.
• Coral allows easy conversion to most programming languages, including C++, Java, Python, and C.

## The zyBooks Approach

### Less text doesn’t mean less learning.

Understanding computing technology benefits nearly anybody today. It not only demystifies the amazing world of the Internet, the web, computers, smartphones, the cloud, and more, but helps people become better purchasers and users of computing technology too. This zyBook uses animations, interactive questions, and plenty of built-in tools that are enjoyable and yield lasting learning. Users can do real Python programming; visually see how more memory or drives impact a computer; develop and preview working HTML, CSS, or Javascript; and much more—all directly in this web-based zyBook. In contrast to most existing books that emphasize the memorization of endless terminology, this zyBook brings this exciting field to life for the student. The zyBook is also an excellent complement to a course that already has an existing office-applications lab component.

This material teaches programming concepts using a flowchart language, which is more approachable yet maintains the precision of a programming language (and is executable so it’s fun). The material also teaches how to convert a flowchart to a simple code language, enabling a gradual learning path from flowcharts to code to an industry programming language. The zyBook contains animations of most concepts, helping readers to “see” the concepts and build an intuitive understanding. The zyBook also makes extensive use of our web-based educational simulator, so that nearly every example can be run by the student.

This material is customized for the AP Computer Science Principles curriculum and exam.

“It is already clear that this represents the future of programming text books. Its basic expository content is the equal of any paper text, but it really shines in using the natural advantages of online vs. static teaching material ­ animation and interactivity ­ to excellent effect, giving the student an additional dimension of insight.”