The College Board Advanced Placement™ Computer Science-Principles Summer Institute: Mr. John Meinzen

Home | Day 1 | Day 2 | Day 3 | Day 4 |Day 5 | Handouts | LOs-EKs

Morning Session : Review and Focus Lesson on Abstraction


Focus Lesson : Abstraction

Learning Objectives :

  • Procedural (Algorithmic) Abstraction allows us to use generalizations to make our programs with code segments that are reusable, save time, and increase readability.

  • Data Abstraction allows us to create meaning out of data stored in bits by displaying them as numbers, text, pictures, colors or as collections of similar items such as Lists


Participant Activity : Abstraction in the CED

In AP CSP CED, the following definition of "abstraction" is used: EK DAT-1.A.5: Abstraction is the process of reducing complexity by focusing on the main idea.


Search "bstract" in the LO-EK search page and identify which EK's are quoted (and in red) in the lists below for the data and procedural abstractions.


There are two different "types" of abstractions in AP CSP :

  1. Data Abstraction

    • Definition : "... giving a collection of data a name..."

    • Concept bit -> numbers,characters,color -> variable name-> List name

    • Manages complexity by :

      • "...hiding details irrelevant to the question at hand and bringing together related and useful details... allows one to focus on the idea...without referencing the specific details of the representation."

  2. Procedural (or Algorithmic) Abstraction

    • Definition: "procedural abstraction provides a name for a process"

    • Manages complexity by :

      • ..."extract shared features to generalize functionality instead of duplicating code. This allows for program code reuse",

      • ..."allows a solution to a large problem to be based on the solution of smaller subproblems."

      • ..."allows programmers to change the internals of the procedure (to make it faster, more efficient, use less storage, etc.)"

    • Concept : a procedure named sortNumbers(List a) can contain a large number of commands or statements that solves a problem (i.e. puts the numbers in "List a" from smallest to largest). Complexity is managed by referring to sortNumbers as a single name for the large number of commands or statements.

      • sortNumbers is the name of the procedural abstraction

      • List a is the name of the parameter and the name of the data abstraction



Participant Activity : Focusing on Student Skills : Abstraction in Program Development

Use the LO-EK tab to identify the 3 skills associated with P3 : Abstraction in Program Development

Use the LO-EK tab and search for the word " bstraction " [Note the missing "a"! Why?]

Have students keep a Log or Notebook for "Things I learned/tried while coding..."


Levels of abstraction in math

  1. Think : data <=> numbers and algorithms <=> order of operations

  2. numbers abstracted to variables.

    What are variables abstracted to? What is the computer science equivalent terminology?
  3. order of operations : + and - abstracted to * and / abstracted to exponents and roots.

    Are you familiar with tetration? What is the computer science equivalent terminology?
  4. arithmetic (numbers & operators) abstracted to algebra abstracted to calculus

    What is calculus abstracted to? What is the computer science equivalent terminology?



Modeling Activity : Focusing on Student Skills : Introducing Program Analysis and the Exam Reference Sheet

Compare the following pages and answer the questions that follow:

  • Course & Exam Description :

    • Page 173 : Question 3

    • Page 207-212 : Exam Reference Sheets

  • Which programming blocks are being used in part (A)?


    • 8 total statements

    • 2 block Assignments (1 with arithmetic operator)

    • 2 block Iterations with the inner Iteration (i.e. REPEAT n TIMES) having

    • 4 block Robot statements

  • What student learning objective and skills are demonstrated in this question?

  • answer (see page 183)

    Learning Objective:

    • LO AAP-2.K:a. Write iteration statements. [2B]

    • LO AAP-2.K:b. Determine the result or side effect of iteration statements. [4B]


    • 2.B Implement an algorithm in a program.

    • 4.B Determine the result of code segments.

    Other skills

    • A computer stores (or assigns) a single number in a single variable in its memory.

    • A computer runs (or executes) one box (or instruction or "line of code") at a time in sequence starting from the top of the code and proceding down the page.

    • A computer can repeat (or iterate) one or more box (or "lines of code") based upon a true or false condition.

  • How would you demonstrate Code Tracing? Page 132 or Kinesthetic Learning? Page 136

  • answers

    • Code Tracing :
      • Create a Computer's Memory Map by listing all the variables and values stored in each variable.
      • Trace each statement by keeping a finger on the block or line currently being executed (this is called a "Program Counter")
      • Illustrate the interaction between each block/line statement and the Memory Map
    • Kinesthetic Learning :
      • Create a grid on the floor using tape as an outline (many schools have tile flooring...perfect for grids)
      • Place a "robot" (toy, duck, pencil, etc.) in the given square with one student acting out the robot's instructions.
      • Assign two students to follow each algorithm. One to keep track of the statement being executed (program counter) and one to keep track of the values of each variable (memory).
      • Each person takes a turn starting with program counter who instructs the robot and memory to make appropriate changes as each statement is executred in order.


