diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..dd84ea7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..f14c555 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Ask a question + url: https://github.com/kevinlin1/just-the-class/discussions + about: Ask questions and discuss with other community members diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75b2f59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.gem +.bundle/ +.jekyll-cache/ +.jekyll-metadata +.sass-cache/ +Gemfile.lock +_site/ +node_modules/ +vendor/ diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..ab74e9d --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins +gem "webrick", "~> 1.8" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8892f7f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..77dbff7 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +--- +layout: home +title: Just the Class +nav_exclude: true +permalink: /:path/ +seo: + type: Course + name: Just the Class +--- + +# Just the Class + +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: + +- [announcements](announcements.md), +- a [course calendar](calendar.md), +- a [staff](staff.md) page, +- and a weekly [schedule](schedule.md). + +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: + +- automatic [navigation structure](https://just-the-docs.github.io/just-the-docs/docs/navigation-structure/), +- instant, full-text [search](https://just-the-docs.github.io/just-the-docs/docs/search/) and page indexing, +- 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). + +## Getting Started + +Getting started with Just the Class is simple. + +1. Create a [new repository based on Just the Class](https://github.com/kevinlin1/just-the-class/generate). +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/). +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. Edit and create `.md` [Markdown files](https://guides.github.com/features/mastering-markdown/) to add more content pages. + +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)! + +### Local development environment + +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). diff --git a/_announcements/week-0.md b/_announcements/week-0.md new file mode 100644 index 0000000..c90062a --- /dev/null +++ b/_announcements/week-0.md @@ -0,0 +1,8 @@ +--- +title: Week 0 Announcement +week: 0 +date: 2019-04-01 +--- + +Hello world! +{: .fs-5 } diff --git a/_announcements/week-1.md b/_announcements/week-1.md new file mode 100644 index 0000000..56dcc8d --- /dev/null +++ b/_announcements/week-1.md @@ -0,0 +1,10 @@ +--- +title: Week 1 Announcement +week: 1 +date: 2019-04-08 +--- + +1. Create a [new repository based on Just the Class](https://github.com/kevinlin1/just-the-class/generate). +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. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..9bde4ee --- /dev/null +++ b/_config.yml @@ -0,0 +1,79 @@ +# 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 +tagline: A Jekyll template for course websites +description: A modern, highly customizable, responsive Jekyll template for course websites +author: Kevin Lin +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 +exclude: ["Gemfile", "Gemfile.lock", "LICENSE"] + +# Theme settings +remote_theme: just-the-docs/just-the-docs@v0.8.2 +color_scheme: light +search_enabled: true +heading_anchors: true +permalink: pretty +aux_links: + Kevin Lin: + - 'https://kevinl.info' + Just the Class on GitHub: + - 'https://github.com/kevinlin1/just-the-class' +footer_content: + +# Collections for website data +collections: + staffers: + modules: + schedules: + announcements: +# Default layouts for each collection type +defaults: + - scope: + path: '' + type: staffers + values: + layout: staffer + height: 300 + subpath: '/assets/images/' + width: 300 + - scope: + path: '' + type: modules + values: + layout: module + - scope: + path: '' + type: schedules + values: + layout: schedule + - scope: + path: '' + type: announcements + values: + layout: announcement + +compress_html: + clippings: all + comments: all + endings: all + startings: [] + blanklines: false + profile: false + +liquid: + error_mode: strict + strict_filters: true diff --git a/_includes/minutes.liquid b/_includes/minutes.liquid new file mode 100644 index 0000000..c3207ae --- /dev/null +++ b/_includes/minutes.liquid @@ -0,0 +1,20 @@ +{% 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 }} diff --git a/_layouts/announcement.html b/_layouts/announcement.html new file mode 100644 index 0000000..3451611 --- /dev/null +++ b/_layouts/announcement.html @@ -0,0 +1,14 @@ +
+

{{ page.title }}

+ + {% if page.date %} + {{ page.date | date: '%b %e' }} + · + {% endif %} + {% assign minutes = content | strip_html | number_of_words | divided_by: 180.0 | round %} + {{ minutes }} min read + +
+ {{ content }} +
+
diff --git a/_layouts/module.html b/_layouts/module.html new file mode 100644 index 0000000..fba9c4c --- /dev/null +++ b/_layouts/module.html @@ -0,0 +1,4 @@ +

{{ page.title }}

