
Install and set up the Eclipse IDE for Java, create a Java project, write a hello world class, and debug with breakpoints and views.
Set up a Java development environment with Eclipse, create a hello world project, and implement a public static void main(String[] args) entry point to run a console application using System.out.println.
Explore Java's operator precedence and evaluation order from postfix and unary to multiplicative and additive operators; learn how parentheses override precedence and how double equals differs from assignment.
Explore type casting in Java, learning how converting between 16-bit and 32-bit values can truncate data, alter signs, and require explicit casting to preserve values.
Master java-based compound interest calculation using principal, rate of interest, and years. Build and test a simple interest calculator with a main method and clear comments.
Explore how arrays in Java provide a fixed-size, efficient way to store multiple primitive values or objects with index-based access and type safety, illustrated by numbers and strings.
Access array elements by index and by iterating with for loops, using the length property and enhanced for loop; handle out-of-bounds access and observe index out of bounds exception.
Explore object oriented programming in Java, covering data abstraction, inheritance, and polymorphism, and model software with objects, classes, and message based communication.
Identify objects in a software system by extracting nouns and verbs, define their attributes, behavior, and relationships, classify into classes, and model lifespans and memory.
Learn how object oriented modeling treats software objects as living objects with identity, attributes, behavior, and relationships that mirror real world interactions.
Explore encapsulation and abstraction in object oriented programming, showing how to hide internal details and expose minimal interfaces. Balance cohesion and coupling with real-world examples like cars and shopping carts.
Explore inheritance in Java and object oriented programming through a practical vehicle example, using motorized vehicles, car, motorcycle, and bicycle, with extends and superclass concepts.
Learn how objects and encapsulation drive Java design by building a car class with private fields for manufacturer, model, color and public getters and setters, and explore inheritance and polymorphism.
Explore how constructors in Java instantiate objects, initialize fields, and how default and multiple constructors work, including chaining with this and super.
Learn how methods define behavior in objects, including structure, parameters, and return types, and understand passing objects by value (references) in Java using bank account and interest calculator examples.
Learn how static properties and methods belong to a class, not an instance, and how final and static final constants define fixed values, like colors red and blue.
Learn how the this keyword denotes the current object inside a constructor or instance method, demonstrated with a car class and two instances showing color and manufacturer.
Learn how abstract classes in Java enforce that all subclasses implement abstract methods. See examples with vehicle, car, and motorcycle to prevent instantiation of abstract classes.
Explore boxing and unboxing of primitive types into wrapper classes in Java, including automatic conversions, parse methods, and handling NumberFormatException. Learn the difference between equals and == for wrappers.
Master string manipulation in java by learning immutable string behavior and using methods like length, charAt, indexOf, substring, replace, equals, equalsIgnoreCase, compareTo, split, getBytes, valueOf, toLowerCase, toUpperCase, and trim.
Learn how to implement the Java equals method to correctly compare non-null objects, ensuring reflexive, symmetric, transitive, and consistent behavior with a device example using model and manufacturer.
Learn how to handle errors in Java by using try and catch, understand checked versus unchecked exceptions, stack traces, and how to create custom exceptions.
Learn to handle dates in Java using date and calendar APIs, including the Gregorian calendar and SimpleDateFormat. Explore creating calendars with getInstance, setting fields, and rolling or adding units.
Explore how Java maps use hashing to organize data into buckets, with keys and values stored in a hash map; learn put, get, remove, keyset, and values in map interface.
Explore how the comparable and comparator interfaces drive sorting of collections in Java, implementing compareTo and compare to order objects by criteria such as id or name.
Explore how Java input and output streams handle binary data, read and write with file, buffered, and data streams, and see practical examples of reading, writing, and streaming.
Explore reading and writing character files in Java using file reader and file writer, highlighting character-by-character and buffered reads, end-of-file handling, and append versus write.
Explore the high level concepts of multi-threading, not Java-specific, and differentiate threads from processes while explaining how lightweight threads optimize CPU utilization during I/O and long-latency operations.
Explore how Java enables multi-threading using the Thread class and the Runnable interface, showing how to start threads, use join to wait for completion, and compare implementation patterns.
Explore thread synchronization in Java, learning how synchronized methods and blocks prevent data corruption when multiple threads increment a shared counter.
This zip archive contains Eclipse projects that contain some of the source code that I used in the sessions. As you would appreciate, during the live sessions, I kept modifying some code to explain the concepts to you. So these Eclipse projects may not contain absolutely ALL the code that you would see during the lectures. But it does contain most of the code that existed after the end of each lecture.
PLEASE NOTE: This course is quite old now (Java 7). I do not have time to update it. However, many students have found it useful in the past to learn things the way I taught them, practically. So please go ahead if you want to learn only the very basics of Java but want to get deeper insights into the language.
All tutorials are practical sessions where complete insight is provided into each topic being covered. Practical examples of how the various concepts are used to create solutions to real-world problems are included in the course. I have tried to teach the language in such a manner that the learner would get very deep insight into the very core concepts of the language. At each step, I have used the debugging options to demonstrate what happens to various objects and variables, internally, as processing proceeds through a program.
Even though Java has evolved much further than the concepts covered here, the core ideas presented in this course would still help beginners understand the internals of the Java programming language well. It is only due to some good reviews and feedback from the past students that I have not deactivated the course yet.