Skip to content

About

Free Java course for the fundamentals with lots, and lots of practice.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Java Fundamentals Course

Forked from the MOOC Java Course by the University of Helsinki Java MOOC, The aim with this course is to provide the learner with:

  • More practice exercises of varying difficulty
  • A leaner, to the point, written content

Why

Reason number one, I did not go to University, and I dropped out of school. I wanted to become a software engineer and what stood in my way for a long period of time was that, "I am too stupid" because of my clearly non-traditional background.

Today, I am a software engineer and I hold the same belief but that resilience and consistency matters much more.

My methodology of learning is simple. Practice, practice, practice. What worked for me to become a software engineer is 80% challenging yourself with practice, and 20% conceptual learning. My aim is to provide that access to practice, enough that your brain will go numb (I have completed all the exercises in this course).

Reason number two, I strongly dislike how wealth blocks people from STEM fields so here's a course for free built on top of the already great MOOC Java course by Uni of Helsinki.


🚀 Quickstart (Getting Started for Anyone)

If you have just cloned or forked this repository, follow these steps to get started immediately:

1. Prerequisites

  • JDK 17 or 21 (LTS): Verify your installed Java version:
    java -version
  • Git: For local version control and terminal practice.

2. Verify Your Environment

Test that Gradle compiles and all existing tests pass:

./gradlew test

(On Windows, use gradlew.bat test)

3. Repository Architecture

The repository separates conceptual guides, exercise starter code, and test suites:

src/
├── main/java/partXX/sYY<name>/
│   ├── <n>-<name>.md               <-- Spoiler-free conceptual guide
│   └── exercises/                  <-- Package: partXX.sYY<name>.exercises
│       ├── <ExerciseName>.md       <-- Detailed specification & stdin/stdout table
│       └── <ExerciseName>.java     <-- Clean starter template
└── test/java/partXX/sYY<name>/
    └── exercises/
        └── <ExerciseName>Test.java <-- Independent JUnit 5 test suite

4. How to Practice

  1. Read the Conceptual Guide: Open src/main/java/partXX/sYY<name>/<n>-<name>.md. Guides are deliberately crafted with alternative examples so they never spoil the exercises.
  2. Open the Exercise Spec: Read exercises/<ExerciseName>.md for requirements and sample outputs.
  3. Implement Solo: Write your solution in exercises/<ExerciseName>.java.
  4. Run Terminal Verification: Run the exercise's specific test suite:
    ./gradlew test --tests "partXX.sYY<name>.exercises.<ExerciseName>Test"
  5. Commit Your Work: Stage and commit your code via the terminal to build git fluency.

🤖 AI Mentorship & Modular Skills (Tool-Agnostic)

This repository is designed to be paired with an AI coding assistant (Antigravity, Claude Code, Cursor, Windsurf, Copilot, or local LLMs) acting as a Socratic Mentor.

All agent behaviors and core rules are specified in AGENTS.md (with synchronized shims in CLAUDE.md and GEMINI.md).

Modular Skills

Specialized workflows live in .agents/skills/:

Skill Trigger / Command Purpose
mooc-create-md-and-exercises Scaffolding a new section Scrapes Helsinki MOOC, modernizes Java advice (LTS standards), redacts spoilers from conceptual examples, generates exercise specs/starters, builds JUnit 5 tests, and calibrates 1–7 star difficulty ratings.
mooc-verify-exercise "Look, I finished this" or /mooc-verify Audits test suites for cheat loopholes (hardcoded outputs, missing boundaries), hardens JUnit 5 tests, verifies execution with Gradle, and delivers Socratic code reviews.

Tip

Progress Tracking: Tracking style is left entirely to the learner. You can use local notes (e.g. Obsidian, markdown logs, or the roadmap checklist below).


⚔️ Rules of Engagement (Methodology)

To ensure genuine mastery and eliminate copy-pasting:

  1. No Free Answers: The AI mentor provides mental models, invariant checks, and pseudocode flow—never raw Java implementation code.
  2. Standardized Star Calibration: Exercises follow a 1–7 difficulty scale. The standard MOOC curriculum is capped at 3–4 stars; custom progressive overload drills scale from 5 to 7 stars.
  3. Automated Verification: Rather than relying on broken or rigid remote runners, all logic is verified locally with custom JUnit 5 test suites.
  4. Terminal Autonomy: All git commands and test invocations are run by the learner.

🗺️ The Roadmap (Table of Contents)

  • Part 1.1–1.6: Getting Started (Printing, Variables, Conditionals)
  • Part 1.65: Applied Logic & Problem-Solving Drills (In Progress)
  • Part 2: Repeating Functionality (Loops & Methods)
  • Part 3: Lists and Arrays
  • Part 4: Object-Oriented Programming (OOP)
  • Part 5: Overloading and Objects in Lists
  • Part 6: Objects within Objects (Testing)
  • Part 7: Programming Paradigms & Algorithms
  • Part 8: HashMaps and Data Organization
  • Part 9: Inheritance and Interfaces
  • Part 10: Useful Techniques (Streams & Regex)
  • Part 11: Exceptions and File Processing
  • Part 12: Type Parameters
  • Part 13: Graphical User Interfaces (JavaFX)
  • Part 14: Data Visualization

🔗 Resources


💡 The "Aha!" Log (Wall of Triumphs)

Record notes here whenever you hit a major conceptual roadblock and break through:

  • Part 1.1: Realized that System.out.println() requires a semicolon at the end, and text must be wrapped in double-quotes to be treated as a String parameter.
  • Part 1.6: Discovered De Morgan's Laws: inverting a && b becomes !a || !b, which makes guard clauses and early rejection checks much cleaner.

About

Free Java course for the fundamentals with lots, and lots of practice.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages