Skip to content

Latest commit

Β 

History

History
309 lines (232 loc) Β· 9.77 KB

File metadata and controls

309 lines (232 loc) Β· 9.77 KB

Java Bootcamp Session Notes

πŸ“… Live session summaries, topics discussed, and resources.

How to Use This Document

  • Missed a session? Read the summary and check related guides
  • Preparing for next session? Review prerequisites
  • Want to revisit a topic? Find the session and follow the links

Session Schedule

Session Date Topic Status Recording
Session 1 TBD Bootcamp Kickoff & Setup βœ… Completed Link
Session 2 TBD Data Types & Numeric Literals βœ… Completed Link
Session 3 TBD The final Keyword & Debugging βœ… Completed Link
Session 4 TBD Collections & Generics πŸ“… Upcoming -
Session 5 TBD Object-Oriented Programming πŸ“… Planned -

Session 1: Bootcamp Kickoff & Setup

Date: 05.02.2026 Meetup: https://www.meetup.com/women-coding-community/events/312920485 Records:

Topics Covered

  • βœ… Bootcamp structure and expectations
  • βœ… How to fork and submit projects
  • βœ… JDK 21 installation and verification
  • βœ… IDE setup (IntelliJ IDEA)
  • βœ… First Gradle build

Key Takeaways

  1. Consistency over speed - Code regularly, even if just 30 minutes
  2. Community support - Use #java-bootcamp for questions
  3. Start simple - Basic projects are perfectly valid

Questions Raised

Q: "Can I use JDK 25 instead of 21?" A: Yes, but ensure your Gradle config targets Java 21 for compatibility. β†’ Added to FAQ #9

Q: "Do I need to know Spring Boot to start?" A: No! Start with core Java. Spring Boot is for intermediate projects. β†’ Added to FAQ #13

Resources

Action Items

  • Participants: Fork repo and create your folder
  • Participants: Install JDK 21 and verify with java -version
  • Participants: Choose a project from Project Ideas

Next Session Preview

We'll dive into Java data types and numeric literals - understanding int, double, and common type conversion pitfalls.


Session 2: Data Types & Numeric Literals

Date: TBD Duration: 90 minutes Attendees: ~XX participants

Topics Covered

  • βœ… Primitive types: int, double, long, float
  • βœ… Type conversion and casting
  • βœ… Common beginner mistakes
  • βœ… When to use which type

Key Takeaways

  1. Keep it simple - For 90% of code, int and double are sufficient
  2. Leading zeros are dangerous - 027 is octal (base-8), not 27!
  3. Type safety matters - Java won't let you lose data accidentally

Demo Code

// Type conversion examples from session
int age = 25;
double price = 19.99;

// ❌ This fails - can't fit decimal into int
int dollars = price;  // Compile error

// βœ… Explicit cast - you're accepting data loss
int dollars = (int) price;  // dollars = 19

// βœ… Automatic widening - safe conversion
double value = age;  // value = 25.0

Questions Raised

Q: "Why does 027 print as 23?" A: Leading zero means octal notation! Never use leading zeros unless you specifically need octal. β†’ Added to FAQ #6

Q: "When should I use long instead of int?" A: Timestamps, file sizes, large database IDs. For most counting, int is fine. β†’ Added to FAQ #5

Q: "What's the f suffix in 3.14f?" A: Marks it as a float instead of double. You can skip this for now - double is almost always better. β†’ Covered in Numeric Literals Guide - Skip Section

Guides Created

πŸ“– Understanding Numeric Literals in Java

  • Focuses on the 80/20 rule for beginners
  • Clearly marks what you can skip
  • Includes practice exercises with solutions

Resources

Action Items

  • Complete practice exercises in Numeric Literals Guide
  • Experiment with type conversion in your project
  • Share any confusing error messages in #java-bootcamp

Next Session Preview

We'll explore the final keyword - constants, immutability, and modern Java 21 features like Records and Sealed Classes.


Session 3: The final Keyword & Debugging

