AP Computer Science Principles


Week 38: June 4 - June 8

  • Field Trip (potentially) - to Marconi WWII museum in Chatham
  • Explore and Code: work with our Raspberry Pi sets to complete programs
  • Raspberry Pi

Week 37 - May 29- June 1

  • Code Combat
    - we will complete the first level and then assess the challenges and difficulty

  • View & Discuss: The Imitation Game
    - Alan Turing and his impact on computing and the field of AI


week 36: May 21 - may 25

  • MIT Tech Museum trip - Monday May 21
  • Tech Fair - Tuesday May 22

  • Begin: https://hsctf.com/
    HSCTF is an international online hacking competition designed to educate high schoolers in computer science - let's register two teams and give this a try - it runs from May 19 to May 26

  • Explore: https://codecombat.com/students?_cc=MapThingFork


week 35: May 14 - May 18

  • Complete: Feedback Form

  • View: CS50 APCSP Congratulations

  • Field Trip forms - for May 21st trip to Cambridge

  • Prep: for Tech Fair (May 22)
    - we need to make a floor plan
    - decide which project(s) you would like to show
    - print code/create poster
    - what physical setup do you need? (power cord, table, monitor, sound...)



week 34: May 7 - 11

  • Review: Practice Exam 2 results
  • Kahoot in Library (probably)

  • DeltaMath - new practice: Cerulean

  • Albert.io - there are 21 questions in the assignment May_2018

  • Wed - pre-test celebration
    - Good Luck on Friday !

  • Field Trip forms - for May 21st trip to Cambridge

  • Prep: for Tech Fair (May 22)


week 33: Apr 30 - May 4

    Important Note for AP Test Takers:

    The rules specify that test takers are not to "email, text, post, or in any other way circulate AP Exam information through any kind of social media, or your AP Exam score may be canceled."

  • View: Rubber Duck rolling down the street
  • Review: Hex - Binary - Decimal Conversions
  • Play: Hexadecimal Bee Game
  • Play: Hexadecimal Music Game
  • Read: Sorting Algorithms
  • Read: Time Complexity

  • Complete: AP Mock Exam 2 - Wed & Thu
  • Login: DeltaMath.com (class code: 316750)
    - complete: magenta
    - complete: vermilion

  • Start thinking about the Tech Fair (Tue May 22)
    - what will you need?
    - do you want to show your AP CSP project?
    - do you want to create something new?
    - you can show as many projects as you like
    - we are in charge of the fair, so we will be working on a floor plan, signs, supplies (stamps, cards, lights, music, etc...)



week 32: Apr 23 - apr 27

How is a copyright different from a patent or a trademark?

Copyright protects original works of authorship, while a patent protects inventions or discoveries. Ideas and discoveries are not protected by the copyright law, although the way in which they are expressed may be. A trademark protects words, phrases, symbols, or designs identifying the source of the goods or services of one party and distinguishing them from those of others.

Lossy Advantages and Disadvantages

    Advantages: Very small file sizes and lots of tools, plugins, and software support it.

    Disadvantages: Quality degrades with higher ratio of compression. Can’t get original back after compressing.

    Examples: jpg, mp3, mp4

Lossless Advantages and Disadvantages

    Advantages: No loss of quality, slight decreases in image file sizes.

    Disadvantages: Larger files than if you were to use lossy compression.

    Examples: gif, png, wav

week 31: spring vacation


week 30: Apr 9 - apr 13

URL - Uniform Resource Locator


    http = protocol standard for how browsers and web pages communicate (part of Application Layer)
    www.kellysclass.info = domain name
    resources.html = path (location of the data in the hierarchy of folders)

TCP = transmission control protocol (breaks data into packets, assures that everything arrives ok and puts back in order)
IP = internet protocol (address system that locates computers)
     works as a pair often called TCP/IP - (part of the Transport Layer)

Hierarchal = organized in levels (domain names and ip addresses)

      www.kellyweb.x10host.com = kellyweb is a subdomain of x10host, top level name is .com

      ip address: works like an address might (country, state, town, street) - (part of the Internet Layer)

      ipv4 = 32 bits (4 bytes) 2^32 example:
      ipv6 = 128 bits (16 bytes) 2^128

  • Begin/Continue: CodeHS AP Review Practice

  • Share: 3 questions from index cards
    - then update the rq.csv file
    - once everyone has done this download the csv file, and upload to your cs50 IDE folder

  • Complete: Code.org Unit 4 - Big Data and Privacy
  • Mark as Final: Explore (2 parts) and Create (3 parts) Tasks in College Board Digital Portfolio
  • Enter: AP Numbers into College Board Digital Portfolio
  • Read: Pen-Like Device That Detects Cancer Takes a Top Prize at South by Southwest


