Skip to content
Snippets Groups Projects
Commit fcdc91fc authored by Kevin Lin's avatar Kevin Lin
Browse files

Initial release

parent 23cc2e32
No related branches found
No related tags found
No related merge requests found
Showing with 579 additions and 12 deletions
_site/
.sass-cache/
*.gem
.bundle/
.jekyll-cache/
.jekyll-metadata
.sass-cache/
Gemfile.lock
_site/
node_modules/
vendor/
---
title: Test
has_children: true
nav_order: 2
---
# Another page
Test this
source 'https://rubygems.org'
gem 'github-pages', group: :jekyll_plugins
LICENSE 0 → 100644
MIT License
Copyright (c) 2019 Kevin Lin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---
title: Week 0 Announcement
---
Hello world!
{: .fs-5 }
---
title: Week 1 Announcement
---
1. Fork [Just the Class](https://github.com/kevinlin1/just-the-class) to your GitHub account.
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!
1. Update `_config.yml` with your course information.
1. Edit and create `.md` [Markdown files](https://guides.github.com/features/mastering-markdown/) to add your content.
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole site, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing these this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Just the Class
description: A Jekyll theme for course websites.
author: Kevin Lin
email: me@example.com
baseurl: '/just-the-class' # the subpath of your site, e.g. /blog
url: 'https://kevinl.info' # the base hostname & protocol for your site, e.g. http://example.com
# Theme settings
remote_theme: pmarsceill/just-the-docs
color_scheme: "dark"
color_scheme: light
search_enabled: true
permalink: pretty
nav_links:
Other:
Okpy:
- 'https://okpy.org'
Gradescope:
- 'https://gradescope.com'
Piazza:
- 'https://piazza.com'
aux_links:
'Kevin Lin':
- 'https://kevinl.info'
'Just the Class on GitHub':
- 'https://github.com/kevinlin1/just-the-class'
footer: >-
Powered by <a href="https://github.com/kevinlin1/just-the-class">Just the Class</a>
# Collections for website data
collections:
- modules
- announcements
- staffers
# Default layouts for each collection type
defaults:
- scope:
path: ''
type: modules
values:
layout: module
- scope:
path: ''
type: announcements
values:
layout: announcement
- scope:
path: ''
type: staffers
values:
layout: staffer
weekly:
timeline: [
'9:00 AM', '9:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM',
'12:00 PM', '12:30 PM', '1:00 PM', '1:30 PM', '2:00 PM', '2:30 PM',
'3:00 PM', '3:30 PM', '4:00 PM', '4:30 PM', '5:00 PM', '5:30 PM',
'6:00 PM', '6:30 PM', '7:00 PM', '7:30 PM', '8:00 PM', '8:30 PM',
]
schedule:
- name: Monday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
- name: Tuesday
- name: Wednesday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
- name: Thursday
- name: Friday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
office-hours:
timeline: [
'9:00 AM', '9:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM',
'12:00 PM', '12:30 PM', '1:00 PM', '1:30 PM', '2:00 PM', '2:30 PM',
'3:00 PM', '3:30 PM', '4:00 PM', '4:30 PM', '5:00 PM', '5:30 PM',
'6:00 PM', '6:30 PM', '7:00 PM', '7:30 PM', '8:00 PM', '8:30 PM',
]
schedule:
- name: Monday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Tuesday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Wednesday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Thursday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Friday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
{% capture _minutes_workspace %}
{% comment %}
Return the number of minutes between midnight and the given time string (e.g. '9:30 AM').
Parameters:
`time` (string): the time to convert.
{% endcomment %}
{% assign _time = include.time %}
{% assign _hhmm = _time | split: ' ' | first | split: ':' %}
{% assign _hours = _hhmm | first | to_integer %}
{% assign _minutes = _hhmm | last | to_integer %}
{% assign _ampm = _time | split: ' ' | last | upcase %}
{% if _ampm == 'AM' and _hours == 12 %}
{% assign _hours = _hours | minus: 12 %}
{% elsif _ampm == 'PM' and _hours != 12 %}
{% assign _hours = _hours | plus: 12 %}
{% endif %}
{% endcapture %}{% assign _minutes_workspace = '' %}{{ _hours | times: 60 | plus: _minutes }}
<table>
<thead>
<tr>
<th scope="col" colspan="3">{{ include.module.title }}</th>
</tr>
</thead>
<tbody>
{% for day in include.module.days %}
<tr>
<td>{{ day.date | date: '%a %m/%d' }}</td>
<td>{{ day.topic | markdownify | remove: '<p>' | remove: '</p>' }}</td>
<td>{{ day.description | markdownify | remove: '<p>' | remove: '</p>' }}</td>
</tr>
{% endfor %}
{% if include.module.content %}
<tr>
<td colspan="3">
{{ include.module.content }}
</td>
</tr>
{% endif %}
</tbody>
</table>
{% capture schedule_workspace %}
{% comment %}
Return the HTML for the schedule corresponding to the given key.
Parameters:
`key` (string): key into `_data/schedule.yml` containing the requested schedule.
`interval` (integer): time in minutes between each timeline tick.
`row_height` (integer): row height in pixels.
{% endcomment %}
{% assign timeline = site.data.schedule[include.key].timeline %}
{% assign timeline_first = timeline | first %}
{% capture offset %}{% include _minutes.html time=timeline_first %}{% endcapture %}
{% endcapture %}{% assign schedule_workspace = '' %}
<div class="schedule">
<ul class="schedule-timeline" style="margin-top: {{ include.row_height }}px">
{% for time in timeline %}
<li class="schedule-time" style="height: {{ include.row_height }}px">
{{- time -}}
</li>
{% endfor %}
</ul>
<ul class="schedule-group">
{% for day in site.data.schedule[include.key].schedule %}
<li class="schedule-day">
<h3 class="schedule-header" style="height: {{ include.row_height }}px">
{{- day.name -}}
</h3>
{% if day.events %}
<ul class="schedule-events" style="height: {{ timeline | size | times: include.row_height }}px">
{% for event in day.events %}
{%- capture start -%}{% include _minutes.html time=event.start %}{%- endcapture -%}
{%- capture end -%}{% include _minutes.html time=event.end %}{%- endcapture -%}
{%- assign top = start | minus: offset | times: include.row_height | divided_by: include.interval -%}
{%- assign height = end | minus: start | times: include.row_height | divided_by: include.interval -%}
<li class="schedule-event {{ event.class }}"
style="top: {{ top }}px; height: {{ height }}px;">
{{- event.name -}}
<div class="time">{{ event.start }}–{{ event.end }}</div>
<div class="location">{{ event.location }}</div>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
<div class="announcement">
<h2 class="announcement-header">{{ page.title }}</h2>
<div class="announcement-body">
{{ content }}
</div>
</div>
<!DOCTYPE html>
<html lang="{{ site.lang | default: "en-US" }}">
{% include head.html %}
<body>
<div class="page-wrap">
<div class="side-bar">
<h1 class="site-title"><a href="{{ site.url }}{{ site.baseurl }}">{{ site.title }}</a></h1>
<button class="js-main-nav-trigger navigation-list-toggle btn btn-outline" type="button" data-text-toggle="Hide">Menu</button>
<div class="navigation main-nav js-main-nav">
{% include nav.html %}
{% if site.nav_links %}
<nav role="navigation" aria-label="Secondary navigation">
{% for category in site.nav_links %}
<h2 class="navigation-header">{{ category.first }}</h2>
<ul class="navigation-list">
{% for link in category.last %}
<li class="navigation-list-item">
<a href="{{ link.last }}" class="navigation-list-link" target="_blank">{{ link.first }}</a>
</li>
{% endfor %}
</ul>
{% endfor %}
</nav>
{% endif %}
</div>
{% if site.footer %}
<footer role="contentinfo" class="site-footer">
{{ site.footer }}
</footer>
{% endif %}
</div>
<div class="main-content-wrap js-main-content" tabindex="0">
<header class="page-header">
<div class="main-content">
{% if site.search_enabled %}
<div class="search js-search">
<div class="search-input-wrap">
<input type="text" class="js-search-input search-input" tabindex="0" placeholder="Search {{ site.title }}" aria-label="Search {{ site.title }}" autocomplete="off">
<svg width="14" height="14" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg" class="search-icon"><title>Search</title><g fill-rule="nonzero"><path d="M17.332 20.735c-5.537 0-10-4.6-10-10.247 0-5.646 4.463-10.247 10-10.247 5.536 0 10 4.601 10 10.247s-4.464 10.247-10 10.247zm0-4c3.3 0 6-2.783 6-6.247 0-3.463-2.7-6.247-6-6.247s-6 2.784-6 6.247c0 3.464 2.7 6.247 6 6.247z"/><path d="M11.672 13.791L.192 25.271 3.02 28.1 14.5 16.62z"/></g></svg>
</div>
<div class="js-search-results search-results-wrap"></div>
</div>
{% endif %}
{% if site.aux_links %}
<nav class="js-aux-nav aux-nav">
<ul>
{% for link in site.aux_links %}
<li class="d-inline-block my-0{% unless forloop.last %} mr-2{% endunless %}"><a href="{{ link.last }}">{{ link.first }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
</div>
</header>
<main class="main-content">
{% unless page.url == "/" %}
{% if page.parent %}
<nav class="breadcrumb-nav">
<ol class="breadcrumb-nav-list">
{% if page.grand_parent %}
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.grand_parent }}</a></li>
<li class="breadcrumb-nav-list-item"><a href="{{ second_level_url }}">{{ page.parent }}</a></li>
{% else %}
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.parent }}</a></li>
{% endif %}
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
</ol>
</nav>
{% endif %}
{% endunless %}
<div id="main-content" class="page-content" role="main">
{{ content }}
{% if page.has_children == true and page.has_toc != false %}
<hr>
<h2 class="text-delta">Table of contents</h2>
{% assign children_list = site.pages | sort:"nav_order" %}
<ul>
{% for child in children_list %}
{% if child.parent == page.title and child.title != page.title %}
<li>
<a href="{{ child.url | absolute_url }}">{{ child.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</div>
</main>
</div>
</div>
</body>
</html>
<section class="module">
<h3 class="module-header">{{ page.title }}</h3>
<div class="module-body">
{{ content }}
</div>
<div class="module-deck">
{% for day in page.days %}
<div class="module">
<div class="module-header">
{{ day.topic | markdownify | remove: '<p>' | remove: '</p>' }}
</div>
<div class="module-body">
<span class="module-date">{{ day.date | date: '%-m/%-d' }}</span>
{{ day.description | markdownify }}
</div>
</div>
{% endfor %}
</div>
</section>
<div class="staffer">
{% if page.photo %}
<img class="staffer-image" src="{{ page.photo }}" alt="{{ page.name }}">
{% endif %}
<div>
<h3 class="staffer-name">
{% if page.website %}
<a href="{{ page.website }}" target="_blank">{{ page.name }}</a>
{% else %}
{{ page.name }}
{% endif %}
</h3>
{% if page.email %}
<p><a href="mailto:{{ page.email }}">{{ page.email }}</a></p>
{% endif %}
{{ content }}
</div>
</div>
---
title: Introduction to Java
days:
- topic: >-
[Java & Git](#)
date: 2019-04-01
description: >-
[1.1](#)
- topic: >-
[Variables & Objects](#)
date: 2019-04-03
description: >-
[1.2](#),
[2.1](#)
- topic: >-
[Tracing, IntLists, & Recursion](#)
date: 2019-04-05
description: >-
[2.1](#)
---
- [Section 1: Intro to Java](#) ([Solutions](#))
- [Lab 1: Intro to Java](#)
- [Homework 1: Intro to Java](#)
---
title: Basic Data Structures
days:
- topic: >-
[Linked Lists & Encapsulation](#)
date: 2019-04-08
description: >-
[3.1](#),
[2.2](#),
[2.3](#)
- topic: >-
[Resizing Arrays](#)
date: 2019-04-10
description: >-
[2.4](#),
[2.5](#)
- topic: >-
[Runtime Analysis](#)
date: 2019-04-12
description: >-
[8.1](#),
[8.2](#),
[8.3](#),
[8.4](#)
---
- [Section 2: Linked Lists](#) ([Solutions](#))
- [Lab 2: Resizing Arrays](#)
- [Homework 2: Basic Data Structures](#)
.announcement {
@extend .card;
}
.announcement-header {
@extend .card-header;
}
.announcement-body {
@extend .card-body;
}
.card {
@include abstract-card();
@include tight-headers();
display: flex;
flex-direction: column;
min-width: 0;
position: relative;
word-wrap: break-word;
@include mq(lg) {
flex: 1 0 0%;
}
}
.card-header,
.card-body {
padding: $sp-2 $sp-4 0;
p {
margin-bottom: $sp-1;
}
>*:last-child {
margin-bottom: 0;
}
}
.card-body {
flex: 1 1 auto;
padding-bottom: $sp-2;
}
.card-deck {
@include abstract-card();
@include tight-headers();
display: flex;
flex-direction: column;
@include mq(lg) {
flex-flow: row wrap;
}
.card {
border-radius: 0;
border-bottom: $border $border-color;
box-shadow: none;
margin-bottom: 0;
@include mq(lg) {
border-bottom: none;
border-right: $border $border-color;
&:last-child {
border-right: none;
}
}
&:last-child {
border-bottom: none;
}
}
}
@import 'overrides';
// Just the Class dependencies
@import 'variables';
@import 'mixins';
@import 'card';
// Just the Class styles
@import 'announcement';
@import 'module';
@import 'schedule';
@import 'staffer';
@import 'navigation';
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment