Syllabus#

AP Computer Science A (APCS)
2024-25
Dr. Kessner
Marlborough School, Los Angeles

Free periods: FI in D215

Course Description#

In this course we will dive deeply into object-oriented programming in the Java language. While we explore computer science concepts using Java, these concepts are applicable to all programming languages. In addition to building your coding skills through coding assignments, you will work on a larger software project using the Processing libraries. Along the way you will gain valuable experience testing and debugging your code.

Learning Targets by Unit#

Unit 0 (Command line, numeric conversion)#

  • command line

    • run commands from the Terminal command line

    • understand and navigate directory structure

    • understand relative vs. absolute paths

    • copy, move, delete files

    • edit files with a text editor

    • compile and run a Java program

  • numeric conversion

    • understand the binary, octal, hexadecimal, and decimal number systems

    • convert between decimal and other bases:

      • binary <-> decimal

      • octal <-> decimal

      • hexadecimal <-> decimal

    • fast conversion to/from binary:

      • binary <-> octal

      • binary <-> hexadecimal

Unit 1 (Java Basics)#

  • write, compile, run, and debug Java programs

  • remember basic syntax from Processing

    • conditions (if statements)

    • loops (for statements)

Unit 2 (Functions and Conditionals)#

  • write functions

    • understand how to pass variables as input

    • understand how to return values

  • write unit tests

    • write helpful output for validation and debugging

Unit 3 (String, Math, Random)#

  • use the basic String functions

  • use the Math library functions

  • use the rand() function to generate:

    • random floats in any interval

    • random integers in any interval

Unit 4 (Loops / Algorithms)#

  • use a loop to perform computations

Unit 5 (Classes & Objects)#

  • write a class definition

  • create objects of a class

  • use constructor for initialization

  • declare member methods and variables

  • understand public vs private access

  • understand local vs member variable scope

Unit 6 (Processing libraries)#

  • understand how to create a graphics program in Java using the Processing libraries

  • remember basic Processing functions for drawing

Unit 7 (Arrays)#

  • declare an array of basic types or objects

  • array functions and access

  • iterate over an array

    • for loop

    • for-each loop

Unit 8 (ArrayList)#

  • declare an ArrayList of objects

  • ArrayList functions and access

  • iterate over an ArrayList

    • for loop

    • for-each loop

Unit 9 (Array Algorithms)#

  • write functions that operate on arrays / ArrayLists

    • search / compute

    • filter

    • transform

Unit 10 (Lists of Objects)#

  • create an array or ArrayList of objects

  • adding / editing / removing objects

  • iterate through a list of objects

    • for loop

    • for-each loop

Unit 11 (Inheritance and Interfaces)#

  • create a subclass of a class

  • write an interface

  • implement an interface

  • operating on a list of objects of a given interface or base class

Unit 12 (2D arrays)#

  • create a 2D array of base types or objects

  • initialize a 2D array using a nested for loop

  • iterate through a 2D array

    • for loops

    • for-each loops

Unit 13 (Interacting Classes)#

  • write a class with member variables that are also classes

  • write a class with an ArrayList as a member variable

Unit 14 (Algorithm analysis)#

  • understand the asymptotic runtime of basic searching and sorting algorithms

    • search

      • linear

      • binary

    • sort

      • selection sort

      • insertion sort

      • bubble sort (optional)

      • mergesort

Unit 15 (Recursion)#

  • write a recursive function

  • mentally trace through the calls of a recursive function