al-folio 教学页面实战:用 Jekyll 集合发布《机器学习导论》课程主页
【免费下载链接】al-folioA beautiful, simple, clean, and responsive Jekyll theme for academics项目地址: https://gitcode.com/GitHub_Trending/al/al-folio
本篇技术指南以 al-folio 学术主页主题自带的 《机器学习导论》课程文件 为核心样例,系统讲解该主题内置的teachings课程集合:从 frontmatter 元数据字段、schedule逐周教学日历、课程正文内容区,到教学聚合页 teaching.md 的自动分组与 Google Calendar 嵌入。读完本文,你将能独立为任意一门课程(机器学习、数据科学、算法设计等)创建结构完整、可被搜索引擎与读者正常检索的课程主页,并掌握课程集合在 _config.yml 中的注册与渲染机制。
一、课程页在 al-folio 中的定位:teachings 集合
al-folio 是一个面向学者的 Jekyll 主题,除了论文、项目、博客、新闻之外,还内置了一个专门承载教学内容的集合(collection)。从 _config.yml 可以看到它的注册方式:
collections: books: output: true news: defaults: layout: post output: true projects: output: true teachings: output: true关键点是teachings: output: true,它告诉 Jekyll 将_teachings/目录下的每个 Markdown 文件渲染为独立的 HTML 页面。仓库的 AGENTS.md 和 docs/ARCHITECTURE.md 中都将_teachings明确归入"示例内容(example content)"目录,与_pages、_posts、_projects、_news、_books并列,说明课程页是主题的标准一等公民能力,而非临时插件。
每个课程用一个 Markdown 文件表示,docs/CUSTOMIZE.md 专门有一节 "Creating a teachings collection" 描述其设计约定,要点如下(与仓库实际文件完全一致):
- 每个课程文件的 frontmatter 中必须有唯一的
course_id; - 课程文件会在教学页上按
year分组展示; - 同一年内,课程按
term排序; - frontmatter 下方的 Markdown 正文会出现在该课程独立页面上;
schedule部分会被自动格式化为表格。
仓库目前在_teachings/下提供了两个示例课程:introduction-to-machine-learning.md(2023 年秋季,机器学习导论)和>--- layout: course title: Introduction to Machine Learning description: This course provides an introduction to machine learning concepts, algorithms, and applications. Students will learn about supervised and unsupervised learning, model evaluation, and practical implementations. instructor: Prof. Example year: 2023 term: Fall location: Main Campus, Room 301 time: Tuesdays and Thursdays, 10:00-11:30 AM course_id: intro-machine-learning ---
注意course_id: intro-machine-learning与data-science-fundamentals互不相同,这正是 docs/CUSTOMIZE.md 强调的"必须唯一"约束。description建议写成完整的句子,因为它会同时出现在课程列表与搜索结果摘要中。
三、schedule 教学日历:逐周安排与材料挂载
schedule是课程页最有信息量的部分,它是一组按week编号的对象,每个对象包含:
| 子字段 | 类型 | 说明 |
|---|---|---|
week | number | 周次 |
date | string | 该周日期(如Sept 5) |
topic | string | 本周主题 |
description | string | 本周内容简介 |
materials | list | 可选,本周教学材料,每项含name与url |
materials数组通过name+url挂载讲义、作业、课件等资源。仓库示例中大量使用 assets/pdf/example_pdf.pdf 作为占位 PDF,实际使用时替换为站内任意资源路径或外部链接即可(如data-science-fundamentals.md中 Coding Lab 使用了https://github.com/占位链接)。
《机器学习导论》的 8 周 schedule 是理解该结构的完整范例,现原样保留如下:
| 周次 | 日期 | 主题 | 内容 | 材料 |
|---|---|---|---|---|
| 1 | Sept 5 | Course Introduction | 机器学习概览、课程结构与预期 | Syllabus、Slides |
| 2 | Sept 12 | Linear Regression | 线性回归、梯度下降与模型评估 | Lecture Notes、Assignment 1 |
| 3 | Sept 19 | Classification | 逻辑回归、决策边界与多分类 | Lecture Notes、Coding Lab |
| 4 | Sept 26 | Decision Trees and Random Forests | 树方法、集成学习与特征重要性 | Lecture Notes、Assignment 2 |
| 5 | Oct 3 | Support Vector Machines | 间隔最大化、核方法与支持向量 | Lecture Notes、Review Materials |
| 6 | Oct 10 | Midterm Exam | 覆盖第 1–5 周内容 | — |
| 7 | Oct 17 | Neural Networks Fundamentals | 感知机、多层网络与反向传播 | Lecture Notes、Assignment 3 |
| 8 | Oct 24 | Deep Learning | 卷积神经网络、循环神经网络与应用 | Lecture Notes、Coding Lab |
这段内容的对应 YAML 结构(第 6 周无materials,第 3、8 周的 Coding Lab 指向外部链接):
schedule: - week: 1 date: Sept 5 topic: Course Introduction description: Overview of machine learning, course structure, and expectations. materials: - name: Syllabus url: /assets/pdf/example_pdf.pdf - name: Slides url: /assets/pdf/example_pdf.pdf # ... 其余周次以此类推 - week: 6 date: Oct 10 topic: Midterm Exam description: Covers weeks 1-5.正如 docs/CUSTOMIZE.md 所述,这段 YAML 会在渲染时被主题自动格式化为表格,因此你只需维护数据、无需手写任何 HTML 表格代码。
四、课程正文内容区:教学大纲、先修要求与评分规则
frontmatter 下方的 Markdown 正文会完整呈现在课程独立页面中,用于承载不便于结构化表达的"自由文本"内容。以《机器学习导论》为例,它由四个标准小节组成,构成一份完整的课程大纲。
课程目标(Course Overview)明确列出学生结课后应具备的四项能力:
- Understand key machine learning paradigms and concepts(理解机器学习核心范式与概念)
- Implement basic machine learning algorithms(实现基础机器学习算法)
- Evaluate and compare model performance(评估与比较模型性能)
- Apply machine learning techniques to real-world problems(将机器学习技术应用于实际问题)
先修要求(Prerequisites)为选课门槛提供了清晰界定:
- Basic knowledge of linear algebra and calculus(线性代数与微积分基础)
- Programming experience in Python(Python 编程经验)
- Probability and statistics fundamentals(概率与统计基础)
教材(Textbooks)指定主教材与参考书:
- Primary: "Machine Learning: A Probabilistic Perspective" by Kevin Murphy
- Reference: "Pattern Recognition and Machine Learning" by Christopher Bishop
评分构成(Grading)给出可量化的成绩权重:
- Assignments: 40%(作业 40%)
- Midterm Exam: 20%(期中考试 20%)
- Final Project: 30%(期末项目 30%)
- Participation: 10%(课堂参与 10%)
编写自己的课程时,建议沿用这套"目标 → 门槛 → 教材 → 评分"的信息组织方式,它既符合学生查阅习惯,也便于搜索引擎为课程页面建立结构化语义。对比仓库另一个示例>{% include calendar.liquid calendar_id='test@gmail.com' timezone='Asia/Shanghai' %} {% include courses.liquid %}
courses.liquid负责遍历_teachings/集合:按照 docs/CUSTOMIZE.md 的约定,课程按year分组、同年内按term排序,最终以列表/卡片形式呈现每门课的标题、简介与跳转链接。这意味着你只需要新增课程文件,教学页会自动更新,无需手改页面。calendar.liquid用于在页面中嵌入 Google Calendar,方便展示考试、答疑与助教时间等动态安排(该文件的calendar: truefrontmatter 仅在需要时启用,避免无关页面加载额外脚本)。
需要说明的是,courses.liquid与calendar.liquid的实际实现位于主题运行时 al_folio_core(_config.yml 中theme: al_folio_core指定的 gem 包)内,本地仓库目录中并不存在这两个文件,这一点从 docs/ARCHITECTURE.md 对主题运行时与本地覆盖关系的描述可以印证——本地站点文件可以覆盖主题文件,但 include 的默认实现来自主题包。
嵌入 Google Calendar 的参数
docs/CUSTOMIZE.md 给出了日历 include 的完整参数说明:
calendar_id:你的 Google Calendar ID(在 Google Calendar 设置 → Integrate calendar → Calendar ID 中获取);timezone:时区,如UTC、Asia/Shanghai、America/New_York,默认UTC;style:可选,自定义 iframe 样式,默认border:0; width:100%; height:600px;。
六、新增一门课程的标准流程
结合以上各节,在 al-folio 中发布一门新课(例如一门数据科学课程)的完整流程为:
- 在
_teachings/下新建 Markdown 文件(可参考现有 contenteditable="false">【免费下载链接】al-folioA beautiful, simple, clean, and responsive Jekyll theme for academics项目地址: https://gitcode.com/GitHub_Trending/al/al-folio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考