Skip Navigation

Advanced Java Programming

Arrow image that is used as button to enroll in courses. Enroll in this Course

Open to: Grades 9-12

Eligibility: CTY-level or Advanced CTY-level math score required

Prerequisites: Completion of Intro to Java or equivalent

Course Format: Individually Paced

Course Length: Typically 3 months

Recommended School Credit: One-half academic year

Course Code: AJA

Course Description


This course introduces students to intermediate and advanced features of the Java programming language. Students will learn about object-oriented programming concepts such as inheritance, interfaces, abstract classes and methods, and polymorphism. They will learn how to write and read Java primitive types and object classes to and from files, how to serialize objects and how to implement simple graphical user interfaces. Students will use comprehensive error handling and complex algorithms in their programming projects. Students will investigate real-world applications of the Java programming language. 

Students will complete a portfolio of programming assignments as well as activities, and quizzes. At the end of the course, students submit a comprehensive final examination.

This course does not have any synchronous class meetings, but students may schedule one-on-one virtual meetings directly with the instructor to answer questions or concerns.

Students may be invited to interact in CTY community spaces that include students and instructors and potentially specially invited guests that are not enrolled in their course. Student contributions (e.g., projects, forum posts, etc.) may remain in the course after the student completes the course. These artifacts may be preserved to showcase student work or to continue important conversations.

Materials Needed

Students must purchase a textbook and will need a Java language compiler.

Introduction to Java Programming and Data Structures, Comprehensive Version, by Y. Daniel Liang - 12th Edition
ISBN 9780136520238

Note: ePub or loose-leaf versions of this edition are acceptable for use in this class.

Detailed Course Information

Course Details


By the end of the course, you will know how to:

  • Demonstrate understanding of inheritance and how it enables code re-use and extension by correctly solving programming challenges. Write your own programs that properly implement inheritance.
  • Utilize abstract classes, interfaces, and polymorphism. Determine which construct is appropriate for different programming scenarios and write your own code that correctly uses the concepts of inheritance, abstract classes, interfaces, and polymorphism to solve specific problems.
  • Apply comprehensive and effective error handling strategies to your programs via try / catch / finally and appropriate Java exceptions.
  • Incorporate GUI (Graphic User Interface) elements into your programs to collect user input and display information and results. Validate user input received via GUI controls before processing user input.
  • Read and write text, binary, and object data to and from external files. Process data received from external file sources to evaluate and answer questions posed in assignments.
  • Utilize diverse types of collections to organize and work with data in your programs to solve given programming problems. Apply the concept of generics to your code to enable one type or method to work with data of multiple types at runtime.
  • Gain further understanding of sorting, searching, and other algorithms. Use these algorithms in your own code effectively and efficiently. Analyze a given algorithm to determine its efficiency using big O notation.
  • Research and report on real-world uses of Java. Incorporate real-world Java scenarios into your course portfolio.

Inheritance - Part 1

  • Introduction to Inheritance
  • Inheritance & Class Visibility
  • Base Class Constructors
  • Method Overriding
  • Preventing Inheritance
  • Runtime Polymorphism

Abstract Classes

  • Abstract Methods & Abstract Classes
  • The Object Superclass
  • Casting Objects
  • Inheritance Design Guidelines


  • Introduction to Interfaces
  • Defining & Using Interfaces
  • Interfaces & Polymorphism
  • Using Constants in Interfaces

Exception Handling

  • Introduction to Exceptions
  • The Java Exception Hierarchy
  • Handling Exceptions
  • Defining & Throwing Exceptions

Working With GUI Components - 1

  • Introduction to Java FX
  • Adding Labels & Text Fields
  • Adding Buttons
  • Working with Layout Managers

File Input & Output

  • Working With Files & Directories
  • Java Streams
  • Text File I/O
  • Binary File I/O
  • Random Access File I/O

Object Serialization

  • Writing Objects to Files
  • Reading Objects from Files
  • Some Serialization Issues

Java Collections & Generics

  • Collections & Generics
  • The ArrayList Class
  • The LinkedList Class
  • Map Classes

Java Threads

  • Java Threads
  • Creating Threads
  • Manipulating Threads
  • Synchronizing Threads

Working With More Swing Components

  • Handling Java Events
  • Working with Radio Buttons
  • Working with Check Boxes
  • Working with ListsView Control
  • Working with Combo Boxes

Added after July 1, 2021:

Object Oriented Programming (OOP) Review

  • Classes and Objects
  • Class Abstraction and Encapsulation
  • Class Relationships
  • Wrapper Classes

Java Collections & Generics

  • Stacks

Java Algorithms (Replacing Java Threads)

  • String matching
  • Algorithm efficiency
  • Advanced sorting
  • Search algorithms

Using Java in the Real World (Working With More Swing Components)

  • Multi-threading
  • Data intelligence
  • Databases & Big Data
  • Web applications
  • Design & Architecture

Technical Requirements

This course requires a properly maintained computer with high-speed internet access and an up-to-date web browser (such as Chrome or Firefox). The student must be able to communicate with the instructor via email. Visit the Technical Requirements and Support page for more details.

The student will need the Java Runtime Environment.

Zoom online virtual classroom
This course uses an online virtual classroom which can be used for instructor-student communication if the student has any questions about the course or curriculum. The classroom works on standard computers with the Zoom desktop client and also tablets or handhelds that support the Zoom Mobile app. Students will need a computer with the Zoom desktop client installed to watch any recorded meetings. The Zoom desktop client and Zoom Mobile App are both available for free download.

Most course lectures may be viewed on mobile devices, but in some cases assignments and quizzes must be completed on a desktop or laptop computer.

Chromebooks are not recommended due to required downloading of specialized software.

This course uses Respondus LockDown Browser proctoring software for designated assessments. LockDown Browser is a client application that is installed to a local computer. Visit the Respondus website for system requirements.

While Chromebook can be used to progress through the course, all exams must be completed on a PC or Mac.



CTY Online Programs Computer Science - Comments and Feedback from Students, Parents, and Teachers



"This is my son's 2nd course with this instructor and JHU, and our expectation was exceeded again with the instructor’s quick, timely responses, depth of knowledge and her dedication to help my son understand the material."

"The instructor helped my son learn how to independently complete the course successfully. She gave helpful and timely feedback and guidance to me and my son. By the end of the course, my son was corresponding with the instructor and managing the course all on his own-- what a great skill to learn above and beyond material she helped him through, which he loved. He can't wait to take the next course."

"When I kept asking questions about the topic, my instructor didn't get irritated. He was patient with me and gave me well thought out answers. When I called him, he picked and helped me out."