# SecureAI Workshop - Documentation Website

This repository contains the MkDocs Material website for the **SecureAI Workshop** - a self-paced, self-study training program on cybersecurity and privacy for AI systems (Loyola University Chicago / NSF).

## About SecureAI

**SecureAI** is a self-study program of **12 workshops** covering how to build secure, ethical, and responsible AI systems. It is designed as an on-demand online guide rather than a live cohort: learners work through it at their own pace by

- watching the recorded **panel discussions** and **guest-speaker lectures** (published as videos and embedded/linked on each page),
- watching the **lab walkthrough recordings**, and
- reading each workshop page and running the accompanying Jupyter notebooks locally or in Google Colab.

There is no live session, attendance requirement, or external lab environment to provision. Each workshop is meant to be followed like an online tutorial: watch the recording, read the page, run the notebook.

## Program Structure

The site is organized as 12 workshops. Each workshop is a directory (`WorkshopNN/`) containing one main Markdown page plus root-level subdirectories for notebooks, slides, datasets, models, and docs.

| #  | Workshop | Page |
| -- | -------- | ---- |
| 1  | Introduction and Fundamentals in AI | [Workshop01/Introduction_and_Fundamentals_in_AI.md](Workshop01/Introduction_and_Fundamentals_in_AI.md) |
| 2  | AI and Threat Models | [Workshop02/AI_and_Threat_Models.md](Workshop02/AI_and_Threat_Models.md) |
| 3  | Adversarial Attacks - White-Box Attacks | [Workshop03/Adversarial_Attacks_-_White-Box_Attacks.md](Workshop03/Adversarial_Attacks_-_White-Box_Attacks.md) |
| 4  | Adversarial Attacks - Black-Box Attacks | [Workshop04/Adversarial_Attacks_-_Black-Box_Attacks.md](Workshop04/Adversarial_Attacks_-_Black-Box_Attacks.md) |
| 5  | Robustness and Resilience | [Workshop05/Robustness_and_Resilience.md](Workshop05/Robustness_and_Resilience.md) |
| 6  | AI and Privacy: Differential Privacy & Federated Learning | [Workshop06/AI_and_Privacy_Differential_Privacy_and_Federated_Learning.md](Workshop06/AI_and_Privacy_Differential_Privacy_and_Federated_Learning.md) |
| 7  | Ethics in AI: Bias and Fairness | [Workshop07/Ethics_in_AI_-_Bias_and_Fairness.md](Workshop07/Ethics_in_AI_-_Bias_and_Fairness.md) |
| 8  | Trust in AI: Transparency, Explainability & Interpretability | [Workshop08/Trust_in_AI_Transparency_Explainability_and_Interpretability.md](Workshop08/Trust_in_AI_Transparency_Explainability_and_Interpretability.md) |
| 9  | AI Development and Security | [Workshop09/AI_Development_and_Security.md](Workshop09/AI_Development_and_Security.md) |
| 10 | AI and Data Governance: Regulations and Standards | [Workshop10/AI_and_Data_Govern_Regulations_and_Standards.md](Workshop10/AI_and_Data_Govern_Regulations_and_Standards.md) |
| 11 | Secure Deployment and Operation of AI Systems | [Workshop11/Secure_Deployment_and_Operation_of_AI_Systems.md](Workshop11/Secure_Deployment_and_Operation_of_AI_Systems.md) |
| 12 | Case Studies & Real-World Applications - AIShield | [Workshop12/Case_Studies_RealWorld_Applications_AIShield.md](Workshop12/Case_Studies_RealWorld_Applications_AIShield.md) |

## Repository Structure

The repository is **flat**: all site content lives in the repository root (`index.md`, the `WorkshopNN/` directories, `models/`). MkDocs does not allow `docs_dir` to be the directory that contains `mkdocs.yml`, so the build uses a small shim: `build.sh` regenerates a gitignored `_docs/` directory of symlinks to the flat content, and `mkdocs.yml` sets `docs_dir: _docs`. Always build/serve through `./build.sh` (see below) rather than calling `mkdocs` directly.

```
.
├── mkdocs.yml                 # Site configuration (Material theme, nav, extensions, plugins)
├── build.sh                   # Regenerates the _docs/ symlink shim, then runs mkdocs
├── requirements.txt           # Build dependencies (mkdocs-material, pymdown-extensions, minify)
├── README.md                  # This file
├── BUILD_SUMMARY.md           # Current-state build/structure summary
├── LICENSE                    # MIT License
├── .github/workflows/
│   └── deploy.yml             # CI: builds and deploys the site to the gh-pages branch
│
├── index.md                   # Site landing page
├── overview.md                # Program overview
├── resources.md               # Shared resources and references
├── program_conclusion.md      # Closing page
│
├── assets/                    # Local MkDocs build resources (not pushed to GitHub): images, CSS, JS
│   ├── images/                # Speaker headshots, logos, and the secureai logo/favicon
│   ├── javascripts/           # external-links.js (opens off-site links in a new tab)
│   └── stylesheets/
│       └── extra.css          # Custom styling for the whole site
│
├── models/
│   └── General_Models/        # Shared base models (mnist10_model.keras, cifar10_model.keras)
│
└── Workshop01 … Workshop12/   # One directory per workshop
    ├── <Topic_Title>.md       # The workshop page (content lives here)
    ├── *.ipynb                # Notebook files (directly in workshop root, no longer under assets/)
    ├── slides/                # Guest-speaker slide decks (.pdf)
    ├── datasets/              # Data for the labs (.npz / .pt / .csv)
    ├── models/                # Pre-trained attack/detector models (.keras / .pt / .pth)
    └── docs/                  # Reference PDFs / notes for that workshop
```