week 29: Apr 1 - Apr 5

  • Read: Upper Line Baby
  • Play: Ask Jud
  • Complete: Create Task
  • Finalize: both Explore and Create in College Board


week 28: Mar 26 - Mar 29

  • Continue: Create Task
    - blog daily about what you did, or did not, accomplish each day
    - if you are ready start putting together the 3 pieces to submit to College Board...


week 27: Mar 19 - Mar 23


week 26: Mar 12 - Mar 16

week 25: mar 5 - mar 9


  • Fun! - Fun! - Fun!
    - Complete March Check from Albert.io

    - some of these may be tricky...
    - you can dicuss these amongst yourselves
    - be sure to read what was correct, and why...

  • Continue: Pygame: Space Shooter Tutorial
    -- go through the steps in the Space Shooter Game (at least to lesson 5 and save each lesson as you go...)

Raspberry Pi Practice Units

week 24: Feb 26 - Mar 2

  • Read: Security Vulnerabilitis Explained with Rivers and Parties

  • Complete: Albert.io for February B
    * Remember that the exam guide has some differences...
    1. Arrays/Lists start from an index of 1 (not zero)
    2. Don't worry about code syntax (such as == for comparison) - it could show up as = in the psuedocode

  • Continue: Pygame: Space Shooter Tutorial
    -- go through the steps in the Space Shooter Game - we will talk about how graphics run better with HD screen & the laptops will be better for using the pins/lights/boards... but you should still code the game out to learn - there are a lot of valuable lessons included in this tutorials. Also, the videos explain the code in more detail than the text only versions - you can take turns running your program on the one HD monitor that we have - or hook up the pi to your own laptop (if you have one) - we can also try to get Pygame installed on the computers

  • Complete: Raspberry Pi GPIO - LED lights
    - once complete make a 2nd copy - this time create functions for the lights and sleep sections
    - include comments to demonstrate that you understand what the code is doing....
    - make a 3rd copy and add some of the following:
    - a function that loops after asking the user for a number
    - messages that print to let the user know which cycle is being run
    - create functions to set pins, run the light sequences, etc
    - challenge: alternate lighting up different lights (just add another one...you need a light, jumper cable. and transistor - I used pin 24) - here is a link to an online pin chart

Raspberry Pi Practice Units

  • Raspberry Pi GPIO - single button
  • Rapsberry Pi GPIO - controlling multiple leds

  • Continue: Python
    - keep going - and move on to terminal apps, using file i/o , dictionaries, and more functions
    - hangman, abacus, and wordwall programs are very challenging - for now it is best to move on with Python so you understand dictionaries, and more functions - we can always come back to these if you end up with free time


week 23: Feb 12 - Feb 16

  • rq.csv - latest file - download this and then upload to your IDE - be sure to either rename it or change your quiz program file to call this one...
  • Begin: Python with Raspberry Pi
  • Pygame: Tutorials

  • View: The Internet: Encryption and Public Keys

  • Read: 10 Breakthrough Technologies of 2017
    - blog post: Give your thoughts on the article - how many of these items were you already familiar with? Is there anything new that you now should go look up to learn more about? Are there topics that you think will go away in the next few years, or ones that will be added?

  • Listen: Speaking in Code

  • Create Practice:
    be sure you have all 3 pieces of the create practice in your folder
    - this will count as a grade...

  • Code: Rock, Paper, Scissors Game using python
    - you can save the file in your labs folder
    Reminder: Rock beats Scissors, Scissors beats Paper, Paper beats Rock

  • Code: Caesar Cipher using Python

  • Complete: Blown to Bits reading on Encrytion (I will give you this in class)
    - post the questions/answers on your blog

  • Continue: Python
    - keep going - and move on to terminal apps, using file i/o , dictionaries, and more functions
    - hangman, abacus, and wordwall programs are very challenging - for now it is best to move on with Python so you understand dictionaries, and more functions - we can always come back to these if you end up with free time


