Course curriculum

  • 2

    M1a: Let's get set up!

    • Installing and setting up VSCode

    • Download Module 1 Code!

  • 3

    M1b: How Java Works

    • Three kinds of programming languages

    • DEEP DIVE: The JVM (Java Virtual Machine) Stack and Method Areas

    • DEEP DIVE: Local Variables

    • EXERCISE: Your Turn 1

  • 4

    M1c: Introduction to Object-Oriented Programming!

    • Introduction to OOP!

    • Our First OOP Program!

    • DEEP DIVE: The Heap

    • DEEP DIVE: Instance, Local, Primitive and Reference Variables

    • IN A NUTSHELL: Different Kinds of Variables (so far!)

    • EXERCISE: Your Turn 2a

    • The Static Keyword (Class Variables and Class Methods)

    • Static Variables in a nutshell

    • Bonus Lecture - Using Static to build a Utils class (not on exam!)

    • IN A NUTSHELL: Different Kinds of Variables Complete!

    • EXERCISE: YourTurn 2a - extra

    • Answers to YourTurn2a - extra

    • Static Methods in a nutshell

  • 5

    M1d: Protecting our Data

    • Why we need to protect our code from bad programmers

    • Getters, Setters, and encapsulation

    • Constructors

    • EXERCISE: YourTurn 2b

    • EXERCISE: Crossword Challege!

    • EXERCISE: YourTurns 3-5

  • 6

    M1e: A Quick Review so Far

    • IN A NUTSHELL - JVM Rules

    • CHECKPOINT

  • 7

    M2a: Using the Debugger

    • Download Module 2 Code!

    • Using the debugger with VSCode - Part 1

    • Using the debugger with VSCode - Part 2

    • EXERCISE: Using the Debugger

    • Using the debugger with VSCode - Part 3

    • Using the debugger with VSCode - Part 4

  • 8

    M2b: Enumerated Types and .equals

    • .equals and Enumerated Types

  • 9

    M2c: DEEP DIVE: Objects

    • Holding a reference to an object

    • EXERCISE: YourTurn1 - Treasure Hunt!

    • EXERCISE: Use the debugger to step through the code in YourTurn1

    • EXERCISE: YourTurn3 - Movie Tickets

  • 10

    M2d: Arrays

    • Introduction to Arrays

    • An easier way to think of arrays

    • More Arrays!

    • EXERCISE: YourTurn4

    • How Arrays are stored in memory

  • 11

    M2e: Arrays of Objects

    • Let's build an array of objects

    • What an array of objects looks like in memory (Also, how to use the shortcut when creating an array of objects)

    • EXERCISE - Use the debugger to fix our array problems

    • QUICKQUIZ: Array of Objects

    • EXERCISE: YourTurn 5

  • 12

    M2f: The Stack Structure

    • M2: The Stack Data Structure

    • M2: Building our own Stack using an Array

    • M2: EXERCISE: Make our Stack better!

    • M2: IN A NUTSHELL: Arrays

  • 13

    M2g: Multidimensional Arrays

    • Now our warehouses can store more than 1 thing per floor!

    • Multi-dim arrays in memory (and how .length works)

    • Multi-dim Arrays of Objects

    • Ragged Arrays and review of all arrays

    • EXERCISE: Arrays, arrays, and more arrays!

    • M2: EXERCISE: Module2: Yourturn6

  • 14

    M3a: Linked Lists - Now we're getting into it!

    • Download Module 3 Code!

    • M3: Holding a reference and Garbage Collection

    • M3: Passing a Reference Variable to a method

    • M3:EXERCISE: Yourturn1: Let's build a Movie Object

    • M3: Yourturn2: Let's build a stack that can accept Movie Objects

    • M3: What is the weakness of our array-based stack?

    • M3: Introducing Array Lists

    • M3: Building our Stack using ArrayList

    • M3: EXERCISE: Follow the breadcrumbs!

    • M3: Building a Linked-List of Movies

    • M3: EXERCISE: YourTurn 3a: Adding getAllMovieTitles to our list

    • M3: EXERCISE: YourTurn 3b: Adding removeNodeFromFront to our list

    • M3: EXERCISE: YourTurn 3c: Adding addNodeToEnd to our list

    • M3: EXERCISE: YourTurn 3d: Adding removeNodeAtEnd to our list

    • M3: A quick discussion about the importance of naming conventions

    • M3: The Java Collections and Other List Structures

  • 15

    M4: Inheritance, Abstract Classes and Interfaces

    • Download Module 4 Code!

    • M4: Inheritance - Let's build a Pirate!

    • M4: YourTurn 1a

    • M4: Deeper into Inheritance

    • M4: Visibility Modifiers and Packages

    • M4: YourTurn 1b

    • M4: Overriding Methods

    • M4: Yourturn 1c

    • M4: Constructors and Inheritance

    • M4: YourTurn1d

    • M4: Inheritance Chains

    • M4: Abstract Classes

    • M4: YourTurn1e

    • M4: Interfaces

    • M4: Quick Review

    • M4: Putting it all together! Building a Parking Lot, Part 1

    • M4: Putting it all together! Building a Parking Lot, Part 2

    • M4: YourTurn2

    • M4: Taking up Yourturn2 together

    • M4: Yourturn3

    • M4: Quick Quiz

  • 16

    M5: Namespaces / Class Relationships Polymorphism

    • Download Module 5 Code!

    • M5: Package, Jar Files, JavaDocs and Libraries - PART 1 - NOT ON EXAM!

    • M5: Package, Jar Files, JavaDocs and Libraries - PART 2 - NOT ON EXAM!

    • M5: EXERCISE: Your Turn 1a

    • M5: Answer to memory question in YourTurn1a

    • M5: Class Relationships (Dependencies, associations, aggregation, composition)

    • M5: EXERCISE: Yourturn 1b

    • M5: Polymorphism - Another look at our Animals!

    • M5: Polymorphism - Technical Definitions

    • M5: Another look at our Parking Lot - Part 3

    • M5: EXERCISE: YourTurn 2: Finishing our Bank

    • M5: Comparable - Interfaces + Polymorphism = MAGIC! - NOT ON EXAM

    • M5: Polymorphism and SOLID principles

    • M5: Bonus Lecture - Generics 1

    • M5: Bonus Lecture - Generics 2

  • 17

    Module 6: Bringing it all together!

    • Exercises, more exercises, and yet more exercises!

  • 18

    Module 7: GUIs / Java FX / Event-driven programming / Inner Classes

    • Download the Module 7 Code!

    • Hello World with style - Setting up JavaFX in VSCode

    • "Hello World" with style!

    • Creating Layouts within our Scenes (VBOX, HBOX)

    • YourTurn1 - Build your first GUI Application!

    • Let's make our button work! Event Driven Programming - Part 1

    • Event-Driven Programming Part 2: Convenience methods

    • YourTurn2: Making our first GUI app do something!

    • Inner, Anonymous Classes make it easier.

    • Lambdas make it even cleaner!

    • YourTurn 3

    • A slightly better GUI - combining layouts

    • Binding properties in our GUI

    • YourTurn4 - Tracking the Mouse!

  • 19

    Module 8: Deeper into Java FX

    • Download the Module 8 Code!

    • What is FXML?

    • Using Scene Builder 1

    • Using Scene Builder 2

    • YourTurn1

    • Using Scene Builder 3

    • Using Scene Builder 4 - The initialize method and ListView component

    • YourTurn2 - Build something cool!

    • SceneBuilder 5 - TableView

    • YourTurn3 - Scoreboard

    • YourTurn4 - Wiring up the scoreboard

  • 20

    Module 9- File Handling and Deeper into Exception Chains

    • Download the Module 9 Code!

    • Let's read from a file

    • Protecting our code from real-world problems (Try/Catch/Finally)

    • Try with Resources

    • YourTurn 1 - Read the world's funniest joke from a text file!

    • Exception Chains

    • Saving a file to disk

    • Building a Joke Machine! Let's start with the GUI!

    • Your Turn 2- Building an Enigma Machine - Part 1

    • Our Joke app - Alerts and Exception chains in real life.

    • Using the chooser to select which file to use

    • Joke Machine - A new joke with every mouse click! Re-throwing exceptions

    • Joke Machine -Rating our Jokes - Part 1: Inflating Objects from a flat file

    • YourTurn 3 - Giving our Enigma Machine the ability to read stored secret messages!

    • YourTurn 4 -Hooking up our FileManager and EnigmaMachine to our GUI

    • YourTurn 5 - Updating our Enigma Machine to choose which message to decode

    • A little bit about the real-life Enigma Machine

    • Saving a Objects to disk (Deflating objects)

    • Re-inflating objects from disk

  • 21

    Module 10: Deep into Exceptions

    • Download the Module 10 Code!

    • Deeper into Exceptions - Errors/ Checked vs Unchecked etc

    • An Exception Refresher

    • Making our own Exceptions using inheritance!

    • JavaDocs

    • YourTurns 1,2 and 3

  • 22

    Module 11: Collections

    • Download the Module 11 Code!

    • Java Collections and Lists

    • YourTurn1 - Polymorphism to the rescue!

    • The Queue Interface

    • Design Patterns - The Facade Pattern

    • YourTurn 2a - Building a Car Rental Business Using the Facade Pattern

    • YourTurn2b - Building a Car Rental Business Using the Facade Pattern

    • HashMaps

    • YourTurn3a - Building a Hotel Management System

    • YourTurn3b - Building a Hotel Managment System

  • 23

    Module 12 - Bringing it all together!

    • Copy of Download the Module 12 Code!

    • YourTurn1 - Describe all of the variables in the following code

    • YourTurn2 - What Prints? (Objects)

    • YourTurn3 - Navigating Objects

    • YourTurn4 - Using Stack for browser history or breadcrumbs

    • Yourturn5 - Polymorphism part 1

    • Yourturn6 - Polymorphism part 2

    • YourTurn7 - Facade Pattern

    • YourTurn8 - Pizza Ordering System

    • YourTurn 9 - SuperSmartyPants - NOT ON THE EXAM!