Syllabus

This is the syllabus for AP Computer Science Principles taught by John Spurgeon at Valley Catholic High School during the 2017-2018 academic year. Except for the Textbook section and minor details, it is identical to the syllabus for the 2016-2017 academic year.

General information about AP Computer Science Principles courses can be found on the AP Computer Science Principles Course Overview webpage and in the PDF document AP Computer Science Principles Course and Exam Description.

Overview

AP Computer Science Principles is designed to be equivalent to a first-semester introductory college computing course. It includes rigorous computer science content and skills that can be built on to complete further science, technology, engineering, mathematics, or computing studies.

The course introduces students to central ideas of computer science, inviting students to develop the computational thinking vital for success across multiple disciplines. It focuses on encouraging students to be creative and apply creative processes when developing computational artifacts. Students design and implement innovative solutions using an iterative process similar to what artists, writers, computer scientists, and engineers use to bring ideas to life.

To appeal to a broad audience, including those often underrepresented in computing, the course highlights the relevance of computer science by emphasizing the vital impact advances in computing have on people and society. By focusing on content that goes beyond the study of machines and systems, students have the opportunity to investigate the innovations in other fields that computing has made possible and examine the ethical implications of new computing technologies.

Prerequisites

The following paragraph is from page 5 of the AP Computer Science Principles Course and Exam Description.

It is recommended that a student in the AP Computer Science Principles course should have successfully completed a first-year high school algebra course with a strong foundation in basic algebraic concepts dealing with function notation, such as f(x) = x + 2, and problem-solving strategies that require multiple approaches and collaborative efforts. In addition, students should be able to use a Cartesian (x, y) coordinate system to represent points on a plane. It is important that students and their advisers understand that any significant computer science course builds on a foundation of mathematical reasoning that should be acquired before attempting such a course.

Duration

AP Computer Science Principles is a two-semester course. Each semester consists of approximately 19 weeks of instruction time. Classes usually meet for 45 minutes a day, five days a week. Some class periods are less than 45 minutes, and there are fewer than five classes some weeks. AP exams occur around the 32nd week of classes. Taking into account planned and unplanned deviations from the regular schedule, there are about 130 hours of class time available during the entire course and about 110 hours (65 hours in semester one and 45 hours in semester two) of class time available prior to the AP exams.

Curriculum

Evidence that this course satisfies the curricular requirements specified by the College Board and described in the AP Computer Science Principles Syllabus Development Guide is provided in the following outline, which includes examples of activities that students will perform and reference codes identifying learning objectives and computational thinking practices associated with those activities. See the AP Computer Science Principles Course and Exam Description for more information about the codes and the items they reference.

The examples below do not reflect the number or sequencing of activities or assignments that will be covered throughout the academic year; rather, they are intended to be good examples of the types and variety of exercises that will be presented to students throughout the course. Actual activities and particular details will vary somewhat from year to year, but every year students will engage in at least one activity or assignment associated with each element of the following outline per the College Board's requirements for AP Computer Science Principles courses.

  1. Students are provided with opportunities to meet learning objectives connected to the following computational thinking practices.
    1. Connecting Computing
      e.g. Students read stories in the news (e.g. Self-Driving Cars Can Learn a Lot by Playing Grand Theft Auto) about social changes and ethical challenges that advances in computing are producing, and respond to what they read online or in journals such as Communications of the ACM. LO 3.1.1 [P1], LO 7.1.1 [P4], LO 7.2.1 [P1]
    2. Creating Computational Artifacts
      e.g. Traditional Stopwatch — students create a virtual two-button stopwatch using previously developed software components; students learn about class composition as an alternative to inheritance. LO 1.2.3 [P2], LO 5.1.2 [P2]
    3. Abstracting
      e.g. Quadrilaterals — students "extend" a general quadrilateral constructor to create blueprints for specific types of quadrilaterals such as parallelograms, rhomboids, rectangles, squares; students implement methods to compute perimeters and areas; students examine different ways to define and compute the area of a polygon and observe dramatic rounding error consequences of some implementations compared to others (the shoelace formula in particular). LO 2.1.2 [P5], LO 4.2.4 [P4], LO 5.3.1 [P3]
    4. Analyzing Problems and Artifacts
      e.g. Funky Fibs — Students analyse multiple implementations of several different algorithms used to calculate the nth Fibonacci number. Iterative, recursive, and closed-formula algorithms are examined. The difference between an algorithm and implementations of an algorithm is discussed and explored. Algorithms and implementations are analyzed by comparing the time it takes to compute an answer, by counting the number of steps performed across a range of input values, and by examining whether the answer returned is correct across implementations for a given value of n. Students are introduced to the simple but powerful concept of memoization and are able to see the very impressive effect of applying memoization to a recursive algorithm for calculating the nth Fibonacci number, even for fairly small values of n. LO 4.2.4 [P4], LO 5.4.1 [P4]
    5. Communicating (both orally and written)
      e.g. As part of the aforementioned Funky Fibs exercise, students will deduce underlying algorithms from the implementations provided and express the algorithms in English. LO 4.1.2 [P5]
    6. Collaborating
      e.g. Students will work in small groups to design and implement data structures and algorithms used to play a tricky game of dice. Students will design data structures that model dice and algorithms that implement the rules of a game. Students will use the Math.random method to simulate rolling pairs of non-transitive dice, they will simulate playing a large number of games, and they will compare expected and actual outcomes. Students will explain an algorithm, data structure, or abstraction related to their program. LO 5.1.3 [P6], LO 1.1.2 [P2]
  2. Students are provided with opportunities to meet learning objectives within each of the following big ideas.
    1. Creativity
      See the activities for 1b. and 1f. above.
    2. Abstraction
      See the activity for 1c. above.
    3. Data and Information
      See the activity for 1a. above.
    4. Algorithms
      See the activities for 1d. and 1e. above.
    5. Programming
      See the activities for 1b., 1c., 1d., and 1f. above.
    6. The Internet
      e.g. Students will learn about the role cryptography plays in enabling "secure" transactions, such as financial transactions, to take place on the internet today. Students will study a paint-mixing metaphor that helps explain how public/private key algorithms may be used to encode and decode messages. Students will be introduced to the history of such algorithms and their importance to nation states. Students will learn about how to race to find better ways to encode and decode messages is driving advances in computing, such as the development of quantum computers. LO 6.3.1 [P1]
    7. Global Impact

      e.g. Students will be introduced to Alan Turing and the role that his work with computers played in turning tide of World War II. LO 7.3.1 [P4]

      See also the activity for 1a. above.

  3. At least eight hours of class time will be provided for the AP Through-Course Assessment Explore - Impact of Computing Innovations.
  4. At least twelve hours of class time will be provided for the AP Through-Course Assessment Create - Applications from Ideas.

Software

In class, students will work with JavaScript programs using editors such as Notepad and Notepad++ that run on the Microsoft Windows operating system. Students will interpret JavaScript programs using modern web browsers such as Google Chrome and Microsoft Internet Explorer, which are available on all computers at the school.

Textbook

(tentative)