al-folio 教学页面实战:用 Jekyll 集合发布《机器学习导论》课程主页
2026/9/14 5:25:17 网站建设 项目流程

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" 描述其设计约定,要点如下(与仓库实际文件完全一致):

  1. 每个课程文件的 frontmatter 中必须有唯一的course_id
  2. 课程文件会在教学页上按year分组展示;
  3. 同一年内,课程按term排序;
  4. frontmatter 下方的 Markdown 正文会出现在该课程独立页面上;
  5. 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-learningdata-science-fundamentals互不相同,这正是 docs/CUSTOMIZE.md 强调的"必须唯一"约束。description建议写成完整的句子,因为它会同时出现在课程列表与搜索结果摘要中。

三、schedule 教学日历:逐周安排与材料挂载

schedule是课程页最有信息量的部分,它是一组按week编号的对象,每个对象包含:

子字段类型说明
weeknumber周次
datestring该周日期(如Sept 5
topicstring本周主题
descriptionstring本周内容简介
materialslist可选,本周教学材料,每项含nameurl

materials数组通过name+url挂载讲义、作业、课件等资源。仓库示例中大量使用 assets/pdf/example_pdf.pdf 作为占位 PDF,实际使用时替换为站内任意资源路径或外部链接即可(如data-science-fundamentals.md中 Coding Lab 使用了https://github.com/占位链接)。

《机器学习导论》的 8 周 schedule 是理解该结构的完整范例,现原样保留如下:

周次日期主题内容材料
1Sept 5Course Introduction机器学习概览、课程结构与预期Syllabus、Slides
2Sept 12Linear Regression线性回归、梯度下降与模型评估Lecture Notes、Assignment 1
3Sept 19Classification逻辑回归、决策边界与多分类Lecture Notes、Coding Lab
4Sept 26Decision Trees and Random Forests树方法、集成学习与特征重要性Lecture Notes、Assignment 2
5Oct 3Support Vector Machines间隔最大化、核方法与支持向量Lecture Notes、Review Materials
6Oct 10Midterm Exam覆盖第 1–5 周内容
7Oct 17Neural Networks Fundamentals感知机、多层网络与反向传播Lecture Notes、Assignment 3
8Oct 24Deep 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.liquidcalendar.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:时区,如UTCAsia/ShanghaiAmerica/New_York,默认UTC
  • style:可选,自定义 iframe 样式,默认border:0; width:100%; height:600px;

六、新增一门课程的标准流程

结合以上各节,在 al-folio 中发布一门新课(例如一门数据科学课程)的完整流程为:

  1. _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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询