Skip to content

Repository files navigation

🧠 Personal Code Repository

A personal monorepo for learning, experimenting, and comparing approaches in different languages, from algorithmic challenges to scientific computing and HPC.

This repository is a personal monorepo designed to host programming challenges, language learning, and scientific/high-performance computing (HPC) projects.

The main goals are:

  • Maintain a long-term scalable structure
  • Avoid unnecessary duplication of concepts
  • Allow multiple languages for the same problem
  • Facilitate indexing and content search

📌 Root README

This repository gathers all my personal technical work in one place. It is not intended as a single project, but as a living archive of learning and experimentation.

Here you will find:

  • Programming challenges solved in multiple languages (Advent of Code, LeetCode, etc.)
  • Notes and code written while learning new languages and paradigms
  • Experiments in scientific computing, parallelism, CUDA, and HPC

The structure prioritizes:

  • Conceptual clarity over organization by language
  • Idea reuse
  • Comparison between approaches

Not all code is "polished": many folders reflect the real process of learning.


📁 General Structure

personal-code/
├── challenges/              # Specific problems and challenges
├── learning/                # Structured learning
├── scientific-computing/    # Scientific computing and HPC
├── tools/                   # Scripts and infrastructure
├── docs/                    # Notes, references, and indexes
└── README.md                # This file

Each folder contains its own README.md explaining its purpose and contents.


🧩 Naming Convention

📂 Folders

  • Use kebab-case: advent-of-code, scientific-computing
  • Avoid ambiguous abbreviations
  • Prefer conceptual names over technical ones

Examples:

  • dynamic-programming
  • dp

📄 Files

  • Use snake_case or the language's standard convention
  • Include version or variant only if necessary

Examples:

  • quicksort_recursive.f90
  • day05_part2.bas

🏷 Languages

  • Use full lowercase names:
    • python, fortran, vba, cpp, cuda

🧪 Template for New Challenges

To reduce friction and maintain consistency, challenges follow a common template.

If I automate statistics, benchmarks, or searches in the future, this structure allows it without major refactoring.

📁 Base Structure

challenge-name/
├── README.md
├── input/
├── solutions/
│   └── <language>/
│       ├── solution.ext
│       └── notes.md
└── tags.yml

📄 README.md (challenge)

# Challenge Name

## Source
- Platform: Advent of Code / LeetCode / Other
- Year / ID: 2025 - Day 03

## Problem Statement
Brief summary of the problem.

## Strategy
Main ideas and approach.

## Languages Used
- VBA
- Fortran

🧪 Advent of Code Template

advent-of-code/2025/fortran/day03/
├── README.md
├── input.txt
├── part1.f90
├── part2.f90
└── notes.md

🧪 Language Learning Template

learning/languages/fortran/
├── basics/
├── io/
├── algorithms/
├── numerical/
└── README.md

The language README should include:

  • Reason for learning
  • Resources used
  • Links to shared concepts

🤖 Scripts to Generate Project Structures

Automated scripts create minimal structures for challenges, language studies, and experiments.

Bash Scripts (Linux/macOS/Git Bash)

# Create a new challenge
bash tools/scripts/new_challenge.sh advent-of-code 2025 day03 fortran

# Create a new language study
bash tools/scripts/new_language.sh scala

# Create a scientific experiment
bash tools/scripts/new_experiment.sh ode lotka-volterra

# Create a numerical method
bash tools/scripts/new_method.sh pde finite-element

# Regenerate the global index from tags.yml files
python tools/scripts/build_index.py

PowerShell Scripts (Windows)

# Create a new challenge
.\tools\scripts\new_challenge.ps1 advent-of-code 2025 day03 vba

# Create a new language study
.\tools\scripts\new_language.ps1 scala

# Create a scientific experiment
.\tools\scripts\new_experiment.ps1 ode lotka-volterra

# Create a numerical method
.\tools\scripts\new_method.ps1 pde finite-element

# Regenerate the global index
python .\tools\scripts\build_index.py

Run scripts from the repository root.


🏷 Tag and Index System

📄 tags.yml (per project or challenge)

language:
  - fortran
  - vba

domain:
  - algorithms
  - numerical-methods

techniques:
  - dynamic-programming
  - recursion

difficulty: medium

📚 Central Index (docs/index.md)

# Global Index

## By Language
- [Fortran](../learning/languages/fortran)
- [Python](../learning/languages/python)

## By Domain
- [Algorithms](../learning/concepts/algorithms)
- [PDEs](../scientific-computing/numerical-analysis/pde)

## Featured Challenges
- Advent of Code 2025 (Fortran)

🧭 Quick Decision Rule

Am I solving a specific problem, learning a concept, or analyzing a method?

  • Specific problem → challenges/
  • Learning → learning/
  • Scientific analysis / real performance → scientific-computing/

🚀 Future Vision

This repository is designed to grow towards:

  • Multi-language comparison
  • Real benchmarks
  • HPC experimentation with MPI, CUDA, and SLURM
  • Reusable technical documentation

Last updated: 2025

About

A personal monorepo for learning, experimenting, and comparing approaches in different languages, from algorithmic challenges to scientific computing and HPC.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages