This repository contains the Jekyll source of the public web site for Chris Simpkins's sections of CS 2316 at Georgia Tech.
I used to include GitHub's Gemfile so that we could run the site locally using GitHub's instructions, but GitHub insists on using that awful piece of garbage Nokogiri which means to run GitHub pages locally you'll need to lose hours of your life randomly every few months solving installation problems. I'm not a Ruby dev expert and I don't want to become one just so I can run GitHub Pages locally. So I removed GitHub's Gemfile and you can just run the site locally like you would any other Jekyll site:
jekyll serve
and visit http://localhost:4000 in your browser. Some minor Markdown rendering details may differ from GitHub when running locally.
Some slides are written in Markdown and converted to Reveal.js HTML using Pandoc to produce the slides
$ cd slides
$ pandoc -s --mathjax -t revealjs -V theme=gt -V "slideNumber='c/t'" -V progress=true -o intro-python.html intro-python.md
To generate all the slides:
for file in `ls *.md`; do pandoc -s --mathjax -t revealjs -V theme=gt -V "slideNumber='c/t'" -V progress=true -o $(basename $file .md).html $file; done
I'm gradually moving to PDF slides generated from org-mode sources using the beamer exporter. Students seem to prefer having printable copies (and the print CSS from Reveal.js doesn't always produce nice results), I like not having upstream changes to Reveal.js and Mathjax suddenly break my slides, and using org-mode gives me succinct source syntax like Markdown with the power of LaTeX/Beamer. Go Emacs!
I use my own course tools to generate the schedule each semester. At the beginning of the semester, create a file containing the breaks. For example, summer2017-breaks.json
(note that all dates are in ISO 8601 format):
{
"2017-05-29": "Memorial Day",
"2017-07-03": "Independence Day Break",
"2017-07-04": "Independence Day Break"
}
Then run make_schedule.py
to generate a starter schedule like this:
make_schedule.py -f 2017-05-15 -l 2017-07-25 -d TR -b summer2017-breaks.json -c cs2316.json -o cs2316.summer2017
This will create a file named cs2316.summer2017
with contents like:
Week 1
2017-05-16;intro-cs2316
2017-05-18;intro-python
Week 2
2017-05-23;values-variables
2017-05-25;data-structures
You'll need to customize this file, especially for summer semesters. For the rest of the semester, you'll update the schedule by modifying this file and running render_schedule.py
. Before running render_schedule.py
make an HTML template file for the semester schedule with a .jinja2
extension, e.g., summer2017.html.jinja2
. The easiest way is to copy the previous semester's template file and modify the schedule information at the top for the current semester. Run render_schedule.py
like this:
render_schedule.py -s cs2316.summer2017 -c cs2316.json -t summer2017.html.jinja2 -o summer2017.html
which creates the summer2017.html
file. (Remember to update the redirect in schedule.html
to point to the new file at the beginning of the semester.)
If you wish, you can use a custom course materials file instead of cs2316.json
.
To add materials, edit the schedule file, e.g., cs2316.summer2017
and add text to the third field. For example (note that fields are separated with semicolons, items within fields are separated with commas):
Week 1
2017-05-16;intro-cs2316,intro-java, values-variables;[T-Square Site](https://t-square.gatech.edu/portal/site/gtc-b435-1ace-5039-bb99-451228e2b767)
2017-05-18;control-structures, data-structures
To add reminders, such as homework links, add text to the fourth field. Note that if the third field is empty, you'll have what appears to be an extra ;
. For example (note the line for 2017-05-23):
Week 1
2017-05-16;intro-cs2316,intro-java, values-variables; [T-Square Site](https://t-square.gatech.edu/portal/site/gtc-b435-1ace-5039-bb99-451228e2b767);[HW0 Assigned](summer2017/hw0/hw0.html)
2017-05-18;control-structures, data-structures
Week 2
2017-05-23;arrays;;[HW0 Due](summer2017/hw0/hw0.html)
2017-05-25;data-abstraction, classes
Note you can make links using the Markdown [link text](link target)
syntax.
Be sure to commit any changes to the schedule file, schedule template, and schedule to the repo.
Some slides are HTML Reveal.js slides produced from Markdown sources. Source files use a .md
ending. We use Pandoc to produce the slides
To recompile all slides:
cd slides
for file in `ls *.md`; do pandoc -s --mathjax -t revealjs -V theme=gt -V "slideNumber='c/t'" -V progress=true -o $(basename $file .md).html $file; done
Some slides are PDFs produced from LaTeX Beamer sources. Source files use a .tex
ending.
As of Fall 2016 I'm moving to PDF slides produced from org-mode sources (with a .org
ending). Students seem to prefer having printable copies (and the print CSS from Reveal.js doesn't always produce nice results), I like not having upstream changes to Reveal.js and Mathjax suddenly break my slides, and using org-mode gives me succinct source syntax like Markdown with the power of LaTeX/Beamer. Go Emacs!