Skip to content

Commit 229a3c5

Browse files
New course guidance
1 parent 11e5107 commit 229a3c5

File tree

3 files changed

+142
-1
lines changed

3 files changed

+142
-1
lines changed

_toc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ parts:
300300

301301
- caption: Join Us!
302302
chapters:
303+
- file: contributing/new_course_checklist_timeline
303304
- file: contributing/contributing
304305
- file: contributing/roles
305306
- file: contributing/contributing_guidelines
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"id": "06e8fcaf-9d9a-4584-9747-d7129c96b31c",
6+
"metadata": {},
7+
"source": [
8+
"# New Course Checklist and Timeline\n",
9+
"\n",
10+
"## Timescales & Ordering\n",
11+
"\n",
12+
"- **12 weeks before launch** \n",
13+
" - Hold initial logistics call with Programme Management to define learning objectives, course scope, and high-level timeline \n",
14+
" - Confirm roles (Developer, Lead, Helper) and schedule regular check-ins \n",
15+
"\n",
16+
"- **10 weeks before launch** \n",
17+
" - Developer begins drafting core materials (notebooks, slides, datasets, etc.) \n",
18+
" - Create a feature branch on the [CfRR_Courses repo](https://github.com/coding-for-reproducible-research/CfRR_Courses) \n",
19+
"\n",
20+
"- **5 weeks before launch** \n",
21+
" - Submit the first complete draft of materials for internal review \n",
22+
" - Draft metadata in `programme_information` and `section_landing_page` (titles, descriptions, prerequisites) \n",
23+
" - Create the “Where Is My Understanding?” quiz; confirm the quiz `JSON` files render via `JupyterQuiz`\n",
24+
" - Conduct accessibility review (alt text, colour contrast, headings, tables) \n",
25+
"\n",
26+
"- **4 weeks before launch** \n",
27+
" - Integrate content into `JupyterBook`; perform a dry-run build on staging \n",
28+
" - Link all assets (images, data files, interactive widgets) \n",
29+
" - Add course pages to `_toc.yml` \n",
30+
" - If non-Python kernels are used, add them to the non-run list in `_config.yml` \n",
31+
"\n",
32+
"- **1 week before launch** \n",
33+
" - Freeze content; perform final proofreading and complete “top-to-bottom” code execution \n",
34+
" - Hold sign-off meeting with Programme Management \n",
35+
" - Merge the feature branch and add the new course to the live website \n",
36+
"\n",
37+
"- **Post-launch (within 1 week)** \n",
38+
" - Collect initial learner feedback via online form; log any issues as GitHub issues \n",
39+
" - Plan the first update cycle based on participant feedback \n",
40+
"\n",
41+
"## Checklist\n",
42+
"\n",
43+
"### Logistics & Planning\n",
44+
"- [ ] Schedule and hold **initial logistics call** with Programme Management and Delivery Team \n",
45+
"- [ ] Define roles: Developer, Leader, Helper, Participant, Programme Management \n",
46+
"- [ ] Open GitHub Issue for the new course; create feature branch \n",
47+
"\n",
48+
"### Content Creation & Structure\n",
49+
"- [ ] Draft **course objectives** and detailed **learning objectives** for each section of the course\n",
50+
"- [ ] Develop Jupyter notebooks (`.ipynb`) for Python or learnr tutorials (`.Rmd`) for R. Other types of course should be discussed with the central CfRR team\n",
51+
"- [ ] Include slides or PDFs as needed; confirm static content links \n",
52+
"\n",
53+
"### Metadata & Site Integration\n",
54+
"- [ ] Populate `programme_information` \n",
55+
"- [ ] Populate `section_landing_page`\n",
56+
"- [ ] Populate `where_is_my_understanding`\n",
57+
"- [ ] Ensure no overlap or missing sections \n",
58+
"\n",
59+
"### Rendering & Functionality\n",
60+
"- [ ] Build with Jupyter Book on the PR; confirm notebooks render without errors \n",
61+
"- [ ] Test interactive plots, embedded HTML, and widgets \n",
62+
"- [ ] Validate “Where Is My Understanding?” quiz (`display_quiz(\"path/to/quiz.json\")`) \n",
63+
"\n",
64+
"### Asset Linking & URL Encoding\n",
65+
"- [ ] Verify all file paths (spaces, special characters) are realtive paths as used in JupyterBook\n",
66+
"- [ ] Confirm images, data files, and HTML assets load correctly \n",
67+
"\n",
68+
"### Accessibility & Style\n",
69+
"- [ ] Use descriptive headings (H1–H3) and labels \n",
70+
"- [ ] Provide concise alt text for all images \n",
71+
"- [ ] Check colour contrast with a Contrast Checker \n",
72+
"- [ ] Avoid conveying information by colour alone; add text indicators, change shapes of points etc \n",
73+
"- [ ] Use clear, simple language and accessible tables \n",
74+
"\n",
75+
"### Testing & QA\n",
76+
"- [ ] Execute all notebooks end-to-end \n",
77+
"- [ ] Peer-review code comments and markdown explanations \n",
78+
"- [ ] Conduct cross-browser and device checks \n",
79+
"\n",
80+
"\n",
81+
"## Highlighting Issues\n",
82+
"\n",
83+
"Auditing materials refreshes your understanding and helps improve accuracy. Types of issues include: \n",
84+
"- Typographical errors \n",
85+
"- Factual errors \n",
86+
"- Content clarity and comprehension \n",
87+
"- Formatting and layout issues \n",
88+
"- Technical errors (broken links, non-functional elements) \n",
89+
"- Cultural and bias concerns \n",
90+
"- Outdated content \n",
91+
"- Logical fallacies or reasoning errors \n",
92+
"\n",
93+
"## Ensuring Understanding\n",
94+
"- **Multiple-Choice Questions** via JupyterQuiz (`display_quiz(\"path/to/quiz.json\")`) \n",
95+
"- **Coding Exercises** with clear instructions, hints, and dropdown solutions (use Jupyter Book admonitions) \n",
96+
"\n",
97+
"## Language-Specific Standards\n",
98+
"\n",
99+
"### Python\n",
100+
"- Use Jupyter notebooks (`.ipynb`) with well-commented code and markdown \n",
101+
"- Include visualizations, interactive elements, and test notebooks end-to-end \n",
102+
"\n",
103+
"### R\n",
104+
"- Use learnr tutorials (`.Rmd`) distributed via the `cfrr-r-tutorials` repo \n",
105+
"- Define prerequisites, embed interactive exercises/quizzes, and self-contain data and instructions \n",
106+
"\n",
107+
"\n",
108+
" \n"
109+
]
110+
},
111+
{
112+
"cell_type": "code",
113+
"execution_count": null,
114+
"id": "64cc4c3d-6356-4d44-b804-63cffb851b44",
115+
"metadata": {},
116+
"outputs": [],
117+
"source": []
118+
}
119+
],
120+
"metadata": {
121+
"kernelspec": {
122+
"display_name": "Python 3 (ipykernel)",
123+
"language": "python",
124+
"name": "python3"
125+
},
126+
"language_info": {
127+
"codemirror_mode": {
128+
"name": "ipython",
129+
"version": 3
130+
},
131+
"file_extension": ".py",
132+
"mimetype": "text/x-python",
133+
"name": "python",
134+
"nbconvert_exporter": "python",
135+
"pygments_lexer": "ipython3",
136+
"version": "3.9.19"
137+
}
138+
},
139+
"nbformat": 4,
140+
"nbformat_minor": 5
141+
}

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ matplotlib = "*"
1818
scikit-learn = "*"
1919
pyvis = "*"
2020
plotly = "^6.0.0"
21-
snowballstemmer = "2.2.0"
2221

2322

2423
[build-system]

0 commit comments

Comments
 (0)