Skip to content

Commit 138d018

Browse files
committed
Add initial project structure with Docker setup, environment configurations, and workshop materials
- Created .dockerignore and .gitignore files to manage ignored files for Docker and Git. - Added Dockerfile for building a Quarto + Python environment. - Introduced docker-compose configuration for running the workshop slides service. - Included environment.yml and requirements.txt for dependency management. - Added Quarto configuration and theme files for slide presentations. - Created initial workshop content and data files for the "Colab and Chill" workshop series. - Added LICENSE files for MIT and CC BY 4.0 licenses. - Included README and LOCAL.md for project documentation and local setup instructions.
0 parents  commit 138d018

23 files changed

+7200
-0
lines changed

.dockerignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.git
2+
.gitignore
3+
**/.venv
4+
**/__pycache__
5+
**/.ipynb_checkpoints
6+
node_modules
7+
.DS_Store
8+
*.log
9+
*.tmp
10+
*.local
11+
**/.quarto/
12+
.quarto-cache
13+
site

.github/workflows/deploy-page.yml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Deploy slides to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- "config/**"
8+
- "workshops/**"
9+
- "assets/**"
10+
- "README.md"
11+
- "LOCAL.md"
12+
workflow_dispatch:
13+
14+
permissions:
15+
contents: read
16+
pages: write
17+
id-token: write
18+
19+
concurrency:
20+
group: "pages"
21+
cancel-in-progress: true
22+
23+
jobs:
24+
build:
25+
runs-on: ubuntu-latest
26+
env:
27+
QUARTO_CACHE_DIR: ${{ github.workspace }}/.quarto-cache
28+
steps:
29+
- name: Checkout
30+
uses: actions/checkout@v4
31+
32+
- name: Cache Quarto cache and libs
33+
uses: actions/cache@v4
34+
with:
35+
path: |
36+
.quarto-cache
37+
~/.cache/quarto
38+
key: ${{ runner.os }}-quarto-${{ hashFiles('config/_quarto.yml', 'config/slides/index.qmd', 'workshops/colab-and-chill/index.qmd', 'config/slides/theme/**') }}
39+
restore-keys: |
40+
${{ runner.os }}-quarto-
41+
42+
- name: Setup Quarto
43+
uses: quarto-dev/quarto-actions/setup@v2
44+
with:
45+
version: 1.6.40
46+
47+
- name: Render slides
48+
run: |
49+
cd config
50+
quarto render slides/index.qmd
51+
quarto render ../workshops/colab-and-chill/index.qmd --to revealjs
52+
53+
- name: Assemble Pages site
54+
run: |
55+
rm -rf site
56+
mkdir -p site
57+
cp config/slides/index.html site/index.html
58+
rsync -av config/slides/index_files/ site/index_files/ 2>/dev/null || true
59+
rsync -av assets/ site/assets/
60+
rsync -av workshops/colab-and-chill/ site/colab-and-chill/ --exclude "*.ipynb" --exclude "*.qmd"
61+
62+
- name: Upload Pages artifact (site root)
63+
uses: actions/upload-pages-artifact@v3
64+
with:
65+
path: site
66+
67+
deploy:
68+
needs: build
69+
environment:
70+
name: github-pages
71+
url: ${{ steps.deployment.outputs.page_url }}
72+
runs-on: ubuntu-latest
73+
steps:
74+
- name: Deploy to GitHub Pages
75+
id: deployment
76+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# ---- OS / Editor ----
2+
.DS_Store
3+
.idea/
4+
.vscode/
5+
6+
# macOS system files
7+
.DS_Store
8+
9+
# Windows system files
10+
Thumbs.db
11+
Desktop.ini
12+
13+
# ---- Jupyter / IPython ----
14+
.ipynb_checkpoints/
15+
jupyter_notebook_config.py
16+
17+
# ---- Virtual Environments ----
18+
.env
19+
.env.*
20+
env/
21+
ENV/
22+
venv/
23+
.venv/
24+
.conda/
25+
.mamba/
26+
conda-bld/
27+
conda-meta/
28+
29+
# ---- Static type / linters ----
30+
.mypy_cache/
31+
.ruff_cache/
32+
33+
# ---- Logs ----
34+
*.log
35+
36+
# ---- Colab ----
37+
sample_data/
38+
39+
/.quarto/
40+
.quarto-cache/
41+
42+
# ---- Quarto render artifacts (do not commit built slides) ----
43+
_site/
44+
site/
45+
slides/*.html
46+
slides/*_files/
47+
config/slides/*.html
48+
config/slides/*_files/
49+
workshops/*/*.html
50+
workshops/*/*_files/

Dockerfile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Quarto + Python base
2+
FROM ghcr.io/quarto-dev/quarto:1.5.57
3+
4+
# Add Python + Jupyter support
5+
RUN apt-get update -y && apt-get install -y --no-install-recommends \
6+
python3 python3-pip python3-venv \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
WORKDIR /project
10+
11+
COPY requirements.txt requirements.txt
12+
RUN python3 -m venv .venv \
13+
&& . .venv/bin/activate \
14+
&& pip install --upgrade pip \
15+
&& pip install -r requirements.txt || true
16+
17+
COPY . .
18+
19+
EXPOSE 4000
20+
21+
CMD ["bash", "-lc", "cd config && quarto preview slides/index.qmd --host 0.0.0.0 --port 4000 --no-browser"]

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 NCSU Libraries
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

LICENSE-CC-BY-4.0.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Creative Commons Attribution 4.0 International (CC BY 4.0)
2+
3+
This slide deck content (text, images, and slides) is licensed under the
4+
Creative Commons Attribution 4.0 International License.
5+
6+
You are free to:
7+
8+
- Share - copy and redistribute the material in any medium or format
9+
- Adapt - remix, transform, and build upon the material for any purpose, even commercially
10+
11+
Under the following terms:
12+
13+
- Attribution - You must give appropriate credit, provide a link to the license,
14+
and indicate if changes were made. You may do so in any reasonable manner,
15+
but not in any way that suggests the licensor endorses you or your use.
16+
17+
No additional restrictions - You may not apply legal terms or technological measures
18+
that legally restrict others from doing anything the license permits.
19+
20+
Full license text:
21+
22+
- Human-readable summary: https://creativecommons.org/licenses/by/4.0/
23+
- Legal code (full text): https://creativecommons.org/licenses/by/4.0/legalcode
24+
25+
Notes:
26+
27+
- This license applies to the slide content. Code (e.g., build scripts, workflows)
28+
may be licensed separately (e.g., MIT) in `LICENSE`.
29+
- Logos, trademarks, and third-party images are excluded from this license and
30+
remain the property of their respective owners.

LOCAL.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<div align="center">
2+
3+
<h2>Run Locally (AI Workshops)</h2>
4+
5+
</div>
6+
7+
## Micromamba environment (recommended)
8+
9+
1. Create and activate the environment:
10+
```bash
11+
micromamba create -y -f config/environment.yml
12+
micromamba activate ai-workshops
13+
```
14+
15+
2. Launch Jupyter and run the notebooks:
16+
```bash
17+
jupyter notebook
18+
# or
19+
jupyter lab
20+
```
21+
22+
3. Execute a notebook headlessly (optional):
23+
```bash
24+
python -m nbconvert --to notebook --execute workshops/colab-and-chill/colab-and-chill.ipynb --output executed_colab_and_chill.ipynb
25+
```
26+
27+
## Python .venv alternative
28+
29+
1. Create and activate a virtual environment in this folder:
30+
```bash
31+
python3 -m venv .venv
32+
source .venv/bin/activate
33+
```
34+
35+
2. Install dependencies:
36+
```bash
37+
pip install -r requirements.txt
38+
```
39+
40+
3. Run notebooks:
41+
```bash
42+
jupyter notebook
43+
```
44+
45+
## Notes
46+
47+
- Python 3.10-3.12 is supported.
48+
- If you add packages, update both `config/environment.yml` and `requirements.txt`.
49+
- The first workshop is intentionally lightweight so it can run cleanly in Colab or locally.

README.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<div align="center">
2+
3+
<a href="https://www.lib.ncsu.edu/" aria-label="nc state university libraries logo"><img src="assets/lib_logo_whiteBG.svg" width="400" alt="NC State University Libraries Logo" /></a>
4+
5+
<h2>NC State University Libraries AI Workshops</h2>
6+
7+
<a href="https://www.lib.ncsu.edu/workshops"><img alt="NC State Libraries Workshops" src="https://img.shields.io/badge/NC%20State%20Libraries-Workshops-red"></a>
8+
<a href="https://www.lib.ncsu.edu/staff/department/data-science-services"><img alt="Data Science Services" src="https://img.shields.io/badge/Data%20Science%20Services-Libraries-red"></a>
9+
<a href="https://go.ncsu.edu/getdatahelp"><img alt="GetDataHelp" src="https://img.shields.io/badge/Get%20Data%20Help-go.ncsu.edu%2Fgetdatahelp-red"></a>
10+
<a href="mailto:getdatahelp@ncsu.edu"><img alt="Email: getdatahelp@ncsu.edu" src="https://img.shields.io/badge/Email-getdatahelp%40ncsu.edu-red"></a>
11+
<a href="https://github.com/NCSU-Libraries/ai-workshops/actions/workflows/deploy-page.yml"><img alt="Deploy slides to GitHub Pages" src="https://github.com/NCSU-Libraries/ai-workshops/actions/workflows/deploy-page.yml/badge.svg"></a>
12+
<br/>
13+
14+
</div>
15+
16+
## AI Workshop Series
17+
18+
### Colab and Chill <a href="https://colab.research.google.com/github/NCSU-Libraries/ai-workshops/blob/main/workshops/colab-and-chill/colab-and-chill.ipynb"><img alt="Open in Colab - Colab and Chill" src="https://colab.research.google.com/assets/colab-badge.svg"></a></p>
19+
20+
These materials are used in NC State University Libraries' Data Science Services workshops covering practical AI workflows in Google Colab.
21+
22+
[Register for the workshop](https://www.lib.ncsu.edu/workshops/colab-and-chill-vibe-coding-approach-exploratory-data-analysis-using-ai/2026-03-12)
23+
24+
---
25+
26+
## Quick start
27+
28+
1. Click the workshop badge above to open in Colab.
29+
2. If you want to save your work, use "Copy to Drive".
30+
3. Run cells top-to-bottom.
31+
4. Use the solutions notebook after attempting the learner notebook.
32+
33+
## Included notebooks
34+
35+
- Colab and Chill - Emergency Room Wait Time Data Analysis content in the `workshops/colab-and-chill/` path.
36+
37+
## Learning objectives
38+
39+
- Navigate the AI landscape by distinguishing between "Knower" tools and "Doer" tools for different stages of analysis.
40+
- Apply the PARTS framework: Persona, Aim, Recipients, Theme, Structure.
41+
- Use Google Colab AI workflows to support exploratory analysis through inspectable code and iterative prompting.
42+
- Reduce hallucination risk by asking AI to generate code you can review and rerun.
43+
44+
## Solutions
45+
46+
- Colab and Chill - Solutions
47+
<a href="https://colab.research.google.com/github/NCSU-Libraries/ai-workshops/blob/main/workshops/colab-and-chill/colab-and-chill-solutions.ipynb"><img alt="Open in Colab - Solutions: Colab and Chill" src="https://colab.research.google.com/assets/colab-badge.svg"></a>
48+
49+
## Use on Google Colab
50+
51+
This repository is designed to run directly in Google Colab. No software installation is needed for the workshop itself.
52+
53+
### Open in Colab
54+
55+
1. Click a badge above to open directly in Colab.
56+
2. Prefer to run locally? See the [LOCAL.md](LOCAL.md) guide.
57+
58+
Alternatively, in Colab: File -> Open Notebook -> GitHub tab -> paste the repo URL `https://github.com/NCSU-Libraries/ai-workshops`.
59+
60+
### Run the notebooks
61+
62+
After the notebook opens:
63+
64+
1. Review the workshop goals and setup notes.
65+
2. Run the cells in order.
66+
3. Duplicate the notebook to your Drive if you want to keep changes.
67+
68+
### Troubleshooting
69+
70+
- If a notebook opens read-only, use "Copy to Drive" before editing.
71+
- If a browser extension blocks some Colab UI, try a private or incognito window.
72+
- If a workshop analysis cell fails because a dataset file is missing, place the required files under `workshops/colab-and-chill/data/`.

assets/.gitkeep

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

assets/gdh.png

105 KB
Loading

0 commit comments

Comments
 (0)