Insight :

  • It is important to build confidence in students of all skill levels. Program analysis is one topic that lends itself to "best-fit" languages--such as using block-based coding or text-based coding--as well as scaffolding.

  • The following is a quick review of major scaffolding programming & algorithmic resources from Day 1 : Morning Session I : Introductions

    Optional Participant Activity : Examples of Engagement in Programming [copy of Day 1 : Morning Session I ]

      Explore and Play a little with the following "Computer Science Games"

    1. Introduction to Programming:

      1. Coding Minecraft [using website...skip past initial video to start the tutorial]

      2. LightBot 2.0 [or a video demonstration: Hour of Code at]

        • (for purchase as an app)

        • online graphical Drag-n-Drop environment - browser must have Adobe Flash installed as a plug-in ...otherwise a video or error message is displayed.

        • can be free, with advertisement--be careful where you click-- or can be purchased at Armor Games.

      3. Snap! [using Beauty and Joy of Computing website at UC Berkeley]

    2. Beginning Programming: (3D Drag-n-Drop environment) - freeware, installation required

    3. Intermediate Programming: (2D grid-based environment) - freeware, installation required

    4. Skill Development : - free online algorithm practice using Java or Python

    5. Coding across the Internet :

      JavaScript (both online or local webpages)


Misconception Issues :

  • The exam reference sheet does not represent an actual programming language. It is designed to ask question that will appear on the Written Exam.

  • Students should be familiar with the reference sheet but must write programs in an actual computer language.


Afternoon Session : Focus Lesson on Selecting Resources & Collaboration

Focus Lesson : Selecting Resources to support your AP CSP Course

Key Understanding:

  • Resources should be selected based on their alignment with AP CSP Curriculum Framework and meet the needs of your students.

  • The background of your students should influence decisions, such as choice of programming language.


Participant Activity : Resources & Selecting a Programming Language

Sample Programming Languages : online

  • Block-Based

  • Text-Based

      JavaScript - many online programming environments use this language

A more complete list of languages (both online and installed) is on the Course and Exam Description : Page 130


Misconception Alerts

  • It is NOT required that you (teachers) have programming background.

  • The course is NOT just about is about teaching students the principles of computer science


Equity & Access Issues

    • Some students will require programming languages to meet specific needs.

      • English Language Learners (ELL) benefit from Block-Based programming languages.

      • Visually Impaired Learners (VIL) benefit from Text-Based programming languages that can be read out loud

        • Text editors with command-line compilers are helpful for those with visual impairements or low mobility.

        • Programming languages with lots of symbols are more difficult to have read out loud.

    • For many students, this is their first exposure to programming

      • Select a language that is syntactically easier to avoid frustration and is more fun...Block-Based fit this role

      • Select a language that more advanced students can avoid boredom and is more challenging...Text-Based fits this role.

    • Delving Deep : Toolkit (32-page pdf) : Broadening Access to Advanced Placement


Insights : Building Units of Instruction via Templates

John's experience designing Unit Plans

Steps as a 1st year teacher.

  1. Find a "ready-made" course (i.e. Endorsed Provider) and/or activities that looked good for the students I expected to teach.

  2. Teach the course and tweak for his students & classroom environment.


Steps as an experienced AP teacher.

  1. Look for Student Activities that engage students and prepare students for AP Assessments.

  2. Design or create Summative and Formative Assessments to gauge student skills as they progress...not too easy and not too hard.

  3. Identify Curriculum Framework connections with Unit Activities to identify "gaps" for other Unit Activities to fill.


Steps that go into making Exemplar Unit Plans (i.e. the Template)

  1. Design Summative Assessment

  2. Identify Curriculum Framework Connections

  3. Create (or find) Instructional Activities for students that prepare students for Summative Assessments

  4. Design Formative Assessments to gauge student skills as they progress.


Key Questions when designing your own Unit Plan

  • What is the Unit Topic & Activity (or List of Activities)?

  • What are the assessments (formative and summative) and do they provide evidence of student learning?

  • What resources do you need (software, student instructions, lessons or notes with scaffolding) ?

  • Which Curriculum Framework (i.e. BI -> EU -> LO -> EK and 6 Practices) are addressed in the Activities?

  • Who will be doing the Activities? (teacher lecture or demo, student exploration, student teams, etc.)

  • When will unit be taught during the year and timeframe?



Focus Lesson : Collaborating

Key Understanding:

  • Collaboration comes in many forms. Students should have many opportunities to practice collaboration in a variety of situations and ways.


Equity & Access Issues :

  • Assigning group work is not the same as teaching collaboration.

  • You must design your instruction to facilitate student collaboration...students must be taught and practice.


Participant Activity : Learning to "teach" programming

  1. In groups of 4, complete Robot Activity by placing "robots" and setting goals and ob

    Robot Activity Worksheet - good with Skittles or M&M's as robots as a student reward as well as cooperative learning.


    1. Create a starting and ending point for each robot.

    2. Challenge each team to find an algorithm (ideally with abstractions and Exam Reference sheet) to move their robot from the starting to the ending point.

    3. As students gain more experience, the objectives can become more challenging (i.e. place roadblocks or restrictions such as "use only 10 lines of code" or "must use a procedure" or "must use an iteration").


    Equity & Access Issue :

    • Abstraction was chosen as it presents a large vocabulary and challenging concepts for students.

    • If you (teacher) are not familiar with coding sequencing, selection, and iteration algorithms, ask John...these 3 concepts are essential for students to experience.



