diff --git a/.gitignore b/.gitignore
index f9f1d49..54e8d87 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,9 @@
-# Not sure what a .gitignore is?
-# See: https://git-scm.com/docs/gitignore
-
-# These are directly copied from Jekyll's first-party docs on `.gitignore` files:
-# https://jekyllrb.com/tutorials/using-jekyll-with-bundler/#commit-to-source-control
-
-# Ignore the default location of the built site, and caches and metadata generated by Jekyll
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
-
# Ignore folders generated by Bundler
.bundle/
vendor/
+
+**/.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/dsc204a-w24.iml b/.idea/dsc204a-w24.iml
new file mode 100644
index 0000000..d9e6024
--- /dev/null
+++ b/.idea/dsc204a-w24.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..03d9549
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..a885e30
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..c8397c9
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.ruby-version b/.ruby-version
new file mode 100644
index 0000000..4a36342
--- /dev/null
+++ b/.ruby-version
@@ -0,0 +1 @@
+3.0.0
diff --git a/Gemfile b/Gemfile
index 3aec09b..5987538 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,3 @@
source 'https://rubygems.org'
-
-gem "jekyll", "~> 4.3.3" # installed by `gem jekyll`
-# gem "webrick" # required when using Ruby >= 3 and Jekyll <= 4.2.2
-
-gem "just-the-docs", "0.7.0" # pinned to the current release
-# gem "just-the-docs" # always download the latest release
+gem 'github-pages', group: :jekyll_plugins
+gem 'webrick'
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index 5912780..89182d8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,85 +1,287 @@
GEM
remote: https://rubygems.org/
specs:
- addressable (2.8.6)
- public_suffix (>= 2.0.2, < 6.0)
+ activesupport (6.0.5)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ zeitwerk (~> 2.2, >= 2.2.2)
+ addressable (2.8.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.11.1)
colorator (1.1.0)
- concurrent-ruby (1.2.2)
+ commonmarker (0.23.4)
+ concurrent-ruby (1.1.10)
+ dnsruby (1.61.9)
+ simpleidn (~> 0.1)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
+ ethon (0.15.0)
+ ffi (>= 1.15.0)
eventmachine (1.2.7)
- ffi (1.16.3)
+ execjs (2.8.1)
+ faraday (1.10.0)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.3)
+ multipart-post (>= 1.2, < 3)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ ffi (1.15.5)
forwardable-extended (2.6.0)
- google-protobuf (3.25.1-arm64-darwin)
- google-protobuf (3.25.1-x86_64-linux)
+ gemoji (3.0.1)
+ github-pages (226)
+ github-pages-health-check (= 1.17.9)
+ jekyll (= 3.9.2)
+ jekyll-avatar (= 0.7.0)
+ jekyll-coffeescript (= 1.1.1)
+ jekyll-commonmark-ghpages (= 0.2.0)
+ jekyll-default-layout (= 0.1.4)
+ jekyll-feed (= 0.15.1)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.13.0)
+ jekyll-include-cache (= 0.2.1)
+ jekyll-mentions (= 1.6.0)
+ jekyll-optional-front-matter (= 0.3.2)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.16.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.3)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.8.0)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.2.0)
+ jekyll-theme-cayman (= 0.2.0)
+ jekyll-theme-dinky (= 0.2.0)
+ jekyll-theme-hacker (= 0.2.0)
+ jekyll-theme-leap-day (= 0.2.0)
+ jekyll-theme-merlot (= 0.2.0)
+ jekyll-theme-midnight (= 0.2.0)
+ jekyll-theme-minimal (= 0.2.0)
+ jekyll-theme-modernist (= 0.2.0)
+ jekyll-theme-primer (= 0.6.0)
+ jekyll-theme-slate (= 0.2.0)
+ jekyll-theme-tactile (= 0.2.0)
+ jekyll-theme-time-machine (= 0.2.0)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.12.0)
+ kramdown (= 2.3.2)
+ kramdown-parser-gfm (= 1.1.0)
+ liquid (= 4.0.3)
+ mercenary (~> 0.3)
+ minima (= 2.5.1)
+ nokogiri (>= 1.13.4, < 2.0)
+ rouge (= 3.26.0)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.17.9)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (~> 4.0)
+ public_suffix (>= 3.0, < 5.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.14.1)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
http_parser.rb (0.8.0)
- i18n (1.14.1)
+ i18n (0.9.5)
concurrent-ruby (~> 1.0)
- jekyll (4.3.3)
+ jekyll (3.9.2)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
- i18n (~> 1.0)
- jekyll-sass-converter (>= 2.0, < 4.0)
+ i18n (~> 0.7)
+ jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
- kramdown (~> 2.3, >= 2.3.1)
- kramdown-parser-gfm (~> 1.0)
+ kramdown (>= 1.17, < 3)
liquid (~> 4.0)
- mercenary (>= 0.3.6, < 0.5)
+ mercenary (~> 0.3.3)
pathutil (~> 0.9)
- rouge (>= 3.0, < 5.0)
+ rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- terminal-table (>= 1.8, < 4.0)
- webrick (~> 1.7)
+ jekyll-avatar (0.7.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.1.1)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.11.1)
+ jekyll-commonmark (1.4.0)
+ commonmarker (~> 0.22)
+ jekyll-commonmark-ghpages (0.2.0)
+ commonmarker (~> 0.23.4)
+ jekyll (~> 3.9.0)
+ jekyll-commonmark (~> 1.4.0)
+ rouge (>= 2.0, < 4.0)
+ jekyll-default-layout (0.1.4)
+ jekyll (~> 3.0)
+ jekyll-feed (0.15.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.13.0)
+ jekyll (>= 3.4, < 5.0)
+ octokit (~> 4.0, != 4.4.0)
jekyll-include-cache (0.2.1)
jekyll (>= 3.7, < 5.0)
- jekyll-sass-converter (3.0.0)
- sass-embedded (~> 1.54)
+ jekyll-mentions (1.6.0)
+ html-pipeline (~> 2.3)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.3)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
+ rubyzip (>= 1.3.0, < 3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.6.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
- just-the-docs (0.7.0)
- jekyll (>= 3.8.5)
- jekyll-include-cache
- jekyll-seo-tag (>= 2.0)
- rake (>= 12.3.1)
- kramdown (2.4.0)
+ jemoji (0.12.0)
+ gemoji (~> 3.0)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
+ kramdown (2.3.2)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
- liquid (4.0.4)
- listen (3.8.0)
+ liquid (4.0.3)
+ listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.4.0)
+ mercenary (0.3.6)
+ mini_portile2 (2.8.5)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (5.15.0)
+ multipart-post (2.1.1)
+ nokogiri (1.13.6)
+ mini_portile2 (~> 2.8.0)
+ racc (~> 1.4)
+ octokit (4.22.0)
+ faraday (>= 0.9)
+ sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (5.0.4)
- rake (13.0.6)
- rb-fsevent (0.11.2)
+ public_suffix (4.0.7)
+ racc (1.6.0)
+ rb-fsevent (0.11.1)
rb-inotify (0.10.1)
ffi (~> 1.0)
- rexml (3.2.6)
- rouge (4.2.0)
+ rexml (3.2.5)
+ rouge (3.26.0)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
safe_yaml (1.0.5)
- sass-embedded (1.69.5-arm64-darwin)
- google-protobuf (~> 3.23)
- sass-embedded (1.69.5-x86_64-linux-gnu)
- google-protobuf (~> 3.23)
- terminal-table (3.0.2)
- unicode-display_width (>= 1.1.1, < 3)
- unicode-display_width (2.5.0)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.8.2)
+ addressable (>= 2.3.5)
+ faraday (> 0.8, < 2.0)
+ simpleidn (0.2.1)
+ unf (~> 0.1.4)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thread_safe (0.3.6)
+ typhoeus (1.4.0)
+ ethon (>= 0.9.0)
+ tzinfo (1.2.9)
+ thread_safe (~> 0.1)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.8.2)
+ unicode-display_width (1.8.0)
webrick (1.8.1)
+ zeitwerk (2.5.4)
PLATFORMS
- arm64-darwin-23
+ arm64-darwin-22
+ universal-darwin-20
x86_64-linux
DEPENDENCIES
- jekyll (~> 4.3.3)
- just-the-docs (= 0.7.0)
+ github-pages
+ webrick
BUNDLED WITH
- 2.3.26
+ 2.3.14
diff --git a/LICENSE b/LICENSE
index 7d510d0..27cc00e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2022 just-the-docs
+Copyright (c) 2024 Data Science 8
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 362efd4..39fb48e 100644
--- a/README.md
+++ b/README.md
@@ -1,174 +1,8 @@
-# just-the-docs-template
+# DSC 204A Winter 2024
-This is a *bare-minimum* template to create a [Jekyll] site that:
+## How to build locally
-- uses the [Just the Docs] theme;
-- can be built and published on [GitHub Pages];
-- can be built and previewed locally, and published on other platforms.
-
-More specifically, the created site:
-
-- uses a gem-based approach, i.e. uses a `Gemfile` and loads the `just-the-docs` gem;
-- uses the [GitHub Pages / Actions workflow] to build and publish the site on GitHub Pages.
-
-To get started with creating a site, simply:
-
-1. click "[use this template]" to create a GitHub repository
-2. go to Settings > Pages > Build and deployment > Source, and select GitHub Actions
-
-If you want to maintain your docs in the `docs` directory of an existing project repo, see [Hosting your docs from an existing project repo](#hosting-your-docs-from-an-existing-project-repo).
-
-After completing the creation of your new site on GitHub, update it as needed:
-
-## Replace the content of the template pages
-
-Update the following files to your own content:
-
-- `index.md` (your new home page)
-- `README.md` (information for those who access your site repo on GitHub)
-
-## Changing the version of the theme and/or Jekyll
-
-Simply edit the relevant line(s) in the `Gemfile`.
-
-## Adding a plugin
-
-The Just the Docs theme automatically includes the [`jekyll-seo-tag`] plugin.
-
-To add an extra plugin, you need to add it in the `Gemfile` *and* in `_config.yml`. For example, to add [`jekyll-default-layout`]:
-
-- Add the following to your site's `Gemfile`:
-
- ```ruby
- gem "jekyll-default-layout"
- ```
-
-- And add the following to your site's `_config.yml`:
-
- ```yaml
- plugins:
- - jekyll-default-layout
- ```
-
-Note: If you are using a Jekyll version less than 3.5.0, use the `gems` key instead of `plugins`.
-
-## Publishing your site on GitHub Pages
-
-1. If your created site is `YOUR-USERNAME/YOUR-SITE-NAME`, update `_config.yml` to:
-
- ```yaml
- title: YOUR TITLE
- description: YOUR DESCRIPTION
- theme: just-the-docs
-
- url: https://YOUR-USERNAME.github.io/YOUR-SITE-NAME
-
- aux_links: # remove if you don't want this link to appear on your pages
- Template Repository: https://github.com/YOUR-USERNAME/YOUR-SITE-NAME
- ```
-
-2. Push your updated `_config.yml` to your site on GitHub.
-
-3. In your newly created repo on GitHub:
- - go to the `Settings` tab -> `Pages` -> `Build and deployment`, then select `Source`: `GitHub Actions`.
- - if there were any failed Actions, go to the `Actions` tab and click on `Re-run jobs`.
-
-## Building and previewing your site locally
-
-Assuming [Jekyll] and [Bundler] are installed on your computer:
-
-1. Change your working directory to the root directory of your site.
-
-2. Run `bundle install`.
-
-3. Run `bundle exec jekyll serve` to build your site and preview it at `localhost:4000`.
-
- The built site is stored in the directory `_site`.
-
-## Publishing your built site on a different platform
-
-Just upload all the files in the directory `_site`.
-
-## Customization
-
-You're free to customize sites that you create with this template, however you like!
-
-[Browse our documentation][Just the Docs] to learn more about how to use this theme.
-
-## Hosting your docs from an existing project repo
-
-You might want to maintain your docs in an existing project repo. Instead of creating a new repo using the [just-the-docs template](https://github.com/just-the-docs/just-the-docs-template), you can copy the template files into your existing repo and configure the template's Github Actions workflow to build from a `docs` directory. You can clone the template to your local machine or download the `.zip` file to access the files.
-
-### Copy the template files
-
-1. Create a `.github/workflows` directory at your project root if your repo doesn't already have one. Copy the `pages.yml` file into this directory. GitHub Actions searches this directory for workflow files.
-
-2. Create a `docs` directory at your project root and copy all remaining template files into this directory.
-
-### Modify the GitHub Actions workflow
-
-The GitHub Actions workflow that builds and deploys your site to Github Pages is defined by the `pages.yml` file. You'll need to edit this file to that so that your build and deploy steps look to your `docs` directory, rather than the project root.
-
-1. Set the default `working-directory` param for the build job.
-
- ```yaml
- build:
- runs-on: ubuntu-latest
- defaults:
- run:
- working-directory: docs
- ```
-
-2. Set the `working-directory` param for the Setup Ruby step.
-
- ```yaml
- - name: Setup Ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '3.1'
- bundler-cache: true
- cache-version: 0
- working-directory: '${{ github.workspace }}/docs'
- ```
-
-3. Set the path param for the Upload artifact step:
-
- ```yaml
- - name: Upload artifact
- uses: actions/upload-pages-artifact@v1
- with:
- path: "docs/_site/"
- ```
-
-4. Modify the trigger so that only changes within the `docs` directory start the workflow. Otherwise, every change to your project (even those that don't affect the docs) would trigger a new site build and deploy.
-
- ```yaml
- on:
- push:
- branches:
- - "main"
- paths:
- - "docs/**"
- ```
-
-## Licensing and Attribution
-
-This repository is licensed under the [MIT License]. You are generally free to reuse or extend upon this code as you see fit; just include the original copy of the license (which is preserved when you "make a template"). While it's not necessary, we'd love to hear from you if you do use this template, and how we can improve it for future use!
-
-The deployment GitHub Actions workflow is heavily based on GitHub's mixed-party [starter workflows]. A copy of their MIT License is available in [actions/starter-workflows].
-
-----
-
-[^1]: [It can take up to 10 minutes for changes to your site to publish after you push the changes to GitHub](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll#creating-your-site).
-
-[Jekyll]: https://jekyllrb.com
-[Just the Docs]: https://just-the-docs.github.io/just-the-docs/
-[GitHub Pages]: https://docs.github.com/en/pages
-[GitHub Pages / Actions workflow]: https://github.blog/changelog/2022-07-27-github-pages-custom-github-actions-workflows-beta/
-[Bundler]: https://bundler.io
-[use this template]: https://github.com/just-the-docs/just-the-docs-template/generate
-[`jekyll-default-layout`]: https://github.com/benbalter/jekyll-default-layout
-[`jekyll-seo-tag`]: https://jekyll.github.io/jekyll-seo-tag
-[MIT License]: https://en.wikipedia.org/wiki/MIT_License
-[starter workflows]: https://github.com/actions/starter-workflows/blob/main/pages/jekyll.yml
-[actions/starter-workflows]: https://github.com/actions/starter-workflows/blob/main/LICENSE
+```python
+bundle install
+bundle exec jekyll serve --livereload
+```
diff --git a/_announcements/general.md b/_announcements/general.md
new file mode 100644
index 0000000..add2f38
--- /dev/null
+++ b/_announcements/general.md
@@ -0,0 +1,10 @@
+---
+title: Week 0 Announcements
+week: 0
+date: 2024-01-08
+---
+
+* Welcome to the Winter 2024 offering of DSC 204A!
+* We're excited to work with you throughout the quarter!
+* Check back here for more updates soon!
+ * We'll be updating the pages of this site regularly in the first few weeks!
diff --git a/_config.yml b/_config.yml
index faa6eaa..7b5c43c 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,8 +1,88 @@
-title: Just the Docs Template
-description: A starter template for a Jeykll site using the Just the Docs theme!
-theme: just-the-docs
+# 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.
-url: https://just-the-docs.github.io
+# 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: DSC 204A
+description: Scalable Data Systems
+author: Hao Zhang
+email: dsc204a-w24@gmail.com
+baseurl: '/dsc204a-w24' # the subpath of your site, e.g. /blog
+url: '' # the base hostname & protocol for your site, e.g. http://example.com
+exclude: ["Gemfile", "Gemfile.lock", "LICENSE"]
+#logo: "/data8logo.png"
+# Theme settings
+remote_theme: just-the-docs/just-the-docs@v0.3.3
+color_scheme: light
+search_enabled: true
+heading_anchors: true
+permalink: pretty
aux_links:
- Template Repository: https://github.com/just-the-docs/just-the-docs-template
+ Office Hours:
+ - '/dsc204a-w24/officehours'
+ Piazza:
+ - 'https://piazza.com/ucsd/winter2024/dsc204a'
+ GradeScope:
+ - '#'
+ # Feedback Form:
+ # - 'https://forms.gle/gHhrqEGCGE1S4N1r5'
+
+# External navigation links
+# nav_external_links:
+# - title: Textbook
+# url: https://inferentialthinking.com/chapters/intro.html
+# hide_icon: true
+
+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
+ subpath: '/assets/images/'
+ - 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
+
+plugins:
+ - jekyll-seo-tag
diff --git a/_includes/darkmode.js b/_includes/darkmode.js
new file mode 100644
index 0000000..0bfd75a
--- /dev/null
+++ b/_includes/darkmode.js
@@ -0,0 +1,12 @@
+
+
+function onLoad() {
+ var mode = localStorage.getItem("darkMode");
+
+ if (mode == 1) {
+ jtd.setTheme('custom_dark');
+ toggleDarkMode.innerHTML = "Return to the Light";
+ toggleDarkMode.classList.add('dm-dark-btn');
+ toggleDarkMode.classList.remove('dm-btn');
+ }
+}
\ 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/_includes/nav_footer_custom.html b/_includes/nav_footer_custom.html
new file mode 100644
index 0000000..da13101
--- /dev/null
+++ b/_includes/nav_footer_custom.html
@@ -0,0 +1,2 @@
+Data 8 Fall 2023
+UC Berkeley. All Rights Reserved.
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/minimal.html b/_layouts/minimal.html
new file mode 100644
index 0000000..347330e
--- /dev/null
+++ b/_layouts/minimal.html
@@ -0,0 +1,124 @@
+---
+layout: table_wrappers
+---
+
+
+
+
+{% include head.html %}
+
+
+
+ Link
+
+
+
+
+
+
+ {% capture nav %}
+ {% if site.just_the_docs.collections %}
+ {% assign collections_size = site.just_the_docs.collections | size %}
+ {% for collection_entry in site.just_the_docs.collections %}
+ {% assign collection_key = collection_entry[0] %}
+ {% assign collection_value = collection_entry[1] %}
+ {% assign collection = site[collection_key] %}
+ {% if collection_value.nav_exclude != true %}
+ {% include nav.html pages=collection %}
+ {% endif %}
+ {% endfor %}
+ {% else %}
+ {% include nav.html pages=site.html_pages %}
+ {% endif %}
+ {% endcapture %}
+
+
+ {% unless page.url == "/" %}
+ {% if page.parent %}
+ {%- for node in pages_list -%}
+ {%- if node.parent == nil -%}
+ {%- if page.parent == node.title or page.grand_parent == node.title -%}
+ {%- assign first_level_url = node.url | absolute_url -%}
+ {%- endif -%}
+ {%- if node.has_children -%}
+ {%- assign children_list = pages_list | where: "parent", node.title -%}
+ {%- for child in children_list -%}
+ {%- if page.url == child.url or page.parent == child.title -%}
+ {%- assign second_level_url = child.url | absolute_url -%}
+ {%- endif -%}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- endif -%}
+ {%- endfor -%}
+
+
+ {% if page.grand_parent %}
+ {{ page.grand_parent }}
+ {{ page.parent }}
+ {% else %}
+ {{ page.parent }}
+ {% endif %}
+ {{ page.title }}
+
+
+ {% endif %}
+ {% endunless %}
+
+ {% if site.heading_anchors != false %}
+ {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="
" anchorClass="anchor-heading" %}
+ {% else %}
+ {{ content }}
+ {% endif %}
+
+ {% if page.has_children == true and page.has_toc != false %}
+
+
Table of contents
+
+ {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
+ {% for child in children_list %}
+
+ {{ child.title }} {% if child.summary %} - {{ child.summary }}{% endif %}
+
+ {% endfor %}
+
+ {% endif %}
+
+ {% capture footer_custom %}
+ {%- include footer_custom.html -%}
+ {% endcapture %}
+ {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
+
+
+ {% if site.back_to_top %}
+ {{ site.back_to_top_text }}
+ {% endif %}
+
+ {{ footer_custom }}
+
+ {% if site.last_edit_timestamp or site.gh_edit_link %}
+
+ {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}
+
+ Page last modified: {{ page.last_modified_date | date: site.last_edit_time_format }} .
+
+ {% endif %}
+ {% if
+ site.gh_edit_link and
+ site.gh_edit_link_text and
+ site.gh_edit_repository and
+ site.gh_edit_branch and
+ site.gh_edit_view_mode
+ %}
+
+ {{ site.gh_edit_link_text }}
+
+ {% endif %}
+
+ {% endif %}
+
+ {% endif %}
+
+
+
+
+
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..c0c2547
--- /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..7f2820b
--- /dev/null
+++ b/_layouts/staffer.html
@@ -0,0 +1,46 @@
+
+
+
+ {% if page.photo %}
+
+ {% endif %}
+
+ {% if page.team %}
+
{{ page.team }}
+ {% endif %}
+
+ {% if page.website %}
+ {{ page.name }}
+ {% else %}
+ {{ page.name }}
+ {% endif %}
+
+
+ {% if page.pronouns %}
+ {{ page.pronouns }}
+ {% endif %}
+
+ {% if page.email %}
+
{{ page.email }}
+ {% endif %}
+ {% if page.section %}
+
Quiz Section: {{ page.section | markdownify | strip_html }}
+ {% endif %}
+ {% if page.office-hours %}
+
Office Hours: {{ page.office-hours }}
+ {% endif %}
+ {% if page.bio %}
+
{{ page.bio | markdownify }}
+ {% endif %}
+ {{ content }}
+
+
diff --git a/_modules/week-01.md b/_modules/week-01.md
new file mode 100644
index 0000000..086adbf
--- /dev/null
+++ b/_modules/week-01.md
@@ -0,0 +1,24 @@
+---
+title: Week 1
+class: DSC204A
+status: Active
+---
+
+Jan 8
+: **1**{: .label} Introduction
+ : [Slides](#) • [Recording](#) • [Scribe Notes](#) •
+: *Reading:* [1.1](https://inferentialthinking.com/chapters/01/1/intro.html), [1.2](https://inferentialthinking.com/chapters/01/2/why-data-science.html), [1.3](https://inferentialthinking.com/chapters/01/3/Plotting_the_Classics.html)
+: **Survey**{: .label .label-lab} [Beginning of Quarter Survey](#)
+
+
+Jan 10
+: **2**{: .label} Basics:
+ : [Slides](#) • [Recording](#) • [Scribe Notes](#) •
+: *Reading:* [2](https://inferentialthinking.com/chapters/02/causality-and-experiments.html)
+: **Homework**{: .label .label-homework} Homework 01 (Due 1/24)
+
+Jan 12
+: **2**{: .label} Basics:
+
+: *Reading:* [2](https://inferentialthinking.com/chapters/02/causality-and-experiments.html)
+: **Homework**{: .label .label-homework} Homework 01 (Due 1/24)
\ No newline at end of file
diff --git a/_sass/color_schemes/custom_dark.scss b/_sass/color_schemes/custom_dark.scss
new file mode 100644
index 0000000..b706e13
--- /dev/null
+++ b/_sass/color_schemes/custom_dark.scss
@@ -0,0 +1,77 @@
+
+.nav-list a {
+ color: white !important;
+}
+
+.aux-nav a {
+ color: white !important;
+}
+
+.module a, footer a {
+ color: #ffeb82 !important;
+}
+
+.module {
+ border: 1px solid #444444;
+}
+
+$link-color: $grey-lt-000;
+
+a {
+ color: $yellow-000 !important;
+
+}
+.pronouns {
+ background-color: #777777 !important;
+}
+
+ol a {
+ color: #ffeb82 !important;
+}
+
+.main-content a {
+ color: #ffeb82 !important;
+}
+
+.btn {
+ color: #333333 !important;
+}
+
+@import "./color_schemes/dark";
+
+.dm-dark-btn::selection {
+ background-color: #ffeb82 !important;
+}
+
+::selection {
+ background-color: #ffeb82 !important;
+}
+
+.dm-dark-btn {
+ color: #ffeb82 !important;
+}
+
+.dm-dark-btn:hover {
+ color: #e7af06 !important;
+}
+
+.dm-text a {
+ color: #ffeb82 !important;
+}
+
+.yellow-link {
+ color: #ffeb82 !important;
+}
+
+code {
+ background-color: #BBBBBB !important;
+ color: #555EB4 !important;
+}
+
+input {
+ color: white !important;
+}
+
+.announcement-meta {
+ color: #959396;
+}
\ No newline at end of file
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..f650b6c
--- /dev/null
+++ b/_sass/custom/card.scss
@@ -0,0 +1,62 @@
+@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;
+ background-color: $grey-lt-100;
+ color: $grey-dk-100;
+
+ &.label-lab {
+ background-color: $green-100;
+ color: white;
+ }
+ &.label-homework {
+ background-color: $red-200;
+ color: white;
+ }
+ &.label-discussion {
+ background-color: $purple-000;
+ color: white;
+ }
+ &.label-exam {
+ background-color: $yellow-300;
+ color: white;
+ }
+ &.label-survey {
+ background-color: $blue-100;
+ color: white;
+ }
+ &.label-project {
+ background-color: $blue-100;
+ color: white;
+ }
+
+
+ }
+}
diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss
new file mode 100644
index 0000000..0ad108a
--- /dev/null
+++ b/_sass/custom/custom.scss
@@ -0,0 +1,379 @@
+// Just the Class dependencies
+@import 'card';
+
+// Just the Class styles
+@import 'announcement';
+@import 'module';
+@import 'schedule';
+@import 'staffer';
+
+
+// CUSTOM
+
+@media (min-width: 66.5rem) {
+ .side-bar { width: 248px !important;}
+ .main { margin-left: 264px !important;}
+
+ .staffer div {
+ width: 200px !important;
+ }
+
+}
+
+@media (min-width: 50rem) {
+ .main { max-width: 100% !important;}
+
+ .site-header {
+ max-height: 150px !important;
+ height: 100% !important;
+ }
+
+ .staffer div {
+ max-width: 200px !important;
+ }
+
+ .search-input {
+ font-size: 0.9em !important;
+ }
+
+}
+
+@media (max-width: 50rem) {
+ .site-logo {
+ margin-left: 60px !important;
+ height: 60px !important;
+ }
+}
+
+.aux-nav {
+ font-size: 0.9em !important;
+}
+
+.site-logo {
+ background-position: center !important;
+}
+
+.flex {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.main-content-wrap {
+ max-width: 1100px !important;
+ margin-left: 20px !important;
+ margin-right: 20px !important
+}
+
+.staffer {
+ max-width: 500px !important;
+ font-size: 0.8em !important;
+}
+
+.staffer-name a {
+ color: #27262b !important;
+
+}
+.btn-blue {
+ color: white !important;
+}
+.btn-yellow {
+ background-color: #ebc326 !important;
+ color: #333333 !important;
+}
+.btn-green {
+ color: white !important;
+}
+
+.pronouns {
+ font-weight: bold !important;
+ display: inline-block;
+ padding-top: 0.16em;
+ padding-bottom: 0.16em;
+ padding-left: 0.56em;
+ padding-right: 0.56em;
+
+ font-size: 0.8em;
+
+ text-transform: uppercase;
+ vertical-align: middle;
+ border-radius: 12px;
+
+ background-color: #ecebed;
+}
+
+.staffer img {
+ max-width: 85px !important;
+ max-height: 85px !important;
+}
+
+.team {
+ font-weight: bold !important;
+ display: inline-block;
+ padding-top: 0.16em;
+ padding-bottom: 0.16em;
+ padding-left: 0.56em;
+ padding-right: 0.56em;
+
+ font-size: 0.8em;
+
+ text-transform: uppercase;
+ vertical-align: middle;
+ border-radius: 6px;
+
+}
+
+.label-Scholars {
+ background-color: #542E71;
+ color: white;
+}
+
+.label-Course {
+ background-color: #C874D9;
+ color: white;
+}
+
+.label-Content {
+ background-color: #006C67;
+ color: white;
+}
+
+.label-Grading {
+ background-color: #F55D3E;
+ color: white;
+}
+
+.label-Logistics {
+ background-color: #3D348B;
+ color: white;
+}
+.label-Pedagogy {
+ background-color: #9C3848;
+ color: white;
+}
+.label-Tutors {
+ background-color: #FFA62B;
+ color: white;
+}
+.label-DSP {
+ background-color: #3495AD;
+ color: white;
+}
+
+/*#menu-button {
+ height: 60px !important;
+ margin-top: -60px !important;
+ float: right !important;
+}
+
+.site-header {
+ display: block !important;
+}
+
+.site-title {
+ width: 90vw !important;
+}*/
+
+// COLORS
+
+a {
+ color: $blue-100 !important;
+}
+
+.main-content .anchor-heading svg {
+ color: $blue-100 !important;
+}
+
+.icon {
+ color: $blue-100 !important;
+}
+// Overrides
+a abbr[title] {
+ border-bottom: none;
+}
+
+abbr[title] {
+ text-decoration: none;
+}
+
+code {
+ font-size: 14px;
+ padding: 0.2em 0.4em;
+ border: none;
+
+ background-color: #f9f2f4 !important;
+ color: #c7254e !important;
+}
+
+div.highlighter-rouge[overlay] {
+ position: relative;
+
+ &::after {
+ @extend .label, .text-grey-dk-100;
+
+ background-color: $white;
+ border-radius: $border-radius;
+ bottom: $sp-2;
+ content: attr(overlay);
+ position: absolute;
+ right: 0;
+ user-select: none;
+ }
+}
+
+details {
+ margin: 0 40px 1em;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ align-items: center;
+ display: flex;
+}
+
+iframe,
+summary {
+ max-width: 100%;
+}
+
+summary {
+ @extend .btn, .btn-outline;
+}
+
+.main-content-wrap {
+ max-width: $content-width;
+ margin: auto;
+}
+
+.main-content {
+ a {
+ overflow-wrap: anywhere;
+ white-space: normal;
+ }
+
+ 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;
+ }
+ }
+
+ .katex {
+ font-size: 1.1em;
+ }
+}
+
+[style*="--aspect-ratio"] > :first-child {
+ width: 100%;
+}
+
+[style*="--aspect-ratio"] > img {
+ height: auto;
+}
+
+@supports (--custom:property) {
+ [style*="--aspect-ratio"] {
+ position: relative;
+ }
+
+ [style*="--aspect-ratio"]::before {
+ content: "";
+ display: block;
+ padding-bottom: calc(100% / (var(--aspect-ratio)));
+ }
+
+ [style*="--add-height"]::before {
+ padding-bottom: calc(100% / (var(--aspect-ratio)) + (var(--add-height)));
+ }
+
+ [style*="--aspect-ratio"] > :first-child {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ }
+}
+
+.code_block {
+ @extend code;
+
+ margin-left: 1vw;
+ margin-top: 1vw;
+
+
+ padding: 1vw;
+
+ display: inline-block;
+
+ .indent {
+ margin-left: 2.5vw;
+ }
+
+ .control {
+ color: #389468;
+ font-weight: bold;
+ }
+ .func {
+ color: #4A6096;
+ }
+ .num {
+ color: #389468;
+ }
+ .op {
+ color: #8F3D67;
+ }
+
+}
+/*
+table {
+ font-size: 0.5em !important;
+}
+td {
+ font-size: 1.2em !important;
+}
+code {
+ font-size: 1em !important;
+}
+*/
+
+.dm-btn::selection {
+ background-color: #183385 !important;
+}
+
+.dm-btn {
+ color: #264caf !important;
+}
+
+.dm-btn:hover {
+ color: #2869e6 !important;
+}
+
+.dm-btn:focus:hover {
+ color: #2869e6 !important;
+}
+
+.search-icon::selection {
+ background-color: #2c84fa !important;
+}
+
+.dm-text {
+ color: white;
+ font-size: 0.7em;
+}
+
+.dm-text a {
+ color: white !important;
+}
diff --git a/_sass/custom/module.scss b/_sass/custom/module.scss
new file mode 100644
index 0000000..9b0ba63
--- /dev/null
+++ b/_sass/custom/module.scss
@@ -0,0 +1,106 @@
+.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;
+ font-weight: 500;
+
+ em {
+ font-weight: normal;
+ }
+
+ +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;
+ font-weight: 500;
+ }
+
+ dd {
+ margin: 0;
+ }
+ }
+ }
+ }
+}
diff --git a/_sass/custom/schedule.scss b/_sass/custom/schedule.scss
new file mode 100644
index 0000000..915b1d5
--- /dev/null
+++ b/_sass/custom/schedule.scss
@@ -0,0 +1,113 @@
+.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: 130px;
+
+ &: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: $blue-100;
+ }
+
+ &.lab {
+ background-color: $green-100;
+ }
+
+ &.office-hours {
+ background-color: $red-000;
+ }
+ &.coffee-chats {
+ background-color: $yellow-200;
+ }
+ &.discussion {
+ background-color: $purple-000;
+ }
+ }
+}
diff --git a/_sass/custom/staffer.scss b/_sass/custom/staffer.scss
new file mode 100644
index 0000000..5312e08
--- /dev/null
+++ b/_sass/custom/staffer.scss
@@ -0,0 +1,27 @@
+.staffer {
+ display: flex;
+ margin: $sp-4;
+
+ .staffer-image {
+ border-radius: 50%;
+ height: 100px;
+ margin-right: $sp-4;
+ }
+
+ p,
+ .staffer-name {
+ margin: $sp-1 !important;
+ }
+
+ .staffer-pronouns {
+ @extend .label, .text-grey-dk-100, .bg-grey-lt-200;
+ }
+
+ .staffer-meta {
+ @extend .text-grey-dk-000;
+ }
+
+ .staffer-bio {
+ font-size: 1em;
+ }
+}
diff --git a/_schedules/weekly.md b/_schedules/weekly.md
new file mode 100644
index 0000000..9d8bd03
--- /dev/null
+++ b/_schedules/weekly.md
@@ -0,0 +1,76 @@
+---
+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: 10:10 AM
+ end: 12:00 PM
+ location: 212 Wheeler
+ - name: Tuesday
+ events:
+ - name: Lecture
+ start: 10:10 AM
+ end: 11:00 AM
+ location: 212 Wheeler
+ - name: Lab
+ start: 11:10 AM
+ end: 12:00 PM
+ location: 212 Wheeler
+ - name: Office Hours
+ start: 3:00 PM
+ end: 5:00 PM
+ location: Evans 41
+ - name: Wednesday
+ events:
+ - name: Lecture
+ start: 10:10 AM
+ end: 12:00 PM
+ location: 212 Wheeler
+ - name: Office Hours
+ start: 3:00 PM
+ end: 5:00 PM
+ location: Evans 41
+ - name: Thursday
+ events:
+ - name: Lecture
+ start: 10:10 AM
+ end: 11:00 AM
+ location: 212 Wheeler
+ - name: Lab
+ start: 11:10 AM
+ end: 12:00 PM
+ location: 212 Wheeler
+ - name: Office Hours
+ start: 4:10 PM
+ end: 5:00 PM
+ location: Online
+ - name: Friday
+ events:
+ - name: Coffee Chats
+ start: 9:10 AM
+ end: 10:00 AM
+ location: Caffe Strada
+ - name: Discussion
+ start: 10:10 AM
+ end: 12:00 PM
+ location: 105 & 205 Dwinelle
+---
diff --git a/_staffers/anze.md b/_staffers/anze.md
new file mode 100644
index 0000000..c68d2b8
--- /dev/null
+++ b/_staffers/anze.md
@@ -0,0 +1,9 @@
+---
+email: zackaryoon134@berkeley.edu
+name: Anze Xie
+pronouns: HE/HIM
+photo: staff/zackary.jpeg
+bio: TODO
+role: Teach Assistant
+office-hours: TBA
+---
diff --git a/_staffers/atharva.md b/_staffers/atharva.md
new file mode 100644
index 0000000..2d28c08
--- /dev/null
+++ b/_staffers/atharva.md
@@ -0,0 +1,9 @@
+---
+email: zackaryoon134@berkeley.edu
+name: Atharva Kshirsagar
+pronouns: HE/HIM
+photo: staff/zackary.jpeg
+bio: TODO
+role: Teach Assistant
+office-hours: TBA
+---
diff --git a/_staffers/hao.md b/_staffers/hao.md
new file mode 100644
index 0000000..4004036
--- /dev/null
+++ b/_staffers/hao.md
@@ -0,0 +1,9 @@
+---
+name: Hao Zhang
+pronouns: he/him
+role: Instructor
+email: haozhang@ucsd.edu
+photo: staff/hao.jpg
+office-hours: Every Wed 4-5pm at HDSI 440.
+bio: Hao is an Assistant Professor at HDSI and CSE. Hao has developed several popular open models and systems such as Vicuna and vLLM. This is the Hao's first time teaching as a faculty.
+---
diff --git a/_staffers/sumanth.md b/_staffers/sumanth.md
new file mode 100644
index 0000000..dd9d977
--- /dev/null
+++ b/_staffers/sumanth.md
@@ -0,0 +1,9 @@
+---
+email: zackaryoon134@berkeley.edu
+name: Sumanth Hedge
+pronouns: HE/HIM
+photo: staff/zackary.jpeg
+bio: TODO
+role: Teach Assistant
+office-hours: TBA
+---
diff --git a/announcements.md b/announcements.md
new file mode 100644
index 0000000..1a86b51
--- /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 limit:1 %}
+ {{ announcements }}
+{% endfor %}
diff --git a/assets/css/just-the-docs-custom_dark.scss b/assets/css/just-the-docs-custom_dark.scss
new file mode 100644
index 0000000..21c2de7
--- /dev/null
+++ b/assets/css/just-the-docs-custom_dark.scss
@@ -0,0 +1,3 @@
+---
+---
+{% include css/just-the-docs.scss.liquid color_scheme="custom_dark" %}
diff --git a/assets/css/just-the-docs-dark.scss b/assets/css/just-the-docs-dark.scss
new file mode 100644
index 0000000..ac92fb1
--- /dev/null
+++ b/assets/css/just-the-docs-dark.scss
@@ -0,0 +1,3 @@
+---
+---
+{% include css/just-the-docs.scss.liquid color_scheme="dark" %}
diff --git a/assets/darkmode.js b/assets/darkmode.js
new file mode 100644
index 0000000..420a108
--- /dev/null
+++ b/assets/darkmode.js
@@ -0,0 +1,11 @@
+
+function onLoad() {
+ var mode = localStorage.getItem("darkMode");
+
+ if (mode == 1) {
+ jtd.setTheme('custom_dark');
+ toggleDarkMode.innerHTML = "Return to the Light";
+ toggleDarkMode.classList.add('dm-dark-btn');
+ toggleDarkMode.classList.remove('dm-btn');
+ }
+}
\ No newline at end of file
diff --git a/assets/data8.png b/assets/data8.png
new file mode 100644
index 0000000..e6dd560
Binary files /dev/null and b/assets/data8.png differ
diff --git a/assets/data8logo.png b/assets/data8logo.png
new file mode 100644
index 0000000..0dfdf22
Binary files /dev/null and b/assets/data8logo.png differ
diff --git a/assets/images/staff/hao.jpg b/assets/images/staff/hao.jpg
new file mode 100644
index 0000000..785d211
Binary files /dev/null and b/assets/images/staff/hao.jpg differ
diff --git a/assets/images/staff/zackary.jpeg b/assets/images/staff/zackary.jpeg
new file mode 100644
index 0000000..c6afabf
Binary files /dev/null and b/assets/images/staff/zackary.jpeg differ
diff --git a/data8logo.png b/data8logo.png
new file mode 100644
index 0000000..0dfdf22
Binary files /dev/null and b/data8logo.png differ
diff --git a/faq.md b/faq.md
new file mode 100644
index 0000000..84592a1
--- /dev/null
+++ b/faq.md
@@ -0,0 +1,47 @@
+---
+layout: page
+nav_order: 999
+title: FAQs
+description: >-
+ Frequently Asked Questions
+---
+
+# Frequently Asked Questions
+## Coming soon!
+
+
+
+
\ No newline at end of file
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..0027016
Binary files /dev/null and b/favicon.ico differ
diff --git a/index.md b/index.md
index ca0c545..f72a947 100644
--- a/index.md
+++ b/index.md
@@ -1,35 +1,67 @@
---
-title: Home
layout: home
+title: Home
+nav_order: 1
+nav_exclude: false
+permalink: index.html
+seo:
+ type: Course
+ name: DSC 204A Winter 2024
---
-This is a *bare-minimum* template to create a Jekyll site that uses the [Just the Docs] theme. You can easily set the created site to be published on [GitHub Pages] – the [README] file explains how to do that, along with other details.
+# DSC 204A: Scalable Data Systems
+
+{: .mb-2 }
+Instructor: Hao Zhang, UC San Diego, Winter 2024
+{: .mb-2 .fs-6 .text-grey-dk-000 }
+
+Toggle Dark Mode
-If [Jekyll] is installed on your computer, you can also build and preview the created site *locally*. This lets you test changes before committing them, and avoids waiting for GitHub Pages.[^1] And you will be able to deploy your local build to a different platform than GitHub Pages.
+
-More specifically, the created site:
+## Announcements
-- uses a gem-based approach, i.e. uses a `Gemfile` and loads the `just-the-docs` gem
-- uses the [GitHub Pages / Actions workflow] to build and publish the site on GitHub Pages
-Other than that, you're free to customize sites that you create with this template, however you like. You can easily change the versions of `just-the-docs` and Jekyll it uses, as well as adding further plugins.
+{% assign announcements = site.announcements | reverse %}
+{% for announcement in announcements %}
+{{ announcement }}
+{% endfor %}
-[Browse our documentation][Just the Docs] to learn more about how to use this theme.
-To get started with creating a site, simply:
+{% assign mods = site.modules | where: 'class', 'DSC204A' %}
+{% assign active-mods = '' | split: '' %}
-1. click "[use this template]" to create a GitHub repository
-2. go to Settings > Pages > Build and deployment > Source, and select GitHub Actions
+{% for mod in mods %}
+ {% if mod.status == 'Active' %}
+ {% assign active-mods = active-mods | push: mod %}
+ {% endif %}
+{% endfor %}
-If you want to maintain your docs in the `docs` directory of an existing project repo, see [Hosting your docs from an existing project repo](https://github.com/just-the-docs/just-the-docs-template/blob/main/README.md#hosting-your-docs-from-an-existing-project-repo) in the template README.
+{% for module in active-mods %}
+ {{ module }}
+{% endfor %}
-----
+
+
diff --git a/officehours.md b/officehours.md
new file mode 100644
index 0000000..7b02948
--- /dev/null
+++ b/officehours.md
@@ -0,0 +1,44 @@
+---
+layout: page
+title: Office Hours
+nav_exclude: false
+description: >-
+ Winter 2024 Lecture and Office Hours Schedule
+---
+
+# Office Hours
+You are welcome to show up to any office hours. Please see the calendar for office hour times and locations.
+
+
+## Office Hours Calendar
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/policies.md b/policies.md
new file mode 100644
index 0000000..7b8bb6e
--- /dev/null
+++ b/policies.md
@@ -0,0 +1,187 @@
+---
+layout: page
+nav_order: 998
+title: Policies
+description: >-
+ Policies
+---
+
+# Policies
+## Coming soon!
+
+
+
+
diff --git a/resources.md b/resources.md
new file mode 100644
index 0000000..93d63be
--- /dev/null
+++ b/resources.md
@@ -0,0 +1,90 @@
+---
+layout: page
+nav_order: 997
+title: Resources
+description: >-
+ Resources
+---
+
+# Resources
+{:.no_toc}
+
+## Table of Contents
+{: .no_toc .text-delta }
+
+1. TOC
+{:toc}
+
+---
+
+## Book
+
+- [Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems](https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321)
+
+## Additional Books
+
+* **If you are not familiar with Python programming, use any online tutorial to get a handle of it.** Here is a [Python mini-course](http://ai.berkeley.edu/tutorial.html#PythonBasics).
+* Computer Organization and Design (5th edition), by David Patterson and John Hennessy (aka the "CompOrg Book").
+* Operating Systems: Three Easy Pieces, by Remzi and Andrea Arpaci-Dusseau (aka the "Comet Book").
+* Database Management Systems (3rd edition), by Raghu Ramakrishnan and Johannes Gehrke (aka the "Cow Book").
+* Spark: The Definitive Guide (1st edition), by Bill Chambers and Matei Zaharia (aka the "Spark Book").
+* Data Management in Machine Learning Systems, by Matthias Boehm, Arun Kumar, and Jun Yang.
+* [Deep Learning Book](https://www.deeplearningbook.org/), by Ian Goodfellow, Yoshua Bengio, and Aaron Courville.
+* [Designing Machine Learning Systems](https://www.amazon.com/Designing-Machine-Learning-Systems-Production-Ready/dp/1098107969), by Chip Huyen.
+
+## Materials
+
+### Student Materials Folder
+We will post relevant materials in [this folder](https://drive.google.com/drive/folders/1h-ludVoe2KlkD-9HfH1go3tVvAxShKdp?usp=sharing) throughout the quarter.
+
+### Related Documentation and Courses
+* [Ray documentation](https://docs.ray.io/en/latest/index.html)
+* [PyTorch documentation](https://pytorch.org/docs/stable/index.html)
+* [Dive into Deep Learning](https://d2l.ai/)
+* [Machine Learning Compilation](https://mlc.ai/)
+
+## Exam Resources
+Coming soon...
+
+
+## Wellness Resources
+
+Your wellbeing matters, and we hope that DSC 204A is _never_ a barrier for your wellbeing. Below are some campus resources that may be helpful. Remember that you are not alone: please reach out to the instructor and TAs whenever needed!
+
+* [University Health Services](https://studenthealth.ucsd.edu/)
+* [UHS Counseling and Psychological Services (CAPS)](https://caps.ucsd.edu/)
+* [Office For Students with Disabilities](https://osd.ucsd.edu/)
+* [Office of Student Advocacy](https://asadvocacy.ucsd.edu/)
+* [Basic Needs Center](https://basicneeds.ucsd.edu/)
+* [Mental Health Resources Guide](https://studenthealth.ucsd.edu/services/mental-health/index.html)
+
+
+
\ No newline at end of file
diff --git a/schedule.md b/schedule.md
new file mode 100644
index 0000000..f0507b2
--- /dev/null
+++ b/schedule.md
@@ -0,0 +1,40 @@
+---
+layout: page
+nav_order: 995
+title: Schedule Overview
+description: >-
+ Schedule Overview
+---
+
+# Lecture Schedule
+{:.no_toc}
+
+- This schedule might change slightly during the quarter. The dates of the exam, however, will not change.
+- Slides will be uploaded to the course [home page](index.md), typically before each lecture. The lectures themselves might deviate significantly from the textbooks. Thus, it is necessary to attend a lecture live or view its video asynchronously to keep up with course content.
+- The industry guest lectures are not included in the syllabus for the exams. But they will be the focus of the extra credit activities.
+- Some topics may take a few weeks to cover.
+
+|Week|Topic|References|
+|--|--|--|
+|1-2|Basics of Machine Resources: Computer Organization|Ch. 1, 2.1-2.3, 2.12, 4.1, and 5.1-5.5 of CompOrg Book|
+|2-3|Basics of Machine Resources: Operating Systems |Ch. 2, 4.1-4.2, 6, 7, 13, 14.1, 18.1, 21, 22, 26, 36, 37, 39, and 40.1-40.2 of Comet Book|
+|4|Basics of Cloud Computing| - |
+|4-5| Parallel and Scalable Data Processing: Parallelism Basics |Ch. 9.4, 12.2, 14.1.1, 14.6, 22.1-22.3, 22.4.1, 22.8 of Cow Book; Ch. 5, 6.1, 6.3, 6.4 of MLSys Book|
+|5|Review for midterm in discussion section, 05/09/2023 ||
+|6|Midterm on 5/11/2023 in class||
+|6-7|Parallel and Scalable Data Processing: Scalable Data Access||
+|7|Industry Guest Talk: [Jules Damji](https://www.linkedin.com/in/dmatrix/) from Anyscale Discussing Ray Core on 5/18/2023||
+|7-8|Parallel and Scalable Data Processing: Data Parallelism ||
+|8|Industry Guest Talk: [Venkatesh Ravichandran](https://www.linkedin.com/in/venkateshcr/) from Alexa AI at Amazon Discussing Language Data Organization on 5/25/2023||
+|9-10|Dataflow Systems|Ch. 2.2 of MLSys Book|
+|10|ML Model Building Systems|Ch. 8-8.4 of MLSys Book|
+|10|Final exam review in discussion section, 06/06/2023||
+|11|Final Exam on 6/15/2023| - |
+
+
+
+
diff --git a/staff.md b/staff.md
new file mode 100644
index 0000000..72b089c
--- /dev/null
+++ b/staff.md
@@ -0,0 +1,58 @@
+---
+layout: page
+title: Staff
+description: DSC 204A Winter 2024 Staff
+---
+
+# Staff
+
+## Instructor
+
+{% assign instructors = site.staffers | where: 'role', 'Instructor' %}
+
+
+{% for staffer in instructors %}
+{{ staffer }}
+{% endfor %}
+
+
+
+
+## Teaching Assistants
+
+
+
+{% assign teaching_assistants = site.staffers | where: 'role', 'Teach Assistant' %}
+
+
+{% for staffer in teaching_assistants %}
+{{ staffer }}
+{% endfor %}
+
+
+
+
+
+
diff --git a/syllabus.md b/syllabus.md
new file mode 100644
index 0000000..cac28ba
--- /dev/null
+++ b/syllabus.md
@@ -0,0 +1,186 @@
+---
+layout: page
+nav_order: 2
+title: Syllabus
+description: >-
+ Syllabus
+---
+
+# Syllabus
+
+{:.no_toc}
+
+## Table of Contents
+{: .no_toc .text-delta }
+
+1. TOC
+{:toc}
+
+---
+
+The course is organized into four parts, covering the following topics.
+
+1. **Foundations of Data Systems**: Data models, big data storage and retrieval, and how to encode information when you store data.
+2. **Scaling Distributed Systems**: Cluster, cloud, edge, network, replication, partition, consistency, ACID.
+3. **Data Processing and Programming model**: Batch processing, stream processing, MapReduce, Hadoop, Spark, Ray.
+4. **Machine Learning Systems**: GPUs, TensorFlow, PyTorch, Large language model training and serving systems.
+
+
+A major component of this course is hands-on Python programming to implement data exploration, data preparation, distributed deep learning training, and model selection pipelines on large real-world data using popular libraries (Ray, PyTorch) and cloud resources (e.g., AWS/GCP).
+
+## Logistics
+
+**Lectures**: Monday, Wednesday, Friday 10:00 AM - 10:50 AM.
+
+**Location**: [PCYNH 122](https://maps.app.goo.gl/3xRUTjk3cyVA7wAr6).
+
+**Instructor**: [Hao Zhang](https://cseweb.ucsd.edu/~haozhang/); Office: [HDSI 440](https://maps.app.goo.gl/XeWAcFsFk5bcs2ar5).
+
+## Course Content and Format
+
+- The class meets 3 times a week for 50-minute lectures in person.
+
+ - Attending the lectures is not mandatory. But there are Peer Instruction activities involving discussing questions with peers in class only (details below). There will be other interactive activities as well.
+ - We will use [Piazza](https://piazza.com/ucsd/winter2024/dsc204a) for asynchronous discussions and questions.
+
+- 3 Programming Assignments (PAs).
+ - See the PAs page for the PA schedule and details.
+ - There are no late days for the PAs. Plan your work accordingly.
+
+
+
+- Exams.
+ - **There is NO midterm**. Cheers!
+ - There will be a final exam,
+ - The final exam will be held as a Canvas Quiz only. The dates and logistics are listed below.
+ - The exams will have primarily multiple choice questions (MCQ). Quantitative/longer problems wil exist but only the final answer may need to be selected. Some questions will have partial credits.
+ - The guideline for time per question is a max of 1min per point. The points of each question will be calibrated accordingly.
+ - If you miss an exam, you will get no credit for it, unless you notify the instructor in advance with a university approved reason and receive a makeup exam slot.
+ - The midterm exam is closed books/notes/electronics/Web. You are allowed to keep with you two A4-sized sheets (four sides) with any content you want.
+ - The final exam is open books/Web/etc. The only requirement is you should neither give nor receive help from anyone by any means.
+
+- There will be 3 extra credit Peer Evaluation activities delivered via Canvas only. I will announce more details on these in due course.
+- I will release ungraded exercises on the exercises page throughout the quarter. These questions will act as practice for the graded exams and surprise quizzes.
+- The discussion slots will be used by the TAs to give talks about the PAs. I might also use them for review discussions before the two exams.
+
+## Pre-requisites
+
+DSC 202 (Data Mgt for Data Science); or substantial practical experience with scalable data systems and ML algorithms, subject to the consent of the instructor.
+
+Proficiency in Python programming.
+
+
+## Grading
+
+**Components**:
+- Programming Assignments: 8% + 16% + 16%
+- Final Exam: 40%
+- Reading summary: NeruIPS format, once per week
+- In-class Peer Instruction Activities: 20%
+-
+- Extra Credit: 4% (likely)
+
+
+**Cutoffs**:
+The grading scheme is a hybrid of absolute and relative grading. The absolute cutoffs are based on your absolute total score. The relative bins are based on your position in the total score distribution of the class. The better grade among the two (absolute-based and relative-based) will be your final grade.
+
+
+
+
+
+ Grade
+ Absolute Cutoff (>=)
+ Relative Bin (Use strictest)
+
+
+ A+
+ 95
+ Highest 5%
+
+
+ A
+ 90
+ Next 10% (5-15)
+
+
+ A-
+ 85
+ Next 15% (15-30)
+
+
+ B+
+ 80
+ Next 15% (30-45)
+
+
+ B
+ 75
+ Next 15% (45-60)
+
+
+ B-
+ 70
+ Next 15% (60-75)
+
+
+ C+
+ 65
+ Next 5% (75-80)
+
+
+ C
+ 60
+ Next 5% (80-85)
+
+
+ C-
+ 55
+ Next 5% (85-90)
+
+
+ D
+ 50
+ Next 5% (90-95)
+
+
+ F
+ < 50
+ Lowest 5%
+
+
+
+**Example**: Suppose the total score is 82 and the percentile is 33. So, the relative grade is B-, while the absolute grade is B+. The final grade then is B+.
+
+**Non-Letter Grade Options**: You have the option of taking this course for a non-letter grade. The policy for P in a P/F option is a letter grade of C- or better; for S in an S/U option is a letter grade of B- or better.
+
+
+## Exam Dates
+
+- Final Exam: TBD (in the week of March 16 - 23); time window: 3:00-7:00pm PT; time limit: 4 hours
+
+## Classroom Rules
+- No late days
for submitting the PAs. No extensions on the final exam time window. Plan all your work well up front accordingly.
+- Students are encouraged to ask questions and participate in discussions in class and on Ed. Please raise your hand before speaking and the instructor will call on you to speak.
+- Please review UCSD's honor code and policies and procedures on [academic integrity](https://academicintegrity.ucsd.edu/) here. If plagiarism is detected in your code, or if we detect collusion on the graded quizzes or exams, or if you are found to be using someone else's clickers, or if any other form of academic integrity violation is identified, you will get zero for that component of your score and get downgraded substantially. I will also notify the University authorities for appropriate disciplinary action to be taken, up to and including expulsion from the University.
+- Please review UCSD's principles of community and our commitment to creating an inclusive learning environment on [this website](https://ucsd.edu/about/principles.html).
+- Harassment, discrimination, or intimidation of any form against any student will not be tolerated in class or on Piazza. Please review UCSD's policies on dealing with harassment and discrimination on [this website](https://ophd.ucsd.edu/).
+
+
+
+
+
+