Lesson 18: Practice PT - Create Your Own App

Overview

Note - We recommend you skip this lesson. It has not been updated to match the 2018 Create PT Scoring Guidelines and its contents are now covered in the AP Create PT Prep Unit.

This lesson has been marked for deprecation. Never fear, many of the original contents (including an updated version of the Grumpy Cat exemplar) are now included in the AP Create PT Prep unit. Since some contents of this lesson may already have been used by students to create projects it will not be removed during the 2017-2018 school year.

For any question about this please write in to support@code.org.

Best, CSP Curriculum Team

To conclude their introduction to programming, students will design an app based off of one they have previously worked on in the programming unit. Students will choose the kinds of improvements they wish to make to a past project in order to show their ability to make abstractions and implement complex algorithms. The project concludes with reflection questions similar to those students will see on the AP® Create Performance Task. Students can either complete the project individually or with a partner. Every student will need a collaborative partner with whom they will give and receive feedback.

Note: This is NOT the official AP Performance Task that will be submitted as part of the Advanced Placement exam; it is a practice activity intended to prepare students for some portions of their individual performance at a later time.

Purpose

A skill that programmers must develop is the ability to plan and execute a project from idea all the way through shipping of a product. Some of the best apps are new ideas brought on by the past work of a programmer themselves or other programmers. In order to execute these new ideas programmers must identify the programming structures needed to implement their idea and create a project plan. Often there are deadlines on projects which require programmers to make choices about the top features which need to be in a release of a new product. Finally, programmers must be able to express to others the work they have done to create their app.

AP® is a trademark registered and/or owned by the College Board, which was not involved in the production of, and does not endorse, this curriculum.

Agenda

Getting Started

Activity

Wrap-up

Extended Learning

Assessment

View on Code Studio

Objectives

Students will be able to:

  • Complete reflection questions in a format similar to those on the AP performance tasks.
  • Collaborate to give and receive feedback on program implementation to improve program functionality.
  • Update existing code to add new functionality to a program.
  • Create a video demonstrating the functionality of a program.

Links

Heads Up! Please make a copy of any documents you plan to share with students.

For the Students

Teaching Guide

Getting Started

Brainstorm: Programming Projects and Concepts So Far

Teaching Tip

Here is a pretty extensive list of the things students should come up with.

