Java Object-Oriented Programming: AP Computer Science B
4.2 (28 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,603 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Java Object-Oriented Programming: AP Computer Science B to your Wishlist.

Add to Wishlist

Java Object-Oriented Programming: AP Computer Science B

AP Computer Science, Java Programming, Object-Oriented Programming, Java GUI, OOP, Java, Algorithms, Data Structure
4.2 (28 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,603 students enrolled
Created by Dr. Eric Chou
Last updated 3/2017
Current price: $15 Original price: $40 Discount: 62% off
4 days left at this price!
30-Day Money-Back Guarantee
  • 19 hours on-demand video
  • 59 Articles
  • 393 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Have a coupon?
What Will I Learn?
Learn object-oriented programming in Java.
Study basic algorithms and data structure using Java
Meet the course requirements for AP Computer Science B (2nd Semester)
Complete review materials for AP Computer Science Exam and College Level Java Programming Courses
View Curriculum
  • Finish the AP Computer Science Part 1: Java Programming Essentials or equivalent course.
  • Minimum mathematical background: algebra I

[This is the 2nd semester of College Level Java Course. Please make sure that you have done 1st semester College Level Java equivalent course before signing up this course.  You may signed up both at the same time but make sure you have enough capability to handle this course.]

This course covers the second semester of AP Computer Science which includes complete introduction for Java Object-Oriented programming. The course is suitable for people who are seeking for a on-line class for introduction to Java programming, who are preparing for AP Computer Science Exam in high school and who want to sharpen their knowledge in Java.

This part B course includes complete tutorials for Java Object-Oriented Programming, Program Analysis, and introduction to algorithms which included recursive programming, data structure and algorithm development. This course revolutionize the way computer science is taught. Instead of teaching textbook chapter by chapter.

This course will be focused on an example program in each lecture. Lucid big idea in computer science will be introduced by the example program. It is followed by explanation of Java syntax and other language features. Practice questions, quizzes, and programming exercises will be given thereafter to enhance the understanding of the idea and to help to improve programming efficiency and test scores.

A spiral study model is suggested for student to build up good programming habits and shorten learning cycles in programming.

I would proudly say that this is one of the best Java Programming course on-line ever.

In this course, you will get:

(1) On-line lectures (with .pdf slides)

(2) sample programs (in Java)

(3) Quiz and exams (in multiple choice format) with solution

(4) AP format exam with solution.

(5) Free-online textbook access.

(6) Free on-line related information links and book chapters.

(7) Demo programs

(8) Lab projects

(9) Chapter projects.

(10) Facebook Q&A support and Gmail responses.

Who is the target audience?
  • Working individuals who want to learn data structure and algorithms using Java
  • Students who want to take AP Computer Science Exam
  • Programmers who finished the first Java Programming course and seeking for Java Programming course at intermediate level.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
Expand All 220 Lectures Collapse All 220 Lectures 20:06:59
9 Lectures 59:25

Overview of AP Computer Science Course as a whole. It also includes the table of contents for part 2 and part 3. Provide readers a good big picture of what to expect in the course. The slides (.pdf file) is also made downloadable.

Preview 07:05

Overview of Part 2 (AP Computer Computer Science B) and the related issues in AP Exam.

Preview 05:02

If you have not signed up for the College Level Java 1 course: Java Programming Essentials: AP Computer Science A

Get the College Level Java 1 (AP Computer Science A)

Think Java: Companion book for this course. 

Think Java

Show student the resources and other educational materials provided by the Lecturer.  To guide student to learn Programming step by step. 

Preview 01:11

(Additional Lecture) Installation of BlueJ from AP Computer Science Part 1: Java Programming Essentials

Installation of Java Software and BlueJ

Demonstrate the advantages of BlueJ as the first Integrated IDE for beginning students.

Why BlueJ?

Java Compiler Installation Guide

Java 8 Standard Edition Installation Guide 9(Stand-alone Version)

Installation Guide for Eclipse (Neon) and plugins. (The same method can be used for all other versions of Eclipse)

Eclipse IDE Installation
Unit 3/Chapter 9: Revisit AP CSA Ch.9 - Classes and Objects
20 Lectures 01:38:29

Discuss classes and objects for data record with states and behaviors. States are properties or variables. Behaviors are methods. Any simple example of SimpleCircle class is used to show the idea of class and objects.

Preview 07:48

Exercise on different object-oriented program styles. 

Lab Project: Program Styles (Review, skip if done)

[Java Coffee Break] Showing the concept of using objects as data collection. 

A data object can with proper information hiding and encapsulation should only be accessed by getter methods and setter methods. 

[Java Coffee Break] Objects and Data Encapsulation

Discussion on the constructor methods for creating objects.

Preview 07:28

Construct a car fuel usage information class and object to exercise on basic object oriented programming skills. 

Lab Project: Fuel1 (Review, skip if done)

Talk about pointers and reference data type for Java. The main focus in this lecture is to summarize the various reference data type. For operations for reference data type, please refer to the external web link.
Reference Variables (Accessing String, Array, ArrayList, and Objects) (revisit)

Continue the Fuel Series program to add two member (instance methods) into it. 

Lab Project: Fuel2 (Review, skip if done)

Discuss the scope and lifetime of local variables, instance variables (methods), and class variables (methods).

Scope of Members (Static/Instance, Local/Global) (revisit)

Modify the Fuel2 project into Fuel3 project with multiple objects. 

Lab Project: Fuel3 (Review, skip if done)

Discuss the visibility modifiers (public, protected, default (no modifier) and private ) and where a variable, a method or object can be accessed.

Visibility Modifiers (revisit)

Modify Fuel3 project into array format. 

Lab Project: Fuel4 (Review, skip if done)

Starts Design Styles for Classes and Objects. First lecture on Static Members.

Classes and Objectes (1): Static Members (revisit)

Modify Fuel4 into arraylist format.

Lab Project: Fuel5 (Review, skip if done)

Use an example to show the idea of Data Encapsulation in Java

Classes and Objects (2) : Data Encapsulation 1 (revisit)

Discuss the ways to access objects by methods: (1) use accessor and mutator (2) passing objects as parameter for instance methods or class methods. Please also refers to the attached web-links fore more ways to pass objects to methods.
Classes and Objects (3): Data Encapsulation 2, Pass Objects to Methods (revisit)

Discuss how to design an immutable class. Three principles:

(1) All data fields must be private.

(2) No public setter methods.

(3) No accessor methods should return reference data type so that the reference data type may provide a back door (some mutator metthod) to update internal data which is supposed to be immutable.

Classes and Objects (4): Immutable Objects and Classes (revist)

Demonstrate the idea of static variables and the instance variables. 

Static versus Instance Properties

Introduce this keyword, it is a keyword to indicate the current object to distinguish the instance variable from argument, local variable and other variables of the same name. Class.variable is also presented.

this Reference (revisit)

Chapter project using AP Physics Rules for calculation of projectile. 

Chapter Project: Catapult Projectile (review, skip if done)

Show the internet resources available for eC Learning Channel by Dr. Eric Chou to support this course. 

My Udemy:

Youtube channel:





Preview 01:45
Unit 4/Chapter 10: Object-Oriented Thinking (Examples of Ch. 9 Topics)
19 Lectures 02:17:12

Review of classes and objects and provide overview for the Object-Oriented Programming in Unit 4 and Chapter 10.

Preview 09:09

Use Course class as an example to show how to define a class and class coherence.

Demo Program: Course Class and Coherence

Thinking in Object-Oriented Programming way. To build a complete class for BMI calculation.

Demo Program: BMI Class, Completeness and Design Conventions

Design a BMR class to experience designing a cohesive and complete class.

Lab Project: BMR class

Create two classes for the Geometric project 1. Rectangle and Triangle classes. 

Lab Project: Geometric 1

Using conversion from a structual program into the BMR class and TestBMR class as an example to demonstrate the conversion between a structural program to object-oriented program.

Demo: Conversion of Structural Program to Object-Oriented Program

To design classes, you need to explore among classes. The common relationships among classes are association, composition and inheritance.

Preview 11:24

Video clip to shop the relationship of classes including is_a and has_a relationships. 

[Java Coffee Break] Class to Class Relationship

Use the violet tool to construct class diagram with Aggregation relationship.  Build a Lego class has has_A relationship for the Lego class and Rectangle and Triangle classes. 

Lab Project: Geometric 2

Lab project on stack of integers. This is the first project in a series on user-defined data structure using object-oriented programming. These basic data structure will be very useful in AP Exam. It is also a good introduction for Unit 5 (Algorithms and Data Structure).

This lab project is also a good example for OOP design guidelines for coherence, completeness and design styles.

Lab Project: Stack Of Integers

Provide examples, demo programs, and lab project to use this.

Standard Methods for Object Class

Use of this reference for conversion of static method and constructor calls.

Use of this Reference

Use String, StringBuilder and StringBuffer classes to separate the responsibilities for operating strings. (Part 1)

String, StringBuilder, and StringBuffer I (Separation of Responsibilities)

Use String, StringBuilder and StringBuffer classes to separate the responsibilities for operating strings. (Part 2)

String, StringBuilder, and StringBuffer II (Separation of Responsibilities)

Use Palindrome check to demonstrate the advanced String processing and StringBuilder/StringBuffer Class.

Demo Program: Check Palindrome (String Processing)

Use load Class to demonstrate the class abstraction and Ecapsulation

Demo Program: Loan Class

Show the three important top level classes for Java language: Object, Number and String classes.

[Java Coffee Break] Java Top Level Classes

Add the methods inherited from the Object class into the Rectangle and Triangle Class. Also add the mutator methods into these classes. 

Lab Project: Geometric 3

Introduction of BigInteger and BigDecimal classes along with conversion of int, double, Integer, Double, String data type conversion. BigInteger and BigDecimal classes are data classes with mathematical operations.

Math Processing I: (Data/Object Type Conversion)

Chapter 10 Quiz:
20 questions
Unit 4/Chapter 11: Inheritance and Polymorphism
14 Lectures 01:58:04

Inheritance enables you to define a general class (i.e., a superclass) and later extend it to more specialized classes (i.e. subclass)

Preview 14:52

The keyword super refers to the superclass and can be used to invoke the super-class's methods and constructors.

super keyword

Polymorphism means that a variable of a supetype can refer to a subtype object.


To override a method, the method must be defined in the subclass using the same signature and the same return type as in its superclass. Overloading means ti define multiple methods with the same name but different signatures.

Overriding and Overloading

Show the concept of Inheritance, member properties, overriding, overloading. 

[Java Coffee Break] Inheritance

Apply the Inheritance and overriding methods to Geometric project. 

Lab Project: Geometric 4

Use numbers package to demonstrate polymorphism.

Demo Program: numbers package

One object reference can be typecast into another object reference. This is called casting object. Define method return value and parameters in more general (or abstract) superclass will make it more useful.

Casting and instanceof Operator

Example for Object class in equality package.

Demo Program: equality package

A method can be implemented in several classes along the inheritance chain. The JVM decides which method is invoked at run-time. (super.getNum(), this.getNum())

Dynamic Bining

Exercise Polymorphism on the Geometric Project.  Add three more classes, Square, Cube and Equilateral. 

Lab Project: Geometric 5

Show the nature and need for polymorphism and why it makes Java language platform-dependent with dynamic binding (linking)

Preview 01:35

Constructors for Parent class and Child class for the initialization of data fields in parent objects and children objects.

Base class Constructor (people package)

A protected member of a class can be accessed from a subclass.

The protected Data and Methods (people package: Non-AP Topic)

Quiz on Inheritance and Polymorphisn

Chapter 11 Quiz
20 questions
Unit 4/Chapter 12: Exception Handling and I/O (Binary I/O Optional)
17 Lectures 02:10:57

Exceptions are thrown from a method. The caller of the method can catch and handle the exception.

Preview 13:43

Exceptions are objects, and objects are defined using classes. The root class for exceptions is java.lang.Throwable.

Exception Types

A handler for an exception is found by propagating the exception backward through a chain of method calls, starting from the current method.

Exception Handling

A group of advanced topics on exception handling.

Advanced Topics (finally, Rethrowing, and Chained Exceptions)

You can define a custom exception class by extending the java.lang.Exception class. We provide an example to show how to do it.

Defining Custom Exception Classes

Discuss the keyword assert that can be used to check the program correctness. If the assertion is false, an error will be raised. This operator make initial error for program checking and testing. It is replaced by JUnit Test which is in another course that we have "Java JUnit for Unit Testing


Objected Oriented Programming is for the following purpose: (1) Multi-threading, (2) Dynamic Binding, (3) Module Management. 

[Java Coffee Break] Object-Oriented Programming is for Module Management

Reading Geometric Object information from file. Add the Exception Handling mechanism into the program. 

Lab Project: Geometric 6

Quiz on Exception and Assertion

Chapter 12 Quiz (Exception and Assertion):
15 questions

The file class contains the methods for obtaining the properties of a file/directory and for renaming and deleting a file/directory.

File Class (Non-AP Topic)

This lecture focused on the general I/O concepts and the Stream class which is the top level class for the data stream hierarchy. 

Stream Class and Basic I/O Concepts (Non-AP Topic)

DataInputStream and DataOutputStream for the int, double, and other primitive data type and String data type I/O is presented. 

Data Stream (Non-AP Topic)

Using BufferedInputStream, BufferedOutputStream,BufferedWriter, BufferedReader to speed up the I/O for Java Programs. 

Buffered Stream (Non-AP Topic)

Write objects to files with ObjectOutputStream and read in objects from ObjectInputStream. 

Console Stream and Object Stream (Non-AP Topic)

After learning the object-oriented programming, students need to understand what is the purpose for object-oriented programming. OOP is widely used for class management and library building.  In modern terms, the packages of library code are called module, package, application programming interface (API), or even bigger, design framework. All of these are built up using object-oriented programming technology.  The Java Core classes means the classes available in Java development kit (JDK) that came with the Java compiler. 

[Java Coffee Break] Java Core Classes

Read and write objects from files or to files.  This is one of the project in the Geometric project series to work on the file operation (using Object Streams). Class used as a format of data record in this lab project. 

Lab Project: Geometric 7 (Non-AP Lab Project)

Advanced Object Stream (Non-AP Topic)

Just like you can read data from a file on your computer, you ca read data from a file on the Web.

Random Access File (Non-AP Topic)

Quiz on File Class and Input/Output Streams

Chapter 12 Quiz (File and Streams)
10 questions
Unit 4/Chapter 13: Abstract Classes and Interfaces
23 Lectures 01:57:11

An abstract class cannot be used to create objects. An abstract class can contain abstract methods, which are implemented in concrete subclasses.

Preview 12:27

Number is an abstract superclass for numeric wrapper classes, BigInteger, and BigDecimal.

Abstract Number Class

Use abstract class to organize classes sharing the same methods and data fields together. 

Lab Project: Geometric 8

GregorianCalendar is a concrete subclass of the abstract class Calendar.

Calendar and GregorianCalendar Class (Non-AP Topic)

Discuss the final keyword and the abstract methods.

Demo Program: absfinal package

Using an event listener for a button to explain the anonymous class. Anonymous class is very useful in GUI design.

Anonymous Class

Present the nature of Abstract Class

[Java Coffee Break] Abstract Class

Add two anonymous class (actually should be anonymous objects) into the arraylist glist. 

Lab Project Geometric 9 (Non-AP Topic)

An interface is a class-like construct that contains only constants and abstract methods.


The Comparable interface defines the compareTo method for comparing objects.

Comparable Interface

The Cloneable Interface specifies that an object can be cloned.

Cloneable Interface

The Iterable Interface has one method iterator(). The Iterator Class has hasNext(), next() and remove() methods.

The ListIterator Class many more methods.

These three interfaces are useful to allow the classes that implements these interfaces to have the iterator to traverse through the class with these three interfaces.

Iterable Interface (Non-AP Topic)

Show how interfaces can be used. 

[Java Coffee Break] Interface

Compare and contrast between abstract class and interface. Both of them are useful to provide a class with extra feature. Abstract class can be viewed as core data class, while interface can be viewed as a collection of unimplemented methods. An abstract class implemented an interface is a core data class with the collection of unimplemented methods.

Abstract Class verus Interfaces

Use Rational Class to demonstrate a class extend Number abstract class and implement Comparable Interface.

Demo Program: The Rational Class

Lab Project: Geometric 10

Rewrite the Geometric10 to Geometric11 using iterator interface to access the elements. 

Lab Project: Geometric 11

A class can implement multiple interfaces, but it can only extend one superclass.

Class Design Guidelines

Overview of Java Design Patterns

Java Design Patterns (Group of Classes and Interfaces) (Non-AP Topic)

Adapter class to curb the difficulty to use an abstract class or interfaces. The reason may be in-compatibility among interfaces or un-wanted methods.

Adapter Classes (Non-AP Topic)

Adapter pattern to allow an adapter to drive polymorphic methods among incompatible interfaces or abstract classes.

Adapter Pattern Demo (adapterpattern package) (Non-AP Topic)

Use the simplest Model-View-Controller (MVC) design pattern, front controller design pattern, to demonstrate idea of behavioral design pattern.

Front controller design pattern can also be named as "single dispatcher design pattern" is one of the simple but powerfule design pattern. It is a good example to understand design patterns.

Front Controller Design Pattern (frontcontroller package) (Non-AP Topic)

Use Adapter Design Pattern as an Example to show the combination of Interface, Abstract Class and Class can work together as Adapter Design Pattern 

[Java Coffee Break] Adapters

Quiz on Abstract Class, Interface, Anonymous Inner Class, Final Class, and Design Patterns

Chapter 13 Quiz
20 questions
Unit 4/Review 1: Review of Advanced OOP (AP: Optional)
18 Lectures 02:24:26
Java Software Installation and Swing Packages

Introduce Java GUI Programming Toolkits (AWT/Swing/SWT/Javafx) as Examples for Inheritance and Object-Oriented Programming in General

Demo Program: Swing, AWT and objectdraw packages

Introduce the user-defined GUI Application Classes in Swing and Javafx

GUI Simple Application Classes (Swing/Javafx)

Go over the topics in GUI Programming (Containers, Components, Listeners, Interface, Data Model) and finish with one Sparring Score example before going into serious GUI topics.

Overview of GUI Programming with Sparring Score Example (Non-AP Topic)

Overview of the AWT/Swing package class hierarchy. 

Class Hierarchy of AWT/Swing Package for Java GUI Basics

Discuss the basic GUI program structure with the brief explanation on Frame, JFrame, Applet, JApplet and their Anatomy. 

Frame (Top Level Container) (Non-AP Topic)

One simple example for 2nd Level containers (also component) JPanel. 

Sub-Containers (Panel) (Non-AP Topic)

Basic Helper class that represents many objects in the GUI environment including Color, Font, FontMetrics, Graphics, and Dimension

Helper Classes (Color, Font, FontMetrics, Graphics, and Dimension) (Non-AP)

Discuss the general issues about graphics design in AWT/Swing

Graphics Class as Canvas in Swing Graphics Design (An Overview) (Non-AP Topic)

Use awt.Applet and Rectangle3 class to as a basic Java graphic development platform. 

Lab Project: Geometric 12 (GUI 1 - awt.Applet)

Discussion of drawing basic geometric objects. 

Drawing Geometric Objects (Non-AP Topic)

Use awt.Applet and Rectangle3 class to as a basic Java graphic development platform. 

Lab Project: Geometric 12 (GUI 2 - JFrame)

Use javax.swing.JApplet (BlueJ default style) and Rectangle3 class to as a basic Java graphic development platform. 

Lab Project: Geometric 13 (GUI 3 - JApplet - BlueJ default style)

Use javax.swing.JApplet in a JFrame and Rectangle3 class to as a basic Java graphic development platform. 

Lab Project: Geometric 14 (GUI 4 - JApplet in JFrame)

Introduce the event-driven programming environment in java.awt API. 

Event-Driven Programming using AWT Event package (Non-AP Topic)

Event source, event object, event listener, event handler and event target. 

Event Objects (Non-AP Topic)

Event Listener, event handler method and anonymous inner class for simplification of event listener and handler design. 

Event Listener and Anonymous Inner Class (Non-AP Topic)

Design Flow of GUI Projects

Development of GUI Projects
Unit 5/Chapter 14: Recursion
14 Lectures 01:01:33

Introducing the recursion pattern in real-life and computer arts.  Using a recursive rectangle drawing program to show how to create visual recursion. 

Preview 07:22

Further discuss the fractals using the Sierpinski Triangle as an example. 


Using factorial algorithm to explain tail recursion with helper method and compare it to the non-tail recursion method. 

Computing Factorials and Tail Recursion

Explain 2nd order linear recursion using the example of Fibonacci sequence. 

Fibonacci Numbers

Write an advanced Fibonacci number generator which can handle int data type and long data type.

Lab Project: Fibonacci Numebrs

Introduction of using recursion to solve problems.  One example of recursive palindrome check is used. 

Problem Solving using Recursion

Show the simple steps to write a recursive method. 

[Java Coffee Break] Recursive Patterns

Recursive Information Processing I on Simple Statistics. 

Recursive Processing I (Traverse, Sum/Avg/Max/Min, Reverse)

Recursive Processing on Text Processing. 

Recursive Processing II (Text Processing)

Recursive Processing III on recursive algorithms. 

Recursive Processing III (Selection Sort, Binary Search) (Non-AP Topic)

Comparison and conversion between iterative algorithm and recursive algorithm. 

[Java Coffee Break] Iterative VS Recursive

Writing the Palindrome Check for String (a chance to rewrite the program that is shown in the lecture). Please try to write in a different way. 

Lab Project: Palindrome

Using mathematical definition of Fibonacci sequence to compare the efficiency of iterative algorithm and recursive algorithm. 

Recursion vs. Iteration

Tower of Hanoi algorithm. 

Tower of Hanoi (Non-AP Topic)

Chapter 14 Quiz:
15 questions
Unit 5/Chapter 15: Searching, Sorting and Program Efficiency Analysis
25 Lectures 01:57:48

Overview of Algorithms and Algorithm study.  Introduce these important concepts and their study domain.

Preview 04:46

Discuss the Time complexity T(n) function and its asymptotic behavior for O(n) growth rate (for Big O notation)

Analysis of Algorithms: Big-O Notation

Resume the Geometric Project Series with comparable interface (implements compareTo() method). 

Lab Project: Geometric 15 (Comparable Interface)

Discuss how to formulate the time complexity function T(n) and the growth function O(n) which is the big-O notation. 

Time Complexity

collection of algorithms for FRQ exams.  We provide programs to show the basic algorithms.  By studying these algorithms, you may use them with some modification in the free response section in the real exams. 

Standard Algorithms

Use Euclid's algorithm to show that good algorithms do not come from hard-working people but from smart-working people.  A person cannot invent good algorithm by only studying other people's algorithm.  Instead, he must know about the nature of problem pretty well to invent a good algorithm. 

Euclidean Algorithm (Non-AP Topic)

Use 4 different algorithm to demonstrate the Prime Number checking algorithm (isPrime) of different efficiency.  Because of this reason, finding a good algorithm is very important. 

Finding Prime Numbers (Non-AP Topic)

Discuss simple linear search algorithm which is very useful in many applications. This lecture is followed by two exemplary demo program for letter occurrence count and word occurrence count in a text string.

Linear Search (Enhanced with Implementation from Chapter 7)

Highlight the issues in the study of algoriithms. 

[Java Coffee Break] Algorithms

Add the equals2D() method to the Geo2D interface, Rectangle3, Triangle3 classes. 

Add the equals3D() method to the Geo3D interface, Box3, Prism3 classes. 

Use these two methods to perform linear search on 2D and 3D Geometric objects. 

Lab Project: Geometric 16 (Linear Search)

Introduce a Binary Search version which will return the index of the matched element or a return code which indicate the hole where the key element can be inserted.

Binary Search (Enhanced with Implementation from Chapter 7)

Insertion Sort is based on finding the minimum and Insert by circular shifting. Example program is provided.

Sorting I: Insertion Sort

Showing the steps of a Insertion Sort case. 

[Java Coffee Break] Insertion Sort

Exercise on Insertion sort for array and use the same program to work on the arraylist with proper type conversion. 

Lab Project: Geometric 17 (Insertion Sort)

Selection Sort is based on the idea of finding minimum and swap. This lecture discussed selection sort from idea to solution. And an example is given.

Sorting II: Selection Sort

Showing the steps of a particular selection sort case. 

[Java Coffee Break] Selection Sort

Exercise on Insertion sort for array and use the same program to work on the arraylist with proper type conversion. 

Lab Project: Geometric 18 (Selection Sort)

Demo the use of selection sort and the binary search for arraylist and array. The array and arraylist are of interface reference type.  Interfaces are used as a combination of heterogeneous data object types. 

Lab Project: Geometric 19 (Binary Search)

Bubble Sort is another linear array sort. It is O(n^2) algorithm. The core for this algorithm is successive compare and swap.

Sorting III: Bubble Sort

Showing the steps of a particular Bubble Sort case. 

[Java Coffee Break] Bubble Sort

Bubble Sort is based on the idea of finding minimum and swap. This lecture discussed bubble sort from idea to solution. And an example is given.

Lab Project: Geometric 20 (Bubble Sort)

Introduce the merge sort and its performance analysis

Sorting IV: Merge Sort

Merge Sort is based on the idea of finding minimum and swap. This lecture discussed merge sort from idea to solution. And an example is given.

Lab Project: Geometric 21 (Merge Sort)

Introduce quick sort algorithm with small pivot version and general discussion for quick sort performance. Extra links for the middle pivot and large pivot version are also provided.

Sorting V: Quick Sort (Non-AP Topic)

Quick Sort is based on the idea of finding minimum and swap. This lecture discussed quick sort from idea to solution. And an example is given.

Lab Project: Geometric 22 (Quick Sort)

Chapter 15 Quiz:
10 questions
Unit 5/Chapter 16: Lists, Stacks, Queues, Sets, Maps, and HashMap (Optional)
17 Lectures 01:48:09

Collections Framework in Java API. 

Preview 11:44

Revisit for ArrayList by comparing ArrayList to LinkedList. 


Discuss the LinkedList Concrete Class


Word Ordering by Frequency using Linked List

Lab Project: Moon Landing (Analyzing word occurrence count for JFK speech)

Introduce Vector Class which is a synchronized version of ArrayList.  All of the methods for List can also be used for Vector.  But Vector has its own legacy methods. 

Vector Class (Non-AP Topic)

enum is a special numerical data type (It is defined like a class, while it behaves like a list). 

enum Type (Non-AP Topic) [revisit]

Summarize the Java Collection-List API and start the custom-designed MyArrayList Class. 

List Interface (Linear Data Structure)

Un-guided Lab: Use only the methods from the Collections, List, ArrayList, and Arrays classes or interfaces to convert an array to its own reverse. 

Lab Project: Reverse of an array

Introduce a simple example for custom designed pointer for linked list. 

Custom Data Structure by Pointers-Reference Data Type (Non-AP Topic)

Talk about the implementation of LinkedList class (named MyLInkedList). 

Custom-Designed Linked List

Quiz: Lists
12 questions

Discuss the data structure of Stack and Queue and provide a pair of examples for implementation of Stack and Queue using ArrayList and LinkedList, respectively. 

Stacks Class and Queue (Non-AP Topic)

Discuss PriorityQueue Class in Java API and a custom design PriorityQueue Class

Priority Queue (Non-AP Topic)

Discuss the Stack Class and Queue Interface in the collections framework. 

Stack Class and Queue Interface (Collections Framework)

Quiz: Stacks and Queues (Non-AP Topic)
10 questions

Discussion of Map Interface, HashMap, LinkedHashMap, TreeMap Classes and SortedMap, NavigableMap Interfaces

Maps (Non-Linear) (Non-AP Topic)

Application of Map data structure by an example of counting the word occurrence.  Please compare to AP Computer Science A chapter 7 Bible Word Count. 

Map Application (Word Occurrence) (Non-AP Topic)

Introduction to Set Interface, HashSet, and LinkedHashSet Classes. 

Sets (HashSet and LinkedHashSet) (Non-AP Topic)

Ordered TreeSet

Set (TreeSet) (Non-AP Topic)

Quiz: Sets and Maps (Non-AP Topic)
15 questions
8 More Sections
About the Instructor
Dr. Eric Chou
4.2 Average rating
107 Reviews
3,293 Students
3 Courses
IEEE Senior Member, an engineer and an inventor

I love computational research and its application to real world. i have involved in many large-scale computer/communication product research development in many world-leading company such as HP, Micrel, and many startups. I also involved in founding a startup company. I also enjoy sharing my ideas through teaching. I hold many US and international patents in technical fields such as software development, mobile computing, IC design and communication receiver design. I am also a certified coach in Taekwondo in both UAST and AAU. 

I also serve as an adjunct faculty for on-line M.S. program in Computer Science/Data Science at Lewis University, IL, USA.