week 22: feb 5 - feb 9

  • Complete: Hex_Binary_Decimal Practice
    - you can use a calculator and paper
    - go through this exercise at least 3 times...

  • Complete: Quiz Practice Feb B
  • Complete: Quiz Practice Feb C

  • Complete: the assignments from last week
    - converting a number to binary and hex
    - converting a single character to ASCII code
    - rewriting Skittles as a python program - including input validation checking

  • Reference College Board: AP CSP Student Task Guidelines
    - Create Task Guidelines are on pages: 9 -12
    - Create Scoring Rubic

  • Create Practice using your skittles program:

    1. Make a Create Practice folder in your Google Drive for this class

    2. Make a screencast of the program running - this can be broken up into small sections and then combined if needed
    - be sure it demonstrates how it works, and handles errors
    - upload the finished movie file (under 1 minute, under 30MB)
    - if you post on YouTube while editing be sure to mark it as private
    * Possible tools: quicktime (mac), screen-casto-matic, Jing, Filmora scrn, google hangout, camstudio, nimbus

    3. Create a document in your practice folder and answer the following:

    2a: (max 150 words) Provide a written response that:
    - identifies the programming language
    - identifies the purpose of your program
    - explains what the video illustrates

    2b: (max 200 words) Describe the incremental and iterative developement process of your program, focusing on two distinct points in the process. Describe the difficulities and/or opportunities you encountered and how they were resolved or incorporated. In your description clearly indicate whether the development described was collaborative or independent. At least one of these points must refer to independent program development.

    (Max 200 words) Capture (screenshot) and paste a program code segment that implements an algorithm (marked with an oval in section 3 below) and that is fundamental for your program to achieve its intended purpose. This code segment must be an algorithm you developed individually on yur own, must include two or more algorithms, and must integrate mathematical and/or logical concepts. Describe how each algorithm within your selected algorithm functions independently, as well as in combination with others, to form a new algorithm that helps to achieve the intended purpose of the program.
    Include screenshots of the called algorithms too.

    (Max 200 words) Capture (screenshot) and page a program code segement that contains an abstraction you developed individually on your own (marked with a rectangle in section 3 below). This abstraction must integrate mathematical and logical concepts. Explain how your abstraction helped manage the complexity of your program.

    Capture and paste your entire program code - and submit as a PDF.
    Mark up with an oval around the algorithm, and a rectangle around the abstraction.
    - if you copy your code and put it into notepad++, & save as a .py file the color syntax will be kept
    - two ways to mark up the pdf (adobe DC, Kami)
    be sure your name is not showing up anywhere!


week 21: Jan 30 - Feb 2

  • Reference College Board: AP CSP Student Task Guidelines

  • View: Humans Need Not Apply

  • Complete: Write a program that takes in a whole integer (base 10) number from the user, and then prints the value in both Binary and Hex. Also ask the user for a single character and print the ASCII code for this. Create functions to take care of these tasks. Add error checking to be sure you are getting a single integer and a single character on input. I can help you with this last part.
    * mega hint - there are built-in functions in Python that will help you for all of these conversions.
    you will see a prefix of 0x on hex numbers, and 0b on binary - these are simply notations for the computer to know what type of data representations in being used

  • Complete: Write a SKITTLES program in Python. Once it is working look at ways to included functions to process the guess, and check for valid input. This will become our Create Practice.
    In python to set a random number you can just use something like:

    number_to_guess = random.randrange(1,1001)

  • Complete: Number Search (put in your labs folder)
    - Write a function that takes a list of numbers and another number
    - The function decides whether or not the given number is inside the list
    - Return a boolean value (true or false)
    - Once the function has returned a value to the main program print a statement with the results
    - Be sure to have one example that is in the list, and one that is not

  • Complete: Max_Three (put this in your labs folder):
    - Implement a function that takes as input three variables, and returns the largest of the three.
    - Do this without using the Python max() function
    - return the value and print in the main program
  • Continue: Python
    - move on to terminal apps, files i/o, and dictionaries
    - hangman and the abacus programs are very challenging - give them a try but if you get stuck just move on to the dictionaries lessons/exercises


