Featured Post

Algorithm Design and Data Structure

Some algorithms and data structures really are better than others, but not in every situation. The difference shows up when the data gets bi...

Thursday, November 13, 2025

Algorithm Design and Data Structure

Some algorithms and data structures really are better than others, but not in every situation. The difference shows up when the data gets bigger. A simple list with linear search works fine for a dozen items, but when you’re dealing with thousands or millions then checking everything one by one becomes painfully slow. That’s when a hash table or a balanced binary tree saves the day because they keep the most common operations (lookup, insert, delete) fast no matter how much data you throw at them. O(N) versus O(1) or O(log N) is the difference between a program that finishes instantly and one that makes you wait minutes.

Through this process I've tried to make my own process pretty straightforward. Before I write a single line of code, I figure out which operation will happen the most often. Is it looking something up by a key, then hash table. Do I need the data to stay sorted automatically, then tree-based structure. Am I mostly adding to the end and reading everything once in a while, then a regular list or array works and keeps things simple. Then I glance at the expected Big-O for those key operations. If the main one grows linearly or worse when the input size doubles, I know I’m starting with the wrong structure and I change it early.

That single habit (asking “what do I do the most?” and then picking the structure designed for that) has made my programs faster, cleaner, and a lot less stressful to debug. It’s one of the biggest takeaway from this process. Choose the right tool for the job you actually have, not the job you wish you had, and everything else falls into place.

Thursday, October 16, 2025

My Journey into Java and OOP for Beginners

 

My Journey into Java and OOP for Beginners

Hey there, fellow newbie! I’m just starting out with Java and object-oriented programming (OOP) myself, and I’m excited to share what I’ve picked up so far to help you get started too!

Getting Java Up and Running

Setting up Java was my first big step, and it took a little figuring out. Instead of a detailed guide (which can feel overwhelming), I’d point you to some awesome resources that guided me. The official Java Tutorials were the main ones that helped show me how to run code with basic tools. It wasn’t perfect at first, but these links made it manageable.

What I’ve Learned About OOP

OOP is like building with Lego blocks, and here’s how I’m understanding it:

  • Encapsulation: It’s like keeping your stuff in a backpack. You hide your data inside a class and only share what you want with methods. It keeps things safe and organized.
  • Inheritance: Think of it like learning from your parents. A Student class can inherit traits from a Person class, saving time and reusing code—pretty cool!
  • Polymorphism: This lets you do the same thing in different ways. A Dog might speak() with a bark, while a Cat meows, but both use the same idea. It’s flexible and fun to explore.
  • Abstraction: Focus on what something does, not how. Like a TV remote—you press buttons without knowing the insides. It simplifies things for us newbies.

I’m still getting the hang of these, but they make Java feel creative yet structured. Don’t worry if it’s tricky at first as I’m learning too. Check those links, try a simple program, and you’ll get there. As a tech enthusiast, I’m thrilled to help others like this!

  • Java Tutorials: https://docs.oracle.com/javase/tutorial/getStarted/
  • Adoptium: https://adoptium.net/
  • Oracle Getting Started: https://docs.oracle.com/javase/tutorial/getStarted/coding/index.html