Skip to content

Course-Framework

Reusable framework for creating academic courses with GitHub Pages

View on GitHub Homepage


Information

Property Value
Language Python
Stars 0
Forks 0
Watchers 0
Open Issues 0
License No License
Created 2025-12-30
Last Updated 2026-02-19
Last Push 2026-01-04
Contributors 1
Default Branch master
Visibility private

Notebooks

This repository contains 13 notebook(s):

Notebook Language Type

| L01_defi_exploration | PYTHON | jupyter |

| L02_smart_contracts | PYTHON | jupyter |

| L03_token_analysis | PYTHON | jupyter |

| L04_amm_mechanics | PYTHON | jupyter |

| L05_lending_analysis | PYTHON | jupyter |

| L06_stablecoin_analysis | PYTHON | jupyter |

| L07_yield_farming | PYTHON | jupyter |

| L08_derivatives | PYTHON | jupyter |

| L09_oracles | PYTHON | jupyter |

| L10_governance | PYTHON | jupyter |

| L11_security | PYTHON | jupyter |

| L12_layer2 | PYTHON | jupyter |

| LXX_notebook_template | PYTHON | jupyter |

Reproducibility

No specific reproducibility files found.

Status

  • Issues: Enabled
  • Wiki: Enabled
  • Pages: Enabled

README

Course Framework

Deploy to GitHub Pages License: MIT Jekyll Just the Docs

Live Demo: https://Digital-AI-Finance.github.io/Course-Framework/

A comprehensive, reusable framework for creating academic courses with GitHub Pages, featuring interactive quizzes, searchable glossary, and Beamer LaTeX slides.

Overview

This framework provides everything you need to create a professional academic course website with:

  • Jekyll-based GitHub Pages site with Just the Docs theme
  • 12-week course structure (customizable)
  • Interactive quizzes with instant feedback
  • Searchable glossary
  • Dark/light mode toggle
  • Responsive design for all devices
  • Beamer LaTeX slide templates
  • Jupyter notebook templates
  • Chart generation scripts
  • CI/CD workflows for automated deployment

Quick Start

Option 1: Interactive Mode

cd scripts
python create_course.py --interactive

Follow the prompts to configure your course.

Option 2: Configuration File

  1. Copy scripts/sample_config.yaml to my_course.yaml
  2. Edit the configuration with your course details
  3. Run:
python scripts/create_course.py --config my_course.yaml --output /path/to/output

Option 3: Manual Setup

  1. Copy the templates/ folder to your new course directory
  2. Replace all {{PLACEHOLDER}} values with your content
  3. Update docs/_data/weeks.yml with your weekly content

Framework Structure

Course_Framework/
|-- README.md                    # This file
|-- FRAMEWORK_GUIDE.md           # Detailed guide
|-- scripts/
|   |-- create_course.py         # Main course generator
|   |-- add_week.py              # Add weeks to existing course
|   |-- generate_charts.py       # Generate all chart PDFs
|   |-- sample_config.yaml       # Sample configuration
|-- templates/
|   |-- docs/                    # Jekyll site templates
|   |   |-- _config.yml          # Jekyll configuration
|   |   |-- _data/               # Data files (weeks, quizzes, glossary)
|   |   |-- _includes/           # Reusable components (quiz, theme-toggle)
|   |   |-- _layouts/            # Page layouts (week.html)
|   |   |-- _sass/               # Custom SCSS styling
|   |   |-- weeks/               # Week pages (week-1.md to week-12.md)
|   |   |-- index.md             # Home page
|   |   |-- syllabus.md          # Course syllabus
|   |   |-- glossary.md          # Searchable glossary
|   |   |-- quizzes.md           # Interactive quizzes
|   |   |-- slides.md            # Slides download page
|   |   |-- Gemfile              # Ruby dependencies
|   |-- .github/workflows/       # CI/CD workflows
|   |   |-- pages.yml            # GitHub Pages deployment
|   |   |-- validate_charts.yml  # Chart validation
|   |   |-- validate_notebooks.yml
|   |   |-- compile_slides.yml
|   |-- lesson_template/         # Lesson folder template
|   |   |-- LXX_TOPIC_NAME.tex   # Beamer slide template
|   |   |-- 01_chart_template/   # Chart folder template
|   |   |-- notebooks/           # Notebook templates
|   |   |-- exercises/           # Exercise templates
|   |   |-- readings/            # Reading guide templates

Generated Course Structure

