Syllabus
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.
Topics
In this course we will dive deeply into object-oriented programming in the Java language. We will explore many programming and computer science concepts:
- data types and variables
- functions
- conditionals
- loops and algorithms
- logical and arithmetic operators
- arrays, ArrayLists
- computer graphics and animation
- classes and objects
- 2D arrays and image processing
- data analysis
- algorithm analysis
- recursion
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
- search
Unit 15 (Recursion)
- write a recursive function
- mentally trace through the calls of a recursive function