AP Computer Science Principles

 

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


  • We will also start Python Pi GPIO tutorials - these will work well with the Pi and the laptops
    - coming soon...

  • 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.

    2c.
    (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.

    2d.
    (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.

    3.
    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)
    https://cs50.me/courses/b40fc79f-0676-4e24-a699-f25a137bafad/join

  • 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