Date: TBD Duration: 90 minutes Attendees: ~XX participants

Topics Covered

  • βœ… Four uses of final: variable, parameter, method, class
  • βœ… final vs immutability (common misconception!)
  • βœ… Modern alternatives: Records, Sealed Classes
  • βœ… Live debugging of WCC platform project

Key Takeaways

  1. final β‰  immutable - It locks the reference, not the content
  2. Use Records for data classes - They're implicitly final and immutable
  3. Sealed classes > final classes - When you want controlled inheritance
  4. Interview topic - Understanding all four uses shows depth

Demo Code

From WCC Platform Debugging:

// Problem we debugged
final List<String> participants = new ArrayList<>();
participants.add("Olena");  // βœ… Allowed - modifying content
participants = new ArrayList<>();  // ❌ Not allowed - changing reference

Modern Java 21 Approach:

// Old way - lots of boilerplate
public class Point {
    private final int x;
    private final int y;
    // Constructor, getters, equals, hashCode, toString...
}

// New way - Record does it all
public record Point(int x, int y) {}
// Implicitly final class, implicitly final fields

Questions Raised

Q: "If final List can be modified, how do I truly freeze it?" A: Use List.of() for immutable lists:

List<String> names = List.of("Alice", "Bob");
names.add("Charlie");  // ❌ UnsupportedOperationException

β†’ Added to FAQ #8

Q: "Should I mark all method parameters as final?" A: Optional - some teams do it for clarity, others find it verbose. Check your team's style guide. β†’ Covered in Final Keyword Guide - Best Practices

Q: "When should I use Records vs regular classes?" A: Records for simple data carriers (DTOs, API responses, value objects). Regular classes when you need complex behavior or mutability. β†’ Covered in Final Keyword Guide - Records Section

Real-World Context

We debugged an issue in the WCC platform where a final variable's content was unexpectedly changed. This led to a great discussion about final vs immutability and when to use each.

Bug: Configuration values were changing mid-request Root cause: final reference to a mutable object Fix: Switched to a Record for true immutability

Guides Created

πŸ“– The final Keyword in Java 21

  • All four uses of final with examples
  • final vs immutability distinction
  • Modern Java 21 alternatives (Records, Sealed Classes)
  • Interview preparation tips

Resources

Action Items

  • Complete the FinalExplorer exercise in the guide
  • Identify places in your project where Records could replace regular classes
  • Experiment with Sealed Classes for controlled hierarchies

Next Session Preview

Collections and Generics - ArrayList, HashMap, and how to work with generic types safely.


Session 4: Collections & Generics

Date: TBD Duration: 90 minutes Status: πŸ“… Upcoming

Planned Topics

  • ArrayList vs Arrays
  • HashMap and HashSet
  • When to use which collection
  • Introduction to Generics
  • Common collection pitfalls

Prerequisites

  • Comfort with classes and objects
  • Understanding of final (Session 3)
  • Basic loop knowledge

Preparation


Session 5: Object-Oriented Programming

Date: TBD Duration: 90 minutes Status: πŸ“… Planned

Planned Topics

  • Class design principles
  • Inheritance and composition
  • Interfaces vs abstract classes
  • Encapsulation best practices

πŸ’‘ How to Contribute

After each session:

  1. Mentors: Update this document with summary, questions, and resources
  2. Create/update guides as needed
  3. Add common questions to FAQ
  4. Link to recordings when available

Template for new sessions:

## Session X: [Topic]

**Date:** YYYY-MM-DD
**Duration:** XX minutes
**Attendees:** ~XX participants

### Topics Covered
- βœ… Topic 1
- βœ… Topic 2

### Key Takeaways
1. Main point 1
2. Main point 2

### Questions Raised
**Q: "Question?"**
A: Answer
*β†’ Link to FAQ or guide*

### Guides Created
πŸ“– **[Guide Name](link)**

### Resources
- [Resource 1](link)

### Action Items
- [ ] Task 1

### Next Session Preview
Brief preview...

This document is updated after each session. Last updated: 2026-02-19