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
How to declare, construct and initialize arrays
2D arrays of regular and irregular shapes - init and create
Initialize array elements at the time of declaration
How to iterate arrays using enhanced for loop
Passing primitive and reference type arguments
Command-Line arguments
Variable length argument
Methods of Arrays class
How to add and remove array elements
The ArrayList class

Lecture 8
Introduction to Wrapper Classes - Integer, Float, Long, Double, Short, Byte, Boolean
Basic functions and fields in wrapper classes
AutoBoxing and UnBoxing. What it is and when its done
Introduction to Enum Type

Lecture 9Inheritance
Introduction to Inheritance
Basic example - inherited attributes usage e.g. in constructor
is-a relation
public and private access modifier
Calling constructor of super class
Calling parent class methods from sub-class and client code
Protected access modifier
Method overriding e.g. Shape/Rectangle and Employee/CommissionEmployee

Lecture 10 - Polymorphism
Reference type and object type
Which method we can call from a reference 
Program in general 
Painter and Accounts examples
Why to define a method in parent class when it can't be implmented there
How to call a method of subclass from parent reference? by casting

Abstract classes and abstract methods
What we need abstract method? And how to declare
Can we create object of abstract class, why constructor can be defined in abstract class
Can we define static methods or non-abstract method and attributes in abstract class
Concrete subclass that implement abstract class must define all abstract methods 

difference between an interdface and an abstract class
defining and implementing interface
providing default implementation in interface

interfaces and polymorphisms