week 20: Jan 22 - jan 26

  • Complete: Albert.io February Check (22 questions)
  • Homework: Python Lab 2
    - due by start of class on Wed Jan 24
  • Reference College Board: AP CSP Student Task Guidelines
  • Discuss: Create Task Requirements
  • Begin: Practice Create using the 'aliens' program

    Make a copy of your aliens program and rewrite it to include additional functions
    - be sure to have at least 1 function that calls 1 other
    - it needs to include a function that calls 2 other functions
    - include a 4th function that accomplishes a task

    Printed results could include:

    Total number of aliens
    Total number of bad aliens
    A list of bad aliens
    Count and score total for each good alien
    Overall Score for the good aliens

  • Continue: Python
    - move on to terminal apps and using files


week 19: Jan 18 - Jan 19

  • Homework: Python Lab 2
    - due by start of class on Wed Jan 24
  • View: CS50 Live SHAttered
  • Discuss: Google Trends
  • Discuss: Using Charts to represent data visually
  • Download/Upload the updated .csv file for our python quiz and take time to practice some of the questions
  • Continue: Python
    - by the end of the week you need to have completed the "aliens" program at the end of the IF section and be at least working on the WHILE section - keep on going to terminal apps if you can
  • Practice: Algorithm Terminology
  • Practice: Computer Networks
  • Read: Understanding Abstraction
  • Practice: Secret Key


week 18: Jan 8 - Jan 12


week 17: Jan 2 - Jan 5

  • Homework: create 3 questions using the index cards
    - we will be adding these to a review program that you will be using

  • Continue: Intro to Python Course
    - work on the lessons and exercises yourself - this work counts for effort
    - we will be completing lab assignments to assess your knowledge and practice with Python
    - keep these organized so that you can always go back and look for examples of your own

  • Complete DNA challenges in the strings as lists section (we will do this in class)

  • Review: Sequencing, Selection, Iteration

  • Complete: Albert.io practice January A

  • Reference College Board: AP CSP Student Task Guidelines
  • Which of the following is one way to describe abstraction in computer programming?

    A. Creating a series of smaller programs rather than one large set of code 
    B. Giving meaningful names to a set of statements (function/procedure/method) that accomplish a particular task 
    C. Adding detailed comments to help a programmer read the code easily 
    D. Using global variables whenever possible to allow values to be easily accessed



week 16: Dec 18 - Dec 22

  • Submit Explore Task drafts to digital portfolio
  • Complete & Discuss AP CSP Practice Exam from College Board
  • Reference College Board: AP CSP Student Task Guidelines

  • Continue: Intro to Python Course
    - work on the lessons and exercises yourself - this work counts for effort
    - we will be completing lab assignments to assess your knowledge and practice with Python
    - keep these organized so that you can always go back and look for examples of your own

  • When we come back from the break on Jan 2nd you should have completed at least up to:
    - Lists & Tuples - be at the start of the section titled "Slicing a List"


week 15: Dec 11 - Dec 15

week 14: Dec 4 - Dec 8


week 13: Nov 27 - Dec 1


week 12: Nov 20 - Nov 22

week 11: Nov 13 - nov 17



week 10: Nov 6 - 9

week 9: Oct 30 - Nov 3


week 8: Oct 23 - Oct 27

Explore Task: The harmful effect has to be tied to the intended purpose of the innovation.  That is why hacking can be a security/privacy concern, but not a harmful effect.  Likewise high cost can not be considered a harmful effect.


week 7: Oct 16 - Oct 20

week 6: Oct 10 - Oct 13

  • Complete Explore Task (Practice Version) - final versions are due on Tue Oct 10
    - it is possible to finish up the artifact in class, depends on how you are creating it...
    - create a folder within your google drive folder to contain your work for this task & begin...
    - at least 2 of your online sources must be dated after Apr 30, 2017

  • View: Rob's Video on Compilers

  • Complete: Greedy
    - constants, a do/while loop, modulo, and the round() function will help you with this task
    - needs check50, style50 and submit to GitHub

  • View: Tommy's Short on Loops
  • Complete: Evens (a practice program)
    _ just run a style50 when complete

  • CS50 Chapter 1: Loops
  • CS50 Chapter 2: Compilers
  • CS50 Chapter 2: Functions
  • CS50 Chapter 2: Arrays and Strings


