Object Oriented Programming using Java - Course Outine

Lecture 1 - Introduction to Java
Brief history of Java, scope, and type of apps developed in Java
Virtual machine, source code and byte code. portability
Write and run HelloWorld programs (java and javac commands)
Using if-else, loops and defining functions in Java
Primitive types names, sizes, ranges of integrals types, and literals
How to use: byte, short, char, int, long, float, double, boolean
Format specifiers, escape sequence, and print* functions
What are signed and unsigned types in primitive types

Lecture 2 - Class, Object, Attributes and Methods
Concept of class and object
Define class and create an object using new operator
Instance variables and methods. How methods can access object state.
How to identify class fields and methods
Define a method in class and call it. Define method with parameters

Lecture 3 - Encapsulation, Local, Instance, Static Variables, Static Methods
Encapsulate data to apply constraints/rules on update/fetch operations 
Make instance variables private
Expose private fields using get and set methods
   Objects should contain valid data as per organization rules.
   Why to write rules in set/get? e.g. balance in BankAccount class should not be negative
   Why we should still define get/set methods even when there are no rules to apply on data
Local, Instance and Static/class Variables. Default values of instance and static variables
Math.PI, static variable example. Static methods. Math class
What if instance and local variables have same name. this keyword

Lecture 4 - Constructors and Method Overloading
What is constructor, when its callled, how to define it
What is need of constructor: initialize fields and enforce constraints for object creation
What is Default Constructor and when its provided by compiler and when its not provided
Non-Arugment Constructor, Default constructor is no-argument constructor
Constructor overloading: defining multiple constructor in same class
Calling constructor from another constructor
Using set methods from constructors
Whats benefit of using get/set methods when fields can be directly accessed too
Method overloading

Lecture 5 - Using API Docs, Scanner, Random Class and Composition
Introduction to Java API Docs, Understand the power of APIs
Concept of package and import
Using Scanner class to get user input and Random class to generate random numbers
Fully qualified classname

Lecture 6 - Packages
Why we need packages
What is package hierarchy
How to declare package for a class and compile such classes
How to use classes from other packages
How to compile to place .class files separate from source files
What is NoClassDefFoundError
How to use classpath parameter to link classes placed at other locations

Lecture 7 - Arrays and ArrayList
How to declare, construct and initialize arrays
Multidimensional arrays of regular and irregular shapes
How to initialize arrays at the time of declaration
How to iterate arrays using enhanced for loop
Command-Line arguments
Variable length argument
Methods of Arrays class