Each workshop page's main file is named after the workshop topic (for example, `Workshop03/Adversarial_Attacks_-_White-Box_Attacks.md`). Content lives in the `.md` file, styling is centralized in `assets/stylesheets/extra.css`, and labs are stored directly in each workshop's directory.

## Getting Started

### Local Development

1. **Install dependencies:**
   ```bash
   pip install -r requirements.txt
   ```

2. **Serve locally with live reload** (use `build.sh`, which sets up the `_docs/` shim first):
   ```bash
   ./build.sh serve
   ```

3. **Open in browser:**
   ```
   http://localhost:8000
   ```

### Building a Static Site

```bash
./build.sh build
```

The generated static site is written to the `./site/` directory, ready for deployment. (`build.sh` passes any arguments straight through to `mkdocs`, e.g. `./build.sh build --strict`.)

### View Online

Published site: **https://secureai-luc.github.io/SecureAI/**
<!-- Site URL taken from mkdocs.yml `site_url`. Confirm this is the intended production URL. -->

## Website Features

- **Responsive design** - optimized for desktop, tablet, and mobile
- **Dark/Light mode** - user-selectable color schemes with system-preference detection
- **Auto table of contents** - per-page navigation in the right sidebar
- **Math support** - LaTeX equations rendered with MathJax
- **Code highlighting** - syntax highlighting via Pygments, with copy buttons
- **Full-text search** - searchable documentation
- **Diagrams** - Mermaid flowcharts and graphs
- **Interactive content** - tabbed sections, admonitions, and collapsibles

## Workshop Content

Each workshop page follows a common structure: an at-a-glance overview, the on-demand video section (panelists or guest speaker), learning objectives, theoretical background, a hands-on lab (where notebooks exist), key takeaways, additional resources, and a link to the next workshop.

- **Workshop 1 - Introduction and Fundamentals in AI:** panel-based introduction to AI, security, privacy, and ethics.
- **Workshop 2 - AI and Threat Models:** threat modeling and attack classes (evasion, poisoning, extraction, inference, backdoor), with an Adversarial Robustness Toolbox (ART) lab.
- **Workshop 3 - Adversarial Attacks: White-Box Attacks:** gradient-based attacks (FGSM, PGD, C&W) with mathematical formulations and a full notebook set on MNIST-10 and CIFAR-10.
- **Workshop 4 - Adversarial Attacks: Black-Box Attacks:** query-based attacks (ZOO, SimBA) and query-budget trade-offs.
- **Workshop 5 - Robustness and Resilience:** adversarial training, certified defenses (randomized smoothing), and resilience.
- **Workshop 6 - AI and Privacy: Differential Privacy & Federated Learning:** differential privacy, DP-SGD, federated learning, and Deep Leakage from Gradients (DLG).
- **Workshop 7 - Ethics in AI: Bias and Fairness:** fairness metrics and bias mitigation using AIF360 on the Adult, COMPAS, and German Credit datasets.
- **Workshop 8 - Trust in AI: Transparency, Explainability & Interpretability:** model explanation methods (LIME, SHAP) and interpretation vulnerabilities.
- **Workshop 9 - AI Development and Security:** secure coding for machine learning and secure development practices.
- **Workshop 10 - AI and Data Governance: Regulations and Standards:** governance frameworks and regulations (EU AI Act, NIST AI, GDPR/CCPA).
- **Workshop 11 - Secure Deployment and Operation of AI Systems:** framework vulnerabilities, deployment hardening, and monitoring.
- **Workshop 12 - Case Studies & Real-World Applications - AIShield:** applied case studies, including federated learning with differential privacy.

## Leadership Team

- **Eric Chan-Tin** (dchantin@luc.edu) - Program Director, Associate Professor
- **Mohammed Abuhamad** (mabuhamad@luc.edu) - Program Co-Director, Assistant Professor
- **Mujtaba Nazari** (mnazari@luc.edu) - Lab Assistant & Graduate Researcher
- **Loretta Stalans** (Lstalan@luc.edu) - Program Evaluator
- **Maddie Juarez** (mjuarez4@luc.edu) - Administrative Coordinator

All from Loyola University Chicago.

## Technologies & Tools

The labs use the following libraries. Only tools actually referenced by the workshop materials are listed.

### ML / Security Libraries
- Adversarial Robustness Toolbox (ART)
- AI Fairness 360 (AIF360)
- Opacus (differential privacy)
- TensorFlow Federated (federated learning)
- LIME & SHAP (explainability)

### Frameworks
- PyTorch
- TensorFlow / Keras
- scikit-learn, NumPy, Pandas, Matplotlib

### Datasets in Play
- MNIST-10 and CIFAR-10 (vision labs)
- Adult, COMPAS, German Credit (fairness labs)

## Maintaining the Site

### Editing Content

1. Edit the relevant Markdown file: top-level pages (`index.md`, `overview.md`, `resources.md`, `program_conclusion.md`) or a workshop page under `WorkshopNN/`.
2. Preview locally with `mkdocs serve`.
3. Keep all cross-page links relative and internal to this repository. Verify that each link target exists on disk. Preserve on-disk file names in links even where they contain typos, since notebooks and pages may depend on the exact names.
4. To add or reorder pages, update the `nav:` section of `mkdocs.yml`.

### Styling

All custom styling lives in `assets/stylesheets/extra.css`. Edit page content in the Markdown files and leave presentation to that stylesheet.

## Code & License

- License: MIT - see the [LICENSE](LICENSE) file.
- Website: built with [MkDocs Material](https://squidfunk.github.io/mkdocs-material/).

## Contact

- Program questions: email the program leaders listed above.
- Content questions: mnazari@luc.edu