week 5: Oct 2 - Oct 6

  • Homework: Do some reading about microchip use in humans - then create a blog post with the following:
    - at least three positive, and at least 3 concerns about the potential of this technology
    - add a paragraph with your thoughts on how this technology will proceed in the future - what do you think of it and what are your predictions, based in part on evidence in the articles your read
    - due Tue Oct 3

  • Hackathon - Nov 4th in Burlington, MA at MS HQ
    - www.hacknehs.com

  • Review: Explore Examples
  • Reference College Board: AP CSP Student Task Guidelines
  • Begin: Explore Task (Practice Version) - progress will be graded on Thursday .... final versions are due on Tue Oct 10
    -create a folder within your google drive folder to contain your work for this task & begin...
    - at least 2 of your online sources must be dated after Apr 30, 2017

  • Complete: modulo.c practice
  • Demo: do_while loop code (in class)

  • Complete: skittles.c
    - this is an older cs50 problem so you only need to run it through style50 and leave it in your workspace for me to view
    - you will need an additional header file, the rand() function, use of modulo, and boolean decision making to complete this task


week 4: Sep 25 - Sep 29

  • Register: College Board & this class
  • Continue with 3_D printing

  • View: Floppy Disk video (in class)

  • Complete: data_types.c (in class - will demo first)
    - finished version will prompt the user for the following information, and then print the results

    char (single character)
    string (name or phrase of characters)
    int (single number - no decimals - less than 10 digits)
    long long (single number - no decimals - less than 20 digits)
    float (decimal)
    - print once as the full size
    - print again and limit it to 2 decimal places

  • Discuss: Integer Overflow & Imprecision

  • View: Vipul's short on variables
    - implement last example as inf_loop.c & be aware it will loop infinitely...
    - To force-exit a running program, press Ctrl + C from your keyboard

  • View: Doug's Video - operators

  • Complete: Fahrenheit
    - run style50, check50, and submit final version to the gradebook

  • Complete: escape.c

  • Challenge 1: clock.c - Ask a user to input the month, day and year using get_int(), and print it out in the format mm/dd/yy (e.g. 11/23/17). Month and day can also be single digits, so don't worry about formatting.

  • Challenge 2: sum.c - Using only one variable, take in 3 variables from the user as input, and return their sum.
  • Review: Explore Examples

  • Begin: Explore Task (Practice Version)
    - start by picking out your topic - we will discuss these before proceeding

  • CS50 Chapter 1: Operators


week 3: Sep 18 - Sep 22

  • Office Hours: Tue & Thu this week
    - bring your questions, make up work, or just general confusion and we will accomplish wonders

  • If you should find yourself caught up - start thinking about the Explore Task
    - we will be completing a practice task soon so find a topic that works but that you won't use for the real assignment - I can give you topics to choose from if that helps
    - review the directions in the AP CSP Student Task Guidelines

  • Field Trip: Friday Sep 22
  • Choose an item to 3_D print

  • Join CS50.me (you will need a git hub account too)

  • View: David's Lecture (hello world, string.c)
  • View: David's Lecture (binary)
  • View: David's Lecture (ASCII)

  • Complete: Binary worksheet (in class)
  • Play: Binary Game (Cisco version)
  • Play: Binary Game
  • Complete: Binary_Decimal Practice (in class)

  • Complete: CS50 - "Hello World"
  • Complete: string.c (from the video)
    - you don't need to upload this to github as it is just practice but you should always run style50


week 2: Sep 11 - Sep 15

week 1: Sep 5 - 8

  • Homework: 3 Things
  • Homework: Blog Post - Tech Spotlight - due Mon Sep 11
    In no more than 600 words, expound on a piece of technology with which you are familiar and that you might use everyday. It needn't be a piece of hardware; software, websites, and the like are perfectly fine too. Explore it in depth. Assume for the purposes of this assignment that your audience is someone who has no prior knowledge about the technology. 
    Consider these questions:
    What is this technology called?
    What does it do?
    How does someone use this technology?
    How is its quality of performance commonly measured? (e.g. in megabytes (MB), gigahertz (GHz), etc.)
    How does the recent news about the technology change the product or service?
    What older form of technology does it replace, if any?
    How has this technology impacted your life, for better or worse? How has this technology impacted society at large, for better or worse?

  • Discuss: Class Expectations & Course Overview
  • Review: Work Rubric
  • Review: Academic Honesty Policy
    - Be sure I have editing permission when you share it
  • Review: Email Etiquette
  • View: Computer Science is Changing Everything
  • Review: Computer Hardware
  • Discussion: What defines a computer? Break into groups for this
  • View: Landfill Harmonic
    -  think about how computing has global impacts and really does change the world in significant ways

  • Reference Sheet: Computers and Computing
  • Reference Sheet: Bits and Bytes