Skip to content

cs1331/cs1331.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS 1331 - Introduction to Object-Oriented Programming

This repository contains the Jekyll source of the public web site for Chris Simpkins's sections of CS 1331 at Georgia Tech.

Running the Site locally

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 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.

Generating the Schedule

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 cs1331.json -o cs1331.summer2017

This will create a file named cs1331.summer2017 with contents like:

Week 1
2017-05-16;intro-cs1331
2017-05-18;intro-java
Week 2
2017-05-23;values-variables
2017-05-25;programs-methods

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 like this:

render_schedule.py -s cs1331.summer2017 -c cs1331.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 cs1331.json.

Adding Materials and Reminders

To add materials, edit the schedule file, e.g., cs1331.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-cs1331,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, programs-methods

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-cs1331,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, programs-methods
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.

Slides

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!