diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/DOC.md b/DOC.md
new file mode 100644
index 0000000..6a0b018
--- /dev/null
+++ b/DOC.md
@@ -0,0 +1,56 @@
+## Files
+
+* **_data/assignments.yaml**: Data for each project (see [Project Structure](Project-Structure)).
+
+* **_data/java_links.yaml**: Links to Java class documentation.
+
+* **_data/python_links.yaml**: Links to Python class documentation.
+
+* **_layouts/default.html**: The top-level layout used by all pages. Includes navigation bar, title bar, and copyright notice.
+
+* **_layouts/assignment-page.html**: This layout extends the default layout and is used by project pages. The `jekyll-datapage-generator` plugin automatically generates these pages using the information in assignments.yaml.
+
+* **.github/workflows/jekyll-deploy-action.yml**: A Github action which updates the `gh_pages` branch automatically whenever the `master` branch changes. (The source for this site is in the `master` branch; the generated HTML is in the `gh_pages` branch.) Copied from [here](https://github.com/marketplace/actions/jekyll-deploy-action).
+
+* **assets/images/**: Images used on this site, including example output images for each project.
+
+* **assets/main.scss**: A [Sass](https://sass-lang.com) file which controls the styling of all pages.
+
+* **assignments/search.js**: A Liquid-generated Javascript program that allows users to search for assignments.
+
+## Project Structure
+
+Each entry in assignments.yaml has the following attributes:
+
+* `key`: The name of the project in lowercase, with words separated by hyphens (e.g. "emoji-builder").
+
+* `title`: The name of the project in title case, with words separated by spaces (e.g. "Emoji Builder").
+
+* `summary`: A short description which appears in the link on the "projects" page.
+
+* `tags`: A list of tags that appear below the summary.
+
+* `description`: A longer description which appears on the project's individual page.
+
+* `image_caption` (optional): A caption to go under the example output image. If none is given, it defaults to "[title] example output."
+
+* `topics`: A list of programming topics that the project covers.
+
+* `outcomes` (optional): A list of intended learning outcomes. Each entry is an object with a `verb` field and an `outcome` field.
+
+* `java` (optional): Files for the Java version of the assignment (code, worksheets, etc).
+
+* `python` (optional): Files for the Python version of the assignment (code, worksheets, etc).
+
+* `documentation`: A list of BRIDGES classes used by the project. These classes must have entries in java_links.yaml and/or python_links.yaml (depending on which languages the project supports). Otherwise, the links on the project page will not work.
+
+`java` and `python` must each contain two sub-attributes: `student_files` and `teacher_files`. `student_files` is a list of files available to students (each with a name and a link), and `teacher_files` is a list of files available only to teachers.
+
+## Running Locally
+
+Install Ruby along with the `bundler` gem. See these pages for more detailed instructions:
+
+* [Quickstart](https://jekyllrb.com/docs/)
+* [Installation](https://jekyllrb.com/docs/installation/)
+
+Run `bundle exec jekyll serve` to view this site on a localhost server. The server will automatically update whenever you edit the files. (You may need to run `bundle install` first.)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6a95ca4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# BRIDGES High School
+
+Site hosted at https://bridgesuncc.github.io/bridges-hs/
diff --git a/adv-topics/index.html b/adv-topics/index.html
new file mode 100644
index 0000000..3d65fb8
--- /dev/null
+++ b/adv-topics/index.html
@@ -0,0 +1,11 @@
+
+
+
+
Redirecting…
+
+
+
+
+
Redirecting…
+ Click here if you are not redirected.
+
diff --git a/ap-cs-a/index.html b/ap-cs-a/index.html
new file mode 100644
index 0000000..3d65fb8
--- /dev/null
+++ b/ap-cs-a/index.html
@@ -0,0 +1,11 @@
+
+
+
+ Redirecting…
+
+
+
+
+
Redirecting…
+ Click here if you are not redirected.
+
diff --git a/assets/images/collage.png b/assets/images/collage.png
new file mode 100644
index 0000000..928135b
Binary files /dev/null and b/assets/images/collage.png differ
diff --git a/assets/images/collage.svg b/assets/images/collage.svg
new file mode 100644
index 0000000..485ef96
--- /dev/null
+++ b/assets/images/collage.svg
@@ -0,0 +1,25135 @@
+
+
+
+
diff --git a/assets/images/example-output/aquarium.png b/assets/images/example-output/aquarium.png
new file mode 100644
index 0000000..0f13995
Binary files /dev/null and b/assets/images/example-output/aquarium.png differ
diff --git a/assets/images/example-output/bugstomp.png b/assets/images/example-output/bugstomp.png
new file mode 100644
index 0000000..968bc65
Binary files /dev/null and b/assets/images/example-output/bugstomp.png differ
diff --git a/assets/images/example-output/chaos-game.png b/assets/images/example-output/chaos-game.png
new file mode 100644
index 0000000..73f3901
Binary files /dev/null and b/assets/images/example-output/chaos-game.png differ
diff --git a/assets/images/example-output/earthquake-linked-list.png b/assets/images/example-output/earthquake-linked-list.png
new file mode 100644
index 0000000..69e0bda
Binary files /dev/null and b/assets/images/example-output/earthquake-linked-list.png differ
diff --git a/assets/images/example-output/emoji-builder.png b/assets/images/example-output/emoji-builder.png
new file mode 100644
index 0000000..bbe5385
Binary files /dev/null and b/assets/images/example-output/emoji-builder.png differ
diff --git a/assets/images/example-output/game-of-life.png b/assets/images/example-output/game-of-life.png
new file mode 100644
index 0000000..8cef3b4
Binary files /dev/null and b/assets/images/example-output/game-of-life.png differ
diff --git a/assets/images/example-output/gamebasics-1.png b/assets/images/example-output/gamebasics-1.png
new file mode 100644
index 0000000..f7f212e
Binary files /dev/null and b/assets/images/example-output/gamebasics-1.png differ
diff --git a/assets/images/example-output/gamebasics-2.png b/assets/images/example-output/gamebasics-2.png
new file mode 100644
index 0000000..86bd209
Binary files /dev/null and b/assets/images/example-output/gamebasics-2.png differ
diff --git a/assets/images/example-output/interpreter.png b/assets/images/example-output/interpreter.png
new file mode 100644
index 0000000..319dfaf
Binary files /dev/null and b/assets/images/example-output/interpreter.png differ
diff --git a/assets/images/example-output/intro-to-OOP-creating-objects-of-classes.png b/assets/images/example-output/intro-to-OOP-creating-objects-of-classes.png
new file mode 100644
index 0000000..4900926
Binary files /dev/null and b/assets/images/example-output/intro-to-OOP-creating-objects-of-classes.png differ
diff --git a/assets/images/example-output/intro-to-oop.png b/assets/images/example-output/intro-to-oop.png
new file mode 100644
index 0000000..231fa45
Binary files /dev/null and b/assets/images/example-output/intro-to-oop.png differ
diff --git a/assets/images/example-output/maze-generator.png b/assets/images/example-output/maze-generator.png
new file mode 100644
index 0000000..16cf239
Binary files /dev/null and b/assets/images/example-output/maze-generator.png differ
diff --git a/assets/images/example-output/monster-adventure.png b/assets/images/example-output/monster-adventure.png
new file mode 100644
index 0000000..bd460e9
Binary files /dev/null and b/assets/images/example-output/monster-adventure.png differ
diff --git a/assets/images/example-output/mountain-paths.png b/assets/images/example-output/mountain-paths.png
new file mode 100644
index 0000000..840c0e6
Binary files /dev/null and b/assets/images/example-output/mountain-paths.png differ
diff --git a/assets/images/example-output/pattern-builder.png b/assets/images/example-output/pattern-builder.png
new file mode 100644
index 0000000..93a7256
Binary files /dev/null and b/assets/images/example-output/pattern-builder.png differ
diff --git a/assets/images/example-output/patterns-in-song-lyrics.png b/assets/images/example-output/patterns-in-song-lyrics.png
new file mode 100644
index 0000000..087cfd9
Binary files /dev/null and b/assets/images/example-output/patterns-in-song-lyrics.png differ
diff --git a/assets/images/example-output/rainbow-snake.png b/assets/images/example-output/rainbow-snake.png
new file mode 100644
index 0000000..4447a92
Binary files /dev/null and b/assets/images/example-output/rainbow-snake.png differ
diff --git a/assets/images/example-output/shape-collection.png b/assets/images/example-output/shape-collection.png
new file mode 100644
index 0000000..9574320
Binary files /dev/null and b/assets/images/example-output/shape-collection.png differ
diff --git a/assets/images/example-output/square-fill.png b/assets/images/example-output/square-fill.png
new file mode 100644
index 0000000..c68a1f4
Binary files /dev/null and b/assets/images/example-output/square-fill.png differ
diff --git a/assets/images/example-output/street-map.png b/assets/images/example-output/street-map.png
new file mode 100644
index 0000000..ca4cc07
Binary files /dev/null and b/assets/images/example-output/street-map.png differ
diff --git a/assets/images/example-output/sudoku.png b/assets/images/example-output/sudoku.png
new file mode 100644
index 0000000..845879c
Binary files /dev/null and b/assets/images/example-output/sudoku.png differ
diff --git a/assets/images/example-output/tron.png b/assets/images/example-output/tron.png
new file mode 100644
index 0000000..b199085
Binary files /dev/null and b/assets/images/example-output/tron.png differ
diff --git a/assets/images/example-output/us-cities-map.png b/assets/images/example-output/us-cities-map.png
new file mode 100644
index 0000000..de95e75
Binary files /dev/null and b/assets/images/example-output/us-cities-map.png differ
diff --git a/assets/images/favicon-package/android-chrome-192x192.png b/assets/images/favicon-package/android-chrome-192x192.png
new file mode 100644
index 0000000..58d57e9
Binary files /dev/null and b/assets/images/favicon-package/android-chrome-192x192.png differ
diff --git a/assets/images/favicon-package/android-chrome-512x512.png b/assets/images/favicon-package/android-chrome-512x512.png
new file mode 100644
index 0000000..279d90a
Binary files /dev/null and b/assets/images/favicon-package/android-chrome-512x512.png differ
diff --git a/assets/images/favicon-package/apple-touch-icon.png b/assets/images/favicon-package/apple-touch-icon.png
new file mode 100644
index 0000000..b9c3486
Binary files /dev/null and b/assets/images/favicon-package/apple-touch-icon.png differ
diff --git a/assets/images/favicon-package/browserconfig.xml b/assets/images/favicon-package/browserconfig.xml
new file mode 100644
index 0000000..b3930d0
--- /dev/null
+++ b/assets/images/favicon-package/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/assets/images/favicon-package/favicon-16x16.png b/assets/images/favicon-package/favicon-16x16.png
new file mode 100644
index 0000000..19158d3
Binary files /dev/null and b/assets/images/favicon-package/favicon-16x16.png differ
diff --git a/assets/images/favicon-package/favicon-32x32.png b/assets/images/favicon-package/favicon-32x32.png
new file mode 100644
index 0000000..e443547
Binary files /dev/null and b/assets/images/favicon-package/favicon-32x32.png differ
diff --git a/assets/images/favicon-package/favicon.ico b/assets/images/favicon-package/favicon.ico
new file mode 100644
index 0000000..121ac5c
Binary files /dev/null and b/assets/images/favicon-package/favicon.ico differ
diff --git a/assets/images/favicon-package/mstile-150x150.png b/assets/images/favicon-package/mstile-150x150.png
new file mode 100644
index 0000000..95160a1
Binary files /dev/null and b/assets/images/favicon-package/mstile-150x150.png differ
diff --git a/assets/images/favicon-package/safari-pinned-tab.svg b/assets/images/favicon-package/safari-pinned-tab.svg
new file mode 100644
index 0000000..26fce01
--- /dev/null
+++ b/assets/images/favicon-package/safari-pinned-tab.svg
@@ -0,0 +1,138 @@
+
+
+
diff --git a/assets/images/favicon-package/site.webmanifest b/assets/images/favicon-package/site.webmanifest
new file mode 100644
index 0000000..b20abb7
--- /dev/null
+++ b/assets/images/favicon-package/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/assets/images/logo.svg b/assets/images/logo.svg
new file mode 100644
index 0000000..972929f
--- /dev/null
+++ b/assets/images/logo.svg
@@ -0,0 +1,103 @@
+
+
+
diff --git a/assets/images/mountain-paths/greedy-case-1.png b/assets/images/mountain-paths/greedy-case-1.png
new file mode 100644
index 0000000..f41f23c
Binary files /dev/null and b/assets/images/mountain-paths/greedy-case-1.png differ
diff --git a/assets/images/mountain-paths/greedy-case-2.png b/assets/images/mountain-paths/greedy-case-2.png
new file mode 100644
index 0000000..eceb114
Binary files /dev/null and b/assets/images/mountain-paths/greedy-case-2.png differ
diff --git a/assets/images/mountain-paths/greedy-case-3.png b/assets/images/mountain-paths/greedy-case-3.png
new file mode 100644
index 0000000..16b29ca
Binary files /dev/null and b/assets/images/mountain-paths/greedy-case-3.png differ
diff --git a/assets/images/mountain-paths/greedy-case-4.png b/assets/images/mountain-paths/greedy-case-4.png
new file mode 100644
index 0000000..154e92e
Binary files /dev/null and b/assets/images/mountain-paths/greedy-case-4.png differ
diff --git a/assets/images/school.svg b/assets/images/school.svg
new file mode 100644
index 0000000..596ec46
--- /dev/null
+++ b/assets/images/school.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/images/university.svg b/assets/images/university.svg
new file mode 100644
index 0000000..0c41a96
--- /dev/null
+++ b/assets/images/university.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/main.css b/assets/main.css
new file mode 100644
index 0000000..353511a
--- /dev/null
+++ b/assets/main.css
@@ -0,0 +1,97 @@
+/* BASIC STYLING */
+body, html { height: 100%; margin: 0; }
+
+body { font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; }
+
+.container { padding: 0px 24px; }
+
+h1, h2, h3, h4, h5, h6 { font-family: 'JetBrains Mono', monospace; font-weight: bold; }
+
+article h2 { border-bottom-color: #e9ecef; border-bottom-style: solid; border-bottom-width: thin; padding-bottom: .5rem; }
+
+a { text-decoration: none; }
+
+a:hover { text-decoration: underline; }
+
+/* NAVBAR */
+.navbar-custom { background-color: white; }
+
+.navbar-custom .navbar-brand img { width: 70px; }
+
+@media only screen and (min-width: 448px) { .navbar-custom .navbar-brand img { width: 90px; } }
+
+.navbar-custom .nav-link { font-family: Arial, Helvetica, sans-serif; font-weight: 600; color: black; }
+
+.navbar-custom .nav-link:hover { text-decoration: none; }
+
+/* FOOTER */
+footer { margin-top: 4em; background-color: #212121; color: white; padding-top: 64px; padding-bottom: 48px; }
+
+/* TITLE BAR */
+.titlebar-container { padding: 0; border-bottom: 1px solid #cccccc; border-top: 1px solid #cccccc; background-color: #ebebeb; }
+
+.titlebar-container h1 { margin: 0 auto; padding: 24px; }
+
+/* MAIN PAGE */
+.banner-bg { background-color: black; padding-top: 80px; padding-bottom: 50px; }
+
+.banner-text { text-align: center; width: 100%; }
+
+.banner-text h1 { font-weight: 600; color: white; font-size: 2.2em; letter-spacing: 0.1em; }
+
+.banner-text a { margin-top: 1em; border-radius: 1em; }
+
+.banner-text a:hover { text-decoration: none; }
+
+#slogan { text-align: center; margin: 3rem 0; }
+
+#mission-statement { text-align: center; }
+
+#collage { margin-top: 24px; }
+
+/* ASSIGNMENT CARDS */
+#search { margin-top: 24px; width: 100%; }
+
+.assignment-card { margin: 24px 0px; display: grid; grid-template-rows: 12em; grid-template-columns: 35% 65%; }
+
+@media only screen and (min-width: 512px) { .assignment-card { grid-template-rows: 9em; } }
+
+@media only screen and (min-width: 768px) { .assignment-card { grid-template-columns: 25% 75%; } }
+
+.assignment-card .card-thumbnail img { object-fit: cover; height: 100%; width: 100%; }
+
+.card.link:hover { box-shadow: 0 0 11px rgba(33, 33, 33, 0.2); cursor: pointer; }
+
+/* TAGS */
+.tag { padding: 2px 8px; border-radius: 1em; border: 1px solid #cccccc; background-color: #ebebeb; }
+
+.language-tag { padding: 2px 8px; border-radius: 1em; border: 1px solid #a9c1ef; background-color: #dde6f9; }
+
+.difficulty-tag { padding: 2px 8px; border-radius: 1em; border: 1px solid #cccccc; }
+
+/* NOTES AND WARNINGS */
+.note { background-color: #dcf4ff; border-left: 6px solid #024e7a; }
+
+.warning { background-color: #ffdddc; border-left: 6px solid #7a0602; }
+
+.note, .warning { margin: 0 0 12px; padding: 12px; }
+
+.note p:last-child, .warning p:last-child { margin-bottom: 0; }
+
+/* TABLE OF CONTENTS */
+.assignment-container { margin-top: 1.5rem; }
+
+@media only screen and (min-width: 768px) { .assignment-container { display: grid; grid-template-columns: 25% 75%; } }
+
+.toc .entries { list-style-type: none; padding-left: 0; }
+
+@media only screen and (min-width: 768px) { .toc { position: sticky; top: 20px; } }
+
+/* ASSIGNMENT IMAGES */
+article.assignment img { margin: 0 auto; max-width: 100%; max-height: 22em; display: block; border-radius: .5em; }
+
+figure { display: table; max-width: 75%; padding: 0 auto; margin: 0em auto; }
+
+figcaption { text-align: left; font-size: .7em; margin-bottom: 16px; }
+
+/*# sourceMappingURL=main.css.map */
\ No newline at end of file
diff --git a/assets/main.css.map b/assets/main.css.map
new file mode 100644
index 0000000..b21c661
--- /dev/null
+++ b/assets/main.css.map
@@ -0,0 +1,12 @@
+{
+ "version": 3,
+ "file": "main.css",
+ "sources": [
+ "main.scss"
+ ],
+ "sourcesContent": [
+ "$border: hsl(0, 0%, 80%);\n$background: hsl(0, 0%, 92%);\n$language-border: hsl(219, 69%, 80%);\n$language-background: hsl(219, 69%, 92%);\n\n\n/* BASIC STYLING */\n\nbody, html {\n height: 100%;\n margin: 0;\n}\n\nbody {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 1.2em;\n}\n\n.container {\n padding: 0px 24px;\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-family: 'JetBrains Mono', monospace;\n font-weight: bold;\n}\n\narticle h2 {\n border-bottom-color: #e9ecef;\n border-bottom-style: solid;\n border-bottom-width: thin;\n padding-bottom: .5rem;\n}\n\na {\n text-decoration: none;\n &:hover { text-decoration: underline; }\n}\n\n/* NAVBAR */\n\n.navbar-custom {\n background-color: white;\n\n .navbar-brand img {\n width: 70px;\n @media only screen and (min-width: 448px) {\n width: 90px;\n }\n }\n\n .nav-link {\n font-family: Arial, Helvetica, sans-serif;\n font-weight: 600;\n color: black;\n &:hover { text-decoration: none; }\n }\n}\n\n/* FOOTER */\n\nfooter {\n margin-top: 4em;\n background-color: #212121;\n color: white;\n padding-top: 64px;\n padding-bottom: 48px;\n}\n\n/* TITLE BAR */\n\n.titlebar-container {\n padding: 0;\n border-bottom: 1px solid $border;\n border-top: 1px solid $border;\n background-color: $background;\n\n h1 {\n margin: 0 auto;\n padding: 24px;\n }\n}\n\n/* MAIN PAGE */\n\n.banner-bg {\n background-color: black;\n padding-top: 80px;\n padding-bottom: 50px;\n}\n\n.banner-text {\n text-align: center;\n width: 100%;\n\n h1 {\n font-weight: 600;\n color: white;\n font-size: 2.2em;\n letter-spacing: 0.1em;\n }\n\n a {\n margin-top: 1em;\n border-radius: 1em;\n &:hover { text-decoration: none }\n }\n}\n\n#slogan {\n text-align: center;\n margin: 3rem 0;\n}\n\n#mission-statement {\n text-align: center;\n}\n\n#collage {\n margin-top: 24px;\n}\n\n/* ASSIGNMENT CARDS */\n\n#search {\n margin-top: 24px;\n width: 100%;\n}\n\n.assignment-card {\n margin: 24px 0px;\n display: grid;\n grid-template-rows: 12em;\n grid-template-columns: 35% 65%;\n\n @media only screen and (min-width: 512px) {\n grid-template-rows: 9em;\n }\n\n @media only screen and (min-width: 768px) {\n grid-template-columns: 25% 75%;\n }\n\n .card-thumbnail img {\n object-fit: cover;\n height: 100%;\n width: 100%;\n }\n}\n\n.card.link:hover {\n box-shadow: 0 0 11px rgba(33,33,33,.2);\n cursor: pointer;\n}\n\n/* TAGS */\n\n.tag {\n padding: 2px 8px;\n border-radius: 1em;\n border: 1px solid $border;\n background-color: $background;\n}\n\n.language-tag {\n padding: 2px 8px;\n border-radius: 1em;\n border: 1px solid $language-border;\n background-color: $language-background;\n}\n\n.difficulty-tag {\n padding: 2px 8px;\n border-radius: 1em;\n border: 1px solid $border;\n}\n\n/* NOTES AND WARNINGS */\n\n.note {\n background-color: #dcf4ff;\n border-left: 6px solid #024e7a;\n}\n\n.warning {\n background-color: #ffdddc;\n border-left: 6px solid #7a0602;\n}\n\n.note, .warning {\n margin: 0 0 12px;\n padding: 12px;\n p:last-child { margin-bottom: 0; }\n}\n\n/* TABLE OF CONTENTS */\n\n.assignment-container {\n margin-top: 1.5rem;\n\n @media only screen and (min-width: 768px) {\n display: grid;\n grid-template-columns: 25% 75%;\n }\n}\n\n.toc {\n .entries {\n list-style-type:none;\n padding-left: 0;\n }\n\n @media only screen and (min-width: 768px) {\n position: sticky;\n top: 20px;\n }\n}\n\n/* ASSIGNMENT IMAGES */\n\narticle.assignment img {\n margin: 0 auto;\n max-width: 100%;\n max-height: 22em;\n display: block;\n border-radius: .5em;\n}\n\nfigure {\n display: table;\n max-width: 75%;\n padding: 0 auto;\n margin: 0em auto;\n}\n\nfigcaption {\n text-align: left;\n font-size: .7em;\n margin-bottom: 16px;\n}\n"
+ ],
+ "names": [],
+ "mappings": "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"
+}
\ No newline at end of file
diff --git a/assignment/index.html b/assignment/index.html
new file mode 100644
index 0000000..3d65fb8
--- /dev/null
+++ b/assignment/index.html
@@ -0,0 +1,11 @@
+
+
+
+ Redirecting…
+
+
+
+
+
Redirecting…
+ Click here if you are not redirected.
+
diff --git a/assignments/aquarium/index.html b/assignments/aquarium/index.html
new file mode 100644
index 0000000..0ac9d67
--- /dev/null
+++ b/assignments/aquarium/index.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+Aquarium
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Aquarium | BRIDGES High School
+
+
+
+
+
+
+
+
+
+
+
Arrays in Java are data structures that hold multiple objects in one memory location. They can hold a fixed number of one type of object or variable, but that object can be almost anything. In this project, we will practice manipulating arrays and accessing elements using methods from the Array class. You are the owner of an aquarium with a fixed number of tanks, you also happen to be a little indecisive and like to change which fish go in what tanks. Think of the aquarium as an array, each tank represents an index, and the fish are the objects.
+
+
+
Topics
+
+
+
Arrays
+
+
Classes
+
+
Loops
+
+
Booleans and conditionals
+
+
NonBlockingGame class
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
BugStomp is a whack-a-mole style game where you use the arrow keys to move your player and attempt to touch or "stomp" the bug. The bug flashes to a random location on the board after a set number of frames. For each bug stomped, the score increases until the player eventually wins. In this project, you will implement the BugStomp game with BRIDGES.
+
+
+
Topics
+
+
+
Random class
+
+
API usage
+
+
Arrays
+
+
Nested loops
+
+
Conditionals
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this project, students will create fractal designs using a chaos game algorithm. They will learn about Java record classes and will use the BRIDGES GraphAdjList class for creating visualisations.
+
+
+
Topics
+
+
+
Record classes
+
+
Iteration
+
+
API usage
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Students create a linked list using real-time earthquake data from the US Geological Survey. This project involves reading source code and arranging code segments in the correct order.
+
+
+
Topics
+
+
+
Linked lists
+
+
Reading source code
+
+
API usage
+
+
Element class
+
+
EarthquakeUSGS class
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Students use their undertanding of 2D arrays to create an emoji using the BRIDGES NonBlockingGame class. This project is indended to build student comfort with BRIDGES, so it is ungraded and there is no rubric.
+
+
+
Topics
+
+
+
2D arrays
+
+
Row-major order
+
+
Using API documentation
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Use understanding of rows and columns in order to create simple 2D pixel designs. (AP CS A Unit 8, VAR-2.F)
+
+
Apply: Use API documentation to figure out how to use Java library classes.
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
The Game of Life is a two-dimensional cellular automaton invented by John Conway in 1970. The state of each individual cell is determined by simple rules, but patterns of hundreds of cells working together can exhibit complex behavior. In this project, students will create an interactive Game of Life animation using the BRIDGES Java API.
+
+
+
Topics
+
+
+
Cellular automata
+
+
Nested loops
+
+
2D arrays
+
+
Conditionals
+
+
Methods
+
+
API usage
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
The BRIDGES library has a class called NonBlockingGame that allows you to create simple games based on board grids. In this project, students will use the NonBlockingGame class to create a grid that displays a message, one letter per cell. This is not a game yet, but develops prerequisite understanding.
+
+
+
Topics
+
+
+
2D arrays
+
+
API usage (NonBlockingGame class, NamedSymbol enum, NamedColor enum)
+
+
Inheritance
+
+
Abstract classes
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Create objects by calling constructors with parameters. (AP CS A Unit 2, MOD-1.D)
+
+
Apply: Use typed variables to represent and refer to data. (AP CS A Unit 2, VAR-1.D)
+
+
Apply: Represent branching logical processes with conditional statements. (AP CS A Unit 3, CON-2.C)
+
+
Apply: Use understanding of rows and columns while creating algorithms for nested iteration. (AP CS A Unit 4, CON-2.C, CON-2.E, CON-2.G)
+
+
Apply: Use understanding of "out of bounds" errors when debugging code. (AP CS A Unit 8, CON-2.N)
+
+
Apply: Use API documentation to figure out how to use Java library classes.
+
+
Apply: Use documentation and class headers to determine inheritance relationships. (AP CS A Unit 9, MOD-3.B)
+
+
Analyze: Analyze library class code, applying understanding of abstract/concrete classes, abstract/concrete methods, constructors, and instance variables. (AP CS A Units 2, 5, and 9)
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this second game basics project, students use the NonBlockingGame class to create a player that can be moved around the screen with the arrow keys.
+
+
+
Topics
+
+
+
2D arrays
+
+
API usage (NonBlockingGame class, NamedSymbol enum, NamedColor enum)
+
+
Event-driven programming
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Create objects by calling constructors with parameters. (AP CS A Unit 2, MOD-1.D)
+
+
Apply: Use typed variables to represent and refer to data. (AP CS A Unit 2, VAR-1.D)
+
+
Apply: Represent branching logical processes with conditional statements. (AP CS A Unit 3, CON-2.C)
+
+
Apply: Use understanding of rows and columns while creating algorithms for nested iteration. (AP CS A Unit 4, CON-2.C, CON-2.E, CON-2.G)
+
+
Apply: Use understanding of "out of bounds" errors when debugging code. (AP CS A Unit 8, CON-2.N)
+
+
Apply: Use API documentation to figure out how to use Java library classes.
+
+
Apply: Use documentation and class headers to determine inheritance relationships. (AP CS A Unit 9, MOD-3.B)
+
+
Analyze: Analyze library class code, applying understanding of abstract/concrete classes, abstract/concrete methods, constructors, and instance variables. (AP CS A Units 2, 5, and 9)
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this project, students will create an interpreter for a simple programming language. The interpreter will parse a file into a list of commands, and then execute the commands, using BRIDGES to create circles, polygons, and lines.
+
+
+
Topics
+
+
+
Command line arguments
+
+
Try and catch blocks
+
+
Reading files
+
+
StringBuilder class
+
+
String parsing
+
+
Arraylists
+
+
BRIDGES SymbolCollection API
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Using objects of the Symbol and SymbolCollection class to display a collection of rectangle and circle objects in a creative picture.
+
+
+
Topics
+
+
+
Creating Objects
+
+
API usage
+
+
Inheritance
+
+
+
+
+
Intended learning outcomes
+
+
+
Understand: Explain the relationship between a class and an object
+
+
Understand: Define using examples: signature, parameter list, formal parameter, actual parameter
+
+
Apply: Use a constructor (with or without parameters) of a class in order to create an object of that class
+
+
Apply: Call methods (with or without parameters) on objects
+
+
Create: Use above learned skills in order to display a design of shape objects
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this project, students use an algorithm to randomly generate mazes, and display them with the BRIDGES ColorGrid class. The maze is stored as a two-dimensional array of cells. It starts with a single cell in the center, and then branches randomly until the entire grid is filled.
+
+
+
Topics
+
+
+
Enumerations
+
+
Arraylists
+
+
2D arrays
+
+
Nested loops
+
+
API usage
+
+
Methods
+
+
Conditionals
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Monster Adventure is a type of collecting and avoiding game, where the player will be collecting fruits from the map and avoiding the monster, which will follow the player. The player will use the arrow keys to control the character‘s moves around the map. The score will increase until the player eventually wins.
+
+
+
Topics
+
+
+
Methods
+
+
Classes
+
+
Loops
+
+
Booleans and conditionals
+
+
NonBlockingGame class
+
+
2d arrays
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this project, students read elevation data into a 2D array, compute the path of least elevation change using a greedy algorithm, and visualise the path with the ColorGrid class.
+
+
+
Topics
+
+
+
Command line arguments
+
+
Traversing 2D arrays
+
+
Reading files
+
+
Greedy algorithm
+
+
ColorGrid (BRIDGES class for pixel-based graphics)
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Use file path operations to access data files.
+
+
Understand: Identify the purpose of String[] args in the context of the main method.
+
+
Understand: Analyse and explain code that reads data files.
+
+
Understand: Analyse and explain code that converts elevation data into a 2D array and creates a grayscale image.
+
+
Remember: Define the greedy algorithm.
+
+
Apply: Develop a greedy algorithm as a heuristic for finding a "least elevation change" path given elevation data.
+
+
Create: Create a visual representation of the path using the BRIDGES ColorGrid class.
+
+
Evaluate: Critique the greedy algorithm as a means of achieving the optimal path.
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Using the BRIDGES ColorGrid class, students solve seven pattern-creation challenges by applying knowledge of conditionals, nested loops, and 2D array traversal.
+
+
+
Topics
+
+
+
Nested loops
+
+
2D arrays
+
+
Conditionals
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Represent branching logical processes with conditional statements. (AP CS A Unit 3, CON-2.C)
+
+
Apply: Use understanding of rows and columns while creating algorithms for nested iteration. (AP CS A Unit 4, CON-2.C, CON-2.E, CON-2.G)
+
+
Apply: Use understanding of "out of bounds" errors when debugging code. (AP CS A Unit 8, CON-2.N)
+
+
Apply: Use API documentation to figure out how to use Java library classes.
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this project, students access song lyrics using BRIDGES and check for repetition. They display the repetition with the ColorGrid class, creating patterns like the following:
+
+
+
Topics
+
+
+
API usage
+
+
String processing
+
+
ColorGrid (BRIDGES class for pixel-based graphics)
+
+
Loops
+
+
Conditionals
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Use the arrow keys to move a snake around the board to eat apples. Try to eat as many apples as possible. It will get more difficult the longer you play, with the snake growing in size for each apple eaten.
+
+
+
Topics
+
+
+
API usage
+
+
Arrays
+
+
Loops
+
+
Conditionals
+
+
ArrayLists
+
+
Mod
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
+
+
+
+
+
+
+
+
+
diff --git a/assignments/search.js b/assignments/search.js
new file mode 100644
index 0000000..39a8a48
--- /dev/null
+++ b/assignments/search.js
@@ -0,0 +1,218 @@
+const searchData = {
+
+ "intro-to-oop" : `
+ Intro to OOP: Creating Objects of Classes Introduce learners to creating objects of classes Using objects of the Symbol and SymbolCollection class to display a collection of rectangle and circle objects in a creative picture. easier
+ java
+
+
+ Creating Objects API usage Inheritance
+ Bridges SymbolCollection Symbol Circle Rectangle
+ `,
+
+ "aquarium" : `
+ Aquarium Learn about arrays of objects by creating an aquarium. Arrays in Java are data structures that hold multiple objects in one memory location. They can hold a fixed number of one type of object or variable, but that object can be almost anything. In this project, we will practice manipulating arrays and accessing elements using methods from the Array class. You are the owner of an aquarium with a fixed number of tanks, you also happen to be a little indecisive and like to change which fish go in what tanks. Think of the aquarium as an array, each tank represents an index, and the fish are the objects. easier
+ java
+
+
+ Arrays Classes Loops Booleans and conditionals NonBlockingGame class
+ NonBlockingGame NamedColor NamedSymbol
+ `,
+
+ "emoji-builder" : `
+ Emoji Builder Create a custom emoji using the NonBlockingGame class. Students use their undertanding of 2D arrays to create an emoji using the BRIDGES NonBlockingGame class. This project is indended to build student comfort with BRIDGES, so it is ungraded and there is no rubric. easier
+ java
+ python
+ 2d grid
+ 2D arrays Row-major order Using API documentation
+ NamedColor NonBlockingGame
+ `,
+
+ "shape-collection" : `
+ Shape Collection Draw circles, rectangles, polygons, and text. Draw circles, rectangles, polygons, and text with the Bridges SymbolCollection class. more difficult
+ java
+ python
+ vector graphics
+ Reading source code API usage Creating objects
+ Bridges SymbolCollection Symbol Circle Rectangle Polygon Polyline Text
+ `,
+
+ "pattern-builder" : `
+ Pattern Builder Create colorful patterns with the ColorGrid Class. Using the BRIDGES ColorGrid class, students solve seven pattern-creation challenges by applying knowledge of conditionals, nested loops, and 2D array traversal. easier
+ java
+
+ 2d grid
+ Nested loops 2D arrays Conditionals
+ Bridges ColorGrid Grid
+ `,
+
+ "square-fill" : `
+ Square Fill Create random layered squares using the ColorGrid class. The BRIDGES library has a class called ColorGrid that allows you to represent an image as a grid of colored cells. The programmer defines the number of rows, number of columns, and default color. In this project, you will use iteration to create layers of squares until the entire grid is filled. more difficult
+ java
+
+ 2d grid
+ Nested loops 2D arrays Conditionals
+ Bridges ColorGrid Color
+ `,
+
+ "gamebasics-1" : `
+ GameBasics I Display a custom message and alter it with keyboard input. The BRIDGES library has a class called NonBlockingGame that allows you to create simple games based on board grids. In this project, students will use the NonBlockingGame class to create a grid that displays a message, one letter per cell. This is not a game yet, but develops prerequisite understanding. easier
+ java
+ python
+ game 2d grid
+ 2D arrays API usage (NonBlockingGame class, NamedSymbol enum, NamedColor enum) Inheritance Abstract classes
+ NonBlockingGame GameBase NamedColor NamedSymbol
+ `,
+
+ "gamebasics-2" : `
+ GameBasics II Create a player that can be moved around the game board with keyboard input. In this second game basics project, students use the NonBlockingGame class to create a player that can be moved around the screen with the arrow keys. easier
+ java
+ python
+ game 2d grid
+ 2D arrays API usage (NonBlockingGame class, NamedSymbol enum, NamedColor enum) Event-driven programming
+ NonBlockingGame GameBase NamedColor NamedSymbol
+ `,
+
+ "bugstomp" : `
+ BugStomp Make a whack-a-mole style game where the player stomps bugs to increase their score. BugStomp is a whack-a-mole style game where you use the arrow keys to move your player and attempt to touch or "stomp" the bug. The bug flashes to a random location on the board after a set number of frames. For each bug stomped, the score increases until the player eventually wins. In this project, you will implement the BugStomp game with BRIDGES. easier
+ java
+
+ game 2d grid
+ Random class API usage Arrays Nested loops Conditionals
+ NonBlockingGame GameBase NamedColor NamedSymbol
+ `,
+
+ "rainbow-snake" : `
+ Rainbow Snake Create a colorful Snake game. Use the arrow keys to move a snake around the board to eat apples. Try to eat as many apples as possible. It will get more difficult the longer you play, with the snake growing in size for each apple eaten. more difficult
+ java
+ python
+ game 2d grid
+ API usage Arrays Loops Conditionals ArrayLists Mod
+ NonBlockingGame GameBase NamedColor NamedSymbol
+ `,
+
+ "tron" : `
+ Tron Create a two-player game that resembles the movie Tron. In this project, you will use the NonBlockingGame class to make a two-player video game. Each player controls a snake that gets longer and longer, and when one player crashes into something, the other person wins. more difficult
+ java
+
+ game 2d grid
+ ArrayLists Classes Loops Booleans and conditionals NonBlockingGame class
+ NonBlockingGame GameBase NamedColor
+ `,
+
+ "monster-adventure" : `
+ Monster Adventure Player collects fruit while avoiding the monster. Monster Adventure is a type of collecting and avoiding game, where the player will be collecting fruits from the map and avoiding the monster, which will follow the player. The player will use the arrow keys to control the character‘s moves around the map. The score will increase until the player eventually wins. more difficult
+ java
+
+ game 2d grid
+ Methods Classes Loops Booleans and conditionals NonBlockingGame class 2d arrays
+ NonBlockingGame GameBase NamedColor NamedSymbol
+ `,
+
+ "chaos-game" : `
+ Chaos Game Create fractal designs using a chaos game algorithm. In this project, students will create fractal designs using a chaos game algorithm. They will learn about Java record classes and will use the BRIDGES GraphAdjList class for creating visualisations. more difficult
+ java
+
+
+ Record classes Iteration API usage
+ Bridges GraphAdjList Element
+ `,
+
+ "game-of-life" : `
+ Game of Life Create an interactive cellular automaton. The Game of Life is a two-dimensional cellular automaton invented by John Conway in 1970. The state of each individual cell is determined by simple rules, but patterns of hundreds of cells working together can exhibit complex behavior. In this project, students will create an interactive Game of Life animation using the BRIDGES Java API. more difficult
+ java
+
+ 2d grid
+ Cellular automata Nested loops 2D arrays Conditionals Methods API usage
+ GameBase NonBlockingGame NamedColor
+ `,
+
+ "sudoku" : `
+ Sudoku Create a program for solving sudoku puzzles. Sudoku is a puzzle game played on a 9 by 9 grid. The objective is to fill the grid with numbers such that each row, column, and 3 by 3 subgrid contains every number from 1 to 9. The game starts with the grid partially completed so that there is only a single solution. In this project, you will create your own sudoku game using the BRIDGES Java API. more difficult
+ java
+
+ game 2d grid
+ Nested loops 2D arrays Booleans and conditionals Reading source code API usage
+ NamedColor NamedSymbol
+ `,
+
+ "patterns-in-song-lyrics" : `
+ Patterns in Song Lyrics Detect repetition in song lyrics and generate a graphical representation of the pattern. In this project, students access song lyrics using BRIDGES and check for repetition. They display the repetition with the ColorGrid class, creating patterns like the following: more difficult
+ java
+ python
+ real-world data parsing
+ API usage String processing ColorGrid (BRIDGES class for pixel-based graphics) Loops Conditionals
+ Bridges DataSource Color ColorGrid Song
+ `,
+
+ "mountain-paths" : `
+ Mountain Paths Given elevation data, find the path of least elevation change using a greedy algorithm. In this project, students read elevation data into a 2D array, compute the path of least elevation change using a greedy algorithm, and visualise the path with the ColorGrid class. most difficult
+ java
+
+ real-world data path finding
+ Command line arguments Traversing 2D arrays Reading files Greedy algorithm ColorGrid (BRIDGES class for pixel-based graphics)
+ Bridges ColorGrid Color
+ `,
+
+ "earthquake-linked-list" : `
+ Earthquake Linked List Generate a singly linked list containing real-time earthquake data. Students create a linked list using real-time earthquake data from the US Geological Survey. This project involves reading source code and arranging code segments in the correct order. more difficult
+ java
+ python
+ real-world data linked list
+ Linked lists Reading source code API usage Element class EarthquakeUSGS class
+ Bridges Element EarthquakeUSGS SLelement
+ `,
+
+ "us-cities-map" : `
+ US Cities Map Create a Map of Cities in the US Use information stored in the bridges library to create a map of the cities in the United States. You will learn the basics of how hashmaps work as well as creating graphs in bridges. more difficult
+ java
+
+ real-world data
+ City Class Hashmap Element Class GraphAdjList
+ Bridges Element GraphAdjList City
+ `,
+
+ "maze-generator" : `
+ Maze Generator Build solvable mazes with a random-branching algorithm. In this project, students use an algorithm to randomly generate mazes, and display them with the BRIDGES ColorGrid class. The maze is stored as a two-dimensional array of cells. It starts with a single cell in the center, and then branches randomly until the entire grid is filled. more difficult
+ java
+
+ 2d grid
+ Enumerations Arraylists 2D arrays Nested loops API usage Methods Conditionals
+ Bridges ColorGrid Color
+ `,
+
+ "interpreter" : `
+ Interpreter Create your own programming language. In this project, students will create an interpreter for a simple programming language. The interpreter will parse a file into a list of commands, and then execute the commands, using BRIDGES to create circles, polygons, and lines. most difficult
+ java
+
+ vector graphics parsing
+ Command line arguments Try and catch blocks Reading files StringBuilder class String parsing Arraylists BRIDGES SymbolCollection API
+ Bridges SymbolCollection Symbol Circle Rectangle Polygon Polyline Text
+ `,
+
+ "street-map" : `
+ Street Map Use Dijkstra's algorithm to find the shortest path across a city. A graph is a mathematical object consisting of connections (edges) between points (vertices). Graphs are used fairly often in computer science, because they can model many of the networks that arise from real-world data. In this project, we will use a technique called Dijkstra's algorithm to find the shortest path across a city. most difficult
+ java
+
+ real-world data path finding
+ Graphs Dijkstra's algorithm Records Nested classes Hash-maps and hash-sets API usage
+ Bridges Color Element GraphAdjList Edge DataSource OsmVertex OsmEdge
+ `,
+
+}
+
+function normalise(str) {
+ return str.trim().replace(/\s+/g, " ").toLowerCase()
+}
+
+for(const key in searchData) {
+ searchData[key] = normalise(searchData[key])
+}
+
+document.getElementById("search").oninput = function() {
+ const terms = normalise(this.value)
+ for(const key in searchData) {
+ document.getElementById(key).style.display =
+ searchData[key].includes(terms)
+ ? '' : 'none'
+ }
+}
diff --git a/assignments/shape-collection/index.html b/assignments/shape-collection/index.html
new file mode 100644
index 0000000..f7b9aab
--- /dev/null
+++ b/assignments/shape-collection/index.html
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+Shape Collection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Shape Collection | BRIDGES High School
+
+
+
+
+
+
+
+
+
+
+
Draw circles, rectangles, polygons, and text with the Bridges SymbolCollection class.
+
+
+
Topics
+
+
+
Reading source code
+
+
API usage
+
+
Creating objects
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
The BRIDGES library has a class called ColorGrid that allows you to represent an image as a grid of colored cells. The programmer defines the number of rows, number of columns, and default color. In this project, you will use iteration to create layers of squares until the entire grid is filled.
+
+
+
Topics
+
+
+
Nested loops
+
+
2D arrays
+
+
Conditionals
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Represent branching logical processes with conditional statements. (AP CS A Unit 3, CON-2.C)
+
+
Apply: Use understanding of rows and columns while creating algorithms for nested iteration. (AP CS A Unit 4, CON-2.C, CON-2.E, CON-2.G)
+
+
Apply: Use understanding of "out of bounds" errors when debugging code. (AP CS A Unit 8, CON-2.N)
+
+
Apply: Use API documentation to figure out how to use Java library classes.
+
+
Apply: Use documentation and class headers to determine inheritance relationships. (AP CS A Unit 9, MOD-3.B)
+
+
Create: Apply programming skills to avoid out-of-bounds errors and test for requirements when generating intricate repeating patterns within a 2D grid.
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
A graph is a mathematical object consisting of connections (edges) between points (vertices). Graphs are used fairly often in computer science, because they can model many of the networks that arise from real-world data. In this project, we will use a technique called Dijkstra's algorithm to find the shortest path across a city.
+
+
+
Topics
+
+
+
Graphs
+
+
Dijkstra's algorithm
+
+
Records
+
+
Nested classes
+
+
Hash-maps and hash-sets
+
+
API usage
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Sudoku is a puzzle game played on a 9 by 9 grid. The objective is to fill the grid with numbers such that each row, column, and 3 by 3 subgrid contains every number from 1 to 9. The game starts with the grid partially completed so that there is only a single solution. In this project, you will create your own sudoku game using the BRIDGES Java API.
+
+
+
Topics
+
+
+
Nested loops
+
+
2D arrays
+
+
Booleans and conditionals
+
+
Reading source code
+
+
API usage
+
+
+
+
+
Intended learning outcomes
+
+
+
Apply: Use an API reference in order to learn how to use Java classes.
+
+
Apply: Use understanding of 2D arrays, rows, and columns while creating algorithms for nested iteration. (AP CS A Unit 4, CON-2.C, CON-2.E, CON-2.G)
+
+
Apply: Represent branching logical processes through development of complex conditionals. (AP CS A Unit 3, CON-2.C)
+
+
Apply: Demonstrate perseverance while using APIs and other resources when independently developing programming skills.
+
+
Understand: Describe how parallel arrays can be used to keep track of changing properties.
+
+
Create: Apply the above cognitive skills with 2D data structures when developing original solutions and conducting requirements testing.
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
In this project, you will use the NonBlockingGame class to make a two-player video game. Each player controls a snake that gets longer and longer, and when one player crashes into something, the other person wins.
+
+
+
Topics
+
+
+
ArrayLists
+
+
Classes
+
+
Loops
+
+
Booleans and conditionals
+
+
NonBlockingGame class
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
Use information stored in the bridges library to create a map of the cities in the United States. You will learn the basics of how hashmaps work as well as creating graphs in bridges.
+
+
+
Topics
+
+
+
City Class
+
+
Hashmap
+
+
Element Class
+
+
GraphAdjList
+
+
+
+
+
+
Instructional materials
+
+
+ BRIDGES instructors:
+ To access teacher files or solution files, use the Bridges_Users Shared Drive.
+ If you do not already have access, please contact iuse-bridges-group@uncc.edu.
+
+ Engaging Java learners with visualizations and real-world data
+
+
+
+ BRIDGES empowers educators to teach computer science in meaningful ways.
+ Through easy-to-use interfaces to real-world data, students can create
+ projects applicable to real life in their first year of computer science.
+ Instructional materials tailored to the high school classroom make
+ implementation seamless.
+
+ Welcome to the high school section of the NSF BRIDGES project at UNCC! This website is intended to help
+ high school teachers implement BRIDGES assignments in their classrooms. This article provides a concise
+ overview and explanation of the website.
+
+
+ If you have not already set up BRIDGES with your IDE, now is a good time to do so. If you are using CS50, a tutorial is available
+ here. If you are using any other IDE, a tutorial is available here.
+
+
+
+ Note: The high school section of BRIDGES only uses the Java programming language.
+
+
+
+
Projects
+
+ Project-based learning is the foundation of BRIDGES. Each assignment is designed to teach computer
+ science concepts. An assignment page has the following structure:
+
+
+
Description: This provides a basic overview of the project.
+
+
Details / concept explanation: Some assignments require further
+ information or explanation about a specific topic. This section is optional, and most assignments do
+ not include it.
+
+
Topics: This is a list of all the topics covered in the assignment.
+
+
Intended learning outcomes: Each assignment has been designed with specific ILOs in
+ mind. It is important to note that the ILOs are written with the assumption that all instructional
+ materials (see below) are used. So, if you adapt the assignment, the ILOs may change.
+
+
Instructional materials: This is the most important part of the assignment page.
+ The instructional materials consist of three sections: student, teacher, and resources.
+
+
+
Student: Each assignment includes a student worksheet which consists of
+ instructions, information, and questions for students as they program. The worksheets enable
+ students to work at their own pace, and the questions help you assess student understanding of
+ concepts. You can adapt these worksheets to meet the needs of your classroom.
+ Additionally, some assignments include test cases or example outputs to help students check
+ their work.
+
+
+
Teacher: Some of the more challenging assignments come with a teacher walkthrough
+ explaining the code and worksheet. Some assignments also include a rubric which you can
+ change if you wish.
+
+
Resources: The resource section can vary significantly depending on the
+ project, but it will always include solution files and scaffold files. The scaffold is what you
+ provide to students, and the solution is the finished product. Scaffolds usually include
+ directions or assistance that correspond to the student worksheet. Additionally, the resources
+ section sometimes includes data files, additional tutorials, and links embedded in the student
+ worksheet.
+
+
+
+
Documentation: The documentation section provides links to all the relevant BRIDGES
+ classes used in the assignment. It is usually necessary to read documentation in order to complete the
+ student worksheet.