diff --git a/_announcements/week-0.md b/_announcements/week-0.md
new file mode 100644
index 0000000..2688726
--- /dev/null
+++ b/_announcements/week-0.md
@@ -0,0 +1,8 @@
+---
+title: Week 0 Announcement
+week: 0
+date: 2024-08-28
+---
+
+Hello world!
+{: .fs-5 }
diff --git a/_announcements/week-1.md b/_announcements/week-1.md
new file mode 100644
index 0000000..aebd5f5
--- /dev/null
+++ b/_announcements/week-1.md
@@ -0,0 +1,8 @@
+---
+title: Week 1 Announcement
+week: 1
+date: 2024-09-08
+---
+
+1. Meet
+2. Profit??
\ No newline at end of file
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 %}
+
+
+ {% for time in page.timeline %}
+ - {{ time }}
+ {% endfor %}
+
+
+ {% for day in page.schedule %}
+ -
+
+ {% if day.events %}
+
+ {% endif %}
+
+ {% endfor %}
+
+
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..2ea9597
--- /dev/null
+++ b/_modules/week-01.md
@@ -0,0 +1,23 @@
+---
+title: Introduction to SIGExample
+---
+
+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..667e8be
--- /dev/null
+++ b/_modules/week-02.md
@@ -0,0 +1,23 @@
+---
+title: SIGExample Topic 1
+---
+
+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..ff66afc
--- /dev/null
+++ b/_sass/custom/custom.scss
@@ -0,0 +1,53 @@
+// 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 {
+ 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/lead1.md b/_staffers/lead1.md
new file mode 100644
index 0000000..33fed1d
--- /dev/null
+++ b/_staffers/lead1.md
@@ -0,0 +1,11 @@
+---
+name: Noah Rockoff
+role: Chair
+meta: [['Chair']]
+pronouns: he/him
+email: noahlr2@illinois.edu
+website: https://cs.illinois.edu
+photo: sigt.png
+---
+
+I am a lead.
diff --git a/assets/images/acm-wordmark-light.png b/assets/images/acm-wordmark-light.png
new file mode 100644
index 0000000..2acdad7
Binary files /dev/null and b/assets/images/acm-wordmark-light.png differ
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/assets/images/sigt.png b/assets/images/sigt.png
new file mode 100644
index 0000000..db79a54
Binary files /dev/null and b/assets/images/sigt.png differ