Introduction to Programming with Print-Multiplication-Table
Step 01: First Challenge : The Print-Multiplication-Table (*PMT-Challenge*)
Step 02: Introducing ```JShell```
Snippet: Complex Expressions, Anyone?
Step 05: Programming Exercise PE-1 (With Solutions)
Use paranthesis for clear code
Step 07: Introducing Console Output
Step 08: Programming Exercise PE-02
Step 09: Solutions to PE-02
Step 10: Whitespace, Case sensitiveness and Escape Characters
Method with multiple parameters
Step 18: Introducing Primitive Types
Step 22: Some ```JShell``` Usage Tips
Step 23: Introducing Conditionals - the ```if```
Conditionals: The "if" Statement
Step 24: Programming Exercise PE-04
Step 25: Solution to PE-04
Step 26: ```if``` Statement again
Snippet-1 : *PMT-Challenge* Solution
Step 28: Programming Exercise PE-05
Step 29: Solution to PE-05
Snippet-01: Method with an argument: Definition
Snippet-02 : Passing and accessing a parameter
Snippet-03: More complex method
Snippet-4 : Saying "Hello World", Again and again...
Snippet-5 : Parameter type mismatch
Step 05: Exercise Set PE-02 (With Solutions)
Step 07: *PMT-Challenge* Revisited (And Some Puzzles)
Step 08: Methods With Arguments, And Overloading
Step 09: Methods With Multiple Arguments
Step 10: Returning From A Method
Step 11: Encapsulation - Advantages (Code Reuse)
Snippet-1 : Bulky Speed Increment code
Snippet-2 : Speed Increase through Code Encapsulation
Snippet-3 : Speed Increase And Decrease through Code Encapsulation
Snippet-4 : Validation across methods, repeated!
Snippet-5: Validation by code reuse
Step 12: Programming Exercise PE-OO-03
Step 13: Introducing Constructors
Snippet-1: MotorBike Constructor
Snippet-2 : Default Motorbike Construction?
Snippet-3 : Programmer-defined default constructor
Step 01: The Integer Types
Snippet-01 : Integer Sizes
Snippet-02 : Integer Type Conversions
Step 02: Integer Representations, And Other Puzzles
Snippet-01 : Storing Octal and Hexadecimal in Integer types
Snippet-02 : More Integer Type-casting
Built-In Operators For Integer Types
Snippet-03 : Increment & Decrement Operators
Step 03: Classroom Exercise CE-01 (With Solutions)
Step 05: Floating-Point Types
Snippet-01 : double and float
Snippet-02 : Operators for type double
Step 06: Introducing BigDecimal
Step 06: BigDecimal Operations
Snippet-01: Arithmetic Operations
Step 08: ```boolean```, Relational and Logical Operators
Snippet-01 : Relational Operators : Recap
Snippet-02 : Logical Operators
Step 09: Short-Circuit Evaluation (With Puzzles)
Snippet-01 : Unicode characters
Step 11: Programming Exercise PE-02
Step 12: Solution To PE-02, Part 1 - ```isVowel()```
Step 13: Solution To PE-02, Part 2 - ```isDigit()```
Step 14: Solution To PE-02, Part 3 - Other Methods
Step 15: The Primitive Types - A Review
Introducing Conditionals - if, switch and more
Step 01: The ```if``` and ```if```-```else``` Conditionals
Snippet-01 : ```if``` behavior
Snippet-01: The ```switch``` statement
Step 09: Comparing The ```if``` Family, And ```switch```
Snippet-01 : Formatted Output Using ```if```
Snippet-02 : Formatted Output Using ```switch```
Step 10: Programming Exercise PE-03
Step 12: Introducing ```?:```, The Ternary Operator
Snippet-01 : ternary operator
Revisiting Java loop constructs: ```for``` and ```while```
Snippet 1 : First for loop puzzle
Step 01: Introducing Reference Types
Step 02: References: Usage And Puzzles
Comparing Reference Variables
Step 03: Introducing ```String```
Step 04: Programming Exercise PE-01, And ```String``` Utilities
Common ```String``` Utilities
Snippet-01: ```String``` Utilities
Step 05: ```String``` Immutability
Step 07: Storing mutable text
Step 12: Playing With ```java.time.LocalDate```
Step 13: Comparing ```LocalDate``` Objects
Step 01: The Need For ```Array```
Step 06: Classroom Exercise CE-AA-02
Step 08: Variable Arguments - The Basics
Step 09: Variable Argument Methods For ```Student```
Step 10: Arrays - Some Puzzles And Exercises
Classroom Exercise CE-AA-03
Step 12: Introducing ```ArrayList```
Step 13: Refactoring ```Student``` To Use ```ArrayList```
Snippet-01 : Refactoring ```Student```
Step 14: Enhancing ```Student``` Further
Object Oriented Programming (*OOP*) - Revisited
Step 01: Objects Revisited - State And Behavior
Step 02: Managing ```class``` state
Step 03: Augmenting ```Fan``` With Behavior
Snippet-01 : The ```Fan``` ```class``` - v4
Step 04: Programming Exercise PE-OOP-01
Step 06: Understanding Object Composition
Snippet-01 : Object composition - State
Snippet-02 : Object Composition v2 - Construction
Snippet-9 : Object Composition v3 : Behaviors
Step 07: Programming Exercise PE-OOP-02
Step 07: The Need For Inheritance
Snippet-02 : Student inherits from Person - v1
Step 09: Introducing ```Object``` class
Snippet-01 : The Object class
Step 10: Inheritance And Method Overriding
Snippet-01: Method Overriding
Step 11: Classroom Exercise CE-OOP-01
Snippet-01 : Employee Inheritance
Step 12: Constructors, And Calling ```super()```
Snippet-01 : Calling Person.toString()
Snippet-3 : ```Person``` - Non-Default Constructor
Snippet-02 : Code Reuse With Interfaces
Using Interface as type for reference variable
Why do we need ```default``` method implementations.
Step 20: ```abstract class``` And ```interface``` : A Comparison
Step 21: Programming Exercise PE-OOP-03
Step 21: Introducing Polymorphism
The Collection Interfaces
The ```List``` ```interface```
Snippet-1 : Creating a List
```Vector``` vs ```ArrayList```
Snippet-4 : List Insertions
Snippet-5 : Element Modification
Snippet-6 : Iterating within ArrayList
Choosing Between Iteration Modes
Snippet-11 : Implementing Student Comparators
```sort``` method Of ```List```
Snippet-12 : Comparator for ArrayList.sort()
The ```Set``` ```interface```
Understanding Data Structures
```Set``` Implementations
Snippet-15 : LinkedHashSet
Snippet-16 : NavigableSet Operations
The ```Queue``` Interface
Snippet-13 : Treemap Operations
Java Collections : Conclusions With Tips
Snippet-2 : Implementing a Generic
Implementing Type Restrictions on Generics
Snippet-3 : Generic Type Restrictions
Snippet-4 : Generic Method
Restricted Heterogeneous Lists
Snippet-6 : More wild-cards
Introduction to Functional Programming
Step 01: Introducing Functional Programming
Snippet-01 : OOP List Traversal
Snippet-02 : ```printBasic()``` And ```printFunctional()```
Step 11: More Stream Operations
Snippet-01 : min() and max()
Snippet-02 : Odd and Even Numbers
Step 13: Functional Interfaces : ```Predicate```
Snippet-01: Lambda behind-the-scenes - v1
Step 14: Functional Interfaces : ```Consumer```
Snippet-02 : ```map()``` Behind The Scenes - v2
Step 16: Introducing Method References
Snippet-01: Method References - v1
Snippet-02 : Method References - v2
Snippet-03: Method References - v3
Snippet-04 : Method References - v4
Classroom Exercise FP-CE-03
Step 17: FP - Functions As First-Class Citizens
Passing function as method argument
Storing functions in reference variables
Returning functions from methods
Step 01: Concurrent Tasks: Extending ```Thread```
Snippet-01 : A simple Java thread class
Step 02: Concurrent Tasks - Implementing Runnable
Snippet-01 : Implementing Runnable
Step 03: The Thread Life-cycle
Step 04: Thread Priorities
Step 05: Communicating Threads
Snippet-01 : Waiting for Multiple ```Callable``` Threads
Snippet-02 : List of Callable tasks with larger thread pool
Step 12: Executor - Wait Only For The Fastest Task
Snippet-01 : Wait only for fastest
Introduction To Exception handling
Step 01: Introducing Exceptions
Snippet-1 : Exception Condition
Step 02: Handling An Exception
Snippet-01 : Handling An Exception
Snippet-02: Print Debug Information
Snippet-04 : Method with risky code #1
Step 08: The Java Exception Hierarchy
Step 09: Throwing an Exception
Snippet-01 : Throwing An Exception
Snippet-02 : Throwing a Checked Exception
Snippet-01: try-with-resources
Step 12: Programming Puzzle Set PP_02
Listing Directory Contents
Snippet-1 : Listing Directory Contents
Snippet-2 : Recursive Directory Traversal
Snippet-3 : Level-4 Traversal
Snippet-4 : Only list .java files during traversal
Snippet-5 : Filtered Traversal with find()
Snippet-6 : Filtering directories
Snippet-7 : Reading a File
Snippet-9 : Printing file contents in lower-case
Snippet-9 : Filtering file contents
Snippet-10 : Writing to a file
Concurrency : Advanced Topics
Snippet-1: Atomic Operations : Counter
Counter ```increment()``` method is NOT Atomic!
Snippet-8 : ConcurrentHashMap Logic - Stage 2
Concurrent Collections : Copy-On-Write Optimization
Snippet-9 : CopyOnWriteArrayList