<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Module 1 :: Learning</title>
    <link>https://learn.kalschatzi.com/module1/index.html</link>
    <description>Java and OOP introduction Module Objectives This is an introductory module to start understanding the key concepts of Object Oriented Programming - OOP.&#xA;We’ll be using Java, as it’s widely use, a run-everywhere language thanks to the JVM portability. It’s a somewhat verbose language which has positives and negatives - main positive as far as we’re concerned is that it’s a great introductory OOP language, very widely used, with loads of resources ready to use.</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://learn.kalschatzi.com/module1/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Java Introduction</title>
      <link>https://learn.kalschatzi.com/module1/1-java-intro/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/1-java-intro/index.html</guid>
      <description>How to write Java? Let’s look at a basic Java application:&#xA;package com.kalschatzi; public class Main { public static void main(String args[]) { System.out.println(&#34;Hello, world&#34;); } } This will be the simplest Java application you can write. Here’s how your folder structure should look like:&#xA;Let’s deconstruct it line by line.&#xA;package com.kalschatzi; This is where package is, which is what Java calls code folders. If you look at the file structure image, you’ll see that it matches.</description>
    </item>
    <item>
      <title>Encapsulation</title>
      <link>https://learn.kalschatzi.com/module1/2-java-encapsulation/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/2-java-encapsulation/index.html</guid>
      <description>What is encapsulation Encapsulation is a fundamental concept in Object-Oriented Programming (OOP) that refers to bundling data (variables) and methods (functions) that operate on the data into a single unit (class) while restricting direct access to some details.&#xA;Key Points:&#xA;Hides Internal Implementation: Prevents direct modification of object data from outside the class. Provides Data Security: Only controlled access through methods (getters/setters). Enhances Maintainability: Changes in implementation don’t affect external code. What does it actually look like? This means that you need to understand a few Java keywords:</description>
    </item>
    <item>
      <title>Inheritance</title>
      <link>https://learn.kalschatzi.com/module1/3-java-inheritance/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/3-java-inheritance/index.html</guid>
      <description>Inheritance Inheritance is an OOP concept that allows one class (child/subclass) to inherit properties and behaviors from another class (parent/superclass). It promotes code reuse and hierarchy-based organization.&#xA;class Animal { void eat() { System.out.println(&#34;This animal eats food.&#34;); } } // Child Class class Dog extends Animal { void bark() { System.out.println(&#34;Dog barks.&#34;); } } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.eat(); // Inherited method myDog.bark(); // Own method } } Interfaces An interface is like a contract that defines methods without implementations. A class must implement an interface to provide method definitions.</description>
    </item>
    <item>
      <title>Polymorphism</title>
      <link>https://learn.kalschatzi.com/module1/4-java-polymorphism/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/4-java-polymorphism/index.html</guid>
      <description>Polymorphism means “many forms” and allows a single interface (method, class, or function) to behave differently based on the context.&#xA;Method overriding This happens when a subclass provides a different implementation of a method defined in its parent class.&#xA;class Animal { void makeSound() { System.out.println(&#34;Animal makes a sound&#34;); } } class Dog extends Animal { @Override void makeSound() { System.out.println(&#34;Dog barks&#34;); } } This way we can define a Dog class that extends Animal and can Override the base method.</description>
    </item>
    <item>
      <title>Unit Testing</title>
      <link>https://learn.kalschatzi.com/module1/5-java-unit-testing/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/5-java-unit-testing/index.html</guid>
      <description>Testing is an essential part of software development.&#xA;There are different kinds of tests, but for now we’ll focus on unit testing.&#xA;Unit testing is a software testing method where individual components (units) of a program are tested in isolation to ensure they work as expected. It helps detect bugs early, improves code quality, and simplifies debugging.&#xA;In Java we mainly use JUnit.&#xA;In this example, we take our Animal class and test its methods.</description>
    </item>
    <item>
      <title>Comparing objects</title>
      <link>https://learn.kalschatzi.com/module1/6-java-comparing-objects/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/6-java-comparing-objects/index.html</guid>
      <description>In Java, you can compare objects using different approaches. One thing you should never do is use ==.&#xA;Let’s review an example: We have the class&#xA;public class Animal { private String name; public Animal(String name) { this.name = name; } public String getName() { return name; } } And then we do&#xA;public void testAnimalEquals() { Animal schatzi = new Animal(&#34;Schatzi&#34;); Animal schatzi2 = new Animal(&#34;Schatzi&#34;); assertTrue(schatzi == schatzi2); } Both animals have the same exact name and nothing else. Using schatzi == schatzi2, what’s the result?</description>
    </item>
    <item>
      <title>Complexity of Algorithms</title>
      <link>https://learn.kalschatzi.com/module1/7-evaluate-algorithms/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/7-evaluate-algorithms/index.html</guid>
      <description>There are 2 measurements to evaluate the complexity of an algorithm:&#xA;Time Complexity (Efficiency) Big-O Notation: This describes the upper bound of an algorithm’s growth rate as the input size increases. It helps estimate how the algorithm’s running time grows with input size (n). Common time complexities include:&#xA;O(1): Constant time O(log n): Logarithmic time O(n): Linear time O(n log n): Log-linear time O(n^2): Quadratic time When discussing time complexity, the focus is on the average/expected cases, but there are different ones:</description>
    </item>
    <item>
      <title>Data Structures</title>
      <link>https://learn.kalschatzi.com/module1/8-data-structures/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/8-data-structures/index.html</guid>
      <description>Array A fixed-size, indexed collection of elements of the same type. Best for storing a fixed number of elements with fast access by index.&#xA;int[] arr = new int[5]; // Array of 5 integers, default value is 0 ArrayList A dynamically resizing array that allows random access and provides flexible resizing. Ideal for collections with frequent access and occasional insertions or deletions.&#xA;ArrayList&lt;Integer&gt; arrayList = new ArrayList&lt;&gt;(); // Empty ArrayList of integers LinkedList A linear collection where each element (node) contains a reference to the next element. In a double-linked list, each element also holds a reference to the previous element. Best when frequent insertions and deletions at the beginning or end are required.</description>
    </item>
    <item>
      <title>HashMap Deep Dive</title>
      <link>https://learn.kalschatzi.com/module1/9-hash-map-deep-dive/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://learn.kalschatzi.com/module1/9-hash-map-deep-dive/index.html</guid>
      <description>A HashMap is an implementation of the Map interface in Java that stores key-value pairs. It provides efficient O(1) average-time complexity for operations like insert, delete, and search. However, its performance can degrade under certain circumstances, leading to the worst-case time complexity of O(n).&#xA;How HashMap works Hash Function A HashMap uses a hash function to compute an index (called a bucket) where the key-value pair will be stored. The hash function takes the key, processes it, and returns an integer index. The goal of a good hash function is to evenly distribute the keys across the available buckets to minimize collisions.</description>
    </item>
  </channel>
</rss>