Insights on Collaboration

At this point many students (and teachers?) are either feeling overwhelmed and, possibly lost, or biting-at-the-bit to move faster than the leader is allowing:


  • Many programming activities focus on "a partner-based" [called "paired-programming"] collaboration. However, collaboration with only 1 other student tends to work best when the partners are at about equal in academic and behavioral skill levels.

  • Larger organized teams (up to 5 students) can help significantly when differences in maturity, academic, and behavior are an issue in classroom...if this may be your situation, please ask for more complex collaboration constructs.


Summary of Key Take-Aways for this Workshop

Feedback on a 4 x 5 Note Card (select one or more and give feedback regarding what is unclear).

Day 1

To ensure participants are acquiring these key takeaways, at the end of each activity participants should be asked to align their work and discussion to at least one key takeaway—and articulate the elements of the activity that prompted them to choose that particular key takeaway.

1. Understanding the Course

  • 1.A AP courses focus on building conceptual understandings through the teaching of linked learning objectives and essential knowledge statements, all contextualized around course-specific big ideas.

  • 1.C The course framework defines the scope of the course and specifies what students must know and be able to do on the AP Exam.

2. Planning the Course

  • 2.B Helping students develop mastery of the course skills requires careful planning to sequence skills in a developmentally appropriate way so that students master prerequisite skills before being asked to complete more complex tasks.

  • 2.C The needs of all willing and academically prepared students should be considered when planning, sequencing, pacing, and scaffolding the course.

  • 2.E An underlying goal of AP CSP is to broaden participation and provide a class for all academically prepared students to learn computer science content and skills


3. Teaching the Course

  • 3.D Creating community within a classroom through collaborative discourse and shared experiences is essential to building student confidence and fostering student progress.


Day 2

2. Planning the Course

  • 2.A Sequencing, pacing, and scaffolding are essential for building students’ understanding and their ability to transfer and apply knowledge and skills to new contexts.

  • 2.C The needs of all willing and academically prepared students should be considered when planning, sequencing, pacing, and scaffolding the course.

  • 2.D AP endorsed providers have carefully unpacked the AP CSP big ideas and skills into units or modules where the content and skills are scaffolded for students.


3. Teaching the Course

  • 3.A Teachers need a deep understanding of content and its applications in order to adapt their instructional strategies or endorsed provider curriculum to address the different needs of students.

  • 3.B Utilizing effective instructional strategies, like debriefing, helps develop the course skills and content knowledge.

  • 3.C Students need multiple opportunities, in different settings or modes, to practice skills in order to develop mastery over time.


5. Becoming a Member of the AP Community

  • 5.A The curricular requirements ensure that all AP course instructors teach a college-level course.

  • 5.B Professional networking can provide teachers with opportunities to discuss teaching strategies, share resources, and connect with each other.

Day 3

1. Understanding the Course

  • 1.B Building understanding and teaching for transfer require the application of content in new authentic, relevant, and unfamiliar contexts and scenarios.

  • 1.C The course framework defines the scope of the course and specifies what students must know and be able to do on the AP Exam.


4. Assessing Student Progress and Understanding

  • 4.A Assessments, instruction, and resources should be aligned to learning goals and matched to performance standards.

  • 4.B Students should be progressively challenged, just beyond where they are, to apply their knowledge and skills in different contexts to deepen their understanding.

  • 4.C Learning requires time, practice, and regular feedback.

  • 4.D Understanding is earned over time.


5. Becoming a Member of the AP Community

  • 5.C At the start of the year, teachers and students will complete a short digital activation process that will allow them immediate access to classroom resources and the AP Digital Portfolio.



At the end of the Day 4, can you... [if not, ask John!]

Review : Deep Dives

  • Explain the alignment of CED and 2 Assessments?

  • Start the Audit Process for your AP CSP course?

  • Identify the resources your students need to complete the Create Task including handouts, scoring rubric, and Digital Portfolio submissions?

  • Use AP Classroom along with Exam practice questions and Topic questions?

Focus Lesson : Abstraction

  • Define data and procedural abstraction?

  • Identify data and procedural abstraction used in the Exam Reference Sheet?

  • Apply abstraction?

Focus Lesson : Selecting Resources

  • Identify the programming language and other resources to design your course?

  • Program a computer on your own? Do you need to?

  • Identify the resources your students need to complete the Create Task including handouts, scoring rubric, and Digital Portfolio submissions?

  • Use AP Classroom along with Exam practice questions and Topic questions?

Focus Lesson : Collaborating

  • Engage your students in Pair Programming using Robot activities?

  • Express an algorithm in a language with support from others?


Daily Checkout : Day 4