Programming Projects (apps) Programming Concepts
  • Digital Scene
  • Chaser Game
  • Multi-screen App
  • Clicker Game
  • Mad Libs
  • Secret Number
  • Dice Game
  • Digital Assistant
  • Coin Flipping Simulation
  • Word/Image Scroller
  • Drawing App











    • Turtle Commands
    • Functions
      • Functions with Return Values
    • Parameters
    • Looping
      • While
      • For
    • Random Numbers
    • Commenting
    • Debugging
      • Debug Console
      • Debug Commands
      • Console.log
    • Events
    • UI Elements
      • Buttons, Text Labels, Dropdowns, Images, Screens, Sounds, etc.
      • Prompt and PromptNum
    • Variables
    • Conditionals (If, Else if, Else)
      • Boolean Expressions
      • Boolean Operators (&&,

    Goal: Recall the programming projects, both large and small, done in the unit. Review how they can be used to frame the coming project as a practice for the Create Performance Task.

    Remarks

    For the project we are beginning today, you are going to create a project of your choice built on past work. Let’s make a list of all the past projects you have worked on and the programming concepts you have learned.

    Brainstorm: Divide a piece of paper in half the long way. On the left side of the piece of paper, list all the programming projects you have done so far in this unit. On the right side of the piece of paper, list all the programming concepts you have learned so far.

    Share Out: Have students share what they wrote and compile a class list of programming projects and programming concepts. Congratulate students on coming this far! That’s a lot of things they have learned!

    Activity

    Review Code Studio Levels

    There is not much here. A student introduction, and place for them to create and submit their project.

    Students identify target App and major components that must be programmed.

    Remarks

    Now that we’ve jogged your memory...for our final project of the unit you will use one of the projects we’ve done already as a point of inspiration to make something new. You may build on and add features to an app you wrote before. You may also write something completely new that you are inspired to create.

    Teaching Tip

    Complete Project Planning Guide: Students should use the Practice PT Planning Guide - Improve Your App to develop an overview description of their target app. The first thing students should do as part of planning is to...

    Read Requirements: Read through the guidelines of the project together and address any high-level questions about the aims of the project. Students will have a chance to review the requirements once they start planning.

    Assign Collaborative Partners: On the real Create Performance Task, teachers are not supposed to give much help to students. Instead students are supposed to work with a collaborative partner. Assign each student a specific person as her collaborative partner.

    Note: Students can work with a partner to create an app together. They should probably still consult with someone outside of the partnership who does not know the details of their project. This will help with the feedback process.

    Distribute: Practice PT Planning Guide - Improve Your App

    This planning guide should help students think about how to plan and execute the project. The planning guide contains a link to Practice PT Planning Guide - Improve Your App for students as well. Students should begin reviewing the project guidelines and getting down to work. This project will take some time, as it has new elements, such as a video, and it asks students to create PDF documents of their write-ups.

    A proposed schedule of the steps of this project is included below, as well as more thorough explanations of how to conduct the various stages.

    Day 1

    • Review the project guidelines and the rubric.
    • Assign students to collaborative partners.
    • Have students brainstorm and complete App Design Guide guide in Practice PT Planning Guide - Improve Your App.

    Teaching Tip

    If students are having difficulty developing their project plan, encourage them to talk with their collaboration partner. Develop the expectation that prior to asking you for help, students will have consulted one another.

    Program: Students should work individually to program their app or portion of their app. While they are responsible for writing their own code for the project, they may still consult with the other members of their class, especially their collaborative partner.

    Students individually program major components.

    Teaching Tip

    If students work in partners, they will need some way to combine their code. Possible solutions are:

    • emailing links to their individual code *creating a shared document / spreadsheet into which students can paste links Groups only need to create one program which contains all of their work. Individual group members can then “Remix” this project or just copy the code by using a link.

    Peer Consultation: After students have finished implementing a draft of their program, they should meet with their collaborative partner, present their work so far, and provide feedback regarding their progress. They should complete the Feedback Guide. Other potential questions to address: Is there anything that’s particularly clever or gives you ideas for your own project? Do you agree with the choices your partner has made? Is there anything missing?

    Day 2

    • Students begin work on programming projects.
    • Add at least one or two new features/components to the app.

    Work with classmates to give and receive feedback.

    Day 3

    • Students give and receive feedback with collaborative partner.
    • Students pick two pieces of feedback to act on and improve in their program.
    • Continue working on program.

    Teaching Tip

    Reflection Questions: Students will complete the reflection questions included in Practice PT Planning Guide - Improve Your App.

    Video Creation: Students will create a video to demonstrate the functionality of their program. The video should not be longer than 1 minute. It does not need sound.

    Video Creation - Suggested Tools:

    • Many of the short program clips of programs running throughout the curriculum were created using LiceCap, which is an easy way to create gifs of things happening on your computer - http://www.cockos.com/licecap/
    • QuickTime - You can do a screen recording with QuickTime as well. Can use QuickTime on Mac or Windows.

    Day 4

    • Students finalize their first implementation of the program.
    • Students begin their reflection questions and/or video.

    Teaching Tip

    Adding Code Segments To PDF: In order to add pictures of segments of their code, students may need to take screenshots. Below are the shortcuts for a couple different platforms for taking screenshots (a picture of part or all of the computer screen).

    Adding Shapes: One way you can add shapes to a picture is by using the drawing feature of Google Docs. Click Insert -> Drawing. Then add the image you want to put the shape on by clicking on . Then pick the shape you need from the dropdown .

    Many PDF viewers also have the ability to add simple shapes to a document. If neither of those options seems to be working for students, they can always print a copy, draw on the shapes, and scan it back in.

    Project Submission: Students will submit their projects, but they will need instructions on how to submit them as there are several different files. For the real performance task, all documents will have to be combined into a single PDF file. They need to hand in:

    • A copy of their Planning Document
    • A copy of their Feedback Guide where they got feedback
    • A separate PDF with their write-up
    • A video demo of their code
    • A copy of their code. (Note: Although they can submit their code directly through Code Studio, they will not be able to put the ovals and rectangles required for the Performance Task. Students should practice copying their code and adding those shape components to a PDF. )

    Final Submissions: Make a determination of how best students can submit final work. On the actual Performance Tasks, students will be required to submit all of their documents in a single PDF document, but it

    Students complete project reflection questions and create video.

    Day 5

    • Students complete their reflection questions and/or video.
    • Students submit their projects.

    Wrap-up

    Submit and potentially present submissions.

    Teaching Tip

    Feel free to exclude the wrap-up activities in the interest of time. Neither is an essential portion of the Performance Tasks and they are included only to provide a more natural conclusion to the project within your class.

    To make grading easier, you might have students anonymously score projects according the rubric. Both the scorer and score should be anonymous.

    Self-assess: It can be a useful exercise to have students briefly assess themselves using the rubric they were provided at the beginning of the project. Ask them to identify points where they could improve, and remind them that this rubric is very similar in structure to the one that will be used on the actual AP Performance Tasks they will see later in the year. Presentation (Optional): If time allows, students may wish to have an opportunity to share their final apps with one another. Consider options like creating a “Digital Gallery” by posting all links to a shared document.

    Presentation (Optional): If time allows, students may wish to have an opportunity to share their final apps with one another. Consider options like creating a “Digital Gallery” by posting all links to a shared document.

    Extended Learning

    Assessment

    Rubric: Use the provided rubric (in Practice PT Overview and Rubric - Improve Your App), or one of your own creation, to assess students’ submissions.

    • Lesson Vocabulary & Resources
    • 1
    • (click tabs to see student view)
    View on Code Studio

    Teaching Tip

    Note - We recommend you skip this lesson. It has not been updated to match the 2018 Create PT Scoring Guidelines and its contents are now covered in the AP Create PT Prep Unit.

    This lesson has been marked for deprecation. Never fear, many of the original contents (including an updated version of the Grumpy Cat exemplar) are now included in the AP Create PT Prep unit. Since some contents of this lesson may already have been used by students to create projects it will not be removed during the 2017-2018 school year.

    For any question about this please write in to support@code.org.

    Best, CSP Curriculum Team

    The following two "student" exemplars and target papers were created by Code.org staff to help give a sense of student work that would score highly against the rubric.

    Student Exemplar 1: Super Bot

    Student Exemplar 2: Grumpy Cat

    Student Instructions

    Unit 5: Lesson 18 - Practice PT: Create

    Background

    A skill that programmers must develop is the ability to plan and execute a project from the idea stage all the way to releasing a product. In order to implement these new ideas, programmers must identify the programming structures needed and create a project plan. Often there are deadlines on projects which require programmers to make choices about what the most important features are and then prioritize spending time on those. Finally, programmers must be able to express to others the work they have done to create their app.

    Lesson

    • Design a program based on or taking inspiration from a past program.
    • Give and receive feedback from a collaborative partner to improve the program.
    • Create supporting materials to explain your final product.

    Resources

    • Practice PT Overview and Rubric - Improve Your App (PDF | DOCX)
    • Practice PT Planning Guide - Improve Your App (PDF | DOCX)

    Continue

    • Practice Performance Task: Create
    • 2
    • (click tabs to see student view)
    View on Code Studio

    Student Instructions

    Practice Create Performance Task

    You've finally made it to the end of the Building Apps Unit! We will continue some programming in the next unit, but for now we are going to use all the new concepts you have learn to create something of your own design!

    Do This:

    • Read the Project Overview to understand the entire project.
    • Follow the Project Planning Guide.
    • Implement your final program in this level.

    Standards Alignment

    View full course alignment

    Computer Science Principles

    1.1 - Creative development can be an essential process for creating computational artifacts.
    1.1.1 - Apply a creative development process when creating computational artifacts. [P2]
    • 1.1.1A - A creative process in the development of a computational artifact can include, but is not limited to, employing nontraditional, nonprescribed techniques; the use of novel combinations of artifacts, tools, and techniques; and the exploration of personal cu
    • 1.1.1B - Creating computational artifacts employs an iterative and often exploratory process to translate ideas into tangible form.
    1.2 - Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem.
    1.2.1 - Create a computational artifact for creative expression. [P2]
    • 1.2.1A - A computational artifact is anything created by a human using a computer and can be, but is not limited to, a program, an image, audio, video, a presentation, or a web page file.
    • 1.2.1B - Creating computational artifacts requires understanding and using software tools and services.
    • 1.2.1C - Computing tools and techniques are used to create computational artifacts and can include, but are not limited to, programming IDEs, spreadsheets, 3D printers, or text editors.
    • 1.2.1D - A creatively developed computational artifact can be created by using nontraditional, nonprescribed computing techniques.
    • 1.2.1E - Creative expressions in a computational artifact can reflect personal expressions of ideas or interests.
    1.2.2 - Create a computational artifact using computing tools and techniques to solve a problem. [P2]
    • 1.2.2A - Computing tools and techniques can enhance the process of finding a solution to a problem.
    • 1.2.2B - A creative development process for creating computational artifacts can be used to solve problems when traditional or prescribed computing techniques are not effective.
    1.2.3 - Create a new computational artifact by combining or modifying existing artifacts. [P2]
    • 1.2.3A - Creating computational artifacts can be done by combining and modifying existing artifacts or by creating new artifacts.
    • 1.2.3B - Computation facilitates the creation and modification of computational artifacts with enhanced detail and precision.
    • 1.2.3C - Combining or modifying existing artifacts can show personal expression of ideas.
    1.2.4 - Collaborate in the creation of computational artifacts. [P6]
    • 1.2.4A - A collaboratively created computational artifact reflects effort by more than one person.
    • 1.2.4B - Effective collaborative teams consider the use of online collaborative tools.
    • 1.2.4C - Effective collaborative teams practice interpersonal communication, consensus building, conflict resolution, and negotiation.
    • 1.2.4D - Effective collaboration strategies enhance performance.
    • 1.2.4E - Collaboration facilitates the application of multiple perspectives (including sociocultural perspectives) and diverse talents and skills in developing computational artifacts.
    • 1.2.4F - A collaboratively created computational artifact can reflect personal expressions of ideas.
    2.2 - Multiple levels of abstraction are used to write programs or create other computational artifacts
    2.2.1 - Develop an abstraction when writing a program or creating other computational artifacts. [P2]
    • 2.2.1A - The process of developing an abstraction involves removing detail and generalizing functionality.
    • 2.2.1B - An abstraction extracts common features from specific examples in order to generalize concepts.
    • 2.2.1C - An abstraction generalizes functionality with input parameters that allow software reuse.
    2.2.2 - Use multiple levels of abstraction to write programs. [P3]
    • 2.2.2A - Software is developed using multiple levels of abstractions, such as constants, expressions, statements, procedures, and libraries.
    • 2.2.2B - Being aware of and using multiple levels of abstraction in developing programs helps to more effectively apply available resources and tools to solve problems.
    4.1 - Algorithms are precise sequences of instructions for processes that can be executed by a computer and are implemented using programming languages.
    4.1.1 - Develop an algorithm for implementation in a program. [P2]
    • 4.1.1A - Sequencing, selection, and iteration are building blocks of algorithms.
    • 4.1.1B - Sequencing is the application of each step of an algorithm in the order in which the statements are given.
    • 4.1.1C - Selection uses a Boolean condition to determine which of two parts of an algorithm is used.
    • 4.1.1D - Iteration is the repetition of part of an algorithm until a condition is met or for a specified number of times.
    • 4.1.1E - Algorithms can be combined to make new algorithms.
    • 4.1.1F - Using existing correct algorithms as building blocks for constructing a new algorithm helps ensure the new algorithm is correct.
    • 4.1.1G - Knowledge of standard algorithms can help in constructing new algorithms.
    • 4.1.1H - Different algorithms can be developed to solve the same problem.
    • 4.1.1I - Developing a new algorithm to solve a problem can yield insight into the problem.
    4.1.2 - Express an algorithm in a language. [P5]
    • 4.1.2A - Languages for algorithms include natural language, pseudocode, and visual and textual programming languages.
    • 4.1.2B - Natural language and pseudocode describe algorithms so that humans can understand them.
    • 4.1.2C - Algorithms described in programming languages can be executed on a computer.
    • 4.1.2D - Different languages are better suited for expressing different algorithms.
    • 4.1.2E - Some programming languages are designed for specific domains and are better for expressing algorithms in those domains.
    • 4.1.2F - The language used to express an algorithm can affect characteristics such as clarity or readability but not whether an algorithmic solution exists.
    • 4.1.2G - Every algorithm can be constructed using only sequencing, selection, and iteration.
    • 4.1.2H - Nearly all programming languages are equivalent in terms of being able to express any algorithm.
    • 4.1.2I - Clarity and readability are important considerations when expressing an algorithm in a language.
    5.1 - Programs can be developed for creative expression, to satisfy personal curiosity, to create new knowledge, or to solve problems (to help people, organizations, or society).
    5.1.1 - Develop a program for creative expression, to satisfy personal curiosity, or to create new knowledge. [P2]
    • 5.1.1A - Programs are developed and used in a variety of ways by a wide range of people depending on the goals of the programmer.
    • 5.1.1B - Programs developed for creative expression, to satisfy personal curiosity, or to create new knowledge may have visual, audible, or tactile inputs and outputs.
    • 5.1.1C - Programs developed for creative expression, to satisfy personal curiosity, or to create new knowledge may be developed with different standards or methods than programs developed for widespread distribution.
    • 5.1.1D - Additional desired outcomes may be realized independently of the original purpose of the program.
    • 5.1.1E - A computer program or the results of running a program may be rapidly shared with a large number of users and can have widespread impact on individuals, organizations, and society
    5.1.2 - Develop a correct program to solve problems. [P2]
    • 5.1.2A - An iterative process of program development helps in developing a correct program to solve problems.
    • 5.1.2B - Developing correct program components and then combining them helps in creating correct programs.
    • 5.1.2C - Incrementally adding tested program segments to correct, working programs helps create large correct programs.
    • 5.1.2D - Program documentation helps programmers develop and maintain correct programs to efficiently solve problems.
    • 5.1.2E - Documentation about program components, such as blocks and procedures, helps in developing and maintaining programs.
    • 5.1.2F - Documentation helps in developing and maintaining programs when working individually or in collaborative programming environments
    • 5.1.2G - Program development includes identifying programmer and user concerns that affect the solution to problems.
    • 5.1.2H - Consultation and communication with program users is an important aspect of program development to solve problems.
    • 5.1.2I - A programmer’s knowledge and skill affects how a program is developed and how it is used to solve a problem.
    • 5.1.2J - A programmer designs, implements, tests, debugs, and maintains programs when solving problems.
    5.1.3 - Collaborate to develop a program. [P6]
    • 5.1.3A - Collaboration can decrease the size and complexity of tasks required of individual programmers.
    • 5.1.3B - Collaboration facilitates multiple perspectives in developing ideas for solving problems by programming.
    • 5.1.3C - Collaboration in the iterative development of a program requires different skills than developing a program alone.
    • 5.1.3D - Collaboration can make it easier to find and correct errors when developing programs.
    • 5.1.3E - Collaboration facilitates developing program components independently.
    • 5.1.3F - Effective communication between participants is required for successful collaboration when developing programs.
    5.4 - Programs are developed, maintained, and used by people for different purposes.
    5.4.1 - Evaluate the correctness of a program. [P4]
    • 5.4.1C - Meaningful names for variables and procedures help people better understand programs.
    • 5.4.1E - Locating and correcting errors in a program is called debugging the program.
    • 5.4.1F - Knowledge of what a program is supposed to do is required in order to find most program errors.
    • 5.4.1G - Examples of intended behavior on specific inputs help people understand what a program is supposed to do.
    • 5.4.1H - Visual displays (or different modalities) of program state can help in finding errors.
    • 5.4.1J - Justification can include a written explanation about how a program meets its specifications.
    • 5.4.1L - An explanation of a program helps people understand the functionality and purpose of it.
    • 5.4.1M - The functionality of a program is often described by how a user interacts with it.
    • 5.4.1N - The functionality of a program is best described at a high level by what the program does, not at the lower level of how the program statements work to accomplish this.
    5.5 - Programming uses mathematical and logical concepts.
    5.5.1 - Employ appropriate mathematical and logical concepts in programming. [P1]
    • 5.5.1A - Numbers and numerical concepts are fundamental to programming.
    • 5.5.1B - Integers may be constrained in the maximum and minimum values that can be represented in a program because of storage limitations.
    • 5.5.1C - Real numbers are approximated by floating point representations that do not necessarily have infinite precision.
    • 5.5.1D - Mathematical expressions using arithmetic operators are part of most programming languages.
    • 5.5.1E - Logical concepts and Boolean algebra are fundamental to programming.
    • 5.5.1F - Compound expressions using and, or, and not are part of most programming languages.
    • 5.5.1G - Intuitive and formal reasoning about program components using Boolean concepts helps in developing correct programs.
    • 5.5.1H - Computational methods may use lists and collections to solve problems.
    • 5.5.1I - Lists and other collections can be treated as abstract data types (ADTs) in developing programs.
    • 5.5.1J - Basic operations on collections include adding elements, removing elements, iterating over all elements, and determining whether an element is in a collection.