After running the generator, your course will have this structure:

your-course/
|-- README.md
|-- requirements.txt
|-- .gitignore
|-- L01_Topic_Name/
|   |-- L01_Topic_Name.tex       # Beamer slides
|   |-- L01_Topic_Name.pdf       # Compiled PDF
|   |-- 01_chart_name/
|   |   |-- chart.py             # Chart script
|   |   |-- chart.pdf            # Generated chart
|   |-- notebooks/
|   |   |-- L01_notebook.ipynb
|   |-- exercises/
|   |   |-- L01_Exercise.md
|   |-- readings/
|   |   |-- L01_Reading_Guide.md
|   |-- temp/                    # LaTeX auxiliary files
|-- L02_Topic_Name/
|-- ...
|-- L12_Topic_Name/
|-- docs/                        # GitHub Pages site
|   |-- _config.yml
|   |-- _data/
|   |   |-- weeks.yml
|   |   |-- quizzes.yml
|   |   |-- glossary.yml
|   |-- index.md
|   |-- ...
|-- .github/
|   |-- workflows/
|       |-- pages.yml

Customization

Colors

Edit templates/docs/_sass/color_schemes/custom.scss:

$primary-color: #3333B2;      // Main brand color
$secondary-color: #0066CC;    // Secondary color
$accent-color: #FF7F0E;       // Accent/highlight color

Content

  1. Weeks: Edit docs/_data/weeks.yml
  2. Quizzes: Edit docs/_data/quizzes.yml
  3. Glossary: Edit docs/_data/glossary.yml
  4. Exercises: Edit docs/_data/exercises.yml
  5. Readings: Edit docs/_data/readings.yml

Adding a New Week

python scripts/add_week.py --course /path/to/course --week 5 --title "New Topic"

Deployment

  1. Push to GitHub:

    git init
    git add .
    git commit -m "Initial course setup"
    git remote add origin https://github.com/your-org/your-course.git
    git push -u origin main
    

  2. Enable GitHub Pages:

  3. Go to repository Settings
  4. Navigate to Pages
  5. Set source to "GitHub Actions"

  6. Your site will be live at: https://your-org.github.io/your-course/

Requirements

  • Python 3.10+
  • Ruby 3.2+ (for local Jekyll development)
  • Required Python packages:
  • PyYAML
  • matplotlib
  • numpy
  • pandas
  • jupyter

Install Python dependencies:

pip install pyyaml matplotlib numpy pandas jupyter

Local Development

To test the site locally:

cd your-course/docs
bundle install
bundle exec jekyll serve --livereload

Visit http://localhost:4000/your-course/

Features

Interactive Quizzes

Each week can have self-assessment quizzes defined in _data/quizzes.yml:

week1:
  - question: "What is the answer?"
    options:
      - "Option A"
      - "Option B (correct)"
      - "Option C"
    correct: 1
    explanation: "Option B is correct because..."

Searchable Glossary

Terms are defined in _data/glossary.yml:

- term: "Term Name"
  definition: "Definition of the term"
  related: ["Related Term 1", "Related Term 2"]
  week: 1

Chart Generation

Each chart has its own folder with a Python script:

# 01_chart_name/chart.py
import matplotlib.pyplot as plt
from pathlib import Path

# Standard configuration for slides
plt.rcParams.update({'font.size': 14, 'figure.figsize': (10, 6)})

# Your chart code here
fig, ax = plt.subplots()
# ...

plt.savefig(Path(__file__).parent / 'chart.pdf', dpi=300, bbox_inches='tight')

Generate all charts:

python scripts/generate_charts.py --course /path/to/course

Beamer Slides

LaTeX template with consistent styling:

\documentclass[8pt,aspectratio=169]{beamer}
\usetheme{Madrid}
\definecolor{mlpurple}{RGB}{51,51,178}
% Include chart: \includegraphics[width=0.55\textwidth]{01_chart/chart.pdf}

CI/CD Workflows

The framework includes GitHub Actions workflows for:

  1. pages.yml: Automatic deployment to GitHub Pages
  2. validate_charts.yml: Test chart scripts
  3. validate_notebooks.yml: Validate Jupyter notebooks
  4. compile_slides.yml: Compile LaTeX slides

License

This framework is provided for educational use. Courses created using this framework can have their own license terms.

Contributing

Contributions welcome! Please open an issue or pull request.

Credits

Based on the structure of the Agentic Artificial Intelligence course.