Introduction to Scratch/Blockly Visual programming and program constructs. Introduction to Java Language and Runtime Environment- Basic program syntax, Hello world, Data types, variables and Functions – Value types and Reference types, Implicit Pointers and the Null Pointer exceptions – Objects in Java, Class file, constructor functions, Class members and method, Class Instance variables, the Object class, new Operators, Heap allocation and Garbage collector – Basic Java API, Stream classes and objects for Data IO, hierarchy of data streams in Java, Throwable type hierarchy and exception handling syntax, the Thread class. Object-Oriented Concepts-Abstraction, Encapsulation, Inheritance and PolymorphismAbstract Class, partially abstract and purely abstract, purely abstract class called Interface. Inheritance a way of extending classes, multiple inheritances and implements relation with Interfaces, The Base class and Derived class. Revisiting Instance and Class variables-Static and Dynamic Polymorphisms, Overloading and Overriding, Idea of a virtual function. Revisiting Thread API, the Runnable Interface, Other major Interfaces, Cloneable, Serializable and Observable. Interface as a mode of Type Polymorphism. UML Diagrams, Object relations and interactions, Containment and cardinality, Cohesion and Coupling. Object-Oriented Design Patterns: Creational: Factory, Singleton, Pool and Prototype – Behavioural: Command, Iterator, Memento, Observer, State, Visitor – Structural: Adapter, Bridge, Decorator, Flyweight and Proxy.