Skip to content

✨ Companion repository for the DIBS course on software library design. Code is in English for accessibility; course is taught in Spanish.

License

Notifications You must be signed in to change notification settings

r8vnhill/java-dibs

🎓 DIBS Java Companion Repository

License: BSD-2-Clause Java Gradle Educational DIBS Website

This repository contains example projects and code snippets designed to accompany the lessons of the course “Diseño e Implementación de Bibliotecas de Software” (DIBS), taught in Spanish.

Although the course materials and instruction are in Spanish, this repository is written in English to ensure greater accessibility for a broader audience and to align with common programming conventions in documentation and tooling.

📦 About This Repository

The repository is organized to reflect the conceptual structure of the course, covering topics like:

  • Algebraic types: product types (e.g., records and data classes)
  • Modern Java idioms and patterns for library design
  • Immutable data modeling and comparison by value
  • Clean and expressive APIs for data-centric components

All examples are language-specific and are built using idiomatic Java code, leveraging features introduced in recent versions of the language (e.g., record types in Java 16+).

📁 Project Structure

This is a Gradle-based multi-project repository. Each lesson module is located within a structured path that mirrors the course’s conceptual units.

type-fundamentals/
└── algebraic-types/
    └── product-types/
        └── records/
            ├── build.gradle.kts
            └── src/main/java/cl/ravenhill/music/
                ├── Song.java
                └── Main.java

You can run or test each lesson independently.

🚀 Getting Started

To build or run the examples:

./gradlew build # Build all projects
# Run a specific project
./gradlew :type-fundamentals:algebraic-types:product-types:records:run

You can also open the project in IntelliJ IDEA or any Java-compatible IDE.

🔧 Requirements

  • Java 17 or newer
  • Gradle 8.13+
  • Git (for cloning the repository)

🧑‍🤝‍🧑 Contributing

Contributions are welcome! Please follow the Code of Conduct and ensure that your changes are relevant to the course content or improve clarity and accessibility.

⚖️ License

This repository is distributed under the BSD 2-Clause License.

🌐 Course Site

For the full set of lessons and materials (in Spanish), visit the official DIBS website.