Java: The Complete Foundation

Become a Java Programmer Today!
3.9 (19 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,492 students enrolled
40% off
Take This Course
  • Lectures 80
  • Length 6 hours
  • Skill Level Beginner Level
  • Languages English, captions
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 1/2016 English Closed captions available

Course Description


Welcome to "Java: The Complete Foundation", this course is an introductory course to the Java Programming Language. This course will focus on the Computer Science aspect of programming; however, students will also benefit by learning about Computer Information Systems and how it all relates to object-oriented programming.

This course will introduce students to the comprehensive fundamentals of programing within the Java atmosphere and will include Graphical User Interfaces (GUI), data structures, applets and other graphical applications and File I/O (Input/Output). In addition, students will also learn the basic fundamentals of programming including variables, loops, arrays and much more!

Our Teaching Approach:

dotRoot believes in a "hands-on" learning method; which means, students will not only listen to a lecture but also take an active role in homework assignments, class assignments, quizzes and projects. We will provide numerous examples in order to better explain to students the ideology and concepts that must be mastered in order to succeed as a programmer.

A lot of courses will simply give the student information and expect them to create their own success. That is not how we like to teach students and we also believe that good software tactics and engineering practice will go along way whether you are learning to program for fun, school or for a new career.

Lectures will teach concepts and give solid examples via the instructor. Class assignments will be hands on with the students as they follow along and program alongside the instructor to receive hands on practice. Students will be encouraged to critically think and become conventional to the resources provided in order to finish their homework assignments and projects.

There will be a review at the end of each section that will summarize the take-away concepts, as well as, an instructor review of the homework/projects.

What can you expect as a student?

As a student you can expect to receive a quality education. With high quality video and sound, this will an easy and fluid learning experience. Our instructors have previous experience as tutors at the college level and have backgrounds within the Computer Science field! This means you will be getting advice and learning from people already professionally involved and successful in the field you are pursuing!We encourage student discussion because the instructor will answer all questions and be your best friend as you take on each section. Questions about assignments or requests for further examples will be handled by the instructor to ensure you are learning effectively. So what are you waiting for? Learn how to program the popular programming language Java and start turning your ideas into money making apps for Android or Apple today!

Course Updates:
The course will come with a huge library of information in the form of lectures and programming activities. It is our goal to engage students by adding content regularly including new programming activities, critical thinking assignments and advanced programming projects. In addition, we will be utilizing Udemy's new Java Exercise feature to bring more activities to the hands of our students who are unable to use our IDE!

The course comes with over 20 Programming Activities and we currently have over 50 additional assignments being recorded, released and evaluated for upload. By the end of 2016, our goal is to have over 100 Programming Activities for students to engage in addition to our educational lectures!

What are the requirements?

  • Download IntelliJ Idea (Video Lecture Tutorial Included with Course)
  • Download Java SDK 1.8 (Video Lecture Tutorial Included with Course)
  • Note-Taking Tools if desired

What am I going to get from this course?

  • Increase their knowledge of software engineering techniques
  • Write and Understand Pseudocode
  • Design trade-offs and advanced software engineering tools
  • Learn advanced methodology for writing "maintainable" programs
  • Develop critical thinking skills for writing math alogirithms
  • Program flags and toggle variables
  • Master the fundamentals of programming object-oriented languages
  • Become fluid in the basic concepts of programming and develop advanced techniques within Java
  • Earn a dream job as a program developer
  • Gain the rich foundation of Java for College-Level courses
  • Become the person you want to be!
  • Learn to use an IDE such as IntelliJ Idea
  • Design flow charts and UML Diagrams

Who is the target audience?

  • This Java course is meant for newbies, beginners, people who appreciate an in-depth/active-learning approach to education.
  • No prior programming experience will be required as all concepts from beginning to advanced will be covered.
  • This course might be too slow for seasoned programmers but could be used as a refresher.
  • This is NOT a shortcut to success class. There will not be overnight success, this course will work hard to give you all the tools to succeed and thus succeeding will come by the student giving the same determination in learning.
  • Students will receive 110% of the information they will need to succeed in college-level programming courses, creating personal applications or starting an entry-level programming job as a Java Developer.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Let's Get Started!

Greetings from the instructor! The instructor will go over what is expected in the course and what you can expect out of it.


A Guide-Walkthrough on how to install the JAVA IDE used for this course, as well as, the Java SDK required to compiler.

IntelliJ IDE :



A brief introduction to IntelliJ IDEA JAVA IDE. We will go through setting up a new project and understanding how to use the program.


Homework Assignments will be posted periodically and announced via the Udemy Announcement feature. The course will include per-recorded homework assignments and lectures; however, the course will continue to have information related to Basic Java assigned as Homework (Homework assignments will include a Homework Review).

There will be two types of homework assignments:
Program Activities & Critical Thinking Assignments.

Section 2: Introduction to Object-Oriented Programming
  • Learn about Computer Hardware
  • Learn about Operating Systems and Applications
  • Learn about Internet Networks
  • Learn about Binary Numbers
  • Use Hexadecimal Numbers to Represent Binary Numbers
  • Using the Character Sets for representing Characters
  • Talks about Machine Language
  • Talks about Assembly Language
  • Talks about High-Level Languages and the Compiler
  • Understand how to think about a program before you write one.
  • Learn to use Pseudo-Code to map out a project.
  • Learn about flowcharts for presentation purposes (Businesses use them all the time).

Hands-On Activity: Students will write a basic program.
The program will be based on the Pre-Code Preparation Lecture Psuedo-Code Example.

Section 3: Java Basics
  • Understand the structure of a Java Program
  • Learn to use Identifiers.
  • Learn to use Blocks, Comments and White space
  • Data Types/ Declaring Variables
  • Understand the differences between Integer and Floating Numeric Data Types
  • Learn to use Integers and Floating-Point
  • Understand the differences between Characters and String Data Types.
  • Learn to use Characters and Strings
  • Learn to use Boolean variables
  • Assigning values to variables
  • Assigning variables the values of other variables
  • Compatible Data Types
  • Learn how to write shortcuts (escape sequences).
  • Learn how to use Constant variables.
  • Compatible Data Types
  • The assignment operator and expressions
  • Arithmetic Operators.
  • Precedence
  • Division & Modulus
  • Type Casting
  • Shortcut Operators
  • Write a program dealing with mathematical conversions of length.
  • Instructor Review of the Homework Assignment.
  • Write a program dealing with the mathematical conversion of temperature.
  • Instructor Review of the Homework Assignment.
Section 4: Class, Objects and Method Basics Part 1
  • Learn Class Basics
    • Benefits and Why we use Classes
  • Learn about Objects
  • Learn about Class Members
  • Learn about Encapsulation
  • Learn about Naming Conventions
  • Learn about Reusability
  • Declare Object References
  • Instantiate an Object
  • Learn about Constructors & Instantiation
  • Learn about Accessors & Mutators
  • Learn about Dot Notation
  • Learn about Method Return Values
  • Learn about String Class
  • Learn about Special Methods
    • Length Method
    • toUpperCase/LowerCase
    • indexOf / charAt / substring
  • Talk about the Java API
  • Learn about Java Packages
  • Students will practice writing code dealing with variables and data concepts.
    • Students are not limited to knowing just these points, and may need to use concepts located in previous lectures.
    • The file needed to complete this activity are found in the resource section.
  • Instructor Review of the Homework Assignment.

Source Code will be available in the resource section.

Section 5: Class, Objects and Method Basics Part 2
  • Discuss Numeric & Decimal Format Class
  • Learn how to implement these Class Methods
  • Learn about the usefulness of the Integer and Double Class
  • Examples of how to access the class methods of Integer and Double to interpret literal strings as numeric values.
  • Discuss the usefulness of using the Math Class and its methods/constants.
  • Discuss the Random Class
  • Discuss the Scanner Class & System Class
  • Discuss and System.out
  • Character Input & String Input
  • next methods
  • Static methods
  • Students will practice writing code within the main method and calling Class Methods.
    • Uses Scanner Class & System.out
    • Uses Decimal Format Class
    • Uses Random Classes and Math Class.

      Students are not limited to knowing just these points, and may need to use concepts located in previous lectures.
    • Student files to complete this activity are found in the resource section.
  • Instructor Review of the Homework Assignment.

Source Code will be available in the resource section.

Section 6: Flow of Control
  • Forming Conditions with Various Operators
  • Equality Operators
  • Relational Operators
  • Logical Operators
  • Short Circuit Evaluation
  • De Morgan’s Law
  • Common Error Traps
  • If Statements
  • If / Else Statements
  • If / Else If Statements
  • Nested If Statements
  • Block Scope
  • Discuss Comparing Integer Numbers
  • Discuss Comparing Floating-Point Numbers (Numbers with decimals)
  • The BigDecimal Class
  • Comparing Object References
  • equals Method
  • Creating String Objects
  • Comparing Strings
  • equalsIgnoreCase Method
  • compareTo Method
  • Discuss the Conditional Operator
  • Discuss the switch statement
    • Talk about breaks, cases and default
  • matches Method
  • Patterns
  • Regular Expressions
  • Pattern Matching
  • Replace All
  • Illustrates Paths by designing an If/Else If Statement.
  • Instructor Review of the Homework Assignment.
Source Code will be available in the resource section.
Section 7: The Looping Technique
  • Discuss Looping
  • Introduction to the While Loop
  • Discuss Endless Loops
  • Discuss Sentinel-Controlled
  • Read from a Text File
  • Setting up Scanner Class for Reading a File
  • Discuss File Class and pathname.
  • hasNext Methods
  • Scanner class Input
  • Data type reprompts
  • Learn to construct loop conditions
  • Review of Negating Expressions
  • Review Testing Techniques
  • Discuss the do/while Loop
  • Example: Validating an Input
  • Discuss the For Loop
    • For Loop Header
      • Loop Counter
      • Loop Condition
      • Loop Update
Section 8: User-Defined Classes
  • Discuss User-Defined Classes
  • Access Modifiers
  • Defining Instance Variables
  • Discuss Methods
  • Discuss Constructors
  • Default Initial Values
  • Scope
  • Accessor & Mutator Methods
  • Using the Object Reference “this”
  • Using the toString Method
  • Using equals Method
  • Static variables & Methods
  • Discusses how to create a UML Diagram to organize User-Defined Classes for presentation.

Quick review of the proper way to design a User-Defined custom class.

  • Students will create a Utility/Service Class simulating an Airport Terminal Program.
  • Program consists of a pre-made client class that Students must built a Utility class around.
  • Instructor Review of the Homework Assignment.
Source Code will be available in the resource section.
  • Students will create an advanced / complex version of the Airport Program from the last section.
  • Students will have to complete a User-Defined class that compliments a pre-made client class.
  • Instructor Review of the Homework Assignment.
Source Code will be available in the resource section.
Section 9: Single-Dimensional Arrays
  • Introduction to Array
  • Declaring & Instantiating Arrays
  • Assigning Initial Values
  • Accessing Array Elements
  • Instantiating an Array of Objects
  • Array Operations
  • For Loop Array Operations
    • Printing Array Elements
    • Copying Array Elements
    • Reading Array Elements
    • Comparing Arrays
  • Classes using Arrays
  • Methods with Array Parameters
  • Passing Arrays
  • Accessor Methods for Arrays
  • Array Instance Variables
  • Changing & Expanding Array Sizes
  • Understanding Sequential Search
  • Sorting Arrays
  • Discuss Selection Sort
  • Swapping Values
  • Discuss Insertion Sort
  • Sorting Array Objects
  • Sequential Search of Sorted Arrays
  • Discuss Binary Search
  • Students will learn how to add values to an array using loops.
  • Students will create methods that work towards, adding values, removing values, filling values, etc... inside an array.

    Activity is downloadable in the resource section.
  • Instructor Review of the Homework Assignment.
Source Code will be available in the resource section.
Section 10: Multi-Dimensional Arrays
  • Discuss Two-Dimensional Arrays
  • Declaring & Instantiating Multi-Dimensional Arrays
  • Assigning Initial Values
  • Accessing Array Elements
  • Multi-Dimensional Lengths
  • Aggregating Array Operations of a Multi-Dimensional Array
  • Processing Rows
  • Processing Columns
  • Passing & Returning Two-Dimensional Arrays
  • The ArrayList Class
  • Declaring & Instantiating
  • Class Methods
  • Enhanced for Loop
Section 11: Inheritance, Polymorphism, Interfaces
  • Understanding Inheritance Concepts
  • Inheritance Hierarchy
  • Super-classes & Sub-classes
  • Specifying Inheritance
  • Subclass Constructors
  • Overriding Inheritance
  • Abstract Classes
  • Defining an abstract class & method
  • Sub-classes of abstract classes
  • Using abstract classes

  • Understanding Polymorphism
  • Polymorphism Requirements
  • Polymorphism Example
  • Understanding Interface
  • Inheriting from an Interface
Section 12: Reading & Writing
  • Understand Exceptions
  • Handling Exceptions
  • Checked/Unchecked Exceptions
  • Exception Class Methods
  • Try/Catch Syntax
  • Initializing variables
  • Catching Multiple Exceptions
  • Catch Block Order
  • Finally Block Syntax
  • User-Defined Exceptions
  • Extending an Existing Exception
  • Throwing an Exception
  • Discuss Input Classes
  • Discuss Output Classes
  • Reading from a File
  • Reading Using Scanner
  • Exceptions While Reading From a File
  • Scanner nextLine Method
  • Opening and Close Input/Output Streams
  • Reading Structured Text Files
  • Parse Strings/Delimiter
  • Writing to a text file
  • Constructors for Writing
  • PrintWriter Class
  • Reading and Writing Objects
  • Constructors for Writing Objects
  • writeObject Method
  • Omitting Data
  • Constructor for Reading Objects
  • readObject Method

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Danny Boehm, Computer Science Major at California State Channel Islands

Instructor Introduction:

Hello. My name is Danny Boehm and I am a Computer Science/Mathematics Major with a minor in Game Development at California State University: Channel Islands. I've also attended DeVry University's Bachelor of Logic & Simulation Programming online. In my spare time, I work as a Teacher Aid/Tutor for all the Computer Information classes held at Fullerton College and have experience working with students directly.

My programming background includes:

Python, Java, C, C#, C++, Lua, Microsoft Visual Studio, Eclipse, Unity and Android Development.

Instructor Goals:

As an instructor, I plan to engage all my students in hands on projects. All my courses will include: vocabulary, concept lectures, examples inside programming environments and homework projects to practice on your own time. Each lesson will act as a precursor to the next lessons subject matter and encourage critical thinking to solve problems.

Student Expectations:

I expect all students to remain patient. Programming language is like speaking a foreign language. It requires a lot of time, patience and practice. Students should welcome a challenge and are encouraged to practice lesson concepts on their own time, as well as, develop custom code from the concepts we will discuss.

Students should be able to understand each language taught at a college-level by the end of a course and it should act as a precursor to any higher level learning.

Above all else, have fun!

Ready to start learning?
Take This Course