+
+ {{ content }} +
diff --git a/_layouts/schedule.html b/_layouts/schedule.html new file mode 100644 index 0000000..d288dd5 --- /dev/null +++ b/_layouts/schedule.html @@ -0,0 +1,34 @@ +{% assign start_time = page.timeline | first %} +{% capture offset %}{% include minutes.liquid time=start_time %}{% endcapture %} +
+ + +
diff --git a/_layouts/staffer.html b/_layouts/staffer.html new file mode 100644 index 0000000..0a3d5cd --- /dev/null +++ b/_layouts/staffer.html @@ -0,0 +1,29 @@ +
+ {%- if page.photo -%} + + {%- endif -%} +
+

+ {%- if page.website -%} + {{ page.name }} + {%- else -%} + {{ page.name }} + {%- endif -%} +

+ {%- if page.pronouns -%} +

{{ page.pronouns }}

+ {%- endif -%} + {%- if page.email -%} +

{{ page.email }}

+ {%- endif -%} + {%- if page.meta -%} +
+ {%- for meta in page.meta -%} +
{{ meta[0] }}
+
{{ meta[1] | markdownify }}
+ {%- endfor -%} +
+ {%- endif -%} + {{ content }} +
+
diff --git a/_modules/week-01.md b/_modules/week-01.md new file mode 100644 index 0000000..9af2bd4 --- /dev/null +++ b/_modules/week-01.md @@ -0,0 +1,23 @@ +--- +title: Introduction to Java +--- + +Sep 28 +: [Java & Git](#) + : [1.1](#) + +Sep 29 +: **Section**{: .label .label-purple }[Intro to Java](#) + : [Solution](#) + +Sep 30 +: [Variables & Objects](#) + : [1.2](#), [2.1](#) + +Oct 1 +: **Lab**{: .label .label-purple } [Intro to Java](#) + +Oct 2 +: [Tracing, IntLists, & Recursion](#) + : [2.1](#) +: **HW 1 due**{: .label .label-red } diff --git a/_modules/week-02.md b/_modules/week-02.md new file mode 100644 index 0000000..86b8eb3 --- /dev/null +++ b/_modules/week-02.md @@ -0,0 +1,23 @@ +--- +title: Basic Data Structures +--- + +Oct 5 +: [Linked Lists & Encapsulation](#) + : [3.1](#), [2.2](#), [2.3](#) + +Oct 6 +: **Section**{: .label .label-purple }[Linked Lists](#) + : [Solution](#) + +Oct 7 +: [Resizing Arrays](#) + : [2.4](#), [2.5](#) + +Oct 8 +: **Lab**{: .label .label-purple } [Resizing Arrays](#) + +Oct 9 +: [Runtime Analysis](#) + : [8.1](#), [8.2](#), [8.3](#), [8.4](#) +: **HW 2 due**{: .label .label-red } diff --git a/_sass/custom/announcement.scss b/_sass/custom/announcement.scss new file mode 100644 index 0000000..c0fd146 --- /dev/null +++ b/_sass/custom/announcement.scss @@ -0,0 +1,11 @@ +.announcement { + @extend %card; + + h1, h2 { + @extend .text-gamma; + } + + .announcement-meta { + @extend .text-epsilon; + } +} diff --git a/_sass/custom/card.scss b/_sass/custom/card.scss new file mode 100644 index 0000000..7d3b6d6 --- /dev/null +++ b/_sass/custom/card.scss @@ -0,0 +1,33 @@ +@mixin abstract-card() { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.07), 0 4px 14px rgba(0, 0, 0, 0.05); + margin: $sp-4 (-$gutter-spacing-sm); + + @include mq(md) { + border-radius: $border-radius; + margin: $sp-4 0; + } +} + +%card { + @include abstract-card(); + display: flex; + flex-direction: column; + min-width: 0; + padding: 0 $sp-4; + position: relative; + word-wrap: break-word; + + >:first-child { + border-top: none !important; + } + + >:last-child { + border-bottom: none !important; + } + + .label { + border-radius: $border-radius; + margin-left: 0; + user-select: none; + } +} diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss new file mode 100644 index 0000000..6e2cbcb --- /dev/null +++ b/_sass/custom/custom.scss @@ -0,0 +1,58 @@ +// Just the Class dependencies +@import 'card'; + +// Just the Class styles +@import 'announcement'; +@import 'module'; +@import 'schedule'; +@import 'staffer'; + +// Overrides +code { + font-size: 14px; + padding: 0.2em 0.4em; + border: none; +} + +iframe { + max-width: 100%; +} + +details { + @extend .mb-4; +} + +summary { + @extend .btn, .btn-outline; + + width: 100%; +} + +.main-content-wrap { + max-width: $content-width; + margin: auto; +} + +.main-content { + dl { + display: block; + grid-template-columns: none; + } + + dt { + font-weight: 700; + text-align: start; + + &::after { + content: normal; + } + } + + dd { + font-weight: normal; + + + dt { + margin-top: 1em; + } + } +} diff --git a/_sass/custom/module.scss b/_sass/custom/module.scss new file mode 100644 index 0000000..6c1ab68 --- /dev/null +++ b/_sass/custom/module.scss @@ -0,0 +1,97 @@ +.main-content .module, +.module { + @extend %card; + + h1, + h2, + h3, + h4, + h5, + h6 { + &:first-child { + margin-top: $sp-4; + } + } + + >dl { + border-bottom: $border $border-color; + border-top: $border $border-color; + display: grid; + grid-template-columns: max-content 1fr; + margin: $sp-2 (-$sp-4); + + &:first-child { + margin-top: 0; + } + + &:last-child { + margin-bottom: 0; + } + + @include mq(lg) { + grid-template-columns: 1fr 7fr; + } + + %module-item { + margin: 0; + padding: $sp-2; + + @include mq(sm) { + padding: $sp-2 $sp-4; + } + } + + >dt { + @extend %module-item; + border-top: $border $border-color; + font-weight: normal; + text-align: right; + + +dd { + border-top: $border $border-color; + } + + &:first-child { + border-top: none; + + +dd { + border-top: none; + } + } + + &::after { + content: ":"; + } + } + + >dd { + @extend %module-item; + + +dd { + padding-top: 0; + } + + ol, ul, dl { + margin: 0; + } + + dl { + display: flex; + flex-direction: column; + + @include mq(sm) { + flex-direction: row; + } + + dt { + flex: 0 0 62.5%; + margin: 0; + } + + dd { + margin: 0; + } + } + } + } +} diff --git a/_sass/custom/schedule.scss b/_sass/custom/schedule.scss new file mode 100644 index 0000000..f059310 --- /dev/null +++ b/_sass/custom/schedule.scss @@ -0,0 +1,107 @@ +.schedule { + @include abstract-card(); + overflow-x: scroll; + position: relative; + + li::before { + display: none; + } + + ul.schedule-timeline, + ul.schedule-group, + ul.schedule-events { + margin-top: 0; + padding-left: 0; + } + + ul.schedule-timeline { + margin: 40px auto 0; + position: absolute; + width: 100%; + } + + .schedule-time { + @extend .fs-2; + color: $grey-dk-000; + height: 40px; + margin: 0; + padding: $sp-2; + position: relative; + + &::after { + background-color: $border-color; + content: ''; + height: 1px; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + } + + .schedule-group { + display: flex; + margin-bottom: 0; + position: relative; + } + + .schedule-day { + border-left: $border $border-color; + flex: 1 0 0; + margin: 0; + min-width: 120px; + + &:first-of-type { + border-left: 0; + } + } + + h2.schedule-header { + align-items: center; + display: flex; + font-size: 18px !important; + height: 40px; + justify-content: center; + margin: 0; + } + + .schedule-events { + display: flex; + padding: 0; + position: relative; + } + + .schedule-event { + background-color: $grey-dk-000; + border-radius: $border-radius; + box-shadow: 0 10px 20px rgba(0, 0, 0, .1), inset 0 -3px 0 rgba(0, 0, 0, .2); + color: $white; + float: left; + height: 100%; + margin: 0; + padding: $sp-1 $sp-2; + position: absolute; + width: 100%; + + .name { + @extend .fs-3, .fw-700; + } + + .time, + .location { + @extend .fs-2; + } + + &.lecture { + background-color: $grey-dk-000; + } + + &.section { + background-color: $purple-000; + } + + &.office-hours { + background-color: $blue-000; + } + } +} diff --git a/_sass/custom/staffer.scss b/_sass/custom/staffer.scss new file mode 100644 index 0000000..f023e5d --- /dev/null +++ b/_sass/custom/staffer.scss @@ -0,0 +1,45 @@ +.staffer { + display: flex; + margin: $sp-4 0; + + .staffer-image { + border-radius: 50%; + height: 100px; + margin-right: $sp-4; + width: auto; + } + + .anchor-heading { + right: auto; + left: -$sp-5; + } + + .staffer-name, + .staffer-meta, + p { + margin: 0 0 $sp-1 0; + } + + .staffer-name { + @extend .d-inline-block; + } + + .staffer-pronouns { + @extend .label, .text-grey-dk-300, .bg-grey-lt-000; + + user-select: none; + } + + .staffer-meta { + dt, dd, dd + dt { + margin-top: 0; + } + } + + @include mq(sm) { + .staffer-meta { + display: grid; + grid-template-columns: auto 1fr; + } + } +} diff --git a/_schedules/weekly.md b/_schedules/weekly.md new file mode 100644 index 0000000..cd0851c --- /dev/null +++ b/_schedules/weekly.md @@ -0,0 +1,66 @@ +--- +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' +schedule: + - name: Monday + events: + - name: Lecture + start: 9:30 AM + end: 10:30 AM + location: 150 Wheeler + - name: Section + start: 11:30 AM + end: 12:30 PM + location: 310 Soda + - name: Office Hours + start: 12:30 PM + end: 2:00 PM + location: 271 Soda + - name: Tuesday + - name: Wednesday + events: + - name: Lecture + start: 9:30 AM + end: 10:30 AM + location: 150 Wheeler + - name: Section + start: 11:30 AM + end: 12:30 PM + location: 310 Soda + - name: Office Hours + start: 12:30 PM + end: 2:00 PM + location: 271 Soda + - name: Thursday + - name: Friday + events: + - name: Lecture + start: 9:30 AM + end: 10:30 AM + location: 150 Wheeler + - name: Section + start: 11:30 AM + end: 12:30 PM + location: 310 Soda + - name: Office Hours + start: 12:30 PM + end: 2:00 PM + location: 271 Soda +--- diff --git a/_staffers/evil-kevin.md b/_staffers/evil-kevin.md new file mode 100644 index 0000000..ff5264f --- /dev/null +++ b/_staffers/evil-kevin.md @@ -0,0 +1,9 @@ +--- +name: Evil Kevin +role: Teaching Assistant +email: me@example.com +website: https://kevinl.info +photo: kevin.jpg +--- + +I like teaching Computer Science! diff --git a/_staffers/kevin.md b/_staffers/kevin.md new file mode 100644 index 0000000..9f986cf --- /dev/null +++ b/_staffers/kevin.md @@ -0,0 +1,11 @@ +--- +name: Kevin Lin +role: Instructor +email: me@example.com +website: https://kevinl.info +photo: kevin.jpg +meta: + Office Hours: Somewhere on the internet +--- + +[Schedule an appointment](#){: .btn .btn-outline } diff --git a/_staffers/more-evil-kevin.md b/_staffers/more-evil-kevin.md new file mode 100644 index 0000000..a416b3f --- /dev/null +++ b/_staffers/more-evil-kevin.md @@ -0,0 +1,9 @@ +--- +name: More Evil Kevin +role: Teaching Assistant +email: me@example.com +website: https://kevinl.info +photo: kevin.jpg +--- + +I like teaching Computer Science! diff --git a/_staffers/really-evil-kevin.md b/_staffers/really-evil-kevin.md new file mode 100644 index 0000000..377d089 --- /dev/null +++ b/_staffers/really-evil-kevin.md @@ -0,0 +1,9 @@ +--- +name: Really Evil Kevin +role: Teaching Assistant +email: me@example.com +website: https://kevinl.info +photo: kevin.jpg +--- + +I like teaching Computer Science! diff --git a/about.md b/about.md new file mode 100644 index 0000000..a522c3d --- /dev/null +++ b/about.md @@ -0,0 +1,33 @@ +--- +layout: page +title: About +description: >- + Course policies and information. +--- + +# About +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +## About + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Aliquam ut porttitor leo a diam. Erat nam at lectus urna duis convallis convallis tellus id. Pellentesque elit eget gravida cum sociis natoque penatibus et magnis. Ultrices vitae auctor eu augue ut lectus arcu. Morbi tristique senectus et netus et malesuada. Turpis tincidunt id aliquet risus feugiat in ante. Consequat interdum varius sit amet mattis vulputate enim nulla. Felis eget nunc lobortis mattis aliquam. Eu non diam phasellus vestibulum lorem sed risus. A condimentum vitae sapien pellentesque habitant morbi tristique. Orci dapibus ultrices in iaculis nunc sed augue lacus viverra. Proin sagittis nisl rhoncus mattis rhoncus urna neque. Dictum varius duis at consectetur lorem donec massa sapien. Blandit cursus risus at ultrices mi tempus imperdiet. Laoreet sit amet cursus sit amet dictum sit amet justo. Felis eget nunc lobortis mattis aliquam faucibus. Nam aliquam sem et tortor consequat. + +## Lecture + +Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Vulputate dignissim suspendisse in est ante in. Massa vitae tortor condimentum lacinia quis vel. Gravida neque convallis a cras semper auctor. Pellentesque eu tincidunt tortor aliquam nulla. Quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus urna. Sit amet purus gravida quis blandit turpis cursus in. Porttitor leo a diam sollicitudin tempor. Vel facilisis volutpat est velit egestas dui id ornare. Cum sociis natoque penatibus et magnis. Tristique magna sit amet purus gravida. Nibh sit amet commodo nulla facilisi nullam vehicula. Aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque. Id semper risus in hendrerit gravida. Sit amet justo donec enim diam vulputate ut pharetra sit. Vitae justo eget magna fermentum. Tellus in metus vulputate eu. Pellentesque id nibh tortor id aliquet lectus proin nibh nisl. Etiam erat velit scelerisque in dictum non consectetur a erat. Pellentesque eu tincidunt tortor aliquam nulla. + +## Resources + +Lacus viverra vitae congue eu. Suspendisse in est ante in nibh mauris cursus mattis. Nisl vel pretium lectus quam id leo in. Euismod lacinia at quis risus sed vulputate odio. Non enim praesent elementum facilisis. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum integer. Id interdum velit laoreet id donec ultrices tincidunt arcu. Urna molestie at elementum eu facilisis sed odio. Auctor urna nunc id cursus metus aliquam eleifend. Volutpat commodo sed egestas egestas fringilla phasellus. Libero nunc consequat interdum varius sit amet mattis. Imperdiet nulla malesuada pellentesque elit eget gravida cum sociis natoque. Tortor vitae purus faucibus ornare suspendisse. Auctor elit sed vulputate mi. + +## Assignments + +Vehicula ipsum a arcu cursus vitae congue. Etiam dignissim diam quis enim lobortis scelerisque fermentum dui. Risus sed vulputate odio ut enim blandit. Aliquam id diam maecenas ultricies mi eget. Id consectetur purus ut faucibus pulvinar elementum integer enim neque. Eget mi proin sed libero enim sed faucibus. Sem integer vitae justo eget magna fermentum iaculis. In mollis nunc sed id semper risus in. Sit amet risus nullam eget felis eget. Mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa eget. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada. Porta non pulvinar neque laoreet suspendisse interdum consectetur libero id. At varius vel pharetra vel turpis nunc eget. Scelerisque purus semper eget duis at tellus. diff --git a/announcements.md b/announcements.md new file mode 100644 index 0000000..3cceaab --- /dev/null +++ b/announcements.md @@ -0,0 +1,15 @@ +--- +layout: page +title: Announcements +nav_exclude: true +description: A feed containing all of the class announcements. +--- + +# Announcements + +Announcements are stored in the `_announcements` directory and rendered according to the layout file, `_layouts/announcement.html`. + +{% assign announcements = site.announcements | reverse %} +{% for announcement in announcements %} +{{ announcement }} +{% endfor %} diff --git a/assets/images/kevin.jpg b/assets/images/kevin.jpg new file mode 100644 index 0000000..83dd323 Binary files /dev/null and b/assets/images/kevin.jpg differ diff --git a/calendar.md b/calendar.md new file mode 100644 index 0000000..930a417 --- /dev/null +++ b/calendar.md @@ -0,0 +1,11 @@ +--- +layout: page +title: Calendar +description: Listing of course modules and topics. +--- + +# Calendar + +{% for module in site.modules %} +{{ module }} +{% endfor %} diff --git a/schedule.md b/schedule.md new file mode 100644 index 0000000..a634af6 --- /dev/null +++ b/schedule.md @@ -0,0 +1,11 @@ +--- +layout: page +title: Schedule +description: The weekly event schedule. +--- + +# Weekly Schedule + +{% for schedule in site.schedules %} +{{ schedule }} +{% endfor %} diff --git a/staff.md b/staff.md new file mode 100644 index 0000000..54c585e --- /dev/null +++ b/staff.md @@ -0,0 +1,26 @@ +--- +layout: page +title: Staff +description: A listing of all the course staff members. +--- + +# Staff + +Staff information is stored in the `_staffers` directory and rendered according to the layout file, `_layouts/staffer.html`. + +## Instructors + +{% assign instructors = site.staffers | where: 'role', 'Instructor' %} +{% for staffer in instructors %} +{{ staffer }} +{% endfor %} + +{% assign teaching_assistants = site.staffers | where: 'role', 'Teaching Assistant' %} +{% assign num_teaching_assistants = teaching_assistants | size %} +{% if num_teaching_assistants != 0 %} +## Teaching Assistants + +{% for staffer in teaching_assistants %} +{{ staffer }} +{% endfor %} +{% endif %}