Home AP Computer Science A FOOP Capstone Summer Homework for AP CS A AP Computer Science Principles
Current Schedule Favorites Class(room) Policy Blog Gunn Girls Tech Club Send Me Email

AP Computer Science A

Fill Out The Course Credit Survey


Article that informs Stanford professors' policy on laptops

Applied Computing Foundation Possible Summer Stuff/Internship

Digital Citizenship Links

2015 AP CS Free Response test (released)

Brian Harvey explains abstraction

Topics list for AP CS A

Topics list for FOOP

Ria Galanos's excellent AP CS resources page


Skill and Drill Practice Problems Galore

CodingBat problems (main web page)

  • AP CS problems
  • String problems

    Practice-It

    Code Workout


    Java 8 API documentation


    xkcd explains functional programming (make sure to put the mouse over the cartoon)

    40 Key Computer Science Concepts Explained In Layman’s Terms

    AP COMPUTER SCIENCE SUMMER HOMEWORK (Mandatory only if you have not taken Functional and Object-Oriented Programming (FOOP))

    Installation instructions for DrRacket

    Installation instructions for Eclipse


    Stuff you must use in class

    AP CS resources

    USACO resources

    Miscellaneous Goodies

    WEEK TOPIC(S) READING
    HOMEWORK
    8/9--8/11

    Java Review

    None, Download and install DrRacket,Install Java and Eclipse

    Download and install DrRacket, Install Java and Eclipse;

    Week 1 Survey

    The Locker Problem

    What is free software and can you share it?

    The Damore Memo
    Prof. Cynthia Lee's Response (Lee)
    Four Scientists Respond (Quillette)
    Yonatan Zunger's Thoughts (Zunger)

    The flag problem
    Flag starter kit (USE THIS!)
    A picture of a star with minor trig labeling
    Notes from class regarding star trig

    8/14--8/18 Java Review Flag Problem
    8/22--8/25 Procedures and Processes SICP: Chapter 1.1

    8/28--9/1

    Formulating Abstractions with Higher-Order Procedures SICP: Chapter 1.2

    To do tracing, use this require command: (#%require racket/trace)

    As you read through this part of chapter 1 of SICP, you will be introduced to the term "order of growth". A nice rundown of examples of orders of growth can be found on Stack Overflow. I recommend working on the problems and then looking at the Stack Overflow content if you feel stuck or uncertain.

    1.8, 1.9, 1.14 (do 1.14 by hand on paper, show it to me, and move on), 1.16; for the math enthusiast, try 1.19 and try to explain how it works when you're done

    Some thoughts on recursive versus iterative processes.

    Recursive process versus iterative process lab

    Two to the millionth power. Because I felt like it.

    Wait But Why on AI

    9/5--9/8

    Lists (Simply Scheme: Chapter 17)

    Formulating Abstractions with Higher-Order Procedures

    Do Simply Scheme: Chapter 17 then go on to SICP: Chapter 1.3

    To do tracing, use this require command: (#%require racket/trace)

    Simply Scheme: 17.1, 17.2, 17.3, 17.8--17.12, 17.14

    Checkup #1 (A checkup is a problem or set of problems that are intended to help you gauge if you are doing well. If you can solve checkup problems, then you are on track for success on the next test.)

    Procedural abstraction examples

    1.30, 1.31 part (a) only, 1.32 (iterative process only), 1.33 (use odd numbers instead of prime numbers for part (a)); here is a working version of a GCD function you can cut and paste

    A hint for 1.31.

    Lecture notes on accumulate that may be helpful for problem 1.32

    9/11--9/15 Formulating Abstractions with Higher-Order Procedures Do Simply Scheme: Chapter 17 then finish SICP: Chapter 1.3

    To do tracing, use this require command: (#%require racket/trace)

    Simply Scheme: 17.1, 17.2, 17.3, 17.8--17.12, 17.14

    Checkup #1 (A checkup is a problem or set of problems that are intended to help you gauge if you are doing well. If you can solve checkup problems, then you are on track for success on the next test.)

    Procedural abstraction examples

    1.30, 1.31 part (a) only, 1.32 (iterative process only), 1.33 (use odd numbers instead of prime numbers for part (a)); here is a working version of a GCD function you can cut and paste

    A hint for 1.31.

    Lecture notes on accumulate that may be helpful for problem 1.32

    9/18--9/22 Formulating Abstractions with Higher-Order Procedures TBD
    9/26--9/29 Data Abstraction

    SICP: Chapter 2 intro, SICP: Chapter 2.1

    SICP: 2.2.1, 2.2.2

    Thursday: SICP Chapter 1 Midterm

    Jeopardy review game

    Brian Harvey explains abstraction

    10/2--10/6 Data Abstraction SICP: Chapter 2.2.3 (skip all stuff after problem 2.35)

    2.1, 2.2, 2.4, 2.7, 2.8, 2.9; (2.6 is interesting stuff, but not something you have to turn in.)

    A complex number abstraction

    10/10--10/13

    Data Abstraction SICP: Chapter 2.2.3 (skip all stuff after problem 2.35)

    Join your AP Classroom:
    Period 2 Join Code: DMYJDR
    Period 3 Join Code: W2466Z
    Period 4 Join Code: PX2XEJ

    Old SCVAL Door Prize Problem

    2.1, 2.2, 2.4, 2.7, 2.8, 2.9; (2.6 is interesting stuff, but not something you have to turn in.)

    10/16--10/20

    Data Abstraction

    SICP: Chapter 2.2.3 (skip all stuff after problem 2.35)

    Lecture on Binary Search Trees (Day 3)

    10/23--10/27 Data Abstraction

    The complex number abstraction from class

    2.17, 2.18, 2.20, 2.21, 2.22, 2.23, 2.24, 2.25, 2.26, 2.27; Fun for math hotshots: 2.19

    10/30--11/3

    Data Abstraction

    11/6--11/9


     

    Practice test (from 2012)

    Practice test (from 2012) solutions

    11/13--11/17 Modularity, Objects, and State

    SICP: Chapter 3.1

    Review problems for Midterm 2

    Solutions to the review problems for Midterm 2

    Tuesday: SICP Chapter 2 Midterm

    11/20--11/24

    THANKSGIVING THANK GIVE
    11/27--12/1 Modeling with Mutable Data

    SICP: Chapter 3.3

    3.1, 3.2, 3.3, 3.7, 3.8

    Parking Meter problems

    12/4--12/8

    Modeling with Mutable Data

    Data Structures (tables, queues)

    Download Eclipse at home if you have yet to do so.

    Binary Search Trees

    ChatGPT passes the AP CS A test

    Write insert! for binary search trees

    3.15, 3.16, 3.17, 3.22, delete! problem for tables

    3.22 message passing queue starter kit

    Box-and-pointer diagram with mutation warmup (includes solution)

    Parking Meter problems

    count-pairs (problem 3.17) starter kit

    Solution to count-pairs problem

    Solution to the queue problem (3.22)

    Solution to the table deletion problem

    12/11--12/15

    Download Eclipse at home if you have yet to do so.

    WARNING: NO EXTRA CREDIT SUBMITTED AFTER FRIDAY, DECEMBER 15 WILL BE ACCEPTED! THIS IS AN ABSOLUTE, HARD DEADLINE. WE DO NOT HAVE TIME TO HANDLE EXTRA SUBMISSIONS DURING FINALS WEEK.

    CANCELLED: Day 2: SICP 15 3 Test

    (Chapter 3 will be on the final.)

    Review content for chapter 3 test

    2012/2013 actual chapter 3 test

    2012/2013 actual chapter 3 test solutions

    Solution to insert! for binary search trees

    EXTRA CREDIT IS DUE ON FRIDAY, 12/15. NO EXCEPTIONS.

    12/18--12/22

    FINALS (12/14--12/18)

    You will be tested on the SICP stuff. To keep it less stressful, it will all be in Scheme.

    Jeopardy Review

    I would love to recommend that we play Jeopardy!, but 30 minutes just isn't enough.

    From lecture:

    Queue diagram (also in the book)
    Stack diagram (stacks not in the book)
    Table diagram (also in the book)

    Jeopardy Review

    FINAL EXAM:

    TBD

    EXTRA CREDIT IS DUE ON FRIDAY, 12/15. NO EXCEPTIONS.

    12/25--12/29

    Winter Break

    WINTER BREAK INTRODUCTION TO SLEEP  

    1/1--1/5

    Winter Break
    WINTER BREAK EAT
    1/9--1/19 (2 weeks)

    Interfaces and Polymorphism

    Inheritance

    Useful functions

     

    The Brilliant Number problem

    More time to work on The Brilliant Number problem

    Solve Problem 1.16 (fast-expt) with a loop in Java as opposed to the iterative recursion function you wrote in Scheme back in August.

    Intro to the Comparable interface

    Intro to the Comparable interface with some polymorphism

    Public, private, protected, and package-private

    The topics list for the FOOP final works well for AP CS, too.

    1/22--1/26 Interfaces and Polymorphism

    Solution to the Brilliant Numbers problem

    Solution to the Comparable interface Cow problem

    Do the mobile problem (2.29) in Java.
    Here is what a solution looks like in Scheme.
    Here is some code to get you started.

    Solution to the mobile problem in Java

    If you feel a need for additional information about superclasses, subclasses, inheritance, and delegation, this is good stuff: Chapter 9 in CS Awesome/Runestone

    1/29--2/2 Interfaces and Polymorphism
    2/5--2/9

    Binary Search Trees

     

    Randp project (Do this before the Binary Search Tree project)

    Binary Search Tree project

    Binary Search Tree starter kit

    Solution to the Randp problem

    2/12--2/15

    Writing Code in a Larger System

     

    TriangleBug solution

    KnightCritter solution (one of many ways to do this)

    Randp project (Do this before the Binary Search Tree project)

    Binary Search Tree project

    Binary Search Tree starter kit

    Solution to the Randp problem

    LifeBug problem (do only if you get done with Binary Search Tree project)

    LifeBug Solution

    Apple vs. the FBI (general story)

    Apple vs. the FBI (Apple's story)

    2/20--2/23 Bubble, Insertion, and Selection sorts  
    2/26--3/1 Quicksort

    Find the median of an array of ints in average O(n) time by modifying quicksort

    3/4--3/7 Quicksort  
    3/12--3/15

    Quicksort

    Make sure you are good on the length, substring, indexOf, compareTo, and equals methods for String objects for the test

    Finish the median problem and Midterm 1 v2.0

    Solution to Midterm 1 v1.0

    3/18--3/22 Heapsort  

    Solution to the median problem

    A nice animation demonstrating heapsort from somoene at the University of San Francisco.

    Write heapsort. Note that the assignment says to sort an array of Comparables.

    An explanation of why building a heap is O(n). The explanation starts at about 37 minutes into the video in case you want to skip forward. The rest of the lecture is pretty good, so the tenacious student may want to watch the whole thing. Understanding the lecture depends on understanding mathematical series as well as a heapify method (heapify is what is called buildHeap in our solution). It's as clean an explanation as I have been able to find on the Internet.

    3/25--3/29

    Mergesort  

    Why Java uses quicksort for primitive data types and mergesort for objects

    Nice animation for studying the behavior of mergesort

    Write mergesort in Java, once with arrays and once with ArrayLists. (Suggestion: use ArrayList<Integer> specifically). Here is the Scheme version of mergesort, which may make the ArrayList version much easier.

    Review materials for Midterm 2

    2012 sorting test

    2012 sorting test solution

    Test review problems (courtesy of Mr. Bautista)

    Solution to mergesort

    Stuff I would study to prepare for the sorting test

    MOAR PRACTICE!

    MOAR PRACTICE solutions

    Mergesort problem to prepare for test

    Study this, it will make all the difference (h/t Drew Briggs)

    Runestone 11.1 Post Test

    Runestone 12.2 Practice Test

    4/1--4/5

    Spring Break
    SPRING BREAK SPRING BREAK SPRING BREAK
    4/8--4/12

    The Month of Cram

    Cram

    Practice Multiple Choice Questions (MCQ), straight from Runestone to you! (This is timed, so once you start, you are committed!)

    Thursday: Searching and Sorting Midterm

    The Histogram problem

    3Blue1Black: "But what is a GPT? Visual intro to Transformers | Chapter 5, Deep Learning"

    Topics list for AP CS A

    Topics list for FOOP (for comparison)

    Program hygiene

    Write toBinaryString() and toHexString() without using the Integer class.

    The Josephus problems are great review problems for practice with ArrayLists, Strings, and logarithms. Remember change of base to perform log2 arithmetic: log2N = Math.log(N)/Math.log(2). Look up the Math class in the Java 7 API if you want details.

    Act anxious in anticipation of Spring Break

    4/15--4/19 The Month of Cram Cramalamadingdong

    The Take Home Final: NotchWar

    Last year's Final Exam: Set

    Runestone 12.4 Practice Test

    Brain Hacking (60 Minutes)

    The gross Superclass and Subclass problem

    The gross Superclass and Subclass problem solution explained

    The self-assessments may be helpful

    4/22--4/26

     

     

    Practice Stuff TBD

    Brandon Horn's explanations of 2009 free response answers

    Even more practice tests

    4/29--5/3  

    2021 AP CS A Essential Resources

    Mock Exam

    Mock Exam Answer Key

    University of Washington AP CS A Review

    ArrayList practice

    CodingBat for String and array practice

    5/6--5/10

    AP Computer Science Test, Wednesday, May 8 (afternoon)

    AP Computer Science Test, Wednesday, May 8 (afternoon)

    Make this program draw a chessboard with pieces as discussed in class

    Solution to Make this program draw a chessboard with pieces as discussed in class

    The Awesome Car Parking Problem

    Find the duplicate problem

    The Quadrant problem

    Regarding HashMaps (note the parts about load factor and capacity)

    5/13--5/17

    Final Project

    Hacker's Delight (specifics TBD)

    Final Project

    Hacker's Delight (specifics TBD)

    Do the rainfall problem. It is to be done individually.

    Rainfall problem survey

    Important: Extra credit that is not submitted by Friday, 5/24 will not be given credit.

    Hacker's Delight (specifics TBD)

    5/20--5/24 Final Project

    Final Project

     

    5/27--5/30 Finals Week But We Don't Have Finals In This Class Have a great summer!

    Readings are due each Monday.  Homeworks and projects are due AT THE BEGINNING OF CLASS on the following Monday unless it is a holiday. In that case they are due the first class period following the Monday.

    Example: The reading of  Abelson and Sussman chapter 1.1 and download of DrRacket is due on 8/28. Problems 1.1 through 1.6 in Abelson and Sussman are due on Monday 8/31.

    Unexcused late homework, projects, quizzes, and tests will be given a score of zero.  If you expect to have problems meeting a deadline, I need to know about it in advance.  Excuses after the fact will be given zero tolerance, barring a medical excuse signed by parents.