Skip to content

Commit 5b45620

Browse files
authored
Merge pull request #1 from data188sp26/erickim_initial_setup
Initial setup for data188 spring 2026
2 parents 2376cc4 + 3295638 commit 5b45620

27 files changed

Lines changed: 781 additions & 243 deletions

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
source 'https://rubygems.org'
22
gem 'github-pages', group: :jekyll_plugins
3-
gem "webrick", "~> 1.8"
3+
gem "webrick", "~> 1.7"

README.md

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,46 @@
1-
---
2-
layout: home
3-
title: Just the Class
4-
nav_exclude: true
5-
permalink: /:path/
6-
seo:
7-
type: Course
8-
name: Just the Class
9-
---
10-
111
# Just the Class
122

133
Just the Class is a GitHub Pages template developed for the purpose of quickly deploying course websites. In addition to serving plain web pages and files, it provides a boilerplate for:
144

15-
- [announcements](announcements.md),
165
- a [course calendar](calendar.md),
176
- a [staff](staff.md) page,
187
- and a weekly [schedule](schedule.md).
198

20-
Just the Class is a template that extends the popular [Just the Docs](https://github.com/just-the-docs/just-the-docs) theme, which provides a robust and thoroughly-tested foundation for your website. Just the Docs include features such as:
9+
Just the Class is a set of customizations on top of the popular [Just the Docs](https://github.com/pmarsceill/just-the-docs) theme, which provides a robust and thoroughly-tested foundation that makes it easy to extend for your own special use cases. These foundational features include:
2110

22-
- automatic [navigation structure](https://just-the-docs.github.io/just-the-docs/docs/navigation-structure/),
23-
- instant, full-text [search](https://just-the-docs.github.io/just-the-docs/docs/search/) and page indexing,
24-
- and a set of [UI components](https://just-the-docs.github.io/just-the-docs/docs/ui-components) and authoring [utilities](https://just-the-docs.github.io/just-the-docs/docs/utilities).
11+
- automatic [navigation structure](https://pmarsceill.github.io/just-the-docs/docs/navigation-structure/),
12+
- instant, full-text [search](https://pmarsceill.github.io/just-the-docs/docs/search/) and page indexing,
13+
- and a small but powerful set of [UI components](https://pmarsceill.github.io/just-the-docs/docs/ui-components) and authoring [utilities](https://pmarsceill.github.io/just-the-docs/docs/utilities).
2514

2615
## Getting Started
2716

2817
Getting started with Just the Class is simple.
2918

3019
1. Create a [new repository based on Just the Class](https://github.com/kevinlin1/just-the-class/generate).
31-
1. Update `_config.yml` and `README.md` with your course information. [Be sure to update the url and baseurl](https://mademistakes.com/mastering-jekyll/site-url-baseurl/).
20+
1. Update `_config.yml` and `index.md` with your course information.
3221
1. Configure a [publishing source for GitHub Pages](https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages). Your course website is now live!
33-
1. Edit and create `.md` [Markdown files](https://guides.github.com/features/mastering-markdown/) to add more content pages.
22+
1. Edit and create `.md` [Markdown files](https://guides.github.com/features/mastering-markdown/) to add your content.
23+
24+
Just the Class has been used by instructors at Stanford University ([CS 161](https://stanford-cs161.github.io/winter2021/)), UC Berkeley ([Data 100](https://ds100.org/fa21/)), UC Santa Barbara ([DS1](https://ucsb-ds.github.io/ds1-f20/)), Northeastern University ([CS4530/5500](https://neu-se.github.io/CS4530-CS5500-Spring-2021/)), and Carnegie Mellon University ([17-450/17-950](https://cmu-crafting-software.github.io/)). For a few open-source examples, see the following course websites and their source code.
25+
26+
- [CSE 390HA](https://courses.cs.washington.edu/courses/cse390ha/20au/) ([source code](https://gitlab.cs.washington.edu/cse390ha/20au/website)) is an example of a single-page website that centers modules.
27+
- [CSE 143](https://courses.cs.washington.edu/courses/cse143/20au/) ([source code](https://gitlab.cs.washington.edu/cse143/20au/website)) hosts an entire online textbook with full-text search.
28+
- [CSE 373](https://courses.cs.washington.edu/courses/cse373/21su/) ([source code](https://gitlab.cs.washington.edu/cse373-root/21su/website)) is an example of a simple website combining Markdown pages with generated HTML files.
3429

35-
Just the Class has been used by instructors at Stanford University ([CS 161](https://stanford-cs161.github.io/winter2021/)), UC Berkeley ([Data 100](https://ds100.org/fa21/)), UC Santa Barbara ([CSW8](https://ucsb-csw8.github.io/s22/)), Northeastern University ([CS4530/5500](https://neu-se.github.io/CS4530-CS5500-Spring-2021/)), and Carnegie Mellon University ([17-450/17-950](https://cmu-crafting-software.github.io/)). Share your course website and find more examples in the [show and tell discussion](https://github.com/kevinlin1/just-the-class/discussions/categories/show-and-tell)!
30+
Share your course website and find more examples in the [show and tell discussion](https://github.com/kevinlin1/just-the-class/discussions/categories/show-and-tell)!
31+
32+
Continue reading to learn how to setup a development environment on your local computer. This allows you to make incremental changes without directly modifying the live website.
3633

3734
### Local development environment
3835

39-
Just the Class requires no special Jekyll plugins and can run on GitHub Pages' standard Jekyll compiler. To setup a local development environment, clone your template repository and follow the GitHub Docs on [Testing your GitHub Pages site locally with Jekyll](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll).
36+
Just the Class is built for [Jekyll](https://jekyllrb.com), a static site generator. View the [quick start guide](https://jekyllrb.com/docs/) for more information. Just the Docs requires no special Jekyll plugins and can run on GitHub Pages' standard Jekyll compiler.
37+
38+
1. Follow the GitHub documentation for [Setting up your GitHub Pages site locally with Jekyll](https://help.github.com/en/articles/setting-up-your-github-pages-site-locally-with-jekyll).
39+
1. Start your local Jekyll server.
40+
```bash
41+
$ bundle exec jekyll serve
42+
```
43+
1. Point your web browser to [http://localhost:4000](http://localhost:4000)
44+
1. Reload your web browser after making a change to preview its effect.
45+
46+
For more information, refer to [Just the Docs](https://pmarsceill.github.io/just-the-docs/).

_config.yml

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,20 @@
1313
# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on.
1414
# You can create any custom variable you would like, and they will be accessible
1515
# in the templates via {{ site.myvariable }}.
16-
title: Just the Class
17-
tagline: A Jekyll template for course websites
18-
description: A modern, highly customizable, responsive Jekyll template for course websites
19-
author: Kevin Lin
20-
baseurl: '/just-the-class' # the subpath of your site, e.g. /blog
21-
url: 'https://kevinl.info' # the base hostname & protocol for your site, e.g. http://example.com
22-
exclude: ["Gemfile", "Gemfile.lock", "LICENSE"]
16+
title: Data 188
17+
tagline: Introduction to Deep Learning
18+
description: UC Berkeley
19+
author: Eric Kim
20+
baseurl: '' # the subpath of your site, e.g. /blog
21+
# url: 'https://kevinl.info' # the base hostname & protocol for your site, e.g. http://example.com
22+
exclude: ["Gemfile", "Gemfile.lock", "LICENSE", "README.md"]
2323

2424
# Theme settings
25-
remote_theme: just-the-docs/just-the-docs@v0.10.1
25+
remote_theme: pmarsceill/just-the-docs@v0.3.3
2626
color_scheme: light
2727
search_enabled: true
2828
heading_anchors: true
2929
permalink: pretty
30-
aux_links:
31-
Kevin Lin:
32-
- 'https://kevinl.info'
33-
Just the Class on GitHub:
34-
- 'https://github.com/kevinlin1/just-the-class'
3530
footer_content:
3631

3732
# Collections for website data
@@ -47,9 +42,7 @@ defaults:
4742
type: staffers
4843
values:
4944
layout: staffer
50-
height: 300
5145
subpath: '/assets/images/'
52-
width: 300
5346
- scope:
5447
path: ''
5548
type: modules
@@ -74,6 +67,5 @@ compress_html:
7467
blanklines: false
7568
profile: false
7669

77-
liquid:
78-
error_mode: strict
79-
strict_filters: true
70+
plugins:
71+
- jekyll-seo-tag

_layouts/minimal.html

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
---
2+
layout: table_wrappers
3+
---
4+
5+
<!DOCTYPE html>
6+
7+
<html lang="{{ site.lang | default: 'en-US' }}">
8+
{% include head.html %}
9+
<body>
10+
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
11+
<symbol id="svg-link" viewBox="0 0 24 24">
12+
<title>Link</title>
13+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
14+
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
15+
</svg>
16+
</symbol>
17+
</svg>
18+
19+
{% capture nav %}
20+
{% if site.just_the_docs.collections %}
21+
{% assign collections_size = site.just_the_docs.collections | size %}
22+
{% for collection_entry in site.just_the_docs.collections %}
23+
{% assign collection_key = collection_entry[0] %}
24+
{% assign collection_value = collection_entry[1] %}
25+
{% assign collection = site[collection_key] %}
26+
{% if collection_value.nav_exclude != true %}
27+
{% include nav.html pages=collection %}
28+
{% endif %}
29+
{% endfor %}
30+
{% else %}
31+
{% include nav.html pages=site.html_pages %}
32+
{% endif %}
33+
{% endcapture %}
34+
35+
<div id="main-content-wrap" class="main-content-wrap">
36+
{% unless page.url == "/" %}
37+
{% if page.parent %}
38+
{%- for node in pages_list -%}
39+
{%- if node.parent == nil -%}
40+
{%- if page.parent == node.title or page.grand_parent == node.title -%}
41+
{%- assign first_level_url = node.url | absolute_url -%}
42+
{%- endif -%}
43+
{%- if node.has_children -%}
44+
{%- assign children_list = pages_list | where: "parent", node.title -%}
45+
{%- for child in children_list -%}
46+
{%- if page.url == child.url or page.parent == child.title -%}
47+
{%- assign second_level_url = child.url | absolute_url -%}
48+
{%- endif -%}
49+
{%- endfor -%}
50+
{%- endif -%}
51+
{%- endif -%}
52+
{%- endfor -%}
53+
<nav aria-label="Breadcrumb" class="breadcrumb-nav">
54+
<ol class="breadcrumb-nav-list">
55+
{% if page.grand_parent %}
56+
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.grand_parent }}</a></li>
57+
<li class="breadcrumb-nav-list-item"><a href="{{ second_level_url }}">{{ page.parent }}</a></li>
58+
{% else %}
59+
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.parent }}</a></li>
60+
{% endif %}
61+
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
62+
</ol>
63+
</nav>
64+
{% endif %}
65+
{% endunless %}
66+
<div id="main-content" class="main-content" role="main">
67+
{% if site.heading_anchors != false %}
68+
{% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" %}
69+
{% else %}
70+
{{ content }}
71+
{% endif %}
72+
73+
{% if page.has_children == true and page.has_toc != false %}
74+
<hr>
75+
<h2 class="text-delta">Table of contents</h2>
76+
<ul>
77+
{%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
78+
{% for child in children_list %}
79+
<li>
80+
<a href="{{ child.url | absolute_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
81+
</li>
82+
{% endfor %}
83+
</ul>
84+
{% endif %}
85+
86+
{% capture footer_custom %}
87+
{%- include footer_custom.html -%}
88+
{% endcapture %}
89+
{% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
90+
<hr>
91+
<footer>
92+
{% if site.back_to_top %}
93+
<p><a href="#top" id="back-to-top">{{ site.back_to_top_text }}</a></p>
94+
{% endif %}
95+
96+
{{ footer_custom }}
97+
98+
{% if site.last_edit_timestamp or site.gh_edit_link %}
99+
<div class="d-flex mt-2">
100+
{% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}
101+
<p class="text-small text-grey-dk-000 mb-0 mr-2">
102+
Page last modified: <span class="d-inline-block">{{ page.last_modified_date | date: site.last_edit_time_format }}</span>.
103+
</p>
104+
{% endif %}
105+
{% if
106+
site.gh_edit_link and
107+
site.gh_edit_link_text and
108+
site.gh_edit_repository and
109+
site.gh_edit_branch and
110+
site.gh_edit_view_mode
111+
%}
112+
<p class="text-small text-grey-dk-000 mb-0">
113+
<a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
114+
</p>
115+
{% endif %}
116+
</div>
117+
{% endif %}
118+
</footer>
119+
{% endif %}
120+
121+
</div>
122+
</div>
123+
</body>
124+
</html>

_layouts/schedule.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
{% assign start_time = page.timeline | first %}
22
{% capture offset %}{% include minutes.liquid time=start_time %}{% endcapture %}
33
<div class="schedule">
4-
<ul class="schedule-timeline" style="min-width: {{ page.schedule | size | times: 120 }}px">
4+
<ul class="schedule-timeline" style="min-width: {{ page.schedule | size | times: 130 }}px">
55
{% for time in page.timeline %}
66
<li class="schedule-time">{{ time }} </li>
77
{% endfor %}
88
</ul>
99
<ul class="schedule-group">
1010
{% for day in page.schedule %}
1111
<li class="schedule-day">
12-
<h2 class="schedule-header no_anchor">{{ day.name }}</h2>
12+
<h2 class="schedule-header">{{ day.name }}</h2>
1313
{% if day.events %}
14-
<ul class="schedule-events" style="height: {{ page.timeline | size | times: 40 }}px">
14+
<ul class="schedule-events" style="height: {{ page.timeline | size | times: 70 }}px">
1515
{% for event in day.events %}
1616
{% capture start %}{% include minutes.liquid time=event.start %}{% endcapture %}
1717
{% capture end %}{% include minutes.liquid time=event.end %}{% endcapture %}
18-
{% assign top = start | minus: offset | times: 40 | divided_by: 30 %}
19-
{% assign height = end | minus: start | times: 40 | divided_by: 30 %}
18+
{% assign top = start | minus: offset | times: 70 | divided_by: 30 %}
19+
{% assign height = end | minus: start | times: 70 | divided_by: 30 %}
2020
<li class="schedule-event {% if event.class %}{{ event.class }}{% else %}{{ event.name | slugify }}{% endif %}"
2121
style="top: {{ top }}px; height: {{ height }}px;">
2222
<div class="name">{{ event.name }}</div>

_layouts/staffer.html

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
<div class="staffer">
2-
{%- if page.photo -%}
3-
<img class="staffer-image" src="{{ site.baseurl }}{{ page.subpath }}{{ page.photo }}" alt="" width="{{ page.width }}" height="{{ page.height }}">
4-
{%- endif -%}
2+
{% if page.photo %}
3+
<img class="staffer-image" src="{{ site.baseurl }}{{ page.subpath }}{{ page.photo }}" alt="">
4+
{% endif %}
55
<div>
6-
<h3 class="staffer-name" id="{{ page.name | slugify }}">
7-
{%- if page.website -%}
6+
<h3 class="staffer-name">
7+
{% if page.website %}
88
<a href="{{ page.website }}">{{ page.name }}</a>
9-
{%- else -%}
9+
{% else %}
1010
{{ page.name }}
11-
{%- endif -%}
11+
{% endif %}
12+
{% if page.pronouns %}
13+
<span class="staffer-pronouns">{{ page.pronouns }}</span>
14+
{% endif %}
1215
</h3>
13-
{%- if page.pronouns -%}
14-
<p class="staffer-pronouns">{{ page.pronouns }}</p>
15-
{%- endif -%}
16-
{%- if page.email -%}
16+
{% if page.email %}
1717
<p><a href="mailto:{{ page.email }}">{{ page.email }}</a></p>
18-
{%- endif -%}
19-
{%- if page.meta -%}
20-
<dl class="staffer-meta">
21-
{%- for meta in page.meta -%}
22-
<dt>{{ meta[0] }}</dt>
23-
<dd>{{ meta[1] | markdownify }}</dd>
24-
{%- endfor -%}
25-
</dl>
26-
{%- endif -%}
18+
{% endif %}
19+
{% if page.section %}
20+
<p class="staffer-meta">Quiz Section: {{ page.section | markdownify | strip_html }}</p>
21+
{% endif %}
22+
{% if page.office-hours %}
23+
<p class="staffer-meta">Office Hours: {{ page.office-hours | markdownify }}</p>
24+
{% endif %}
25+
{% if page.about-me %}
26+
<p class="staffer-meta">About Me: {{ page.about-me | markdownify | strip_html }}</p>
27+
{% endif %}
28+
2729
{{ content }}
2830
</div>
2931
</div>

0 commit comments

Comments
 (0)