🚀 A comprehensive and ever-growing repository for mastering Java programming through structured problem-solving sheets and backend-focused exercises.
This is part of my continuous journey to become a highly capable Backend Java Developer, building strong mental foundations in:
- Java Syntax & Core Principles
- OOP & Design Patterns
- Data Structures & Algorithms
- Multithreading & Concurrency
- Clean Code, SOLID, and Software Craftsmanship
This repository is structured into a series of progressive Java Problem Solving Sheets, starting from basic syntax and gradually advancing toward complex backend logic and real-world systems.
Each problem is solved using clean, modular, testable Java code, written in a way that promotes deep understanding, reusability, and engineering discipline.
🧠 Think of each sheet as a level in your mental gym – and the gym never closes.
- ✅ Basic Syntax & Variables – Java fundamentals, data types, operators
- ✅ Control Flow –
if/else
, loops, switch-case - ✅ Functions & Recursion – Modular programming and recursive strategies
- ✅ Arrays & Data Structures – Arrays, Lists, Stacks, Queues, HashMaps, Sets
- ✅ Object-Oriented Programming (OOP) – Encapsulation, Inheritance, Polymorphism, Abstraction
- ✅ Design Patterns – Singleton, Factory, Strategy, and more
- ✅ Exception Handling – Robust error management & custom exceptions
- ✅ Algorithms – Searching, Sorting, Problem Solving
- ✅ Multithreading – Concurrency models and real-world thread use
- ✅ Clean Code & SOLID Principles – Write for humans, not just machines
- ✅ Modularization – Reusable components with separation of concerns
The structure is open-ended and infinitely extensible:
src/ ├─ sheet1/ │ ├─ Sh1Pr1.java │ ├─ Sh1Pr2.java │ └─ ... ├─ sheet2/ │ └─ ... └─ sheetN/
Each sheet includes:
- 📄 Well-named Java classes (e.g.,
Sh5Pr2.java
) - 🧠 Inline problem descriptions where applicable
- 🧪 Testable & clean implementations with modular design
- 🧱 Built to reflect real backend workflows and encourage scalability
♾️ The sheet count keeps growing as learning continues.
- Hello World
- Swap Without Temp
- Even or Odd
- Find Largest of 3
- Sum of Digits
- Factorial with Loops
- Prime Number Detection
- Reverse Digits
- Fibonacci Sequence
- Armstrong Number Check
Sheet | Status | Focus Area |
---|---|---|
Sheet 1 | ✅ Completed | Java basics & intro problems |
Sheet 2 | ✅ Completed | Arrays & simple data structure use |
Sheet 3 | ✅ Completed | Strings & char manipulation |
Sheet 4 | ✅ Completed | Patterns, nested loops |
Sheet 5 | ✅ Completed | 2D Arrays, matrices |
Sheet 6 | 🟡 In Progress | Matrix logic & deeper conditions |
Sheet 7 | ⏳ Upcoming | Intermediate structures & sorting |
Sheet 8 | ⏳ Upcoming | Recursion & OOP combinations |
Sheet 9 | ⏳ Upcoming | Dynamic programming & analysis |
Sheet 10+ | ♾️ Endless | Real-world backend & architecture |
🔁 The tracker reflects continuous improvement — not a final destination.
This hub will keep expanding with:
- ✨ Recursive Problem Solving & Memoization
- ✨ Data Structures from Scratch – Linked Lists, Trees, HashMaps
- ✨ Multithreading Challenges – Runnable, Threads, Sync
- ✨ File Handling & Stream APIs
- ✨ JUnit & Integration Testing
- ✨ Mini Backend Systems – CLI projects, service layers, modular logic
- ✨ Controller-based Architecture – Preparing for scalable backend design
🎯 Goal: Build the mindset and codebase of a real software engineer — not just a student.
git clone https://github.com/ehab-elshimi-developer/java-problem-solving-sheets.git
💡 Recommended: IntelliJ IDEA or VS Code with Java Extension Pack
This repository follows a modular, auto-scalable structure powered by Generator.java
.
Each set of problems is organized into folders:
src/
├─ sheet1/
│ ├─ Sh1Pr1.java
│ ├─ Sh1Pr2.java
│ └─ ...
├─ sheet2/
│ └─ ...
└─ ...
✅ Naming Convention
ShXPrY.java
→ where X = sheet number
, Y = problem number
Update Main.java
:
runProblem(6, 4); // Executes sheet6.Sh6Pr4
testGeneratedSheet(6); // Executes Sh6Pr1 to Sh6Pr10
🧪 Reflection is used to dynamically load and invoke the .run()
method of each class.
Run Generator.java
to:
- 🔍 Detect the latest existing sheet
- 🆕 Create the next sheet automatically (e.g.,
sheet7/
) - 🧱 Generate files like
Sh7Pr1.java
toSh7Pr6.java
- 🛠️ Update
Main.java
for immediate execution
🧭 Whether you're starting with syntax or diving into algorithms — just generate and go.
Java
Problem Solving
Backend Development
OOP
Data Structures
Algorithms
Multithreading
Design Patterns
SOLID Principles
Clean Code
Modularization
Exception Handling
Reflection
This repo is part of a personal learning journey — but open to evolution.
If you’d like to:
- 💡 Suggest a new challenge
- 🛠 Improve an existing solution
- 🐞 Fix a bug
- ✨ Refactor structure or readability
Feel free to:
🙌 All contributions are welcome!
Ehab Elshimi
🎯 Aspiring Backend Java Developer
📍 Egypt – Preparing for European opportunities
💡 Passionate about clean architecture & scalable systems
📬 ehabelshimi.dev@gmail.com
🌐 @ehab-elshimi-developer
🧠 "Train your mind to solve problems like an engineer. Write code like you’re building a system, not just passing a test."
— Ehab Elshimi 🚀