diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 25fdd00ea..371eea9c7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,19 +9,23 @@ updates: directory: "/" schedule: interval: "daily" - open-pull-requests-limit: 10 + open-pull-requests-limit: 999 - package-ecosystem: "npm" directory: "/csunplugged/" schedule: interval: "daily" - open-pull-requests-limit: 10 + open-pull-requests-limit: 999 - package-ecosystem: "pip" directory: "/" schedule: interval: "daily" - open-pull-requests-limit: 10 + open-pull-requests-limit: 999 + ignore: + # Ignore updates to Django package until LTS version + - dependency-name: "django" + versions: ["4.0.X", "4.1.X", "5.0.X", "5.1.X", "6.0.X", "6.1.X", "7.0.X", "7.1.X"] - package-ecosystem: "github-actions" directory: "/" schedule: interval: "daily" - open-pull-requests-limit: 10 + open-pull-requests-limit: 999 diff --git a/.github/workflows/auto-merge-dependency-updates.yaml b/.github/workflows/auto-merge-dependency-updates.yaml new file mode 100644 index 000000000..53f271eaa --- /dev/null +++ b/.github/workflows/auto-merge-dependency-updates.yaml @@ -0,0 +1,30 @@ +name: Auto-merge minor dependency updates + +on: pull_request + +permissions: + pull-requests: write + contents: write + +jobs: + check-pull-request: + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v1.3.3 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + - name: Approve + if: ${{steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch'}} + run: gh pr review --body "Automatic approval for minor dependency update." --approve "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + - name: Merge + if: ${{steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch'}} + run: gh pr merge --auto --merge "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/crowdin-actions.yaml b/.github/workflows/crowdin-actions.yaml index 859d55ba7..fb25df266 100644 --- a/.github/workflows/crowdin-actions.yaml +++ b/.github/workflows/crowdin-actions.yaml @@ -16,15 +16,15 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Upload or update source files to Crowdin - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: true - name: Download Chinese (simplified) translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true @@ -42,7 +42,7 @@ jobs: config: crowdin.yaml - name: Download French translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true @@ -60,7 +60,7 @@ jobs: config: crowdin.yaml - name: Download German translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true @@ -78,7 +78,7 @@ jobs: config: crowdin.yaml - name: Download Indonesian translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true @@ -96,7 +96,7 @@ jobs: config: crowdin.yaml - name: Download Italian translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true @@ -114,7 +114,7 @@ jobs: config: crowdin.yaml - name: Download Te Reo Māori translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true @@ -132,7 +132,7 @@ jobs: config: crowdin.yaml - name: Download Turkish translations - uses: crowdin/github-action@1.4.6 + uses: crowdin/github-action@1.4.12 with: upload_sources: false download_translations: true diff --git a/.github/workflows/test-and-deploy.yaml b/.github/workflows/test-and-deploy.yaml index 4aac92b0f..d777b275f 100644 --- a/.github/workflows/test-and-deploy.yaml +++ b/.github/workflows/test-and-deploy.yaml @@ -16,70 +16,91 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Create Docker network - run: docker network create uccser-development-proxy + run: docker network create uccser-development-stack - name: Start systems - run: docker-compose -f docker-compose.local.yml up -d + run: docker compose -f docker-compose.local.yml up -d - name: Run Django system check - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py check --fail-level WARNING + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py check --fail-level WARNING test-content: name: Tests - Content runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Create Docker network - run: docker network create uccser-development-proxy + run: docker network create uccser-development-stack - name: Start systems - run: docker-compose -f docker-compose.local.yml up -d + run: docker compose -f docker-compose.local.yml up -d - name: Create static files - run: docker-compose -f docker-compose.local.yml run --rm --user="root" node npm run generate-assets + run: docker compose -f docker-compose.local.yml run --rm --user="root" node npm run generate-assets - name: Collect static files - run: docker-compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py collectstatic --no-input + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py collectstatic --no-input - name: Migrate database - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py migrate + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py migrate - name: Load content - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py updatedata + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py updatedata - name: Make resource thumbnails - run: docker-compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py makeresourcethumbnails + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py makeresourcethumbnails - name: Collect static files - run: docker-compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py collectstatic --no-input + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py collectstatic --no-input test-general: name: Tests - General runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run general tests run: ./dev ci test_general + - name: Create coverage file + run: docker compose -f docker-compose.local.yml run --rm --user="root" django coverage xml -i + - name: Upload coverage file + uses: codecov/codecov-action@v3 + with: + files: ./csunplugged/coverage.xml + verbose: true test-resources: name: Tests - Resources runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run resource tests run: ./dev ci test_resources + - name: Create coverage file + run: docker compose -f docker-compose.local.yml run --rm --user="root" django coverage xml -i + - name: Upload coverage file + uses: codecov/codecov-action@v3 + with: + files: ./csunplugged/coverage.xml + verbose: true test-management: name: Tests - Management runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run management tests run: ./dev ci test_management + - name: Create coverage file + run: docker compose -f docker-compose.local.yml run --rm --user="root" django coverage xml -i + - name: Upload coverage file + uses: codecov/codecov-action@v3 + with: + files: ./csunplugged/coverage.xml + verbose: true test-style: name: Tests - Style runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run style tests run: ./dev ci style @@ -88,7 +109,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v2 with: @@ -118,25 +139,25 @@ jobs: ] steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Create Docker network - run: docker network create uccser-development-proxy + run: docker network create uccser-development-stack - name: Start system - run: docker-compose -f docker-compose.local.yml up -d + run: docker compose -f docker-compose.local.yml up -d - name: Create production static files - run: docker-compose -f docker-compose.local.yml run --rm --user="root" node npm run build + run: docker compose -f docker-compose.local.yml run --rm --user="root" node npm run build - name: Collect staticfiles - run: docker-compose -f docker-compose.local.yml run --rm --user="root" django python manage.py collectstatic --no-input + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python manage.py collectstatic --no-input - name: Archive static files run: tar czf static-files.tar.gz --directory csunplugged/staticfiles/ . - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: static-files path: static-files.tar.gz @@ -160,36 +181,97 @@ jobs: ] steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Create Docker network - run: docker network create uccser-development-proxy + run: docker network create uccser-development-stack - name: Start system - run: docker-compose -f docker-compose.local.yml up -d + run: docker compose -f docker-compose.local.yml up -d - name: Create production static files - run: docker-compose -f docker-compose.local.yml run --rm --user="root" node npm run build + run: docker compose -f docker-compose.local.yml run --rm --user="root" node npm run build - name: Migrate database - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py migrate + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py migrate - name: Load resources - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py loadresources + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py loadresources - name: Make resource thumbnails - run: docker-compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py makeresourcethumbnails --all-languages + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py makeresourcethumbnails --all-languages - name: Archive static files run: tar czf resource-thumbnails.tar.gz --directory csunplugged/build/img/resources/ . - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: resource-thumbnails path: resource-thumbnails.tar.gz retention-days: 3 + create-at-a-distance-files: + name: Create at a distance files + if: | + (github.ref == 'refs/heads/develop') + || startsWith(github.ref, 'refs/heads/research-study-') + || github.event_name == 'release' + runs-on: ubuntu-20.04 + strategy: + matrix: + language: [ + 'en', + ] + fail-fast: true + + needs: [ + test-django-system-check, + test-content, + test-general, + test-resources, + test-management, + test-style, + test-docs + ] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Create Docker network + run: docker network create uccser-development-stack + + - name: Start system + run: docker compose -f docker-compose.local.yml up -d + + - name: Create standard static files + run: docker compose -f docker-compose.local.yml run --rm --user="root" node npm run generate-assets + + - name: Collect staticfiles + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python manage.py collectstatic --no-input + + - name: Migrate database + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py migrate + + - name: Load at a distance data + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py load_at_a_distance_data + + - name: Run decktape script + run: docker compose -f docker-compose.local.yml run --rm --user="root" decktape --language ${{ matrix.language }} + + - name: Create speaker notes PDFs + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py create_lesson_speaker_notes_pdfs --language ${{ matrix.language }} + + - name: Archive static files + run: tar czf at-a-distance-files.tar.gz --directory csunplugged/build/slides/ . + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: at-a-distance-files-${{ matrix.language }} + path: at-a-distance-files.tar.gz + retention-days: 3 + create-resources: name: Create resources if: | @@ -219,31 +301,31 @@ jobs: ] steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Create Docker network - run: docker network create uccser-development-proxy + run: docker network create uccser-development-stack - name: Start system - run: docker-compose -f docker-compose.local.yml up -d + run: docker compose -f docker-compose.local.yml up -d - name: Create production static files - run: docker-compose -f docker-compose.local.yml run --rm --user="root" node npm run build + run: docker compose -f docker-compose.local.yml run --rm --user="root" node npm run build - name: Migrate database - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py migrate + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py migrate - name: Load resources - run: docker-compose -f docker-compose.local.yml run --rm django python ./manage.py loadresources + run: docker compose -f docker-compose.local.yml run --rm django python ./manage.py loadresources - name: Make resources - run: docker-compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py makeresources --language ${{ matrix.language }} + run: docker compose -f docker-compose.local.yml run --rm --user="root" django python ./manage.py makeresources --language ${{ matrix.language }} - name: Archive static files run: tar czf resources.tar.gz --directory csunplugged/build/resources/ . - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: resources-${{ matrix.language }} path: resources.tar.gz @@ -260,13 +342,14 @@ jobs: create-static-files, create-resource-thumbnails, create-resources, + create-at-a-distance-files, ] steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Download all workflow run artifacts - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: path: artifacts/ @@ -281,9 +364,11 @@ jobs: tar -xz --file artifacts/resource-thumbnails/resource-thumbnails.tar.gz --directory csunplugged/staticfiles/img/resources mkdir -p csunplugged/staticfiles/resources ls artifacts/resources-*/resources.tar.gz | xargs -n1 tar -xz --directory csunplugged/staticfiles/resources --file + mkdir -p csunplugged/staticfiles/slides + ls artifacts/at-a-distance-files-*/at-a-distance-files.tar.gz | xargs -n1 tar -xz --directory csunplugged/staticfiles/slides --file - name: Log in to the Container registry - uses: docker/login-action@v1.12.0 + uses: docker/login-action@v2.0.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -291,7 +376,7 @@ jobs: - name: Setup Docker metadata id: meta - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v4 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | diff --git a/LICENCE b/LICENCE index a472b2d64..08c45d33b 100644 --- a/LICENCE +++ b/LICENCE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016-2017 University of Canterbury Computer Science Education Research Group +Copyright (c) 2016-2022 University of Canterbury Computer Science Education Research Group 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/LICENCE-THIRD-PARTY b/LICENCE-THIRD-PARTY index d2d64d2aa..8a5cb2a70 100644 --- a/LICENCE-THIRD-PARTY +++ b/LICENCE-THIRD-PARTY @@ -31,6 +31,17 @@ Licensed under Apache License Version 2.0 License. third-party-licenses/coverage.txt ============================================================================== +============================================================================== +CS Unplugged Headings +------------------------------------------------------------------------------ +https://github.com/uccser/cs-unplugged-font +Copyright (c) 2008, Haley Fiege (haley@kingdomofawesome.com) +Copyright (c) 2012, Brenda Gallo (gbrenda1987@gmail.com) +Copyright (c) 2013, Pablo Impallari (www.impallari.com|impallari@gmail.com) +Copyright (c) 2022, University of Canterbury Computer Science Education Research Group (https://github.com/uccser/cs-unplugged-font|csse-education-research@canterbury.ac.nz) +Licensed under SIL Open Font License, Version 1.1. +============================================================================== + ============================================================================== details-element-polyfill ------------------------------------------------------------------------------ @@ -261,16 +272,6 @@ Licensed under MIT License. third-party-licenses/pyyaml.txt ============================================================================== -============================================================================== -Sniglet ------------------------------------------------------------------------------- -https://fonts.google.com/specimen/Sniglet -https://github.com/theleagueof/sniglet -Copyright (c) 2008 Haley Fiege -Licensed under SIL Open Font License, Version 1.1. -third-party-licenses/sniglet.txt -============================================================================== - ============================================================================== Sphinx ------------------------------------------------------------------------------ diff --git a/crowdin.yaml b/crowdin.yaml index cbbe15d03..ea2627aa0 100644 --- a/crowdin.yaml +++ b/crowdin.yaml @@ -10,7 +10,6 @@ files: [ two_letters_code: { zh-CN: zh_Hans, zh-TW: zh_Hant, - en-UD: xx_LR, } } }, @@ -21,7 +20,6 @@ files: [ two_letters_code: { zh-CN: zh_Hans, zh-TW: zh_Hant, - en-UD: xx_LR, } } }, @@ -32,7 +30,6 @@ files: [ two_letters_code: { zh-CN: zh_Hans, zh-TW: zh_Hant, - en-UD: xx_LR, } } }, @@ -43,7 +40,6 @@ files: [ two_letters_code: { zh-CN: zh_Hans, zh-TW: zh_Hant, - en-UD: xx_LR, } } }, @@ -54,7 +50,6 @@ files: [ two_letters_code: { zh-CN: zh_Hans, zh-TW: zh_Hant, - en-UD: xx_LR, } } }, diff --git a/csunplugged/.coveragerc b/csunplugged/.coveragerc index 952af223b..27883a0cd 100644 --- a/csunplugged/.coveragerc +++ b/csunplugged/.coveragerc @@ -1,25 +1,12 @@ [run] branch = True -source = - classic - config - general - locale - resources - search - static - templates - topics - utils - plugging_it_in +source = . omit = # Omit migration files */migrations/* - # Omit settings files for local and production environments - # TODO: Add integration tests for local and production environments - */config/settings/* # Omit pregenerated files - */config/wsgi.py + config/wsgi.py + manage.py [report] fail_under=20 diff --git a/csunplugged/at_a_distance/__init__.py b/csunplugged/at_a_distance/__init__.py new file mode 100644 index 000000000..cf6819cd4 --- /dev/null +++ b/csunplugged/at_a_distance/__init__.py @@ -0,0 +1 @@ +"""Module for the at a distance section of the CS Unplugged website.""" diff --git a/csunplugged/at_a_distance/apps.py b/csunplugged/at_a_distance/apps.py new file mode 100644 index 000000000..ff911f120 --- /dev/null +++ b/csunplugged/at_a_distance/apps.py @@ -0,0 +1,9 @@ +"""Application configuration for the at a distance application.""" + +from django.apps import AppConfig + + +class AtADistanceConfig(AppConfig): + """Configuration object for the at a distance application.""" + + name = "at_a_distance" diff --git a/csunplugged/at_a_distance/content/en/algorithms/introduction.md b/csunplugged/at_a_distance/content/en/algorithms/introduction.md new file mode 100644 index 000000000..cff1cfdc4 --- /dev/null +++ b/csunplugged/at_a_distance/content/en/algorithms/introduction.md @@ -0,0 +1,21 @@ +# Algorithms + +The term "algorithm" comes up a lot these days - they are fundamental to how we write programs for computers. +But what is an algorithm? +They can be hard to define in a satisfying way, so in this activity we will learn by doing - students get to solve a simple problem, and then use that experience to articulate what the algorithm is that they used, and in turn, distinguish an algorithm from a computer program. + +## Facilitator preparation + +If you aren’t familiar with this activity, review the following here: + +- [Watch the video on the introduction page](https://www.csfieldguide.org.nz/en/chapters/algorithms/) of the CS Field Guide for an overview of what an algorithm is. +- Read the first 5 paragraphs and have a trial run of the High Score boxes interactive in [CS Field Guide: Algorithms, programs and informal instructions](https://www.csfieldguide.org.nz/en/chapters/algorithms/whats-the-big-picture/#algorithms-programs-and-informal-instructions). + +### Preparation and teaching resources: + +- Read through the [guide on how to deliver this content]('at_a_distance:delivery-guide'). +- Prepare the lesson and practice it in the video conference software that you are going to present with. + +### Resources: + +- Paper and pen to record first number revealed. diff --git a/csunplugged/at_a_distance/content/en/algorithms/supporting-resources.yaml b/csunplugged/at_a_distance/content/en/algorithms/supporting-resources.yaml new file mode 100644 index 000000000..1db8e9fd7 --- /dev/null +++ b/csunplugged/at_a_distance/content/en/algorithms/supporting-resources.yaml @@ -0,0 +1,4 @@ +- text: Computer Science Field Guide on Algorithms + url: https://www.csfieldguide.org.nz/en/chapters/algorithms/ +- text: High score interactive + url: https://www.csfieldguide.org.nz/en/interactives/high-score-boxes/ diff --git a/csunplugged/at_a_distance/content/en/binary-representation/introduction.md b/csunplugged/at_a_distance/content/en/binary-representation/introduction.md new file mode 100644 index 000000000..a6ee54b7d --- /dev/null +++ b/csunplugged/at_a_distance/content/en/binary-representation/introduction.md @@ -0,0 +1,15 @@ +# Binary Representation + +All data on computers is represented as digits - that's why we call them digital devices! +The digits on computers are incredibly simple - they have just two values (usually written as 0 and 1), because it's cheaper and faster to build devices that way. +Using this two-digit (i.e. Binary) system is the basis of all data stored on computers, and all data transmitted on the internet. +The Binary Representation activity explores how it is possible to represent all sorts of things - numbers, letters, dates and more - using such simple digits. +At the same time, we'll be reinforcing some basic facts from mathematics, and getting a new view of our own decimal digit system. + +## Facilitator preparation + +- If you aren’t familiar with this unplugged activity, review the [in-person version of the lessons]('topics:topic' 'binary-numbers'). +- Work out your birth month, or a month you want to use, in binary i.e. ‘no, yes, no, yes, no’ for October. +- Optional: Ask participants to make a set of binary cards as a task prior to the session, so they can experience binary cards first hand. +- Optional: Instead of using the interactive binary cards, you could use a document reader to demonstrate binary representation. + Using a document camera is closer to the way that it would be done physically in a classroom; if you use the online interactive, you should emphasise that in practice it’s good to have a set of cards, and at least hold up a set to your camera to show what the online version is simulating. diff --git a/csunplugged/at_a_distance/content/en/binary-representation/supporting-resources.yaml b/csunplugged/at_a_distance/content/en/binary-representation/supporting-resources.yaml new file mode 100644 index 000000000..e17b1ee19 --- /dev/null +++ b/csunplugged/at_a_distance/content/en/binary-representation/supporting-resources.yaml @@ -0,0 +1,2 @@ +- text: Binary Cards interactive + url: https://www.csfieldguide.org.nz/en/interactives/binary-cards/ diff --git a/csunplugged/at_a_distance/content/en/finite-state-automata/introduction.md b/csunplugged/at_a_distance/content/en/finite-state-automata/introduction.md new file mode 100644 index 000000000..e6e52c02c --- /dev/null +++ b/csunplugged/at_a_distance/content/en/finite-state-automata/introduction.md @@ -0,0 +1,13 @@ +# Finite State Automata + +Finite State Automata (or FSA for short) is a very engaging topic from computer science for students, as it can be presented based on following simple maps. +Yet it appears in advanced computer science courses because it opens all sorts of possibilities and answers the very idea of what computing is! +In fact, the FSA is behind some deep philosophical reasoning about the limits of what computers can do. +For our purposes, it's a fun exercise in reasoning that has some widely used everyday applications. + +## Facilitator preparation + +- Prepare the lessons and trial them with the video conference software that you are going to present with. +- If you aren’t familiar with this activity there is a written description in the classic section of the CS Unplugged website called [Finite State Automata - Treasure Hunt](https://classic.csunplugged.org/activities/finite-state-automata/), and you can see it in action in the [Treasure Hunt](https://www.youtube.com/watch?v=8kagtp2gWhU) video (this version is based on a commuting service run by pirates!). + A slightly different version based on a commuter train service is in the “Formal Languages” chapter of the Computer Science Field Guide, which is aimed at high school students; you can find it in the section on [finite state automata](https://www.csfieldguide.org.nz/en/chapters/formal-languages/finite-state-automata/). +- The interactive web page that we use for distance teaching is from here: [Computer Science Field Guide Trainsylvania interactive](https://www.csfieldguide.org.nz/en/interactives/trainsylvania/). diff --git a/csunplugged/at_a_distance/content/en/finite-state-automata/supporting-resources.yaml b/csunplugged/at_a_distance/content/en/finite-state-automata/supporting-resources.yaml new file mode 100644 index 000000000..b3a7b850d --- /dev/null +++ b/csunplugged/at_a_distance/content/en/finite-state-automata/supporting-resources.yaml @@ -0,0 +1,8 @@ +- text: Classic CS Unplugged - Treasure Hunt activity + url: https://classic.csunplugged.org/activities/finite-state-automata/ +- text: Classic CS Unplugged - Video on FSA + url: https://classic.csunplugged.org/videos/#finite-state-automata +- text: Supporting high school learning - Computer Science Field Guide + url: https://csfieldguide.org.nz/en/chapters/formal-languages/finite-state-automata/ +- text: Video supporting high school learning - Regular Languages (especially up to 4:13) + url: https://www.youtube.com/watch?v=PK3wL7DXuuw diff --git a/csunplugged/at_a_distance/content/en/parity-magic/introduction.md b/csunplugged/at_a_distance/content/en/parity-magic/introduction.md new file mode 100644 index 000000000..93d06fcd9 --- /dev/null +++ b/csunplugged/at_a_distance/content/en/parity-magic/introduction.md @@ -0,0 +1,9 @@ +# Parity Magic + +This activity involves a 'magic trick' that makes the audience think you have an amazing memory, while at the same time revealing an idea that is used to protect the data we use on digital devices. +The data stored on a computer and transmitted on the internet uses very vulnerable media - tiny magnetised particles on magnetic disks, small charges of electricity, and rapid pulses of light, so it is very easy for some of the data to change unintentionally, perhaps because of electrical interference or imperfections in the way a device has been made. +Error control is a clever idea that enables computers to put data back to how it was before it was messed up, usually without the person using the system even knowing that it has happened. + +## Facilitator preparation + +- If you aren’t familiar with this unplugged activity, you can review the in-person version in the [Error detection and correction topic]('topics:topic' 'error-detection-and-correction'). diff --git a/csunplugged/at_a_distance/content/en/stroop-effect/introduction.md b/csunplugged/at_a_distance/content/en/stroop-effect/introduction.md new file mode 100644 index 000000000..ab689db8c --- /dev/null +++ b/csunplugged/at_a_distance/content/en/stroop-effect/introduction.md @@ -0,0 +1,11 @@ +# The Stroop Effect + +Ask someone if they have ever been frustrated using a computer, and you'll probably be given many examples. +Often this is because computer interfaces have been badly designed, and don't take account of how people think and interact with computers. +This exercise turns things around, and uses a deliberately bad design to see how much people are slowed down when given clear but hard-to-process instructions. +It's a lot of fun when you're deliberately tricking people, but it sheds light on how important it is that computer interfaces are created so that the user feels the computer is helping, and not hindering them. + +## Facilitator preparation + +- If you aren’t familiar with this unplugged activity, you can review the in-person version in Section 9.1 of the [EdX MOOC: Teaching Computational Thinking](https://www.edx.org/course/teaching-computational-thinking). +- Create your coloured word list in your participants’ first language (if you use English and it’s not their first language, it can be easier to say the colours, and the point is to make it confusing!) diff --git a/csunplugged/at_a_distance/content/en/stroop-effect/supporting-resources.yaml b/csunplugged/at_a_distance/content/en/stroop-effect/supporting-resources.yaml new file mode 100644 index 000000000..4e0265ffb --- /dev/null +++ b/csunplugged/at_a_distance/content/en/stroop-effect/supporting-resources.yaml @@ -0,0 +1,4 @@ +- text: Online Course (MOOC) - Teaching Computational Thinking (Section 9) + url: https://www.edx.org/course/teaching-computational-thinking +- text: Computer Science Field Guide - Human Computer Interaction + url: https://www.csfieldguide.org.nz/en/chapters/human-computer-interaction/ diff --git a/csunplugged/at_a_distance/content/structure/algorithms/algorithms.yaml b/csunplugged/at_a_distance/content/structure/algorithms/algorithms.yaml new file mode 100644 index 000000000..06455f3ee --- /dev/null +++ b/csunplugged/at_a_distance/content/structure/algorithms/algorithms.yaml @@ -0,0 +1,4 @@ +# icon: img/at_a_distance/algorithms/algorithms-icon.svg +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable +supporting-resources: true diff --git a/csunplugged/at_a_distance/content/structure/binary-representation/binary-representation.yaml b/csunplugged/at_a_distance/content/structure/binary-representation/binary-representation.yaml new file mode 100644 index 000000000..63c72874f --- /dev/null +++ b/csunplugged/at_a_distance/content/structure/binary-representation/binary-representation.yaml @@ -0,0 +1,4 @@ +# icon: img/at_a_distance/binary-representation/binary-representation-icon.svg +suitable-for-teaching-students: not-recommended +suitable-for-teaching-educators: suitable +supporting-resources: true diff --git a/csunplugged/at_a_distance/content/structure/stroop-effect/stroop-effect.yaml b/csunplugged/at_a_distance/content/structure/stroop-effect/stroop-effect.yaml new file mode 100644 index 000000000..930221276 --- /dev/null +++ b/csunplugged/at_a_distance/content/structure/stroop-effect/stroop-effect.yaml @@ -0,0 +1,4 @@ +# icon: img/at_a_distance/stroop-effect/stroop-effect-icon.svg +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable +supporting-resources: true diff --git a/csunplugged/at_a_distance/content/structure/structure.yaml b/csunplugged/at_a_distance/content/structure/structure.yaml new file mode 100644 index 000000000..3b1a95215 --- /dev/null +++ b/csunplugged/at_a_distance/content/structure/structure.yaml @@ -0,0 +1,10 @@ +lessons: + - stroop-effect + - algorithms + - binary-representation + # - parity-magic + # - qr-codes + # - product-code-check-digits + # - image-representation + # - information-theory + # - finite-state-automata diff --git a/csunplugged/at_a_distance/management/__init__.py b/csunplugged/at_a_distance/management/__init__.py new file mode 100644 index 000000000..40b59d043 --- /dev/null +++ b/csunplugged/at_a_distance/management/__init__.py @@ -0,0 +1 @@ +"""Module for the management of the at a distance application.""" diff --git a/csunplugged/at_a_distance/management/commands/_LessonLoader.py b/csunplugged/at_a_distance/management/commands/_LessonLoader.py new file mode 100644 index 000000000..0737d2f75 --- /dev/null +++ b/csunplugged/at_a_distance/management/commands/_LessonLoader.py @@ -0,0 +1,148 @@ +"""Custom loader for loading an at a distance lesson.""" + +from django.db import transaction +from utils.TranslatableModelLoader import TranslatableModelLoader +from utils.check_required_files import find_image_files +from utils.errors.CouldNotFindYAMLFileError import CouldNotFindYAMLFileError +from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError +from utils.errors.InvalidYAMLValueError import InvalidYAMLValueError +from utils.language_utils import ( + get_available_languages, + get_default_language, +) +from at_a_distance.models import Lesson, SupportingResource +from at_a_distance.settings import ( + AT_A_DISTANCE_INTRODUCTION_FILENAME, + AT_A_DISTANCE_SUPPORTING_RESOURCES_FILENAME, +) + + +class AtADistanceLessonLoader(TranslatableModelLoader): + """Custom loader for loading an lesson.""" + + def __init__(self, lesson_number, **kwargs): + """Create the loader for loading a lesson. + + Args: + lesson_number: Number of the lesson (int). + """ + super().__init__(**kwargs) + self.lesson_number = lesson_number + self.lesson_slug = self.content_path + + @transaction.atomic + def load(self): + """Load the content for an at a distance lesson. + + Raise: + MissingRequiredFieldError: when no object can be found with the matching attribute. + """ + lesson_structure = self.load_yaml_file(self.structure_file_path) + + lesson_translations = self.get_blank_translation_dictionary() + + icon_path = lesson_structure.get('icon') + if icon_path: + find_image_files([icon_path], self.structure_file_path) + + # Suitability values + suitability_options = [i[0] for i in Lesson.SUITABILITY_CHOICES] + + try: + suitable_teaching_students = lesson_structure['suitable-for-teaching-students'] + except KeyError: + raise MissingRequiredFieldError( + self.structure_file_path, + [ + "suitable-for-teaching-students", + ], + "Lesson" + ) + else: + if suitable_teaching_students not in suitability_options: + raise InvalidYAMLValueError( + self.structure_file_path, + "suitable-for-teaching-students", + suitability_options, + ) + + try: + suitable_teaching_educators = lesson_structure['suitable-for-teaching-educators'] + except KeyError: + raise MissingRequiredFieldError( + self.structure_file_path, + [ + "suitable-for-teaching-educators", + ], + "Lesson" + ) + else: + if suitable_teaching_educators not in suitability_options: + raise InvalidYAMLValueError( + self.structure_file_path, + "suitable-for-teaching-educators", + suitability_options, + ) + + # Introduction content + content_translations = self.get_markdown_translations(AT_A_DISTANCE_INTRODUCTION_FILENAME) + for language, content in content_translations.items(): + lesson_translations[language]['name'] = content.title + lesson_translations[language]['introduction'] = content.html_string + + # Create or update lesson objects and save to the database + lesson, created = Lesson.objects.update_or_create( + slug=self.lesson_slug, + defaults={ + 'order_number': self.lesson_number, + 'icon': icon_path, + 'suitable_for_teaching_students': suitable_teaching_students, + 'suitable_for_teaching_educators': suitable_teaching_educators, + }, + ) + + self.populate_translations(lesson, lesson_translations) + self.mark_translation_availability(lesson, required_fields=['name', 'introduction']) + lesson.save() + + # Supporting resources + lesson.supporting_resources.all().delete() + supporting_resources = lesson_structure.get('supporting-resources') + if supporting_resources: + self.add_supporting_resource_translations(lesson) + + if created: + term = 'Created' + else: + term = 'Updated' + self.log(f'{term} At A Distance Lesson: {lesson}') + + def add_supporting_resource_translations(self, lesson): + """Get dictionary of translations of supporting resources. + + Returns: + Dictionary mapping language codes to HTML. + + Raises: + CouldNotFindYAMLFileError: If the requested file could not be found + in the /en directory tree + """ + for language in get_available_languages(): + yaml_file_path = self.get_localised_file( + language, + AT_A_DISTANCE_SUPPORTING_RESOURCES_FILENAME, + ) + try: + supporting_resources = self.load_yaml_file(yaml_file_path) + except CouldNotFindYAMLFileError: + if language == get_default_language(): + raise + else: + for (index, supporting_resource) in enumerate(supporting_resources): + SupportingResource.objects.create( + order_number=index, + text=supporting_resource['text'], + url=supporting_resource['url'], + language=language, + lesson=lesson, + ) diff --git a/csunplugged/at_a_distance/management/commands/__init__.py b/csunplugged/at_a_distance/management/commands/__init__.py new file mode 100644 index 000000000..cd538629a --- /dev/null +++ b/csunplugged/at_a_distance/management/commands/__init__.py @@ -0,0 +1 @@ +"""Module for the custom commands for the at a distance appliation.""" diff --git a/csunplugged/at_a_distance/management/commands/create_lesson_speaker_notes_pdfs.py b/csunplugged/at_a_distance/management/commands/create_lesson_speaker_notes_pdfs.py new file mode 100644 index 000000000..6b4542623 --- /dev/null +++ b/csunplugged/at_a_distance/management/commands/create_lesson_speaker_notes_pdfs.py @@ -0,0 +1,122 @@ +"""Module for the custom Django create_lesson_speaker_notes_pdfs command.""" + +import os.path +from django.conf import settings +from django.core.management.base import BaseCommand +from at_a_distance.models import Lesson +from at_a_distance.settings import ( + AT_A_DISTANCE_FILE_GENERATION_LOCATION, + AT_A_DISTANCE_SLIDE_RESOLUTION, +) +from at_a_distance.utils import get_lesson_speaker_notes +from django.template.loader import render_to_string + + +class Command(BaseCommand): + """Required command class for the custom Django create_lesson_speaker_notes_pdfs command.""" + + help = "Create PDF of lessons." + + def add_arguments(self, parser): + """Add optional parameter to create_lesson_speaker_notes_pdfs command.""" + parser.add_argument( + "--language", + default=None, + dest="language", + help="The language to generate speaker notes PDF for.", + ) + + def handle(self, *args, **options): + """Automatically called when the create_lesson_speaker_notes_pdfs command is given.""" + # If deployed, throw error + if settings.DEPLOYED: + raise Exception("The 'create_lesson_pdfs' command cannot be run when deployed") + + given_language_parameter = options["language"] + if given_language_parameter == 'all': + languages = settings.DEFAULT_LANGUAGES + print("Generating speaker notes PDF files for all languages") + elif given_language_parameter: + languages = [(given_language_parameter, "")] + print(f"Generating speaker notes PDF files for {given_language_parameter} only") + else: + languages = [("en", "")] + print("Generating speaker notes PDF files for 'en' only") + + for language_code, _ in languages: + for lesson in Lesson.objects.all(): + # Gather speaker notes + speaker_notes = get_lesson_speaker_notes(lesson) + + context = dict() + slides = [] + image_directory = os.path.join( + AT_A_DISTANCE_FILE_GENERATION_LOCATION, + language_code, + lesson.slug, + ) + filename = f"{lesson.slug}_{{}}_{AT_A_DISTANCE_SLIDE_RESOLUTION}.png" + + for (slide_number, speaker_note) in enumerate(speaker_notes, start=1): + slides.append( + { + 'number': slide_number, + 'image': os.path.join( + image_directory, + filename.format(slide_number), + ), + 'notes': speaker_note, + } + ) + context["slides"] = slides + + # Render to PDF using Weasyprint + (pdf_file, filename) = create_speaker_notes_pdf(lesson, context) + + pdf_directory = os.path.join( + AT_A_DISTANCE_FILE_GENERATION_LOCATION, + language_code, + lesson.slug, + ) + if not os.path.exists(pdf_directory): + os.makedirs(pdf_directory) + + filename = f"{filename}.pdf" + pdf_file_output = open(os.path.join(pdf_directory, filename), "wb") + pdf_file_output.write(pdf_file) + pdf_file_output.close() + print(f" - Created '{language_code}' speaker notes PDF for {lesson.slug}") + + +def create_speaker_notes_pdf(lesson, context): + """Return PDF for speaker notes lesson. + + Args: + lesson (Lesson): The lesson the PDF is related too. + context (dict): Data for rendering in the PDF. + + Return: + PDF file. + """ + # Only import weasyprint when required as production environment + # does not have it installed. + from weasyprint import HTML, CSS + + filename = f"{lesson.slug}-speaker-notes" + + context["lesson"] = lesson + context["filename"] = filename + + pdf_html = render_to_string( + "at_a_distance/components/base-speaker-notes-pdf.html", + context, + ) + html = HTML(string=pdf_html, base_url=settings.BUILD_ROOT) + css_file = os.path.join( + settings.BUILD_ROOT, + "css/at-a-distance/speaker-notes-pdf.print.css", + ) + css_string = open(css_file, encoding="UTF-8").read() + base_css = CSS(string=css_string) + pdf = html.write_pdf(stylesheets=[base_css]) + return (pdf, filename) diff --git a/csunplugged/at_a_distance/management/commands/load_at_a_distance_data.py b/csunplugged/at_a_distance/management/commands/load_at_a_distance_data.py new file mode 100644 index 000000000..8c05c15ed --- /dev/null +++ b/csunplugged/at_a_distance/management/commands/load_at_a_distance_data.py @@ -0,0 +1,58 @@ +"""Module for the custom Django load_at_a_distance_data command.""" + +import os.path +from django.core.management.base import BaseCommand +from django.conf import settings +from utils.BaseLoader import BaseLoader +from utils.LoaderFactory import LoaderFactory +from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError +from utils.errors.InvalidYAMLValueError import InvalidYAMLValueError + + +class Command(BaseCommand): + """Required command class for the custom Django load_at_a_distance_data command.""" + + help = "Loads load_at_a_distance_data content in database." + + def handle(self, *args, **options): + """Automatically called when the load_at_a_distance_data command is given. + + Raise: + MissingRequiredFieldError: when no object can be found with the matching + attribute. + """ + factory = LoaderFactory() + + # Get structure and content files + base_loader = BaseLoader() + base_path = settings.AT_A_DISTANCE_CONTENT_BASE_PATH + + structure_file_path = os.path.join( + base_path, + base_loader.structure_dir, + "structure.yaml" + ) + + structure_file = base_loader.load_yaml_file(structure_file_path) + + if structure_file.get("lessons", None) is None: + raise MissingRequiredFieldError( + structure_file_path, + ["lessons"], + "Application Structure" + ) + elif not isinstance(structure_file["lessons"], list): + raise InvalidYAMLValueError( + structure_file_path, + ["lessons"], + "list" + ) + else: + for lesson_number, lesson_slug in enumerate(structure_file["lessons"]): + lesson_structure_file = f"{lesson_slug}.yaml" + factory.create_at_a_distance_lesson_loader( + lesson_number, + base_path=base_path, + content_path=lesson_slug, + structure_filename=lesson_structure_file, + ).load() diff --git a/csunplugged/at_a_distance/migrations/0001_initial.py b/csunplugged/at_a_distance/migrations/0001_initial.py new file mode 100644 index 000000000..592414751 --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 3.2.13 on 2022-06-16 00:09 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Lesson', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('languages', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=10), default=list, size=None)), + ('slug', models.SlugField(max_length=100)), + ('name', models.CharField(default='', max_length=200)), + ('icon', models.CharField(max_length=150, null=True)), + ('order_number', models.PositiveSmallIntegerField(unique=True)), + ('introduction', models.TextField(default='')), + ('video', models.URLField(blank=True)), + ], + options={ + 'ordering': ['order_number'], + }, + ), + ] diff --git a/csunplugged/at_a_distance/migrations/0002_auto_20220616_0235.py b/csunplugged/at_a_distance/migrations/0002_auto_20220616_0235.py new file mode 100644 index 000000000..443c61a5a --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0002_auto_20220616_0235.py @@ -0,0 +1,93 @@ +# Generated by Django 3.2.13 on 2022-06-16 02:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_a_distance', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + name='introduction_de', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_en', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_es', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_fr', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_mi', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_xx_lr', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_yy_rl', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='introduction_zh_hans', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_de', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_en', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_es', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_fr', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_mi', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_xx_lr', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_yy_rl', + field=models.CharField(default='', max_length=200, null=True), + ), + migrations.AddField( + model_name='lesson', + name='name_zh_hans', + field=models.CharField(default='', max_length=200, null=True), + ), + ] diff --git a/csunplugged/at_a_distance/migrations/0003_supportingresource.py b/csunplugged/at_a_distance/migrations/0003_supportingresource.py new file mode 100644 index 000000000..cc4678f05 --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0003_supportingresource.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.13 on 2022-07-12 22:13 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_a_distance', '0002_auto_20220616_0235'), + ] + + operations = [ + migrations.CreateModel( + name='SupportingResource', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order_number', models.PositiveSmallIntegerField(unique=True)), + ('text', models.TextField()), + ('url', models.URLField()), + ('language', models.CharField(max_length=10)), + ('lesson', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='supporting_resources', to='at_a_distance.lesson')), + ], + options={ + 'ordering': ['order_number'], + }, + ), + ] diff --git a/csunplugged/at_a_distance/migrations/0004_alter_supportingresource_order_number.py b/csunplugged/at_a_distance/migrations/0004_alter_supportingresource_order_number.py new file mode 100644 index 000000000..4dff2efee --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0004_alter_supportingresource_order_number.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-07-12 22:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_a_distance', '0003_supportingresource'), + ] + + operations = [ + migrations.AlterField( + model_name='supportingresource', + name='order_number', + field=models.PositiveSmallIntegerField(), + ), + ] diff --git a/csunplugged/at_a_distance/migrations/0005_auto_20220726_0020.py b/csunplugged/at_a_distance/migrations/0005_auto_20220726_0020.py new file mode 100644 index 000000000..b1c6f6d0b --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0005_auto_20220726_0020.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.13 on 2022-07-26 00:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_a_distance', '0004_alter_supportingresource_order_number'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + name='suitable_for_teaching_educators', + field=models.CharField(choices=[('not-suitable', 'Not suitable'), ('suitable', 'Suitable'), ('not-recommended', 'Not recommended')], default='not-suitable', max_length=15), + ), + migrations.AddField( + model_name='lesson', + name='suitable_for_teaching_students', + field=models.CharField(choices=[('not-suitable', 'Not suitable'), ('suitable', 'Suitable'), ('not-recommended', 'Not recommended')], default='not-suitable', max_length=15), + ), + ] diff --git a/csunplugged/at_a_distance/migrations/0006_alter_lesson_order_number.py b/csunplugged/at_a_distance/migrations/0006_alter_lesson_order_number.py new file mode 100644 index 000000000..8694ee332 --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0006_alter_lesson_order_number.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-07-26 03:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_a_distance', '0005_auto_20220726_0020'), + ] + + operations = [ + migrations.AlterField( + model_name='lesson', + name='order_number', + field=models.PositiveSmallIntegerField(), + ), + ] diff --git a/csunplugged/at_a_distance/migrations/0007_auto_20220821_2359.py b/csunplugged/at_a_distance/migrations/0007_auto_20220821_2359.py new file mode 100644 index 000000000..8c9f32320 --- /dev/null +++ b/csunplugged/at_a_distance/migrations/0007_auto_20220821_2359.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.15 on 2022-08-21 23:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_a_distance', '0006_alter_lesson_order_number'), + ] + + operations = [ + migrations.RemoveField( + model_name='lesson', + name='introduction_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='introduction_yy_rl', + ), + migrations.RemoveField( + model_name='lesson', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='name_yy_rl', + ), + ] diff --git a/csunplugged/at_a_distance/migrations/__init__.py b/csunplugged/at_a_distance/migrations/__init__.py new file mode 100644 index 000000000..7a189655e --- /dev/null +++ b/csunplugged/at_a_distance/migrations/__init__.py @@ -0,0 +1 @@ +"""Module for migrations for the at a distance application.""" diff --git a/csunplugged/at_a_distance/models.py b/csunplugged/at_a_distance/models.py new file mode 100644 index 000000000..4a83b61a5 --- /dev/null +++ b/csunplugged/at_a_distance/models.py @@ -0,0 +1,114 @@ +"""Models for the at a distance application.""" + +from os.path import join +from django.urls import reverse +from django.db import models +from django.utils.translation import get_language +from django.utils.translation import ugettext_lazy as _ +from utils.TranslatableModel import TranslatableModel +from at_a_distance.settings import AT_A_DISTANCE_SLIDES_TEMPLATE_BASE_PATH + + +class LessonManager(models.Manager): + """Custom manager for Lesson class.""" + + def get_queryset(self): + """Prefetch related supporting resources.""" + return super().get_queryset().prefetch_related('supporting_resources') + + +class Lesson(TranslatableModel): + """Model for an at a distance lesson in database.""" + + MODEL_NAME = _("At A Disance Lesson") + + slug = models.SlugField(max_length=100) + name = models.CharField(max_length=200, default="") + order_number = models.PositiveSmallIntegerField() + icon = models.CharField(max_length=150, null=True) + objects = LessonManager() + + # Suitability attributes + NOT_SUITABLE = 'not-suitable' + SUITABLE = 'suitable' + NOT_RECOMMENDED = 'not-recommended' + SUITABILITY_CHOICES = [ + (NOT_SUITABLE, _('Not suitable')), + (SUITABLE, _('Suitable')), + (NOT_RECOMMENDED, _('Not recommended')), + ] + suitable_for_teaching_students = models.CharField( + max_length=15, + choices=SUITABILITY_CHOICES, + default=NOT_SUITABLE, + ) + suitable_for_teaching_educators = models.CharField( + max_length=15, + choices=SUITABILITY_CHOICES, + default=NOT_SUITABLE, + ) + + # Content + introduction = models.TextField(default="") + video = models.URLField(blank=True) + + def get_absolute_url(self): + """Return the canonical URL for an activity. + + Returns: + URL as string. + """ + return reverse("at_a_distance:lesson", kwargs={"lesson_slug": self.slug}) + + def get_slides_path(self): + """Return the path to the lesson slides.""" + return join( + AT_A_DISTANCE_SLIDES_TEMPLATE_BASE_PATH, + f'{self.slug}.html' + ) + + def __str__(self): + """Text representation of a lesson object. + + Returns: + Name of a lesson (str). + """ + return self.name + + class Meta: + """Set consistent ordering of lessons.""" + + ordering = ["order_number", ] + + +class SupportingResourceManager(models.Manager): + """Custom manager for SupportingResource class.""" + + def get_queryset(self): + """Return supporting resources for the current language.""" + return super().get_queryset().filter(language=get_language()) + + +class SupportingResource(models.Model): + """Model for a supporting resource to a lesson. + + This model is not translatable as supporting resources may be + completely different for each language. + """ + + order_number = models.PositiveSmallIntegerField() + text = models.TextField() + url = models.URLField() + language = models.CharField(max_length=10) + lesson = models.ForeignKey( + Lesson, + null=True, + related_name="supporting_resources", + on_delete=models.CASCADE, + ) + objects = SupportingResourceManager() + + class Meta: + """Set consistent ordering of supporting resources.""" + + ordering = ["order_number", ] diff --git a/csunplugged/at_a_distance/settings.py b/csunplugged/at_a_distance/settings.py new file mode 100644 index 000000000..6f1f6eb83 --- /dev/null +++ b/csunplugged/at_a_distance/settings.py @@ -0,0 +1,20 @@ +"""Settings for the at a distance application.""" + +import os.path +from django.conf import settings + + +AT_A_DISTANCE_FILE_GENERATION_LOCATION = os.path.join( + str(settings.ROOT_DIR.path("build")), + "slides", +) + +AT_A_DISTANCE_INTRODUCTION_FILENAME = 'introduction.md' +AT_A_DISTANCE_SUPPORTING_RESOURCES_FILENAME = 'supporting-resources.yaml' +AT_A_DISTANCE_SLIDES_TEMPLATE_BASE_PATH = 'at_a_distance/lesson-slides' + +AT_A_DISTANCE_SLIDE_RESOLUTION_HEIGHT = "1080" +AT_A_DISTANCE_SLIDE_RESOLUTION_WIDTH = "1920" + +# Settings computed from above settings +AT_A_DISTANCE_SLIDE_RESOLUTION = f'{AT_A_DISTANCE_SLIDE_RESOLUTION_WIDTH}x{AT_A_DISTANCE_SLIDE_RESOLUTION_HEIGHT}' diff --git a/csunplugged/at_a_distance/translation.py b/csunplugged/at_a_distance/translation.py new file mode 100644 index 000000000..01771b1b8 --- /dev/null +++ b/csunplugged/at_a_distance/translation.py @@ -0,0 +1,23 @@ +"""Translation options for localised models. + +Utilised by django-modeltranslation. See http://django-modeltranslation.readthedocs.io +""" + +from modeltranslation.translator import translator, TranslationOptions +from at_a_distance.models import Lesson + + +class LessonTranslationOptions(TranslationOptions): + """Translation options for Activity model.""" + + fields = ( + "name", + "introduction", + ) + fallback_undefined = { + "name": None, + "introduction": None, + } + + +translator.register(Lesson, LessonTranslationOptions) diff --git a/csunplugged/at_a_distance/urls.py b/csunplugged/at_a_distance/urls.py new file mode 100644 index 000000000..77de23af4 --- /dev/null +++ b/csunplugged/at_a_distance/urls.py @@ -0,0 +1,49 @@ +"""URL redirect routing for the at a distance section of the CS Unplugged website.""" + +from django.urls import path +from at_a_distance import views + +app_name = 'at_a_distance' +urlpatterns = [ + # eg: /at-a-distance/ + path( + '', + views.IndexView.as_view(), + name='index' + ), + # eg: /at-a-distance/how-to-teach/ + path( + 'delivery-guide/', + views.DeliveryGuideView.as_view(), + name='delivery-guide' + ), + # eg: /at-a-distance/speaker-notes/ + path( + 'speaker-notes/', + views.LessonSlideSpeakerNotesView.as_view(), + name='speaker-notes' + ), + path( + "slides-file-generation-json/", + views.slides_file_generation_json, + name='slides_file_generation_json' + ), + # eg: /at-a-distance/stroop-effect/ + path( + '/', + views.LessonView.as_view(), + name='lesson' + ), + # eg: /at-a-distance/stroop-effect/slides/ + path( + '/slides/', + views.LessonSlidesView.as_view(), + name='lesson_slides' + ), + # eg: /at-a-distance/stroop-effect/slides/ + path( + '/slides-file-generation/', + views.LessonFileGenerationView.as_view(), + name='lesson_file_generation' + ), +] diff --git a/csunplugged/at_a_distance/utils.py b/csunplugged/at_a_distance/utils.py new file mode 100644 index 000000000..0ebe7ce9d --- /dev/null +++ b/csunplugged/at_a_distance/utils.py @@ -0,0 +1,53 @@ +"""Utility functions for the at a distance application.""" + +from django.template.loader import render_to_string +from at_a_distance.models import Lesson +from lxml import html + + +def get_lesson_speaker_notes(lesson): + """Get speaker notes for lesson slides suitable for PDF creation. + + Args: + lesson (Lesson): Lesson object for rendering HTML. + + Returns: + Array of HTML of lesson slides speaker notes. + """ + slide_html = render_to_string( + "at_a_distance/components/reveal-slides-structure.html", + { + "lesson": lesson, + } + ) + root = html.fromstring(slide_html) + speaker_notes = [] + slide_elements = root.cssselect('div.slides section') + for slide_element in slide_elements: + slide_notes = slide_element.cssselect('aside.notes') + if slide_notes: + speaker_note_html = html.tostring(slide_notes[0], pretty_print=True, encoding='unicode') + speaker_notes.append(speaker_note_html) + else: + speaker_notes.append(False) + return speaker_notes + + +def get_slide_lengths(): + """Return slide lengths for every lesson. + + Returns: + Dictionary of lesson slugs mapped to slide counts. + """ + data = dict() + for lesson in Lesson.objects.all(): + slide_html = render_to_string( + "at_a_distance/components/reveal-slides-structure.html", + { + "lesson": lesson, + } + ) + root = html.fromstring(slide_html) + slide_count = len(root.cssselect('div.slides section')) + data[lesson.slug] = slide_count + return data diff --git a/csunplugged/at_a_distance/views.py b/csunplugged/at_a_distance/views.py new file mode 100644 index 000000000..5e36053a3 --- /dev/null +++ b/csunplugged/at_a_distance/views.py @@ -0,0 +1,123 @@ +"""Views for the at a distance application.""" + +import os.path +from django.views import generic +from django.utils import translation +from django.conf import settings +from django.http import JsonResponse +from django.utils.translation import get_language +from at_a_distance.models import Lesson +from at_a_distance.settings import AT_A_DISTANCE_SLIDE_RESOLUTION +from at_a_distance.utils import get_slide_lengths + + +class IndexView(generic.ListView): + """View for the at a distance application homepage.""" + + template_name = "at_a_distance/index.html" + model = Lesson + context_object_name = "lessons" + + +class DeliveryGuideView(generic.TemplateView): + """View for the devliery guide page.""" + + template_name = "at_a_distance/delivery-guide.html" + + +class LessonView(generic.DetailView): + """View for a specific lesson.""" + + model = Lesson + template_name = "at_a_distance/lesson.html" + context_object_name = "lesson" + slug_url_kwarg = "lesson_slug" + + def get_context_data(self, **kwargs): + """Provide the context data for the index view. + + Returns: + Dictionary of context data. + """ + # Call the base implementation first to get a context + context = super().get_context_data(**kwargs) + context['slides_pdf'] = os.path.join( + "slides", + get_language(), + self.object.slug, + f"{self.object.slug}-slides.pdf" + ) + context['notes_pdf'] = os.path.join( + "slides", + get_language(), + self.object.slug, + f"{self.object.slug}-speaker-notes.pdf" + ) + return context + + +class LessonSlidesView(generic.DetailView): + """View for a specific lesson's slides.""" + + model = Lesson + template_name = "at_a_distance/lesson-slides.html" + context_object_name = "lesson" + slug_url_kwarg = "lesson_slug" + + +class LessonFileGenerationView(generic.DetailView): + """View for generating a specific lesson's files.""" + + model = Lesson + template_name = "at_a_distance/lesson-slides.html" + context_object_name = "lesson" + slug_url_kwarg = "lesson_slug" + + def get_context_data(self, **kwargs): + """Provide the context data for the index view. + + Returns: + Dictionary of context data. + """ + # Call the base implementation first to get a context + context = super().get_context_data(**kwargs) + context['fragments'] = 'false' + context['slide_number'] = 'false' + return context + + +class LessonSlideSpeakerNotesView(generic.TemplateView): + """View for speaker notes window.""" + + template_name = "at_a_distance/reveal-speaker-notes-plugin/speaker-notes-window.html" + + +def slides_file_generation_json(request, **kwargs): + """Provide JSON data for creating thumbnails. + + Args: + request: The HTTP request. + + Returns: + JSON response is sent containing data for thumbnails. + """ + data = dict() + + if request.GET.get("language", False) == "all": + languages = settings.DEFAULT_LANGUAGES + elif request.GET.get("language", False): + languages = [(request.GET.get("language"), "")] + else: + languages = [("en", "")] + + # For each language{} + data["languages"] = dict() + for language_code, _ in languages: + with translation.override(language_code): + data["languages"][language_code] = list(Lesson.translated_objects.values_list('slug', flat=True)) + + # Other values + data["resolution"] = AT_A_DISTANCE_SLIDE_RESOLUTION + data["slide_counts"] = get_slide_lengths() + + return JsonResponse(data, safe=False) diff --git a/csunplugged/at_home/content/en/binary-challenge/more-information.md b/csunplugged/at_home/content/en/binary-challenge/more-information.md index 0ee5e173f..2b5dfdf4d 100644 --- a/csunplugged/at_home/content/en/binary-challenge/more-information.md +++ b/csunplugged/at_home/content/en/binary-challenge/more-information.md @@ -2,5 +2,5 @@ To see this in action check out these links: - Here are [some examples of learning about binary digits](https://vimeo.com/342521353) in a similar style to this activity. - Here’s [binary digits being taught in a classroom](https://vimeo.com/437725275) using larger cards. -- Here are some [related lesson plans](https://csunplugged.org/en/topics/binary-numbers/unit-plan/) on binary representation. +- Here are some [related lesson plans]('topics:topic' 'binary-numbers') on binary representation. - Here’s an [online version of the card activity](https://csfieldguide.org.nz/en/interactives/binary-cards/?digits=5) - it’s easier to set up, but not as much fun as using real cards. diff --git a/csunplugged/at_home/content/en/kidbots/more-information.md b/csunplugged/at_home/content/en/kidbots/more-information.md index 0bb8e9024..0895fbd7e 100644 --- a/csunplugged/at_home/content/en/kidbots/more-information.md +++ b/csunplugged/at_home/content/en/kidbots/more-information.md @@ -1,4 +1,4 @@ - Often we do this with a third helper, a “tester”, who reads out the instructions to the bot, but in the home version the bot themselves can test the instructions. [Here](https://player.vimeo.com/video/292222421) is a demonstration of this in action. -- [Here’s](https://csunplugged.org/en/topics/kidbots/unit-plan/rescue-mission/) a version where the challenge is given as a Rescue Mission. +- [Here’s]('topics:lesson' 'kidbots' 'rescue-mission') a version where the challenge is given as a Rescue Mission. - There are online versions that can be used to explore and extend this kind of programming; for example, [Lightbot](https://lightbot.com/), [ScratchJr](https://www.scratchjr.org/) and Bee-Bot for [Android](https://play.google.com/store/apps/details?id=com.tts.beebot&hl=en) and [iOS](https://apps.apple.com/us/app/bee-bot/id500131639). diff --git a/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/challenges.yaml b/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/challenges.yaml index 3c9b1e845..103d8c422 100644 --- a/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/challenges.yaml +++ b/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/challenges.yaml @@ -2,18 +2,18 @@ question: If a product scans with the 13-digit code 9 414942 119252, is it likely to have been scanned correctly? (Type in yes or no). answer: "no" 2: - question: What is the check digit that’s missing from this 12-digit product code? 7 19821 37345 _ + question: What is the check digit that’s missing from this 12-digit product code? 7 19821 37345 _ answer: "2" 3: question: What is the check digit that’s missing from this 13-digit product code? 9 300652 80460_ answer: "7" 4: - question: The first digit on this product is smudged - can you work out what it is? + question: The first digit on this product is missing - can you work out what it is? answer: "9" - image: img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.jpg - image_description: A thirteen digit product code with the first digit smudged. The rest of the digits are 400547010059. + image: img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.svg + image_description: A thirteen digit product code with the first digit missing. The rest of the digits are 400547010059. 5: - question: The second digit on this product is smudged - can you work out what it is? + question: The second digit on this product is missing - can you work out what it is? answer: "3" - image: img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.jpg - image_description: A thirteen digit product code with the second digit smudged. The digits are 9, followed by the smudged digit, followed by 00657233860. + image: img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.svg + image_description: A thirteen digit product code with the second digit missing. The digits are 9, followed by the smudged digit, followed by 00657233860. diff --git a/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/more-information.md b/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/more-information.md index 84d3913e1..dcb93fd32 100644 --- a/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/more-information.md +++ b/csunplugged/at_home/content/en/unlocking-the-secret-in-product-codes/more-information.md @@ -1,2 +1,2 @@ - There’s a poster that shows how to do these calculations [here](https://csunplugged.org/en/resources/barcode-checksum-poster/). -- There are more details about how check digits (and related methods) are used [here](https://csunplugged.org/en/topics/error-detection-and-correction/unit-plan/description/). +- There are more details about how check digits (and related methods) are used [here]('topics:topic_whats_it_all_about' 'error-detection-and-correction'). diff --git a/csunplugged/at_home/management/commands/_ActivityLoader.py b/csunplugged/at_home/management/commands/_ActivityLoader.py index 889c18b3d..c6beb660a 100644 --- a/csunplugged/at_home/management/commands/_ActivityLoader.py +++ b/csunplugged/at_home/management/commands/_ActivityLoader.py @@ -136,7 +136,6 @@ def load(self): else: self.log('Updated Activity: {}'.format(activity.name)) - # structure_filename = os.path.join(unit_plan_file_path) self.factory.create_challenge_loader( activity, base_path=self.base_path, diff --git a/csunplugged/at_home/migrations/0013_auto_20220520_0506.py b/csunplugged/at_home/migrations/0013_auto_20220520_0506.py new file mode 100644 index 000000000..527022ff8 --- /dev/null +++ b/csunplugged/at_home/migrations/0013_auto_20220520_0506.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2022-05-20 05:06 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_home', '0012_auto_20210929_2238'), + ] + + operations = [ + migrations.AddField( + model_name='activity', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='activity', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='at_home_act_search__0470ab_gin'), + ), + ] diff --git a/csunplugged/at_home/migrations/0014_auto_20220821_2359.py b/csunplugged/at_home/migrations/0014_auto_20220821_2359.py new file mode 100644 index 000000000..f4189dd90 --- /dev/null +++ b/csunplugged/at_home/migrations/0014_auto_20220821_2359.py @@ -0,0 +1,85 @@ +# Generated by Django 3.2.15 on 2022-08-21 23:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('at_home', '0013_auto_20220520_0506'), + ] + + operations = [ + migrations.RemoveField( + model_name='activity', + name='activity_extra_information_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='activity_extra_information_yy_rl', + ), + migrations.RemoveField( + model_name='activity', + name='activity_steps_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='activity_steps_yy_rl', + ), + migrations.RemoveField( + model_name='activity', + name='inside_the_computer_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='inside_the_computer_yy_rl', + ), + migrations.RemoveField( + model_name='activity', + name='introduction_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='introduction_yy_rl', + ), + migrations.RemoveField( + model_name='activity', + name='more_information_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='more_information_yy_rl', + ), + migrations.RemoveField( + model_name='activity', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='activity', + name='project_xx_lr', + ), + migrations.RemoveField( + model_name='activity', + name='project_yy_rl', + ), + migrations.RemoveField( + model_name='challenge', + name='answer_xx_lr', + ), + migrations.RemoveField( + model_name='challenge', + name='answer_yy_rl', + ), + migrations.RemoveField( + model_name='challenge', + name='question_xx_lr', + ), + migrations.RemoveField( + model_name='challenge', + name='question_yy_rl', + ), + ] diff --git a/csunplugged/at_home/models.py b/csunplugged/at_home/models.py index b4411353b..7bd5b11d8 100644 --- a/csunplugged/at_home/models.py +++ b/csunplugged/at_home/models.py @@ -4,17 +4,20 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ from utils.TranslatableModel import TranslatableModel +from django.contrib.postgres.search import SearchVectorField +from django.contrib.postgres.indexes import GinIndex class Activity(TranslatableModel): """Model for an activity in database.""" - MODEL_NAME = _("Activity") + MODEL_NAME = _("At Home Activity") slug = models.SlugField(max_length=100) name = models.CharField(max_length=150, default="") icon = models.CharField(max_length=150, null=True) order_number = models.PositiveSmallIntegerField(unique=True) + search_vector = SearchVectorField(null=True) # The following are stored as HTML from Markdown files introduction = models.TextField(default="") inside_the_computer = models.TextField(default="") @@ -40,10 +43,30 @@ def __str__(self): """ return self.name + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + text = ( + self.introduction + self.inside_the_computer + + self.project + self.more_information + ) + return { + 'A': self.name, + 'B': text, + } + class Meta: """Set consistent ordering of activities.""" ordering = ["order_number", ] + indexes = [ + GinIndex(fields=['search_vector']) + ] class Challenge(TranslatableModel): diff --git a/csunplugged/classic/migrations/0004_auto_20220520_0454.py b/csunplugged/classic/migrations/0004_auto_20220520_0454.py new file mode 100644 index 000000000..c3994c71f --- /dev/null +++ b/csunplugged/classic/migrations/0004_auto_20220520_0454.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2022-05-20 04:54 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('classic', '0003_alter_classicpage_id'), + ] + + operations = [ + migrations.AddField( + model_name='classicpage', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='classicpage', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='classic_cla_search__3a2336_gin'), + ), + ] diff --git a/csunplugged/classic/models.py b/csunplugged/classic/models.py index a27eaf391..3ae393dc1 100644 --- a/csunplugged/classic/models.py +++ b/csunplugged/classic/models.py @@ -2,17 +2,20 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.contrib.postgres.search import SearchVectorField +from django.contrib.postgres.indexes import GinIndex class ClassicPage(models.Model): """Model for Classic CS Unplugged page in database.""" - MODEL_NAME = _("Classic CS Unplugged page") + MODEL_NAME = _("Classic CS Unplugged Page") # Auto-incrementing 'id' field is automatically set by Django slug = models.SlugField(unique=True) name = models.CharField(max_length=200) redirect = models.URLField() + search_vector = SearchVectorField(null=True) def get_absolute_url(self): """Return the canonical URL for a ClassicPage. @@ -29,3 +32,22 @@ def __str__(self): Name of page (str). """ return self.name + + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + return { + 'A': self.name, + } + + class Meta: + """Meta options for model.""" + + indexes = [ + GinIndex(fields=['search_vector']) + ] diff --git a/csunplugged/classic/search_indexes.py b/csunplugged/classic/search_indexes.py deleted file mode 100644 index cb5a71531..000000000 --- a/csunplugged/classic/search_indexes.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Search index for ClassicPage model.""" - -from haystack import indexes -from classic.models import ClassicPage - - -class ClassicPageIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for ClassicPage model.""" - - text = indexes.CharField(document=True, use_template=True) - - def prepare(self, obj): - """Set boost of ClassicPage model for index. - - Args: - obj (ClassicPage): ClassicPage object. - - Returns: - Dictionary of data. - """ - data = super(ClassicPageIndex, self).prepare(obj) - data["_boost"] = 0.6 - return data - - def get_model(self): - """Return the Resource model. - - Returns: - Resource object. - """ - return ClassicPage diff --git a/csunplugged/config/__init__.py b/csunplugged/config/__init__.py index 6d7e8ea0e..23460af86 100644 --- a/csunplugged/config/__init__.py +++ b/csunplugged/config/__init__.py @@ -1,3 +1,3 @@ """Module for Django system configuration.""" -__version__ = "6.5.0" +__version__ = "7.0.0" diff --git a/csunplugged/config/settings/base.py b/csunplugged/config/settings/base.py index c5e69ba0b..1cd219991 100644 --- a/csunplugged/config/settings/base.py +++ b/csunplugged/config/settings/base.py @@ -12,11 +12,7 @@ import environ import os.path import logging.config - -# Add custom languages not provided by Django import django.conf.locale -from django.conf import global_settings -from django.utils.translation import ugettext_lazy as _ # cs-unplugged/csunplugged/config/settings/base.py - 3 = csunplugged/ ROOT_DIR = environ.Path(__file__) - 3 @@ -33,11 +29,10 @@ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + # Full text search "django.contrib.postgres", - # Useful template tags "django.contrib.humanize", - # Admin "django.contrib.admin", ] @@ -45,8 +40,6 @@ THIRD_PARTY_APPS = [ "corsheaders", "django_bootstrap_breadcrumbs", - "haystack", - "widget_tweaks", "modeltranslation", "bidiutils", ] @@ -61,6 +54,7 @@ "classic.apps.ClassicConfig", "at_home.apps.AtHomeConfig", "moocs.apps.MoocsConfig", + "at_a_distance.apps.AtADistanceConfig", ] # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps @@ -120,13 +114,6 @@ # See: https://docs.djangoproject.com/en/dev/ref/settings/#language-code LANGUAGE_CODE = "en" -INCONTEXT_L10N_PSEUDOLANGUAGE = "xx-lr" -INCONTEXT_L10N_PSEUDOLANGUAGE_BIDI = "yy-rl" -INCONTEXT_L10N_PSEUDOLANGUAGES = ( - INCONTEXT_L10N_PSEUDOLANGUAGE, - INCONTEXT_L10N_PSEUDOLANGUAGE_BIDI -) - DEFAULT_LANGUAGES = ( ("en", "English"), ("de", "Deutsche"), @@ -146,36 +133,6 @@ 'name_local': "Te Reo Māori", } } - -if env.bool("INCLUDE_INCONTEXT_L10N", False): - EXTRA_LANGUAGES = [ - (INCONTEXT_L10N_PSEUDOLANGUAGE, "Translation mode"), - (INCONTEXT_L10N_PSEUDOLANGUAGE_BIDI, "Translation mode (Bi-directional)"), - ] - - EXTRA_LANG_INFO.update({ - INCONTEXT_L10N_PSEUDOLANGUAGE: { - 'bidi': False, - 'code': INCONTEXT_L10N_PSEUDOLANGUAGE, - 'name': "Translation mode", - 'name_local': _("Translation mode"), - }, - INCONTEXT_L10N_PSEUDOLANGUAGE_BIDI: { - 'bidi': True, - 'code': INCONTEXT_L10N_PSEUDOLANGUAGE_BIDI, - 'name': "Translation mode (Bi-directional)", - 'name_local': _("Translation mode (Bi-directional)"), - } - }) - - # Add new languages to the list of all django languages - global_settings.LANGUAGES = global_settings.LANGUAGES + EXTRA_LANGUAGES - global_settings.LANGUAGES_BIDI = (global_settings.LANGUAGES_BIDI + - [INCONTEXT_L10N_PSEUDOLANGUAGE_BIDI.split('-')[0]]) - # Add new languages to the list of languages used for this project - LANGUAGES += tuple(EXTRA_LANGUAGES) - LANGUAGES_BIDI = global_settings.LANGUAGES_BIDI - django.conf.locale.LANG_INFO.update(EXTRA_LANG_INFO) # See: https://docs.djangoproject.com/en/dev/ref/settings/#site-id @@ -223,10 +180,11 @@ "bidiutils.context_processors.bidi", ], "libraries": { + "custom_tags": "config.templatetags.custom_tags", + "query_replace": "config.templatetags.query_replace", + "read_static_file": "config.templatetags.read_static_file", "render_html_field": "config.templatetags.render_html_field", "translate_url": "config.templatetags.translate_url", - "query_replace": "config.templatetags.query_replace", - 'custom_tags': 'config.templatetags.custom_tags' }, }, }, @@ -336,25 +294,11 @@ }, ] -# SEARCH CONFIGURATION -# ------------------------------------------------------------------------------ -# See: http://django-haystack.readthedocs.io/en/v2.6.0/settings.html -HAYSTACK_CONNECTIONS = { - 'default': { - 'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine', - 'URL': 'elasticsearch:9200', - 'INDEX_NAME': 'haystack', - }, -} -HAYSTACK_SEARCH_RESULTS_PER_PAGE = 10 - # OTHER SETTINGS # ------------------------------------------------------------------------------ DEPLOYED = env.bool("DEPLOYED") GIT_SHA = env("GIT_SHA", default=None) -if GIT_SHA: - GIT_SHA = GIT_SHA[:8] -else: +if not GIT_SHA: GIT_SHA = "local development" PRODUCTION_ENVIRONMENT = False STAGING_ENVIRONMENT = False @@ -369,6 +313,7 @@ CLASSIC_PAGES_CONTENT_BASE_PATH = os.path.join(str(ROOT_DIR.path("classic")), "content") GENERAL_PAGES_CONTENT_BASE_PATH = os.path.join(str(ROOT_DIR.path("general")), "content") ACTIVITIES_CONTENT_BASE_PATH = os.path.join(str(ROOT_DIR.path("at_home")), "content") +AT_A_DISTANCE_CONTENT_BASE_PATH = os.path.join(str(ROOT_DIR.path("at_a_distance")), "content") BREADCRUMBS_TEMPLATE = "django_bootstrap_breadcrumbs/bootstrap4.html" JOBE_SERVER_URL = "http://jobe" DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' @@ -378,3 +323,5 @@ "http://localhost:8000", "https://canterbury.ac.nz" ] +# Used by speaker notes for at a distance slides +X_FRAME_OPTIONS = "SAMEORIGIN" diff --git a/csunplugged/config/settings/local.py b/csunplugged/config/settings/local.py index ea1a277dd..2a9fad5af 100644 --- a/csunplugged/config/settings/local.py +++ b/csunplugged/config/settings/local.py @@ -3,7 +3,6 @@ Django settings for local development environment. - Run in Debug mode -- Add custom dev application - Add Django Debug Toolbar - Add django-extensions - Use console backend for emails @@ -63,21 +62,19 @@ INTERNAL_IPS = ["127.0.0.1", "10.0.2.2", ] ALLOWED_HOSTS = [ - ".canterbury.ac.nz", - "localhost", "cs-unplugged.localhost", - "127.0.0.1", - "[::1]", + "localhost", + "django", ] def show_django_debug_toolbar(request): - """Show Django Debug Toolbar in every request when running locally. + """Show toolbar in request unless parameter is given. Args: request: The request object. """ - return True + return "hide-debug-toolbar" not in request.GET DEBUG_TOOLBAR_CONFIG = { @@ -86,7 +83,6 @@ def show_django_debug_toolbar(request): ], "SHOW_TEMPLATE_CONTEXT": True, "SHOW_TOOLBAR_CALLBACK": show_django_debug_toolbar, - } # django-extensions @@ -97,7 +93,9 @@ def show_django_debug_toolbar(request): # ---------------------------------------------------------------------------- TEST_RUNNER = "django.test.runner.DiscoverRunner" - -# Your local stuff: Below this line define 3rd party library settings -# ---------------------------------------------------------------------------- -INSTALLED_APPS += ["dev.apps.DevConfig"] # noqa: F405 +# LOGGING +# ------------------------------------------------------------------------------ +# Based off https://lincolnloop.com/blog/django-logging-right-way/ +# Suppress these loggers in local development for less noise in logs +logging.getLogger('gunicorn.access').handlers = [] # noqa F405 +logging.getLogger('gunicorn.error').handlers = [] # noqa F405 diff --git a/csunplugged/config/settings/production.py b/csunplugged/config/settings/production.py index b58700af2..60162f74b 100644 --- a/csunplugged/config/settings/production.py +++ b/csunplugged/config/settings/production.py @@ -71,4 +71,3 @@ # SECURE_SSL_REDIRECT = env.bool("DJANGO_SECURE_SSL_REDIRECT", default=True) # noqa: F405 # CSRF_COOKIE_SECURE = True # CSRF_COOKIE_HTTPONLY = True -# X_FRAME_OPTIONS = "DENY" diff --git a/csunplugged/config/settings/testing.py b/csunplugged/config/settings/testing.py index 661e6f7eb..9559f4098 100644 --- a/csunplugged/config/settings/testing.py +++ b/csunplugged/config/settings/testing.py @@ -65,7 +65,6 @@ # ---------------------------------------------------------------------------- INSTALLED_APPS += [ # noqa: F405 "test_without_migrations", - "dev.apps.DevConfig", # Model for TranslatableModel tests "tests.utils.translatable_model", ] diff --git a/csunplugged/config/templatetags/read_static_file.py b/csunplugged/config/templatetags/read_static_file.py new file mode 100644 index 000000000..d636c3dde --- /dev/null +++ b/csunplugged/config/templatetags/read_static_file.py @@ -0,0 +1,32 @@ +"""Module for the custom read_file template tag.""" + +import os.path +from django import template +from django.conf import settings +from django.utils.safestring import mark_safe + +register = template.Library() + + +@register.simple_tag +def read_static_file(filepath): + """Read file and return contents. + + This tag should not be used on any files provided + by users, as they contents are automatically marked + as safe. + + Args: + filepath (str): File to read. + + Returns: + Contents of file. + """ + filepath = settings.STATIC_ROOT + filepath + + if os.path.isfile(filepath): + with open(filepath) as file_obj: + contents = mark_safe(file_obj.read()) + else: + raise FileNotFoundError(f'No static file found: {filepath}') + return contents diff --git a/csunplugged/config/urls.py b/csunplugged/config/urls.py index d18383969..44f36ee8a 100644 --- a/csunplugged/config/urls.py +++ b/csunplugged/config/urls.py @@ -18,6 +18,7 @@ path('topics/', include('topics.urls', namespace='topics')), path('resources/', include('resources.urls', namespace='resources')), path('at-home/', include('at_home.urls', namespace='at_home')), + path('at-a-distance/', include('at_a_distance.urls', namespace='at_a_distance')), path('plugging-it-in/', include('plugging_it_in.urls', namespace='plugging_it_in')), path('moocs/', include('moocs.urls', namespace='moocs')), ) @@ -35,9 +36,6 @@ urlpatterns += [ path('__debug__/', include(debug_toolbar.urls)), ] - urlpatterns += i18n_patterns( - path('__dev__/', include('dev.urls', namespace='dev')), - ) # These patterns allows these error pages to be debugged during development. from django.views import defaults urlpatterns += [ diff --git a/csunplugged/dev/__init__.py b/csunplugged/dev/__init__.py deleted file mode 100644 index 2429f52e9..000000000 --- a/csunplugged/dev/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Module for the dev application.""" diff --git a/csunplugged/dev/apps.py b/csunplugged/dev/apps.py deleted file mode 100644 index 63f2887dd..000000000 --- a/csunplugged/dev/apps.py +++ /dev/null @@ -1,9 +0,0 @@ -"""Application configuration for the dev application.""" - -from django.apps import AppConfig - - -class DevConfig(AppConfig): - """Configuration object for the dev application.""" - - name = "dev" diff --git a/csunplugged/dev/migrations/__init__.py b/csunplugged/dev/migrations/__init__.py deleted file mode 100644 index e53e5429b..000000000 --- a/csunplugged/dev/migrations/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Module for migrations for the dev application.""" diff --git a/csunplugged/dev/urls.py b/csunplugged/dev/urls.py deleted file mode 100644 index a9a37ab14..000000000 --- a/csunplugged/dev/urls.py +++ /dev/null @@ -1,15 +0,0 @@ -"""URL routing for the dev application.""" - -from django.urls import path - -from . import views - -app_name = 'dev' -urlpatterns = [ - # eg: /dev/ - path( - '', - views.IndexView.as_view(), - name="index" - ), -] diff --git a/csunplugged/dev/views.py b/csunplugged/dev/views.py deleted file mode 100644 index 941e0ada2..000000000 --- a/csunplugged/dev/views.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Views for the dev application.""" - -from django.views import generic -from utils.group_lessons_by_age import group_lessons_by_age -from topics.models import ( - Topic, - CurriculumArea, - CurriculumIntegration, - ProgrammingChallenge, - ProgrammingChallengeDifficulty, - ProgrammingChallengeLanguage, - LearningOutcome, - GlossaryTerm, -) - - -class IndexView(generic.TemplateView): - """View for the dev application homepage.""" - - template_name = "dev/index.html" - context_object_name = "all_topics" - - def get_context_data(self, **kwargs): - """Return context for dev homepage. - - Returns: - A dictionary of context data. - """ - context = super(IndexView, self).get_context_data(**kwargs) - - # Get topic, unit plan and lesson lists - context["topics"] = Topic.objects.order_by("name") - - # Build dictionaries for each unit plan and lesson - for topic in context["topics"]: - unit_plans = [] - for unit_plan in topic.unit_plans.all(): - unit_plan.grouped_lessons = group_lessons_by_age(unit_plan.lessons.all()) - unit_plans.append(unit_plan) - topic.units = unit_plans - topic.integrations = CurriculumIntegration.objects.filter(topic=topic).order_by("number") - topic.programming_challenges = ProgrammingChallenge.objects.filter(topic=topic).order_by( - "challenge_set_number", "challenge_number" - ) - - # Get curriculum area list - context["curriculum_areas"] = [] - for parent in CurriculumArea.objects.filter(parent=None).order_by("name"): - children = list(CurriculumArea.objects.filter(parent=parent).order_by("name")) - context["curriculum_areas"].append((parent, children)) - - # Get learning outcome list - context["learning_outcomes"] = LearningOutcome.objects.all() - - # Get learning outcome list - context["programming_challenge_languages"] = ProgrammingChallengeLanguage.objects.all() - - # Get learning outcome list - context["programming_challenge_difficulties"] = ProgrammingChallengeDifficulty.objects.all() - - # Get glossary term list - context["glossary_terms"] = GlossaryTerm.objects.all().order_by("term") - - return context diff --git a/csunplugged/general/management/commands/updatedata.py b/csunplugged/general/management/commands/updatedata.py index 91fcffa4c..2985d3d72 100644 --- a/csunplugged/general/management/commands/updatedata.py +++ b/csunplugged/general/management/commands/updatedata.py @@ -26,4 +26,5 @@ def handle(self, *args, **options): management.call_command("loadgeneralpages", lite_load=lite_load) management.call_command("loadclassicpages", lite_load=lite_load) management.call_command("loadactivities", lite_load=lite_load) - management.call_command("rebuild_index", "--noinput") + management.call_command("load_at_a_distance_data") + management.call_command("rebuild_search_indexes") diff --git a/csunplugged/general/migrations/0003_auto_20220520_0501.py b/csunplugged/general/migrations/0003_auto_20220520_0501.py new file mode 100644 index 000000000..ce455555c --- /dev/null +++ b/csunplugged/general/migrations/0003_auto_20220520_0501.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2022-05-20 05:01 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('general', '0002_alter_generalpage_id'), + ] + + operations = [ + migrations.AddField( + model_name='generalpage', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='generalpage', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='general_gen_search__2e3762_gin'), + ), + ] diff --git a/csunplugged/general/models.py b/csunplugged/general/models.py index 132fa7122..946244070 100644 --- a/csunplugged/general/models.py +++ b/csunplugged/general/models.py @@ -3,18 +3,22 @@ from django.db import models from django.urls import reverse from django.utils.translation import ugettext_lazy as _ +from django.contrib.postgres.search import SearchVectorField +from django.contrib.postgres.indexes import GinIndex +from search.utils import get_template_text class GeneralPage(models.Model): """Model for general page in database.""" - MODEL_NAME = _("General page") + MODEL_NAME = _("General Page") # Auto-incrementing 'id' field is automatically set by Django slug = models.SlugField(unique=True) name = models.CharField(max_length=100) template = models.CharField(max_length=100) url_name = models.CharField(max_length=100) + search_vector = SearchVectorField(null=True) def get_absolute_url(self): """Return the canonical URL for a GeneralPage. @@ -31,3 +35,23 @@ def __str__(self): Name of page (str). """ return self.name + + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + return { + 'A': self.name, + 'B': get_template_text(self.template), + } + + class Meta: + """Meta options for model.""" + + indexes = [ + GinIndex(fields=['search_vector']) + ] diff --git a/csunplugged/general/search_indexes.py b/csunplugged/general/search_indexes.py deleted file mode 100644 index 976d43048..000000000 --- a/csunplugged/general/search_indexes.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Search index for GeneralPage model.""" - -from haystack import indexes -from lxml.html import fromstring -from lxml.cssselect import CSSSelector -from django.template.loader import render_to_string -from django.template.exceptions import TemplateSyntaxError -from general.models import GeneralPage - -CONTENT_NOT_FOUND_ERROR_MESSAGE = ("General page requires content wrapped in " - "an element with ID 'general-page-content'") - - -class GeneralPageIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for GeneralPage model.""" - - text = indexes.CharField(document=True) - - def prepare(self, obj): - """Set boost of GeneralPage model for index. - - Args: - obj (GeneralPage): GeneralPage object. - - Returns: - Dictionary of data. - """ - data = super(GeneralPageIndex, self).prepare(obj) - data["_boost"] = 0.8 - return data - - def prepare_text(self, obj): - """Return text for indexing. - - Args: - obj (GeneralPage): Object for indexing. - - Returns: - String for indexing. - """ - rendered = render_to_string(obj.template, {"LANGUAGE_CODE": "en"}) - html = fromstring(rendered) - selector = CSSSelector("#general-page-content") - try: - contents = selector(html)[0].text_content() - except IndexError: - raise TemplateSyntaxError(CONTENT_NOT_FOUND_ERROR_MESSAGE) - return contents - - def get_model(self): - """Return the GeneralPage model. - - Returns: - GeneralPage object. - """ - return GeneralPage diff --git a/csunplugged/gulpfile.js b/csunplugged/gulpfile.js index 0471bb91c..b97941896 100644 --- a/csunplugged/gulpfile.js +++ b/csunplugged/gulpfile.js @@ -3,7 +3,7 @@ //////////////////////////////// // Gulp and package -const { src, dest, parallel, series, watch } = require('gulp') +const { src, dest, parallel, series, watch, lastRun } = require('gulp') const pjson = require('./package.json') // Plugins @@ -14,6 +14,7 @@ const buffer = require('vinyl-buffer'); const c = require('ansi-colors') const concat = require('gulp-concat') const cssnano = require('cssnano') +const dependents = require('gulp-dependents') const errorHandler = require('gulp-error-handle') const filter = require('gulp-filter') const gulpif = require('gulp-if'); @@ -51,6 +52,7 @@ function pathsConfig(appName) { js_source: `${staticSourceRoot}/js`, images_source: `${staticSourceRoot}/img`, files_source: `${staticSourceRoot}/files`, + fonts_source: `${staticSourceRoot}/fonts`, vendor_js_source: [ `${vendorsRoot}/jquery/dist/jquery.js`, `${vendorsRoot}/popper.js/dist/umd/popper.js`, @@ -61,10 +63,10 @@ function pathsConfig(appName) { ], // Output files css_output: `${staticOutputRoot}/css`, - fonts_output: `${staticOutputRoot}/fonts`, images_output: `${staticOutputRoot}/img`, js_output: `${staticOutputRoot}/js`, files_output: `${staticOutputRoot}/files`, + fonts_output: `${staticOutputRoot}/fonts`, } } @@ -88,6 +90,9 @@ const processCss = [ pixrem(), // add fallbacks for rem units postcssFlexbugFixes(), // adds flexbox fixes ] +const printProcessCss = [ + pixrem(), // add fallbacks for rem units +] const minifyCss = [ cssnano({ preset: 'default' }) // minify result ] @@ -117,8 +122,16 @@ function css() { } function scss() { - return src(`${paths.scss_source}/**/*.scss`) + function postcss_callback(file) { + if (file.basename.endsWith('.print.css')) { + return { plugins: printProcessCss } + } else { + return { plugins: processCss } + } + } + return src(`${paths.scss_source}/**/*.scss`, { since: lastRun(scss) }) .pipe(errorHandler(catchError)) + .pipe(dependents()) .pipe(sourcemaps.init()) .pipe(sass({ includePaths: [ @@ -127,7 +140,7 @@ function scss() { ], sourceComments: !PRODUCTION, }).on('error', sass.logError)) - .pipe(postcss(processCss)) + .pipe(postcss(postcss_callback)) .pipe(sourcemaps.write()) .pipe(gulpif(PRODUCTION, postcss(minifyCss))) // Minifies the result .pipe(dest(paths.css_output)) @@ -139,7 +152,7 @@ function js() { return src([ `${paths.js_source}/**/*.js`, `!${paths.js_source}/modules/**/*.js` - ]) + ], { since: lastRun(js) }) .pipe(errorHandler(catchError)) .pipe(sourcemaps.init()) .pipe(js_filter) @@ -175,6 +188,12 @@ function files() { .pipe(dest(paths.files_output)) } +// Custom fonts files +function fonts() { + return src(`${paths.fonts_source}/**/*`) + .pipe(dest(paths.fonts_output)) +} + // Browser sync server for live reload // TODO: Not yet working // function initBrowserSync() { @@ -211,7 +230,8 @@ const generateAssets = parallel( js, vendorJs, img, - files + files, + fonts ) // Set up dev environment diff --git a/csunplugged/locale/xx_LR/LC_MESSAGES/django.po b/csunplugged/locale/xx_LR/LC_MESSAGES/django.po deleted file mode 100644 index bd1122c66..000000000 --- a/csunplugged/locale/xx_LR/LC_MESSAGES/django.po +++ /dev/null @@ -1,979 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: cs-unplugged\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-06 12:04+0000\n" -"PO-Revision-Date: 2018-02-07 10:05-0500\n" -"Last-Translator: uccser-admin \n" -"Language-Team: English (upside down)\n" -"Language: en_UD\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: cs-unplugged\n" -"X-Crowdin-Language: en-UD\n" -"X-Crowdin-File: /csunplugged/locale/en/LC_MESSAGES/django.po\n" - -msgid "Translation mode" -msgstr "crwdns18197:0crwdne18197:0" - -msgid "Translation mode (Bi-directional)" -msgstr "crwdns18198:0crwdne18198:0" - -msgid "12 digits" -msgstr "crwdns15756:0crwdne15756:0" - -msgid "13 digits" -msgstr "crwdns15757:0crwdne15757:0" - -msgid "Barcode length" -msgstr "crwdns15755:0crwdne15755:0" - -msgid "{} Digit Barcode" -msgstr "crwdns18199:0crwdne18199:0" - -msgid "Separate!" -msgstr "crwdns18200:0crwdne18200:0" - -msgid "Operate!" -msgstr "crwdns18201:0crwdne18201:0" - -msgid "Calculate!" -msgstr "crwdns18202:0crwdne18202:0" - -msgid "Remember that this algorithm uses modulo 10, so we are only interested in the number in the one's column." -msgstr "crwdns18203:0crwdne18203:0" - -msgid "Display Numbers" -msgstr "crwdns15769:0crwdne15769:0" - -msgid "Black on Card Back" -msgstr "crwdns15766:0crwdne15766:0" - -msgid "Yes - Uses a lot of black ink, but conveys clearer card state. Print double sided." -msgstr "crwdns18204:0crwdne18204:0" - -msgid "No - Print single sided." -msgstr "crwdns18205:0crwdne18205:0" - -msgid "Four (1 to 8)" -msgstr "crwdns15760:0crwdne15760:0" - -msgid "Eight (1 to 128)" -msgstr "crwdns15761:0crwdne15761:0" - -msgid "Twelve (1 to 2048)" -msgstr "crwdns15762:0crwdne15762:0" - -msgid "Number of Bits" -msgstr "crwdns15759:0crwdne15759:0" - -msgid "Display Dot Counts" -msgstr "crwdns15763:0crwdne15763:0" - -msgid "Student" -msgstr "crwdns15772:0crwdne15772:0" - -msgid "Teacher (solutions)" -msgstr "crwdns15773:0crwdne15773:0" - -msgid "Worksheet Version" -msgstr "crwdns15771:0crwdne15771:0" - -msgid "Binary (0 or 1)" -msgstr "crwdns15776:0crwdne15776:0" - -msgid "Lightbulb (off or on)" -msgstr "crwdns15777:0crwdne15777:0" - -msgid "Value Representation" -msgstr "crwdns15775:0crwdne15775:0" - -msgid "Hello, I'm a" -msgstr "crwdns19548:0crwdne19548:0" - -msgid "Programmer" -msgstr "crwdns19549:0crwdne19549:0" - -msgid "Tester" -msgstr "crwdns19550:0crwdne19550:0" - -msgid "Bot" -msgstr "crwdns19551:0crwdne19551:0" - -msgid "Modulo" -msgstr "crwdns15783:0crwdne15783:0" - -msgid "Black" -msgstr "crwdns15787:0crwdne15787:0" - -msgid "Blue" -msgstr "crwdns15788:0crwdne15788:0" - -msgid "Green" -msgstr "crwdns15789:0crwdne15789:0" - -msgid "Purple" -msgstr "crwdns15790:0crwdne15790:0" - -msgid "Red" -msgstr "crwdns15791:0crwdne15791:0" - -msgid "Card back colour" -msgstr "crwdns15786:0crwdne15786:0" - -msgid "None" -msgstr "crwdns15793:0crwdne15793:0" - -msgid "Piano keys to highlight" -msgstr "crwdns15792:0crwdne15792:0" - -msgid "Black and White (2 possible binary values)" -msgstr "crwdns18206:0crwdne18206:0" - -msgid "Black and White (2 possible binary values) in Run Length Encoding" -msgstr "crwdns18207:0crwdne18207:0" - -msgid "Greyscale (4 possible binary values)" -msgstr "crwdns18208:0crwdne18208:0" - -msgid "Colour (8 possible binary values)" -msgstr "crwdns18209:0crwdne18209:0" - -msgid "Fish - 6 pages" -msgstr "crwdns18210:0crwdne18210:0" - -msgid "Hot air balloon - 8 pages" -msgstr "crwdns18211:0crwdne18211:0" - -msgid "Boat - 9 pages" -msgstr "crwdns18212:0crwdne18212:0" - -msgid "Parrots - 32 pages" -msgstr "crwdns18213:0crwdne18213:0" - -msgid "Black and White" -msgstr "crwdns18214:0crwdne18214:0" - -msgid "Run length encoding" -msgstr "crwdns18215:0crwdne18215:0" - -msgid "Greyscale" -msgstr "crwdns18216:0crwdne18216:0" - -msgid "Colour" -msgstr "crwdns18217:0crwdne18217:0" - -msgid "Boat" -msgstr "crwdns18218:0crwdne18218:0" - -msgid "Fish" -msgstr "crwdns18219:0crwdne18219:0" - -msgid "Hot air balloon" -msgstr "crwdns18220:0crwdne18220:0" - -msgid "Parrots" -msgstr "crwdns15729:0crwdne15729:0" - -msgid "Colouring type" -msgstr "crwdns18221:0crwdne18221:0" - -msgid "Image" -msgstr "crwdns18222:0crwdne18222:0" - -msgid "Number of cards (15 or 31)" -msgstr "crwdns15817:0crwdne15817:0" - -msgid "0 to 99" -msgstr "crwdns15818:0crwdne15818:0" - -msgid "0 to 999" -msgstr "crwdns15819:0crwdne15819:0" - -msgid "Blank" -msgstr "crwdns15784:0crwdne15784:0" - -msgid "Number of cards" -msgstr "crwdns15815:0crwdne15815:0" - -msgid "Range of numbers" -msgstr "crwdns15816:0crwdne15816:0" - -msgid "Include teacher guide sheet" -msgstr "crwdns15820:0crwdne15820:0" - -msgid "Small numbers (1 to 6)" -msgstr "crwdns15823:0crwdne15823:0" - -msgid "Large numbers (7 digit numbers)" -msgstr "crwdns15824:0crwdne15824:0" - -msgid "Letters" -msgstr "crwdns15828:0crwdne15828:0" - -msgid "Words" -msgstr "crwdns15827:0crwdne15827:0" - -msgid "Fractions" -msgstr "crwdns15825:0crwdne15825:0" - -msgid "Māori colours" -msgstr "crwdns15829:0crwdne15829:0" - -msgid "Māori numbers" -msgstr "crwdns15826:0crwdne15826:0" - -msgid "Butterfly life cycle" -msgstr "crwdns15831:0crwdne15831:0" - -msgid "Little Red Riding Hood" -msgstr "crwdns15830:0crwdne15830:0" - -msgid "Card Type" -msgstr "crwdns15822:0crwdne15822:0" - -msgid "Easy Numbers (1 digits)" -msgstr "crwdns18223:0crwdne18223:0" - -msgid "Medium Numbers (2 digits)" -msgstr "crwdns15837:0crwdne15837:0" - -msgid "Hard Numbers (3 digits)" -msgstr "crwdns15838:0crwdne15838:0" - -msgid "None (Blank - Useful as template) " -msgstr "crwdns18224:0crwdne18224:0" - -msgid "Prefill with Numbers" -msgstr "crwdns15834:0crwdne15834:0" - -msgid "Circular" -msgstr "crwdns15840:0crwdne15840:0" - -msgid "Twisted" -msgstr "crwdns15841:0crwdne15841:0" - -msgid "Train track shape" -msgstr "crwdns15839:0crwdne15839:0" - -msgid "Easy Numbers (2 digits)" -msgstr "crwdns15842:0crwdne15842:0" - -msgid "Medium Numbers (3 digits)" -msgstr "crwdns15843:0crwdne15843:0" - -msgid "Hard Numbers (4 digits)" -msgstr "crwdns15844:0crwdne15844:0" - -msgid "None (Blank)" -msgstr "crwdns15845:0crwdne15845:0" - -msgid "Sorted Numbers" -msgstr "crwdns15848:0crwdne15848:0" - -msgid "Unsorted Numbers" -msgstr "crwdns15847:0crwdne15847:0" - -msgid "Table only - Little ink usage." -msgstr "crwdns15852:0crwdne15852:0" - -msgid "Table and artwork - Uses a lot of colour ink." -msgstr "crwdns15851:0crwdne15851:0" - -msgid "Numbers Unsorted/Sorted" -msgstr "crwdns15846:0crwdne15846:0" - -msgid "Include instruction sheets" -msgstr "crwdns15849:0crwdne15849:0" - -msgid "Printing mode" -msgstr "crwdns15850:0crwdne15850:0" - -msgid "A4" -msgstr "crwdns15802:0crwdne15802:0" - -msgid "US Letter" -msgstr "crwdns15803:0crwdne15803:0" - -msgid "Paper Size" -msgstr "crwdns15801:0crwdne15801:0" - -msgid "Header Text" -msgstr "crwdns15805:0crwdne15805:0" - -msgid "Example School: Room Four" -msgstr "crwdns18225:0crwdne18225:0" - -msgid "Number of Copies" -msgstr "crwdns15806:0crwdne15806:0" - -msgid "Local Generation Only" -msgstr "crwdns15804:0crwdne15804:0" - -msgid "Yes" -msgstr "crwdns15764:0crwdne15764:0" - -msgid "No" -msgstr "crwdns15765:0crwdne15765:0" - -msgid "Page not found" -msgstr "crwdns20515:0crwdne20515:0" - -msgid "We are sorry but we could not find a page for the link you provided." -msgstr "crwdns20516:0crwdne20516:0" - -msgid "You may find one of the links below useful:" -msgstr "crwdns20517:0crwdne20517:0" - -msgid "Home page" -msgstr "crwdns20518:0crwdne20518:0" - -msgid "Search" -msgstr "crwdns19542:0crwdne19542:0" - -msgid "Classic CS Unplugged" -msgstr "crwdns15722:0crwdne15722:0" - -msgid "CS Unplugged" -msgstr "crwdns15645:0crwdne15645:0" - -msgid "Topics" -msgstr "crwdns15646:0crwdne15646:0" - -msgid "Printables" -msgstr "crwdns19552:0crwdne19552:0" - -msgid "About" -msgstr "crwdns15648:0crwdne15648:0" - -msgid "Looking for something for high schools? Check out the Computer Science Field Guide." -msgstr "crwdns15658:0crwdne15658:0" - -msgid "The primary goal of the Unplugged project is to promote Computer Science (and computing in general) to young people as an interesting, engaging, and intellectually stimulating discipline." -msgstr "crwdns18226:0crwdne18226:0" - -#, python-format -msgid "Read more about our principles here." -msgstr "crwdns18227:0%(principles_url)scrwdne18227:0" - -msgid "Useful Links" -msgstr "crwdns15649:0crwdne15649:0" - -msgid "Community" -msgstr "crwdns15650:0crwdne15650:0" - -msgid "Twitter" -msgstr "crwdns15651:0crwdne15651:0" - -msgid "YouTube" -msgstr "crwdns15652:0crwdne15652:0" - -msgid "GitHub" -msgstr "crwdns15653:0crwdne15653:0" - -msgid "Help" -msgstr "crwdns15654:0crwdne15654:0" - -msgid "Glossary" -msgstr "crwdns15655:0crwdne15655:0" - -msgid "Feedback" -msgstr "crwdns15656:0crwdne15656:0" - -msgid "Contact" -msgstr "crwdns15657:0crwdne15657:0" - -msgid "The CS Unplugged material is open source on GitHub, and this website's content is shared under a Creative Commons Attribution-ShareAlike 4.0 International license. The CS Unplugged is a project by the Computer Science Education Research Group at the University of Canterbury, New Zealand." -msgstr "crwdns15659:0crwdne15659:0" - -#, python-format -msgid "This definition is not available in %(language)s, sorry!" -msgstr "crwdns18228:0%(language)scrwdne18228:0" - -msgid "Close" -msgstr "crwdns15660:0crwdne15660:0" - -msgid "Unit Plan:" -msgstr "crwdns15661:0crwdne15661:0" - -msgid "CS Unplugged is a collection of free learning activities that teach Computer Science through engaging games and puzzles that use cards, string, crayons and lots of running around. We originally developed this so that young students could dive head-first into Computer Science, experiencing the kinds of questions and challenges that computer scientists experience, but without having to learn programming first." -msgstr "crwdns15662:0crwdne15662:0" - -msgid "The collection was originally intended as a resource for outreach and extension, but with the adoption of computing and computational thinking into many classrooms around the world, it is now widely used for teaching. The material has been used in many contexts outside the classroom as well, including science shows, talks for senior citizens, and special events." -msgstr "crwdns15663:0crwdne15663:0" - -msgid "Thanks to generous sponsorships we have been able to create associated resources such as the videos, which are intended to help teachers see how the activities work (please don’t show them to your classes – let them experience the activities themselves!). All of the activities that we provide are “open source” – they are released under a Creative Commons BY-NC-SA licence, so you can copy, share and modify the material." -msgstr "crwdns15664:0crwdne15664:0" - -#, python-format -msgid "To view the team of contributors who work on this project, see our people page." -msgstr "crwdns15665:0%(people_url)scrwdne15665:0" - -#, python-format -msgid "For details on how to contact us, see our contact us page." -msgstr "crwdns15666:0%(contact_url)scrwdne15666:0" - -#, python-format -msgid "For more information about the principles behind CS Unplugged, see our principles page." -msgstr "crwdns15667:0%(principles_url)scrwdne15667:0" - -msgid "About pages" -msgstr "crwdns15668:0crwdne15668:0" - -msgid "Computational Thinking and CS Unplugged" -msgstr "crwdns15669:0crwdne15669:0" - -msgid "Principles" -msgstr "crwdns15672:0crwdne15672:0" - -msgid "People" -msgstr "crwdns15670:0crwdne15670:0" - -msgid "Contact Us" -msgstr "crwdns15671:0crwdne15671:0" - -msgid "What is Computational Thinking?" -msgstr "crwdns15673:0crwdne15673:0" - -msgid "The world we live in has become a digital one, filled with technology and driven by Computer Science. Software and technology have transformed every subject and job area, from science and medicine, to art history and psychology. Digital technology is ubiquitous. To be informed and empowered citizens, the next generation of students need to understand this digital world that they live in." -msgstr "crwdns15674:0crwdne15674:0" - -msgid "This is why Computational Thinking has been called the ‘21st Century Skill Set’, and is important for everyone to learn. It is critical to understanding how the digital world works, for harnessing the power of computers to solve tough problems, and making great things happen! It also enables us to think critically about not just the benefits of certain technologies, but also the potential harm, ethical implications, or unintended consequences of these." -msgstr "crwdns15675:0crwdne15675:0" - -msgid "But what exactly is Computational Thinking? Let’s have a look at a technical definition..." -msgstr "crwdns15676:0crwdne15676:0" - -msgid "\"Computational Thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent.\"" -msgstr "crwdns15677:0crwdne15677:0" - -msgid "Phew, it’s quite a mouthful isn’t it? But, as we like to say at CS Unplugged, it’s just big words for simple ideas! 'Information-processing agent' means anything that follows a set of instructions to complete a task (we call this 'computing'). Most of the time this 'agent' means a computer or other type of digital device - but it could also be a human! We’ll refer to it as a computer to make things a bit simpler. To represent solutions in a way that a computer can carry them out, we have to represent them as a step by step process - an algorithm. To create these algorithmic solutions we apply some special problem solving skills to. These skill are what make up Computational Thinking! And they are skills that are transferrable to any field." -msgstr "crwdns15678:0crwdne15678:0" - -msgid "Computational Thinking could be described as 'thinking like a Computer Scientist', but it is now an important skill for everyone to learn, whether they want to be a Computer Scientist or not! It’s interesting, and important, to note that Computational Thinking, and Computer Science, aren’t entirely about computers, they are more about people. You might think that we write programs for computers, but really we write programs for people - to help them communicate, find information, and solve problems." -msgstr "crwdns15679:0crwdne15679:0" - -msgid "For example, you might use an app on a smartphone to get directions to a friend's house; the app is an example of a computer program, and the smartphone is the \"information processing agent\" that runs the program for us. Whoever designed the algorithm for working out the best route, and all the details like the interface and how to store the map, applied computational thinking to design the system. But they didn't design it for the sake of the smartphone; they designed it to help the person using the smartphone." -msgstr "crwdns15680:0crwdne15680:0" - -msgid "Computational Thinking in CS Unplugged" -msgstr "crwdns15681:0crwdne15681:0" - -msgid "

Throughout the lessons and units in CS Unplugged there are many links to Computational Thinking. Teaching Computational Thinking through CS Unplugged activities teaches students how to:

  • describe a problem,
  • identify the important details needed to solve this problem,
  • break the problem down into small, logical steps,
  • use these steps to create a process (algorithm) that solves the problem,
  • and then evaluate this process.
" -msgstr "crwdns15682:0crwdne15682:0" - -msgid "These skills are transferable to any other curriculum area, but are particularly relevant to developing digital systems and solving problems using the capabilities of computers.

" -msgstr "crwdns15683:0crwdne15683:0" - -msgid "These Computational Thinking concepts are all connected to each other and support each other, but it's important to note that not all aspects of Computational Thinking will necessarily happen in every unit or lesson. In each unit and lesson we've highlighted the important connections for you to observe your students in action." -msgstr "crwdns15684:0crwdne15684:0" - -msgid "There are a number of definitions of Computational Thinking, but most have a set of 5 or 6 problem solving skills that Computational Thinking embodies. For the Unplugged project we've identified the following six CT skills that are often mentioned in the literature; they are described below, and at the end of each Unplugged lesson we've identified ways that these skills appeared in the lesson, to help you see the CT connection with the lessons." -msgstr "crwdns15685:0crwdne15685:0" - -msgid "Computational Thinking skills" -msgstr "crwdns15686:0crwdne15686:0" - -msgid "Algorithmic thinking" -msgstr "crwdns15687:0crwdne15687:0" - -msgid "Algorithms are at the heart of Computational Thinking and Computer Science, because in Computer Science the solutions to problems are not simply an answer (e.g. ‘42’, or a fact), they are algorithms. An algorithm is a step-by-step process that solves a problem or completes a task. If you follow the algorithm's steps correctly, you will arrive at a correct solution, even for different inputs. For example, we can use an algorithm to find the shortest route between two locations on a map; the same algorithm can be used for any pair of starting and finishing points, so the solution depends on the input to the algorithm. If we know the algorithm for solving a problem then we can solve that problem easily, whenever we want, without having to think! We can just follow the steps. Computers can’t think for themselves, so they need to be given algorithms to do things." -msgstr "crwdns15688:0crwdne15688:0" - -msgid "Algorithmic thinking is the process of creating algorithms. When we create an algorithm to solve a problem, we call this an algorithmic solution." -msgstr "crwdns15689:0crwdne15689:0" - -msgid "Computational algorithms (the kind that can run on digital devices) have relatively few ingredients because digital devices only have a few types of instruction that they can follow; the main things they can do are receive input, provide output, store values, follow instructions in a sequence, choose between options, and repeat instructions in a loop. Despite how limited this range of instructions is, we've described everything that digital devices can compute, and this is why algorithms are described restricted to these elements." -msgstr "crwdns15690:0crwdne15690:0" - -msgid "Abstraction" -msgstr "crwdns15691:0crwdne15691:0" - -msgid "Abstraction is all about simplifying things to help us manage complexity. It requires identifying what the most important aspects of a problem are and hiding the other specific details that we don’t need to focus on. The important aspects can be used to create a model, or simplified representation, of the original thing we were dealing with. We can then work with this model to solve the problem, rather than having to deal with all the nitty gritty details at once. Computer Scientists often work with multiple levels of abstraction." -msgstr "crwdns15692:0crwdne15692:0" - -msgid "We use abstraction often in our everyday lives, for example when we use maps. Maps show us a simplified version of the world by leaving out unnecessary details, like where every individual tree in a park is, and only keeping the most relevant information the map reader will need, such as roads and street names." -msgstr "crwdns15693:0crwdne15693:0" - -msgid "Digital devices use abstraction all the time; they try to hide as much unnecessary information from the user as possible. For example, let's say you took a nice scenic photo on your last camping trip, and now you want to edit it on your laptop and adjust the colours in it. Normally we could do this by opening a picture editing program, adjusting some colour sliders or maybe choosing a filter. When you do this there are a lot of complicated operations happening which the computer is hiding from you." -msgstr "crwdns15694:0crwdne15694:0" - -msgid "The picture you took is stored on the computer as a big list of pixels, which are each a different colour, and each colour is represented by a set of numbers, and each of these numbers are stored as binary digits! That’s a lot of information. Imagine if when you adjusted the colours you had to go through and look at all the colour values of every pixel and change each and every one of those! That’s what the computer is doing for you, but since you don’t need to know this to accomplish your goal the computer hides this information away." -msgstr "crwdns15695:0crwdne15695:0" - -msgid "Decomposition" -msgstr "crwdns15696:0crwdne15696:0" - -msgid "Decomposition is about breaking down problems into smaller, more manageable, parts, and then focusing on solving each of these smaller problems. We can break a complex problem down until the smaller parts are so simple they become easy to solve. The solutions to each of these smaller, and simpler, problems build up to a solution to the big problem we started with. Decomposition helps make large problems much less intimidating!" -msgstr "crwdns15697:0crwdne15697:0" - -msgid "Decomposition is an important skill for creating algorithms and processes that can be implemented on a computing device, because computers need very specific instructions. They need to be told each of the tiny steps they need to follow in order to do things." -msgstr "crwdns15698:0crwdne15698:0" - -msgid "For example the overall task of making a cake can be decomposed into several smaller tasks, each of which can be performed easily." -msgstr "crwdns15699:0crwdne15699:0" - -msgid "

Make cake

  1. Bake cake
    1. Put ingredients in bowl (butter, sugar, egg, flour)
    2. Mix
    3. Pour into tin
    4. Put in oven for 30mins
    5. Take out of tin
  2. Make icing
  3. Put on cake
" -msgstr "crwdns15700:0crwdne15700:0" - -msgid "Generalising and patterns" -msgstr "crwdns15701:0crwdne15701:0" - -msgid "Generalising is also referred to as 'pattern recognition and generalisation'. Generalisation is taking a solution (or part of a solution) to a problem and generalising it so it can be applied to other similar problems and tasks. Since solutions in Computer Science are algorithms, this means we take an algorithm and make it general enough that it can be used for a range of problems. This process involves abstraction, because to make something more general we have to remove unnecessary details that are related to a specific problem or situation, but are not important to how the algorithm functions." -msgstr "crwdns15702:0crwdne15702:0" - -msgid "Spotting patterns is an important part of this process, when we think about problems we might recognise similarities between them and that they can be solved in similar ways. This is called pattern matching, and it’s something we do naturally all the time in our daily life." -msgstr "crwdns15703:0crwdne15703:0" - -msgid "Generalised algorithms can be reused for a whole group of similar problems, which means we can come up with solutions quickly and effectively." -msgstr "crwdns15704:0crwdne15704:0" - -msgid "Evaluation" -msgstr "crwdns15705:0crwdne15705:0" - -msgid "Evaluation is about identifying the possible solutions to a problem and judging which is the best to use, if they will work in some situations but not others, and how they can be improved. When judging our solutions we need to think about a range of factors. For example how much time it will take these processes (algorithms) to solve the problem and will it reliably solve the problem, or if there are certain situations where it will perform in a very different way. Evaluation is something we do a lot in our everyday lives." -msgstr "crwdns15706:0crwdne15706:0" - -msgid "There are different ways we can evaluate our algorithmic solutions. We can test their speed by implementing them on a computer; or we can analyse them by counting or calculating how many steps they are likely to take. We can test that they work correctly by giving our solution lots of different inputs, and checking it works as expected. When we do this we need to think about the different inputs we test, because we don’t want to check every possible input (often there's an infinite number of different possible inputs!), but we still need to know if it will work for them. Testing is something Computer Scientists and programmers do all the time. But because we can't usually test every possible input, we also try to evaluate a system using logical reasoning." -msgstr "crwdns15707:0crwdne15707:0" - -msgid "Logic" -msgstr "crwdns15708:0crwdne15708:0" - -msgid "When trying to solve problems we need to think logically. Logical reasoning is about trying to make sense of things by observing, collecting data, thinking about the facts you know, and then figuring things out based on what you already know. It helps us use our existing knowledge to establish rules and check facts." -msgstr "crwdns15709:0crwdne15709:0" - -msgid "For example, suppose you are writing software that works out the shortest route to a location from your house. In the following map it's 2 minutes to the library if you head north from your house, but if you head south it's 3 minutes to the next intersection. You might wonder if there's a better route to the library if you start by heading south, but logically there can't be because you'll already have walked for 3 minutes to get to the intersection." -msgstr "crwdns15710:0crwdne15710:0" - -msgid "At a deeper level, computers are built entirely on logic. They use 'True' and 'False' values, and use something called 'Boolean expressions', like “is age > 5”, to make decisions in computer programs." -msgstr "crwdns15711:0crwdne15711:0" - -msgid "Tracking down a bug in a program also requires logical thinking, to work out where, and why, something in the program is going wrong." -msgstr "crwdns15712:0crwdne15712:0" - -msgid "Email: You can email the CS Unplugged team here." -msgstr "crwdns15713:0crwdne15713:0" - -msgid "Twitter: @UCCSEd" -msgstr "crwdns15714:0crwdne15714:0" - -msgid "Community Google Group: We have a Google Group you can join and talk about CS Unplugged." -msgstr "crwdns15715:0crwdne15715:0" - -msgid "How do I teach CS Unplugged?" -msgstr "crwdns18344:0crwdne18344:0" - -msgid "CS Unplugged is very much based on a constructivist approach: students are given challenges based on a few simple rules, and in the process of solving those challenges they uncover powerful ideas on their own. Not only is this a more memorable way to learn, but it empowers them to realise that these are ideas within their grasp. The activities are also very kinesthetic - the bigger the materials, the better." -msgstr "crwdns18345:0crwdne18345:0" - -msgid "Because of this approach, you can also learn alongside the students. You'll need to read through the whole activity so that you're prepared for it, and we have provided videos for many of them so you can visualise them, but as the students discover how these ideas work out, you'll start to see patterns and ideas that the students are discovering as they understand the principles behind these topics from Computer Science." -msgstr "crwdns18346:0crwdne18346:0" - -msgid "If you're working within a school curriculum, you can find appropriate activities based on the learning objectives and age group. In several countries there are guides to the local curriculum that link it to Unplugged (e.g. Digital Technologies Hub for Australia). But the unit plans listed follow the common topics that are appearing in school curricula, so you are likely to find something relevant from the titles. Note that CS Unplugged does not teach programming - the Kidbots activity is an excellent lead in to programming and the \"Plugging it in\" sections give some programming exercises to follow up with - but in general we are trying to show students what they could do with programming, before they have to learn it." -msgstr "crwdns18347:0crwdne18347:0" - -msgid "But reading about Unplugged isn't the fun way to engage with it - pick a lesson for your students, and dive into it!" -msgstr "crwdns18348:0crwdne18348:0" - -msgid "View available topics" -msgstr "crwdns18349:0crwdne18349:0" - -msgid "Computer Science
without a computer" -msgstr "crwdns15716:0crwdne15716:0" - -msgid "CS Unplugged is a collection of free teaching material that teaches Computer Science through engaging games and puzzles that use cards, string, crayons and lots of running around." -msgstr "crwdns15717:0crwdne15717:0" - -msgid "Welcome to the new CS Unplugged!" -msgstr "crwdns20512:0crwdne20512:0" - -msgid "This updated website has unit plans, lesson plans, teaching videos, curriculum integration activities, and programming exercises to plug in the Computer Science concepts they have just learnt unplugged." -msgstr "crwdns20513:0crwdne20513:0" - -msgid "The original activities are still available at classic.csunplugged.org." -msgstr "crwdns20519:0crwdne20519:0" - -msgid "What is Computer Science?" -msgstr "crwdns18350:0crwdne18350:0" - -msgid "Curriculum Integrations" -msgstr "crwdns15721:0crwdne15721:0" - -msgid "version 4.0.0 onwards" -msgstr "crwdns19553:0crwdne19553:0" - -msgid "Founders" -msgstr "crwdns15724:0crwdne15724:0" - -msgid "Advisers" -msgstr "crwdns15725:0crwdne15725:0" - -msgid "Current Team" -msgstr "crwdns15726:0crwdne15726:0" - -msgid "Previous Team Members" -msgstr "crwdns19554:0crwdne19554:0" - -msgid "up to version 3.2.2" -msgstr "crwdns19555:0crwdne19555:0" - -msgid "Contributors" -msgstr "crwdns15727:0crwdne15727:0" - -msgid "Website" -msgstr "crwdns15728:0crwdne15728:0" - -msgid "The primary goal of the Unplugged project is to promote Computer Science (and computing in general) to young people as an interesting, engaging, and intellectually stimulating discipline. We want to capture people’s imagination and address common misconceptions about what it means to be a computer scientist. We want to convey fundamentals that do not depend on particular software or systems, ideas that will still be fresh in 10 years. We want to reach kids in elementary schools and provide supplementary material for university courses. We want to tread where high-tech educational solutions are infeasible; to cross the divide between the information-rich and information-poor, between industrialized countries and the developing world." -msgstr "crwdns15730:0crwdne15730:0" - -msgid "There are many worthy projects for promoting Computer Science. The main principles that distinguish the Unplugged activities are:" -msgstr "crwdns15731:0crwdne15731:0" - -msgid "No Computers Required" -msgstr "crwdns15732:0crwdne15732:0" - -msgid "The activities do not depend on computers. This avoids confusing Computer Science with programming or learning application software, makes the activities available to those who aren’t able to or don’t want to work with computers, and skips the barrier of learning to program before being able to explore ideas. It also provides physical, kinaesthetic experiences as part of learning computing, which can be a welcome break from sitting in front of a screen. For example, the parity magic trick is a card game that happens to use the same principle as error correction in computer memory. Unplugged isn’t a completely Luddite approach – we do exploit the internet and other computing facilities to share and develop the activities, and we hope that students will have to opportunity to learn to program so that they can put wheels on the ideas they have been exploring." -msgstr "crwdns15733:0crwdne15733:0" - -msgid "Real Computer Science" -msgstr "crwdns15734:0crwdne15734:0" - -msgid "Unplugged presents fundamental concepts in Computer Science such as algorithms, artificial intelligence, graphics, information theory, human computer interfaces, programming languages, and so on. We want to emphasize that programming is a means, not an end. Wikipedia provides a definition of Computer Science, and Peter Denning’s Great Principles project provides a more detailed analysis of the topics it covers." -msgstr "crwdns15735:0crwdne15735:0" - -msgid "Learning by doing" -msgstr "crwdns15736:0crwdne15736:0" - -msgid "The activities tend to be kinaesthetic, often on a large scale and involving team work. For example, the Sorting Network activity has teams of six running through a network drawn on the ground. The activities tend to allow students to discover answers for themselves, rather than just being given solutions or algorithms to follow; that is, a constructivist approach is encouraged (where the teacher uses the scaffolding provided by Unplugged to ask questions that lead them to discover the knowledge themselves), as we want students to realize that they are capable of finding solutions to problems on their own, rather than being given a solution to apply to the problem. For example, students don’t really need to be able to convert numbers to binary, but it is valuable for them to discover the patterns such as the doubling value of bits, patterns when you count in binary, and how the range increases exponentially as you add bits." -msgstr "crwdns15737:0crwdne15737:0" - -msgid "Fun" -msgstr "crwdns15738:0crwdne15738:0" - -msgid "The activities are fun and engaging, not just busy-work for the sake of it. Usually the explanations are quite brief – the teacher lays out the materials and a few rules, and the students follow the challenge from there. There are puzzles, challenges, competitions, problem solving and humour. Unplugged activities should leave students with a sense of genuine achievement. There is often a strong sense of story in the activities; problems are presented as part of a story rather than as an abstract mathematical challenge. Children are more interested in pirates than privacy, and absurd fictitious stories can be more memorable than compelling business applications." -msgstr "crwdns15739:0crwdne15739:0" - -msgid "No specialised equipment" -msgstr "crwdns15740:0crwdne15740:0" - -msgid "The activities are low cost, using equipment commonly found in classrooms or stationery stores. Most require only paper and pencil, and perhaps cards, string, chalk, whiteboard markers, balls or similar items." -msgstr "crwdns15741:0crwdne15741:0" - -msgid "Variations encouraged" -msgstr "crwdns15742:0crwdne15742:0" - -msgid "Unplugged is published under a Creative Commons licence, which permits free sharing (with acknowledgement). Variations, adaptations and extensions are encouraged. This also allows local publishing arrangements to take account of the kind of packaging that would make the material more accessible to local educational practitioners." -msgstr "crwdns15743:0crwdne15743:0" - -msgid "

Two specific situations that we get asked about are:

  • For-profit classes (e.g. clubs with a subscription fee): It is fine to charge a fee for people to attend classes that you're running that uses this material.
  • Selling packs of support material (such as pre-printed cards): It is fine to do this. We hope that you'll do it for a reasonable price, and it's even better if you can get someone to sponsor you so that you can give it away to educators, but the license allows you to set your own price.
" -msgstr "crwdns15744:0crwdne15744:0" - -msgid "For everyone" -msgstr "crwdns15745:0crwdne15745:0" - -msgid "The programme is strongly international – we encourage variations that are relevant to local cultures (for example, some activities that require a large playground can be changed to a board game for schools that have very little open space; others use contexts that might not be familiar to students in a different culture). Translators should try the activities locally and involve teachers. It is better to adapt activities rather than translate them faithfully to something that would be less meaningful in the local culture. The activities are intended to be inclusive." -msgstr "crwdns15746:0crwdne15746:0" - -msgid "Co-operative" -msgstr "crwdns15747:0crwdne15747:0" - -msgid "We encourage co-operation, communication and problem solving. Competition can also be effective if it is used appropriately, especially between teams rather than individuals, but having students working cooperatively is a great way to learn about problem solving." -msgstr "crwdns15748:0crwdne15748:0" - -msgid "Stand-alone Activities" -msgstr "crwdns15749:0crwdne15749:0" - -msgid "As much as possible, the activities are stand-alone modules that can be used independently of each other, so that they can be used for enrichment in curricula or for outreach on their own rather than having to be used as a series. The ones that have been presented as lesson plans will sometimes require a series of lessons to be followed, but we will indicate if particular preparation is required." -msgstr "crwdns15750:0crwdne15750:0" - -msgid "Resilient" -msgstr "crwdns15751:0crwdne15751:0" - -msgid "The activities are resilient to errors made by students; they should not depend on getting many difficult steps exactly right, and minor mistakes should not prevent participants from understanding the principles. The instructions are usually just one or two rules and a goal that can be expressed in a single sentence (e.g. “Each card is either fully visible or not; how can you display exactly 11 dots?”, or “We need to get from any house to any other house; what is the smallest number of paving stones that make this possible”)." -msgstr "crwdns15752:0crwdne15752:0" - -msgid "The term \"Computer Science\" has become widely used in recent years as the skills associated with the subject have become crucial to developing innovative digital technology, and qualifications in this area are highly sought after." -msgstr "crwdns18352:0crwdne18352:0" - -msgid "The CS Unplugged activities are intended to give you a feel for what the subject is - you can learn what it is by doing. At this early stage, rather than define it formally, let's think about how it might influence our daily lives. For example, think of your favourite search engine. On the surface it seems like a fairly simple interface: a text box where you type what you want to search for, and a button to start the search. The level of programming knowledge needed to implement a text box and a button is fairly rudimentary, and you could implement a search by writing a short program (probably less than 20 lines) to go through all the text on the web and displaying any that match. But obviously there's more to it than this! There are billions of searches are made every day, on billions on web pages, and the approach above will give answers (eventually), but will be so slow and ineffective that no-one would use it." -msgstr "crwdns18353:0crwdne18353:0" - -msgid "This is where computer science comes in; many areas of Computer Science are employed to make the system work well, and most of them are illustrated through Unplugged. How could you search billions of items in a fraction of a second (Searching Algorithms)? How do you make sure that it's easy to use (Human-Computer Interaction)? We need to keep it secure - users don't want other people to know what they are searching for, and the search engine doesn't want commercial interests to manipulate search ranking (Computer Security and Encryption)? Search engines generally predict what you are about to search for (Artificial Intelligence). It needs to be reliable - a small mistake from one of the thousands of programmers at a search engine company shouldn't prevent the site working (Software Engineering). It needs to scale well - if it becomes 10 times as popular, you don't want it to need 100 times the computing resources (Algorithms). The relevance of a search generally depends on the relationships between web sites - you need a map showing which sites are linked to which other ones (Graphs)." -msgstr "crwdns18354:0crwdne18354:0" - -msgid "The areas above cover much of what the subject of computer science is about. Programming is just a tool for implementing ideas (well, it's a very powerful tool, and requires considerable skill to use well). But programming on its own isn't enough to create software that people love to use, and Computer Science is the area that gives programmers the inside knowledge to make their software fast, efficient, reliable, secure, usable, intelligent, scalable, and even delightful!" -msgstr "crwdns18355:0crwdne18355:0" - -msgid "That's why we developed CS Unplugged - we want young students to be empowered to understand the great ideas that computer science covers, without having to become expert programmers first. They won't be learning exactly how to build the next search engine, social network or game app, but they will have an idea of what sort of techniques are needed to make it successful. We don't want them to see digital systems as some kind of magic that they can't participate in, but as something that they could understand and, for some, create themselves. Actually, it is kind of magic when you start understanding what can and can't be done." -msgstr "crwdns18356:0crwdne18356:0" - -msgid "Read 'How do I teach CS Unplugged?'" -msgstr "crwdns18357:0crwdne18357:0" - -msgid "This page diplays a complete list of all available printables. If a lesson uses a printable, the lesson will contain a direct link to the printable with a description on how to use it." -msgstr "crwdns19556:0crwdne19556:0" - -msgid "No printables are available." -msgstr "crwdns19557:0crwdne19557:0" - -msgid "Generate Printable" -msgstr "crwdns19558:0crwdne19558:0" - -#, python-format -msgid "The download of this Printable includes %(copies_amount)s unique copies." -msgstr "crwdns19559:0%(copies_amount)scrwdne19559:0" - -msgid "Preview" -msgstr "crwdns15809:0crwdne15809:0" - -msgid "Related Lessons" -msgstr "crwdns15810:0crwdne15810:0" - -msgid "Topic" -msgstr "crwdns15811:0crwdne15811:0" - -msgid "Ages" -msgstr "crwdns15812:0crwdne15812:0" - -msgid "Number" -msgstr "crwdns15813:0crwdne15813:0" - -msgid "Lesson" -msgstr "crwdns15814:0crwdne15814:0" - -msgid "Within topic" -msgstr "crwdns19543:0crwdne19543:0" - -#, python-format -msgid "Ages %(lower)s to %(upper)s: Lesson %(number)s" -msgstr "crwdns15866:0%(lower)scrwdnd15866:0%(upper)scrwdnd15866:0%(number)scrwdne15866:0" - -msgid "within unit plan" -msgstr "crwdns19544:0crwdne19544:0" - -msgid "Challenge Level:" -msgstr "crwdns15885:0crwdne15885:0" - -msgid "The following table lists curriculum integrations for all topics in the CS Unplugged content." -msgstr "crwdns15853:0crwdne15853:0" - -msgid "Activity" -msgstr "crwdns15854:0crwdne15854:0" - -msgid "Curriculum Areas" -msgstr "crwdns15855:0crwdne15855:0" - -msgid "Prerequisite Lessons?" -msgstr "crwdns15856:0crwdne15856:0" - -msgid "Seeing the Computational Thinking connections" -msgstr "crwdns15857:0crwdne15857:0" - -msgid "Throughout the lessons there are links to computational thinking. Below we've noted some general links that apply to this content." -msgstr "crwdns15858:0crwdne15858:0" - -msgid "Teaching computational thinking through CSUnplugged activities supports students to learn how to describe a problem, identify what are the important details they need to solve this problem, and break it down into small, logical steps so that they can then create a process which solves the problem, and then evaluate this process. These skills are transferable to any other curriculum area, but are particularly relevant to developing digital systems and solving problems using the capabilities of computers." -msgstr "crwdns15859:0crwdne15859:0" - -#, python-format -msgid "These Computational Thinking concepts are all connected to each other and support each other, but it’s important to note that not all aspects of Computational Thinking happen in every unit or lesson. We’ve highlighted the important connections for you to observe your students in action. For more background information on what our definition of Computational Thinking see our notes about computational thinking." -msgstr "crwdns15860:0%(ct_url)scrwdne15860:0" - -msgid "topic" -msgstr "crwdns18229:0crwdne18229:0" - -msgid "curriculum integration" -msgstr "crwdns18230:0crwdne18230:0" - -msgid "Heads up!" -msgstr "crwdns15861:0crwdne15861:0" - -msgid "To do this activity it's expected you understand the content covered in the following:" -msgstr "crwdns15862:0crwdne15862:0" - -#, python-format -msgid "The following glossary terms are not yet available in %(language)s. Sorry about that!" -msgstr "crwdns18231:0%(language)scrwdne18231:0" - -msgid "Open a topic to see all related unit plans, lessons, curriculum integrations, and programming challenges." -msgstr "crwdns15863:0crwdne15863:0" - -#, python-format -msgid "Ages %(min_age)s to %(max_age)s" -msgstr "crwdns18232:0%(min_age)scrwdnd18232:0%(max_age)scrwdne18232:0" - -msgid "lessons" -msgstr "crwdns18233:0crwdne18233:0" - -msgid "curriculum integrations" -msgstr "crwdns18234:0crwdne18234:0" - -msgid "programming challenges" -msgstr "crwdns18235:0crwdne18235:0" - -msgid "No topics are available." -msgstr "crwdns15864:0crwdne15864:0" - -msgid "unit plan" -msgstr "crwdns18236:0crwdne18236:0" - -msgid "lesson" -msgstr "crwdns18237:0crwdne18237:0" - -#, python-format -msgid "Duration: %(duration)s minutes" -msgstr "crwdns18358:0%(duration)scrwdne18358:0" - -msgid "Learning outcomes" -msgstr "crwdns15867:0crwdne15867:0" - -msgid "Students will be able to:" -msgstr "crwdns15868:0crwdne15868:0" - -msgid "Classroom resources" -msgstr "crwdns15870:0crwdne15870:0" - -msgid "Programming challenges" -msgstr "crwdns15871:0crwdne15871:0" - -msgid "View related programming challenges" -msgstr "crwdns15872:0crwdne15872:0" - -msgid "Table of contents" -msgstr "crwdns15873:0crwdne15873:0" - -msgid "Computational Thinking" -msgstr "crwdns15874:0crwdne15874:0" - -#, python-format -msgid "Ages %(lower)s to %(upper)s" -msgstr "crwdns15875:0%(lower)scrwdnd15875:0%(upper)scrwdne15875:0" - -#, python-format -msgid "Not available in %(language)s" -msgstr "crwdns18238:0%(language)scrwdne18238:0" - -#, python-format -msgid "

Sorry! This %(model_type)s is not yet available in %(language)s.

This %(model_type)s is available in the following languages:

" -msgstr "crwdns18239:0%(model_type)scrwdnd18239:0%(language)scrwdnd18239:0%(model_type)scrwdne18239:0" - -msgid "or" -msgstr "crwdns18240:0crwdne18240:0" - -#, python-format -msgid "Return to the %(parent_type)s" -msgstr "crwdns18241:0%(parent_type)scrwdne18241:0" - -#, python-format -msgid "%(name)s solution" -msgstr "crwdns15876:0%(name)scrwdne15876:0" - -msgid "solution" -msgstr "crwdns15877:0crwdne15877:0" - -msgid "challenge" -msgstr "crwdns18242:0crwdne18242:0" - -msgid "Heads Up! If you are ready to compare your programming to ours or are wanting to have a look at how we solved it, click 'View solution' below to view at least one way to write this program." -msgstr "crwdns15878:0crwdne15878:0" - -msgid "View solution" -msgstr "crwdns15879:0crwdne15879:0" - -msgid "This is just one of many possible solutions:" -msgstr "crwdns15880:0crwdne15880:0" - -msgid "Back to programming challenge" -msgstr "crwdns15881:0crwdne15881:0" - -msgid "Extra Challenge" -msgstr "crwdns15882:0crwdne15882:0" - -#, python-format -msgid "%(name)s programming challenges" -msgstr "crwdns15883:0%(name)scrwdne15883:0" - -#, python-format -msgid "No programming challenges for %(topic)s." -msgstr "crwdns15884:0%(topic)scrwdne15884:0" - -msgid "programming challenge" -msgstr "crwdns18243:0crwdne18243:0" - -msgid "This programming challenge is linked to the following lessons:" -msgstr "crwdns15886:0crwdne15886:0" - -#, python-format -msgid "Challenge %(set_num)s.%(chal_num)s for %(name)s" -msgstr "crwdns15887:0%(set_num)scrwdnd15887:0%(chal_num)scrwdnd15887:0%(name)scrwdne15887:0" - -#, python-format -msgid "%(lower)s to %(upper)s" -msgstr "crwdns15888:0%(lower)scrwdnd15888:0%(upper)scrwdne15888:0" - -msgid "and" -msgstr "crwdns15889:0crwdne15889:0" - -msgid "Languages" -msgstr "crwdns15891:0crwdne15891:0" - -msgid "What it should look like" -msgstr "crwdns15892:0crwdne15892:0" - -msgid "Hints" -msgstr "crwdns15893:0crwdne15893:0" - -#, python-format -msgid "Show %(implementation.language.name)s solution" -msgstr "crwdns15894:0%(implementation.language.name)scrwdne15894:0" - -msgid "Name" -msgstr "crwdns15895:0crwdne15895:0" - -msgid "Challenge Level" -msgstr "crwdns15896:0crwdne15896:0" - -#, python-format -msgid "%(topic.name)s other resources" -msgstr "crwdns15897:0%(topic.name)scrwdne15897:0" - -msgid "Other resources" -msgstr "crwdns15904:0crwdne15904:0" - -msgid "Sorry! We couldn't find any information on other resources for this topic." -msgstr "crwdns18244:0crwdne18244:0" - -msgid "Return to the topic" -msgstr "crwdns18245:0crwdne18245:0" - -msgid "list of topics" -msgstr "crwdns18246:0crwdne18246:0" - -msgid "Unit Plans" -msgstr "crwdns18359:0crwdne18359:0" - -msgid "Looking for more?" -msgstr "crwdns15901:0crwdne15901:0" - -msgid "Click here for other resources" -msgstr "crwdns15902:0crwdne15902:0" - -msgid "Description" -msgstr "crwdns18360:0crwdne18360:0" - -msgid "Unit plan:" -msgstr "crwdns15898:0crwdne15898:0" - -msgid "What's it all about?" -msgstr "crwdns18361:0crwdne18361:0" - -msgid "Read the full unit plan description" -msgstr "crwdns18362:0crwdne18362:0" - -msgid "Lessons" -msgstr "crwdns15905:0crwdne15905:0" - diff --git a/csunplugged/locale/yy_RL b/csunplugged/locale/yy_RL deleted file mode 120000 index cb9aa369e..000000000 --- a/csunplugged/locale/yy_RL +++ /dev/null @@ -1 +0,0 @@ -xx_LR \ No newline at end of file diff --git a/csunplugged/package.json b/csunplugged/package.json index 317002c7f..8eef12559 100644 --- a/csunplugged/package.json +++ b/csunplugged/package.json @@ -4,18 +4,19 @@ "private": true, "dependencies": {}, "devDependencies": { - "ansi-colors": "4.1.1", - "autoprefixer": "10.4.2", - "bootstrap": "4.6.0", - "browser-sync": "2.27.7", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.8", + "bootstrap": "4.6.1", + "browser-sync": "2.27.10", "browserify": "17.0.0", "child_process": "1.0.2", - "codemirror": "5.65.1", - "cssnano": "5.0.15", + "codemirror": "5.65.6", + "cssnano": "5.1.13", "blockly": "7.20211209.2", "details-element-polyfill": "2.4.0", "fancy-log": "2.0.0", "gulp-concat": "2.6.1", + "gulp-dependents": "1.2.5", "gulp-error-handle": "1.0.1", "gulp-filter": "7.0.0", "gulp-if": "3.0.0", @@ -31,12 +32,13 @@ "multiple-select": "1.5.2", "pixrem": "5.0.0", "popper.js": "1.16.1", - "postcss": "8.4.5", + "postcss": "8.4.16", "postcss-flexbugs-fixes": "5.0.2", - "sass": "1.49.0", + "reveal.js": "4.3.1", + "sass": "1.54.4", "scratchblocks": "uccser/scratchblocks#master", "vinyl-buffer": "1.0.1", - "yargs": "17.3.1" + "yargs": "17.5.1" }, "engines": { "node": ">=8" diff --git a/csunplugged/resources/content/zh_Hans/treasure-hunt.md b/csunplugged/resources/content/zh_Hans/treasure-hunt.md deleted file mode 100644 index 891f59ecc..000000000 --- a/csunplugged/resources/content/zh_Hans/treasure-hunt.md +++ /dev/null @@ -1,3 +0,0 @@ -# 寻宝游戏 - -此资源包含搜索算法活动的打印资料。 \ No newline at end of file diff --git a/csunplugged/resources/generators/BinaryWindowsResourceGenerator.py b/csunplugged/resources/generators/BinaryWindowsResourceGenerator.py index 2a05007e8..94f5bacae 100644 --- a/csunplugged/resources/generators/BinaryWindowsResourceGenerator.py +++ b/csunplugged/resources/generators/BinaryWindowsResourceGenerator.py @@ -10,9 +10,15 @@ FONT_PATH = "static/fonts/PatrickHand-Regular.ttf" FONT = ImageFont.truetype(FONT_PATH, 300) SMALL_FONT = ImageFont.truetype(FONT_PATH, 180) +IMAGE_SIZE_X = 2334 +IMAGE_SIZE_Y = 1650 +LINE_COLOUR = "#000000" +LINE_WIDTH = 1 NUMBER_BITS_VALUES = { "4": _("Four (1 to 8)"), + "5": _("Five (1 to 16)"), + "6": _("Six (1 to 32)"), "8": _("Eight (1 to 128)"), } @@ -55,126 +61,228 @@ def data(self): A dictionary or list of dictionaries for each resource page. """ # Retrieve parameters - number_of_bits = self.options["number_bits"].value + number_of_bits = int(self.options["number_bits"].value) value_type = self.options["value_type"].value - dot_counts = self.options["dot_counts"].value + show_bits_value = self.options["dot_counts"].value + + # Define variables + column_width = IMAGE_SIZE_X / number_of_bits - pages = [] - page_sets = [("binary-windows-1-to-8.png", 8)] - if number_of_bits == "8": - page_sets.append(("binary-windows-16-to-128.png", 128)) - - for (filename, dot_count_start) in page_sets: - image = Image.open(os.path.join(BASE_IMAGE_PATH, filename)) - image = self.add_digit_values(image, value_type, True, 660, 724, 1700, FONT) - if dot_counts: - image = self.add_dot_counts(image, dot_count_start, SMALL_FONT) - image = image.rotate(90, expand=True) - pages.append({"type": "image", "data": image}) - pages.append(self.back_page(value_type)) - pages[0]["thumbnail"] = True + # Get page outline + page_outline = self.page_outline(number_of_bits, column_width) + front_page = self.front_page( + value_type, + column_width, + show_bits_value, + page_outline.copy() + ) + back_page = self.back_page( + value_type, + column_width, + page_outline.copy() + ) + pages = [front_page, back_page] return pages - def back_page(self, value_type): + def page_outline(self, number_of_bits, column_width): + """Create outline (lines without content) for page. + + Args: + number_of_bits (int): Number of bits on page. + column_width (int): Width of each bit on page. + + Return: + Page outline as type Image. + """ + page_outline = Image.new("RGB", (IMAGE_SIZE_X, IMAGE_SIZE_Y), "#fff") + draw = ImageDraw.Draw(page_outline) + image_midpoint_y = int(IMAGE_SIZE_Y / 2) + + # Draw outline + draw.rectangle( + [(0, 0), (IMAGE_SIZE_X - LINE_WIDTH, IMAGE_SIZE_Y - LINE_WIDTH)], + outline=LINE_COLOUR, + fill="#ffffff", + width=LINE_WIDTH, + ) + + # Draw internal separator lines + for line_number in range(1, number_of_bits): + x_coord = line_number * column_width + draw.line( + [(x_coord, 0), (x_coord, image_midpoint_y)], + fill=LINE_COLOUR, + width=LINE_WIDTH, + ) + + # Draw dashed line + dash_size = 10 + for x_coord in range(0, IMAGE_SIZE_X, dash_size * 3): + draw.line( + [(x_coord, image_midpoint_y), (x_coord + dash_size, image_midpoint_y)], + fill="#666666", + width=LINE_WIDTH, + ) + + return page_outline + + def front_page(self, value_type, column_width, show_bits_value, page_outline): + """Return a Pillow object of front page of Binary Windows. + + Args: + value_type (str): Type of value representation used. + column_width (float): Width of a bit column. + show_bits_value (bool): True if bit value labels should be shown. + page_outline (Pillow Draw): Outline of page to draw on. + + Returns: + A dictionary for the back page. + """ + image = self.add_dots(page_outline, column_width, show_bits_value) + image = self.add_digit_values(page_outline, column_width, value_type, True) + image = image.rotate(90, expand=True) + return {"type": "image", "data": image, "thumbnail": True} + + def back_page(self, value_type, column_width, page_outline): """Return a Pillow object of back page of Binary Windows. Args: - value_type: Type of value representation used (str). + value_type (str): Type of value representation used. + column_width (float): Width of a bit column. + page_outline (Pillow Draw): Outline of page to draw on. Returns: A dictionary for the back page. """ - image = Image.open(os.path.join(BASE_IMAGE_PATH, "binary-windows-blank.png")) - image = self.add_digit_values(image, value_type, False, 660, 724, 650, FONT) + image = self.add_digit_values(page_outline, column_width, value_type, False) image = image.rotate(90, expand=True) return {"type": "image", "data": image} - def add_dot_counts(self, image, starting_value, font): - """Add dot count text onto image. + def add_dots(self, image, column_width, show_bits_value): + """Add binary values onto image. + + Note: This method adds dots from right to left on the page. Args: - image: The image to add text to (Pillow Image). - starting_value: Number on left window (int). - font: Font used for adding text (Pillow Font). + image (Pillow Image): The image to add binary values to. + column_width (float): Width of a bit column. + show_bits_value (bool): True if bit value labels should be shown. Returns: - Pillow Image with text added (Pillow Image). + Pillow Image with dots (Pillow Image). """ - value = starting_value draw = ImageDraw.Draw(image) - coord_x = 660 - coord_x_increment = 724 - coord_y = 1000 - for i in range(4): - text = str(value) - text_width, text_height = draw.textsize(text, font=font) - text_coord_x = coord_x - (text_width / 2) - text_coord_y = coord_y - (text_height / 2) - draw.text( - (text_coord_x, text_coord_y), - text, - font=font, - fill="#000" + coord_x_start = IMAGE_SIZE_X - (column_width / 2) + coord_x_increment = column_width + coord_x = coord_x_start + base_image_coord_y = IMAGE_SIZE_Y * 0.2 + base_text_coord_y = IMAGE_SIZE_Y * 0.4 + dots_value = 1 + + while coord_x > 0: + # Select dots image + image_file = f"dots-{dots_value}.png" + dots_image = Image.open(os.path.join(BASE_IMAGE_PATH, image_file)) + + # Scale image to fit dots to 80% of column width + (dots_width, dots_height) = dots_image.size + x_scale_factor = (column_width / dots_width) * 0.9 + y_scale_factor = (IMAGE_SIZE_Y * 0.3) / dots_height + scale_factor = min(x_scale_factor, y_scale_factor) + dots_image = dots_image.resize(( + int(dots_width * scale_factor), + int(dots_height * scale_factor), + )) + + # Paste into image + (dots_width, dots_height) = dots_image.size + coords = ( + int(coord_x - (dots_width / 2)), + int(base_image_coord_y - (dots_height / 2)), ) - coord_x += coord_x_increment - value = int(value / 2) + image.paste(dots_image, box=coords, mask=dots_image) + + if show_bits_value: + text = str(dots_value) + text_width, text_height = draw.textsize(text, font=SMALL_FONT) + text_coord_x = coord_x - (text_width / 2) + text_coord_y = base_text_coord_y - (text_height / 2) + draw.text( + (text_coord_x, text_coord_y), + text, + font=SMALL_FONT, + fill="#000" + ) + + # Update variables + coord_x -= coord_x_increment + dots_value *= 2 return image - def add_digit_values(self, image, value_type, on, x_coord_start, x_coord_increment, base_y_coord, font): + def add_digit_values(self, image, column_width, value_type, on): """Add binary values onto image. Args: - image: The image to add binary values to (Pillow Image). - value_type: Either "binary" for 0's and 1's, or "lightbulb" for - lit and unlit lightbulbs (str). - on: True if binary value is on/lit, otherwise False (bool). - x_coord_start: X co-ordinate starting value (int). - x_coord_increment: X co-ordinate increment value (int). - base_y_coord: Y co-ordinate value (int). - font: Font used for adding text (Pillow Font). + image (Pillow Image): The image to add binary values to. + column_width (float): Width of a bit column. + value_type (str): Either "binary" for 0's and 1's, or "lightbulb" for + lit and unlit lightbulbs. + on (bool): True if binary value is on/lit, otherwise False. Returns: Pillow Image with binary values (Pillow Image). """ - text_coord_x = x_coord_start + coord_x_start = column_width / 2 + coord_x_increment = column_width if value_type == "binary": if on: text = "1" else: text = "0" - else: # lightbulb + else: # Lightbulb if on: - image_file = "col_binary_lightbulb.png" + image_file = "lightbulb-on.png" else: - image_file = "col_binary_lightbulb_off.png" - lightbulb = Image.open(os.path.join("static/img/topics/", image_file)) - (width, height) = lightbulb.size - scale_factor = 0.6 - lightbulb = lightbulb.resize((int(width * scale_factor), int(height * scale_factor))) - (width, height) = lightbulb.size - lightbulb_width = int(width / 2) - lightbulb_height = int(height / 2) + image_file = "lightbulb-off.png" + lightbulb = Image.open(os.path.join(BASE_IMAGE_PATH, image_file)) + (lightbulb_width, lightbulb_height) = lightbulb.size + # Scale image to fit lightbulb to 80% of column width + scale_factor = (column_width / lightbulb_width) * 0.8 + lightbulb = lightbulb.resize(( + int(lightbulb_width * scale_factor), + int(lightbulb_height * scale_factor), + )) + (lightbulb_width, lightbulb_height) = lightbulb.size if not on: lightbulb = lightbulb.rotate(180) - for i in range(4): - draw = ImageDraw.Draw(image) - if value_type == "binary": + draw = ImageDraw.Draw(image) + coord_x = coord_x_start - text_width, text_height = draw.textsize(text, font=font) - coord_x = text_coord_x - (text_width / 2) - coord_y = base_y_coord - (text_height / 2) + if on: + base_coord_y = IMAGE_SIZE_Y * 0.75 + else: + base_coord_y = IMAGE_SIZE_Y * 0.25 + + while coord_x < IMAGE_SIZE_X: + if value_type == "binary": + text_width, text_height = draw.textsize(text, font=FONT) + text_coord_x = coord_x - (text_width / 2) + text_coord_y = base_coord_y - (text_height * .7) draw.text( - (coord_x, coord_y), + (text_coord_x, text_coord_y), text, - font=font, + font=FONT, fill="#000" ) else: # lightbulb - coords = (text_coord_x - lightbulb_width, base_y_coord - lightbulb_height + 75) + coords = ( + int(coord_x - (lightbulb_width / 2)), + int(base_coord_y - (lightbulb_height / 2)), + ) image.paste(lightbulb, box=coords, mask=lightbulb) - text_coord_x += x_coord_increment + coord_x += coord_x_increment return image @property diff --git a/csunplugged/resources/management/commands/makeresources.py b/csunplugged/resources/management/commands/makeresources.py index 6ffbc4372..205227ee7 100644 --- a/csunplugged/resources/management/commands/makeresources.py +++ b/csunplugged/resources/management/commands/makeresources.py @@ -45,8 +45,7 @@ def handle(self, *args, **options): else: generation_languages = [] for language_code, _ in settings.LANGUAGES: - if language_code not in settings.INCONTEXT_L10N_PSEUDOLANGUAGES: - generation_languages.append(language_code) + generation_languages.append(language_code) for resource in resources: print("Creating {}".format(resource.name)) @@ -92,3 +91,4 @@ def create_resource_pdf(self, resource, combination, language_code, base_path): pdf_file_output = open(os.path.join(pdf_directory, filename), "wb") pdf_file_output.write(pdf_file) pdf_file_output.close() + print(" - Created PDF '{}' in '{}'".format(filename, language_code)) diff --git a/csunplugged/resources/migrations/0021_auto_20220520_0454.py b/csunplugged/resources/migrations/0021_auto_20220520_0454.py new file mode 100644 index 000000000..4891abe4a --- /dev/null +++ b/csunplugged/resources/migrations/0021_auto_20220520_0454.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2022-05-20 04:54 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('resources', '0020_alter_resource_id'), + ] + + operations = [ + migrations.AddField( + model_name='resource', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='resource', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='resources_r_search__82e125_gin'), + ), + ] diff --git a/csunplugged/resources/migrations/0022_auto_20220821_2359.py b/csunplugged/resources/migrations/0022_auto_20220821_2359.py new file mode 100644 index 000000000..895c7c881 --- /dev/null +++ b/csunplugged/resources/migrations/0022_auto_20220821_2359.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.15 on 2022-08-21 23:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('resources', '0021_auto_20220520_0454'), + ] + + operations = [ + migrations.RemoveField( + model_name='resource', + name='content_xx_lr', + ), + migrations.RemoveField( + model_name='resource', + name='content_yy_rl', + ), + migrations.RemoveField( + model_name='resource', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='resource', + name='name_yy_rl', + ), + ] diff --git a/csunplugged/resources/models.py b/csunplugged/resources/models.py index 609baaf1e..271789ac1 100644 --- a/csunplugged/resources/models.py +++ b/csunplugged/resources/models.py @@ -4,6 +4,8 @@ from django.utils.translation import ugettext_lazy as _ from django.urls import reverse from utils.TranslatableModel import TranslatableModel +from django.contrib.postgres.search import SearchVectorField +from django.contrib.postgres.indexes import GinIndex class Resource(TranslatableModel): @@ -17,6 +19,7 @@ class Resource(TranslatableModel): generator_module = models.CharField(max_length=200) copies = models.BooleanField() content = models.TextField(default="") + search_vector = SearchVectorField(null=True) def get_absolute_url(self): """Return the canonical URL for a resource. @@ -37,7 +40,23 @@ def __str__(self): """ return self.name + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + return { + 'A': self.name, + 'B': self.content, + } + class Meta: - """Meta class settings.""" + """Meta options for model.""" ordering = ["name"] + indexes = [ + GinIndex(fields=['search_vector']) + ] diff --git a/csunplugged/resources/search_indexes.py b/csunplugged/resources/search_indexes.py deleted file mode 100644 index 7a7f985b0..000000000 --- a/csunplugged/resources/search_indexes.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Search index for resources model.""" - -from haystack import indexes -from resources.models import Resource - - -class ResourceIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for Resource model.""" - - text = indexes.CharField(document=True, use_template=True) - - def get_model(self): - """Return the Resource model. - - Returns: - Resource object. - """ - return Resource diff --git a/csunplugged/resources/utils/get_thumbnail.py b/csunplugged/resources/utils/get_thumbnail.py index 81df8f8f8..6b3172ceb 100644 --- a/csunplugged/resources/utils/get_thumbnail.py +++ b/csunplugged/resources/utils/get_thumbnail.py @@ -35,8 +35,6 @@ def get_thumbnail_base(resource_slug): """ if settings.DEPLOYED: resource_language = get_language() - if resource_language in settings.INCONTEXT_L10N_PSEUDOLANGUAGES: - resource_language = "en" else: resource_language = "en" resource_thumbnail_base = join( diff --git a/csunplugged/search/forms.py b/csunplugged/search/forms.py deleted file mode 100644 index 8b0e82b91..000000000 --- a/csunplugged/search/forms.py +++ /dev/null @@ -1,65 +0,0 @@ -"""Module for custom search form.""" -from django import forms -from haystack.forms import ModelSearchForm -from topics.models import ( - Lesson, - CurriculumIntegration, - CurriculumArea, -) - - -class CustomSearchForm(ModelSearchForm): - """Class for custom search form.""" - - curriculum_areas = forms.ModelMultipleChoiceField( - queryset=CurriculumArea.objects.all(), - required=False, - widget=None, - ) - - def search(self): - """Search index based off query. - - This method overrides the default ModelSearchForm search method to - modify the default result if a blank query string is given. The form - returns all items instead of zero items if a blank string is given. - - The original search method checks if the form is valid, however - with all fields being optional with no validation, the form is always - valid. Therefore logic for an invalid form is removed. - - Returns: - SearchQuerySet of search results. - """ - if not self.cleaned_data.get('q'): - search_query_set = all_items(self.searchqueryset.all()) - else: - search_query_set = self.searchqueryset.auto_query(self.cleaned_data['q']) - search_query_set = search_query_set.models(*self.get_models()) - - # Filter items by curriculum areas if given in query. - if self.cleaned_data["curriculum_areas"]: - # Currently the given filter is provided as a QuerySet, but the search - # index saves the curriculum areas for objects as a list of primary - # keys, stored as strings. Because of this, the logic below must - # covert the QuerySet of the filter into a list of primary key strings. - query_ids = list(map(str, self.cleaned_data["curriculum_areas"].values_list("pk", flat=True))) - # Only query models with curriculum_areas attribute. - models = set(self.get_models()).intersection([Lesson, CurriculumIntegration]) - search_query_set = search_query_set.models(*models).filter( - curriculum_areas__in=query_ids - ) - - return search_query_set - - -def all_items(searchqueryset): - """Return all items of SearchQuerySet. - - Args: - searchqueryset (SearchQuerySet): QuerySet of search items. - - Returns: - All items in index. - """ - return searchqueryset.all() diff --git a/csunplugged/search/management/commands/rebuild_index.py b/csunplugged/search/management/commands/rebuild_index.py deleted file mode 100644 index 84421fb70..000000000 --- a/csunplugged/search/management/commands/rebuild_index.py +++ /dev/null @@ -1,38 +0,0 @@ -"""Module for the overriden Django Haystack rebuild_index command.""" - -from haystack.management.commands import rebuild_index -from haystack.query import SearchQuerySet -from search.forms import all_items -from resources.models import Resource -from general.models import GeneralPage -from classic.models import ClassicPage -from topics.models import ( - Topic, - UnitPlan, - Lesson, - ProgrammingChallenge, - CurriculumIntegration, -) - - -class Command(rebuild_index.Command): - """Command class for the custom Django rebuild_index command.""" - - help = "Rebuild search index and check empty query returns all items." - - def handle(self, *args, **options): - """Automatically called when the rebuild_index command is given.""" - total_objects = Resource.objects.count() - total_objects += Topic.objects.count() - total_objects += UnitPlan.objects.count() - total_objects += Lesson.objects.count() - total_objects += ProgrammingChallenge.objects.count() - total_objects += CurriculumIntegration.objects.count() - total_objects += GeneralPage.objects.count() - total_objects += ClassicPage.objects.count() - super(Command, self).handle(*args, **options) - total_results = len(all_items(SearchQuerySet())) - if total_objects == total_results: - print("Search index loaded with {} items.".format(total_results)) - else: # pragma: no cover - raise Exception("Search all_items() method does not return all items.") diff --git a/csunplugged/search/management/commands/rebuild_search_indexes.py b/csunplugged/search/management/commands/rebuild_search_indexes.py new file mode 100644 index 000000000..e02c5067d --- /dev/null +++ b/csunplugged/search/management/commands/rebuild_search_indexes.py @@ -0,0 +1,19 @@ +"""Module for the custom Django rebuild_search_indexes command.""" + +from django.core import management +from django.db import transaction +from search.utils import get_search_index_updater +from search.settings import SEARCH_CLASSES_AND_BOOSTS + + +class Command(management.base.BaseCommand): + """Required command class for the custom Django rebuild_search_indexes command.""" + + help = "Rebuild search indexes in database." + + def handle(self, *args, **options): + """Automatically called when the command is given.""" + for model_data in SEARCH_CLASSES_AND_BOOSTS: + model = model_data['class'] + for instance in model.objects.all(): + transaction.on_commit(get_search_index_updater(instance)) diff --git a/csunplugged/search/settings.py b/csunplugged/search/settings.py new file mode 100644 index 000000000..b56314980 --- /dev/null +++ b/csunplugged/search/settings.py @@ -0,0 +1,118 @@ +"""Settings for the search application.""" + +from topics.models import ( + Topic, + Lesson, + ProgrammingChallenge, + CurriculumIntegration, + LessonNumber, + CurriculumArea, +) +from classic.models import ClassicPage +from resources.models import Resource +from general.models import GeneralPage +from at_home.models import Activity +from search.utils import ( + get_search_model_types, + get_model_filter_options, +) + +SEARCH_PAGINATION = 25 +SEARCH_RESULT_TEMPLATE_DIRECTORY = 'search/result/' + + +def lesson_render_function(lesson): + """Provide additional context for rendering lesson results. + + Args: + lesson (Lesson): Instance of search result. + + Returns: + Dictionary of additional items to add to the render context. + """ + lesson_ages = [] + lesson_numbers = LessonNumber.objects.filter(lesson=lesson).select_related('age_group') + for lesson_number in lesson_numbers: + lesson_ages.append( + { + "lower": lesson_number.age_group.ages.lower, + "upper": lesson_number.age_group.ages.upper, + "number": lesson_number.number, + } + ) + curriculum_areas = CurriculumArea.objects.filter( + learning_outcomes__in=lesson.learning_outcomes.all() + ).select_related('parent').distinct() + + additional_context = { + 'lesson_ages': lesson_ages, + 'curriculum_areas': curriculum_areas, + } + return additional_context + + +# List of dicts of class, boost value, required prefetches. +SEARCH_CLASSES_AND_BOOSTS = [ + { + 'class': Topic, + 'boost': 2, + 'curriculum_area_filtered': False, + 'select_related': [], + 'prefetch_related': [], + }, + { + 'class': Lesson, + 'boost': 1.2, + 'curriculum_area_filtered': True, + 'select_related': ['topic'], + 'prefetch_related': ['learning_outcomes'], + 'render_function': lesson_render_function, + }, + { + 'class': Resource, + 'boost': 1, + 'curriculum_area_filtered': False, + 'select_related': [], + 'prefetch_related': [], + }, + { + 'class': GeneralPage, + 'boost': 0.9, + 'curriculum_area_filtered': False, + 'select_related': [], + 'prefetch_related': [], + }, + { + 'class': Activity, + 'boost': 0.8, + 'curriculum_area_filtered': False, + 'select_related': [], + 'prefetch_related': [], + }, + { + 'class': CurriculumIntegration, + 'boost': 0.7, + 'curriculum_area_filtered': True, + 'select_related': ['topic'], + 'prefetch_related': ['curriculum_areas', 'curriculum_areas__parent'], + }, + { + 'class': ClassicPage, + 'boost': 0.6, + 'curriculum_area_filtered': False, + 'select_related': [], + 'prefetch_related': [], + }, + { + 'class': ProgrammingChallenge, + 'boost': 0.4, + 'curriculum_area_filtered': False, + 'select_related': ['topic'], + 'prefetch_related': ['difficulty'], + }, +] + + +# Settings calculated from SEARCH_MODEL_TYPES +SEARCH_MODEL_TYPES = get_search_model_types(SEARCH_CLASSES_AND_BOOSTS) +SEARCH_MODEL_FILTER_VALUES = get_model_filter_options(SEARCH_MODEL_TYPES) diff --git a/csunplugged/search/templatetags/__init__.py b/csunplugged/search/templatetags/__init__.py new file mode 100644 index 000000000..23ff4ca91 --- /dev/null +++ b/csunplugged/search/templatetags/__init__.py @@ -0,0 +1 @@ +"""Module for the templatetags for the search application.""" diff --git a/csunplugged/search/templatetags/search_result.py b/csunplugged/search/templatetags/search_result.py new file mode 100644 index 000000000..7eff6e3e7 --- /dev/null +++ b/csunplugged/search/templatetags/search_result.py @@ -0,0 +1,20 @@ +"""Module for the search result template tag.""" + +from os.path import join +from django.template.defaulttags import register +from django.template.loader import render_to_string +from search.utils import get_search_model_id +from search.settings import SEARCH_RESULT_TEMPLATE_DIRECTORY, SEARCH_MODEL_TYPES + + +@register.simple_tag +def search_result_template(result): + """Return the value in a dictionary given a key.""" + class_id = get_search_model_id(type(result)) + context = {'result': result} + + render_func = SEARCH_MODEL_TYPES[class_id].get('render_function', None) + if render_func: + context.update(render_func(result)) + template = join(SEARCH_RESULT_TEMPLATE_DIRECTORY, class_id + '.html') + return render_to_string(template, context) diff --git a/csunplugged/search/urls.py b/csunplugged/search/urls.py index cb409670b..18211dc43 100644 --- a/csunplugged/search/urls.py +++ b/csunplugged/search/urls.py @@ -9,7 +9,7 @@ # eg: /search/ path( '', - views.CustomSearchView.as_view(), + views.SearchView.as_view(), name="index" ), ] diff --git a/csunplugged/search/utils.py b/csunplugged/search/utils.py new file mode 100644 index 000000000..d99ff9c2c --- /dev/null +++ b/csunplugged/search/utils.py @@ -0,0 +1,138 @@ +"""Search utility functions.""" + +import copy +from django.db.models import Value +from django.contrib.postgres.search import SearchVector +from lxml.html import fromstring +from lxml.cssselect import CSSSelector +from django.template.loader import render_to_string +from django.template.exceptions import TemplateSyntaxError + +CONTENT_NOT_FOUND_ERROR_MESSAGE = ("General page requires content wrapped in " + "an element with ID 'general-page-content'") + + +def concat_field_values(*args): + """Return string of field values for search indexing. + + Args: + Any number of QuerySet objects, the result of value_list calls. + + Returns: + String for search indexing. + """ + field_names = [] + for queryset in args: + for instance in queryset: + for field in instance: + field_names.append(str(field)) + return ' '.join(field_names) + + +def get_search_index_updater(instance): + """Return function for updating search index of instance.""" + components = instance.index_contents() + pk = instance.pk + + def on_commit(): + search_vector_list = [] + for weight, text in components.items(): + search_vector_list.append( + SearchVector(Value(text), weight=weight) + ) + search_vectors = search_vector_list[0] + for search_vector in search_vector_list[1:]: + search_vectors += search_vector + + instance.__class__.objects.filter(pk=pk).update( + search_vector=search_vectors + ) + print(f'Rebuilt index for {instance} ({instance.__class__})') + return on_commit + + +def get_template_text(template): + """Return text for indexing. + + Args: + template (string): Path to template to get text from. + + Returns: + String for indexing. + """ + rendered = render_to_string(template, {"LANGUAGE_CODE": "en"}) + html = fromstring(rendered) + selector = CSSSelector("#general-page-content") + try: + contents = selector(html)[0].text_content() + except IndexError: + raise TemplateSyntaxError(CONTENT_NOT_FOUND_ERROR_MESSAGE) + return contents + + +def get_search_model_types(search_model_types_list): + """Return dictionary of search model types. + + Args: + search_model_types: List of dicts of search base data to + to be fleshed out into full dictionary. + + Return: + Dictionary of search model types, keyed by search model ID. + """ + model_types = dict() + for model_data in search_model_types_list: + model_types[get_search_model_id(model_data['class'])] = model_data + return model_types + + +def get_search_model_id(model): + """Return search ID for model. + + Args: + model: Class to get search ID for. + + Returns: + String identifying class. + """ + module_name = model._meta.app_label.lower() + class_name = model._meta.object_name.lower() + return f'{module_name}.{class_name}' + + +def get_model_filter_options(search_model_types): + """Return of model options for search type filter. + + Args: + search_model_types (dict): Dictionary of search model type data. + + Return: + List of dictionaries of model options. + """ + options = [] + for (model_id, model_data) in search_model_types.items(): + options.append( + { + 'name': model_data['class'].MODEL_NAME, + 'value': model_id, + 'selected': False, + } + ) + return options + + +def updated_model_filter_options(model_options, selected_options): + """Update a set of model filters with selected options. + + Args: + model_options (list): List of dictionaries of model options. + selected_options (list): List of selected values. + + Returns: + Updated list of dictionaries of model options. + """ + model_options = copy.deepcopy(model_options) + for model_option in model_options: + if model_option['value'] in selected_options: + model_option['selected'] = True + return model_options diff --git a/csunplugged/search/views.py b/csunplugged/search/views.py index 780b45016..a7a80b55a 100644 --- a/csunplugged/search/views.py +++ b/csunplugged/search/views.py @@ -1,91 +1,123 @@ """Module for custom search view.""" -from haystack.generic_views import SearchView -from haystack.query import EmptySearchQuerySet -from django.db.models.functions import Concat -from search.forms import CustomSearchForm -from topics.models import ( - CurriculumArea, - LessonNumber, -) - -class CustomSearchView(SearchView): - """View for custom search.""" +from itertools import chain +from django.views import generic +from django.db.models import ( + F, + # Value, + # BooleanField, + # Case, + # When, +) +from django.contrib.postgres.search import ( + SearchQuery, + SearchRank, +) +# from topics.models import CurriculumArea +from search.settings import ( + SEARCH_MODEL_TYPES, + SEARCH_MODEL_FILTER_VALUES, +) +from search.utils import updated_model_filter_options - form_class = CustomSearchForm - def get_queryset(self): - """Return the list of items for this view. +class SearchView(generic.TemplateView): + """View for search.""" - This method overrides the default method, as all items were being - returned when no query parameters was given (not a blank query). - - Returns: - QuerySet for view. - """ - if self.request.GET: - return super(CustomSearchView, self).get_queryset() - else: - return EmptySearchQuerySet() + template_name = 'search/index.html' def get_context_data(self, *args, **kwargs): - """Return context dictionary for custom search view. + """Return context dictionary for search view. Returns: Dictionary of context values. """ - context = super(CustomSearchView, self).get_context_data(*args, **kwargs) - context["search"] = bool(self.request.GET) - - # Model filter - selected_models = self.request.GET.getlist("models") - models_tuples = context["form"].fields["models"].choices - models = [] - for (model_value, model_name) in models_tuples: - model_data = { - "value": model_value, - "name": model_name, - } - if model_value in selected_models: - model_data["selected"] = "true" - if model_value == "classic.classicpage": - model_data["name"] = "Classic CS Unplugged pages" - models.append(model_data) - context["models"] = models - - # Curriculum area filter - selected_curriculum_areas = self.request.GET.getlist("curriculum_areas") - curriculum_areas = list(CurriculumArea.objects.annotate( - display_name=Concat("parent__name", "name") - ).order_by("display_name").values("pk", "colour", "name", "parent__name", "parent__pk")) - grouped_curriculum_areas = [] - for curriculum_area in curriculum_areas: - if selected_curriculum_areas: - if str(curriculum_area["pk"]) in selected_curriculum_areas: - curriculum_area["selected"] = "true" - parent_pk = curriculum_area["parent__pk"] - if parent_pk: - grouped_curriculum_areas[-1]["children"].append(curriculum_area) - else: - curriculum_area["children"] = [] - grouped_curriculum_areas.append(curriculum_area) - context["curriculum_areas"] = grouped_curriculum_areas - - # Update result objects - for result in context["object_list"]: - if result.model_name == "lesson": - lesson_ages = [] - for age_group in result.object.age_group.order_by("ages"): - number = LessonNumber.objects.get(lesson=result.object, age_group=age_group).number - lesson_ages.append( - { - "lower": age_group.ages.lower, - "upper": age_group.ages.upper, - "number": number, - } + context = super().get_context_data(*args, **kwargs) + context['models'] = SEARCH_MODEL_FILTER_VALUES + + # Get request query parmaters + query_text = self.request.GET.get('q') + selected_models = self.request.GET.getlist('models') + # selected_curriculum_areas = self.request.GET.getlist('curriculum_areas') + get_request = bool(self.request.GET) + + if get_request: + context['search'] = get_request + + search_request_data = SEARCH_MODEL_TYPES.copy() + models_to_ignore = [] + + for (model_id, model_data) in search_request_data.items(): + if not selected_models or model_id in selected_models: + model_data['results'] = model_data['class'].objects.all() + else: + models_to_ignore.append(model_id) + + # Delete unused models after iterating + for model_id in models_to_ignore: + del search_request_data[model_id] + + # Search by text query if provided + if query_text: + query = SearchQuery(query_text, search_type="websearch") + for (model_id, model_data) in search_request_data.items(): + model_data['results'] = model_data['results'].filter( + search_vector=query + ).annotate( + rank=SearchRank( + F('search_vector'), query + ) + model_data['boost'] + ).filter( + rank__gt=0 + ).order_by( + '-rank' + ) + + # Concatenate all results + results = [] + for model_data in search_request_data.values(): + results.append( + model_data['results'].select_related( + *model_data['select_related'] + ).prefetch_related( + *model_data['prefetch_related'] ) - result.lesson_ages = lesson_ages - result.curriculum_areas = CurriculumArea.objects.filter( - learning_outcomes__in=result.object.learning_outcomes.all() - ).distinct() + ) + results = chain(*results) + + # Order results if query text provided + if query_text: + results = sorted( + results, + key=lambda instance: instance.rank, + reverse=True, + ) + else: + results = list(results) + + # Organise curriculum areas + # curriculum_areas = CurriculumArea.objects.order_by( + # 'number', '-parent', 'name' + # ).values( + # 'pk', 'colour', 'name', 'parent__pk' + # ) + # grouped_curriculum_areas = [] + # for curriculum_area in curriculum_areas: + # if selected_curriculum_areas: + # if str(curriculum_area['pk']) in selected_curriculum_areas: + # curriculum_area['selected'] = 'true' + # if curriculum_area['parent__pk']: + # grouped_curriculum_areas[-1]['children'].append(curriculum_area) + # else: + # curriculum_area['children'] = [] + # grouped_curriculum_areas.append(curriculum_area) + + context['query'] = query_text + context['models'] = updated_model_filter_options( + SEARCH_MODEL_FILTER_VALUES, + selected_models, + ) + # context['curriculum_areas'] = grouped_curriculum_areas + context['results'] = results + context['results_count'] = len(results) return context diff --git a/third-party-licences/sniglet.txt b/csunplugged/static/fonts/CSUnplugged-Headings-LICENSE.txt similarity index 72% rename from third-party-licences/sniglet.txt rename to csunplugged/static/fonts/CSUnplugged-Headings-LICENSE.txt index 68d725136..02770b0a6 100644 --- a/third-party-licences/sniglet.txt +++ b/csunplugged/static/fonts/CSUnplugged-Headings-LICENSE.txt @@ -1,19 +1,18 @@ -Copyright (c) 2008, Haley Fiege , with Reserved Font Name: "Sniglet". +Copyright (c) 2008, Haley Fiege (haley@kingdomofawesome.com) +Copyright (c) 2012, Brenda Gallo (gbrenda1987@gmail.com) +Copyright (c) 2013, Pablo Impallari (www.impallari.com|impallari@gmail.com) +Copyright (c) 2022, University of Canterbury Computer Science Education Research Group (https://github.com/uccser/cs-unplugged-font|csse-education-research@canterbury.ac.nz) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL -Version 1.1 - 26 February 2007 +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- -SIL Open Font License -==================================================== - - -Preamble ----------- - +PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and @@ -29,71 +28,63 @@ however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. -Definitions -------------- - -`"Font Software"` refers to the set of files released by the Copyright +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. -`"Reserved Font Name"` refers to any names specified as such after the +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). -`"Original Version"` refers to the collection of Font Software components as +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). -`"Modified Version"` refers to any derivative made by adding to, deleting, +"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. -`"Author"` refers to any designer, engineer, programmer, technical +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. -Permission & Conditions ------------------------- - +PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: -1. Neither the Font Software nor any of its individual components, +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. -2. Original or Modified Versions of the Font Software may be bundled, +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. -3. No Modified Version of the Font Software may use the Reserved Font +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. -4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. -5. The Font Software, modified or unmodified, in part or in whole, +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. -Termination ------------ - +TERMINATION This license becomes null and void if any of the above conditions are not met. - DISCLAIMER - THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT diff --git a/csunplugged/static/fonts/CSUnplugged-Headings.otf b/csunplugged/static/fonts/CSUnplugged-Headings.otf new file mode 100644 index 000000000..c905cbc8f Binary files /dev/null and b/csunplugged/static/fonts/CSUnplugged-Headings.otf differ diff --git a/csunplugged/static/img/at_a_distance/algorithms/scratch-program.svg b/csunplugged/static/img/at_a_distance/algorithms/scratch-program.svg new file mode 100644 index 000000000..69822cb76 --- /dev/null +++ b/csunplugged/static/img/at_a_distance/algorithms/scratch-program.svg @@ -0,0 +1,2 @@ + +whenclickedaskType in a scoreandwaitsetmax so fartoanswerrepeat4askType in a scoreandwaitifanswer>maxsofarthensetmax so fartoanswersayjoinHigh score wasmaxsofarfor10seconds diff --git a/csunplugged/static/img/at_a_distance/button-download-slides.svg b/csunplugged/static/img/at_a_distance/button-download-slides.svg new file mode 100755 index 000000000..c990a59c4 --- /dev/null +++ b/csunplugged/static/img/at_a_distance/button-download-slides.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/at_a_distance/button-download-speaker-notes.svg b/csunplugged/static/img/at_a_distance/button-download-speaker-notes.svg new file mode 100755 index 000000000..00ea12f7e --- /dev/null +++ b/csunplugged/static/img/at_a_distance/button-download-speaker-notes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/at_a_distance/button-open-slides.svg b/csunplugged/static/img/at_a_distance/button-open-slides.svg new file mode 100755 index 000000000..02b596e5e --- /dev/null +++ b/csunplugged/static/img/at_a_distance/button-open-slides.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/at_a_distance/computer-thumbs-up.png b/csunplugged/static/img/at_a_distance/computer-thumbs-up.png new file mode 100644 index 000000000..3612156eb Binary files /dev/null and b/csunplugged/static/img/at_a_distance/computer-thumbs-up.png differ diff --git a/csunplugged/static/img/at_a_distance/finite-state-automata/email-prompt.svg b/csunplugged/static/img/at_a_distance/finite-state-automata/email-prompt.svg new file mode 100755 index 000000000..6525fbf2a --- /dev/null +++ b/csunplugged/static/img/at_a_distance/finite-state-automata/email-prompt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/at_a_distance/finite-state-automata/fsa.svg b/csunplugged/static/img/at_a_distance/finite-state-automata/fsa.svg new file mode 100755 index 000000000..26e58ce7e --- /dev/null +++ b/csunplugged/static/img/at_a_distance/finite-state-automata/fsa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/at_a_distance/stroop-effect/airfare-prompt.png b/csunplugged/static/img/at_a_distance/stroop-effect/airfare-prompt.png new file mode 100755 index 000000000..b62860d31 Binary files /dev/null and b/csunplugged/static/img/at_a_distance/stroop-effect/airfare-prompt.png differ diff --git a/csunplugged/static/img/at_a_distance/stroop-effect/date-prompt.png b/csunplugged/static/img/at_a_distance/stroop-effect/date-prompt.png new file mode 100755 index 000000000..3778e790a Binary files /dev/null and b/csunplugged/static/img/at_a_distance/stroop-effect/date-prompt.png differ diff --git a/csunplugged/static/img/at_a_distance/stroop-effect/quit-prompt.png b/csunplugged/static/img/at_a_distance/stroop-effect/quit-prompt.png new file mode 100755 index 000000000..a36965799 Binary files /dev/null and b/csunplugged/static/img/at_a_distance/stroop-effect/quit-prompt.png differ diff --git a/csunplugged/static/img/at_a_distance/teaching-online.png b/csunplugged/static/img/at_a_distance/teaching-online.png new file mode 100755 index 000000000..c95f596b5 Binary files /dev/null and b/csunplugged/static/img/at_a_distance/teaching-online.png differ diff --git a/csunplugged/static/img/at_a_distance/tile-background.png b/csunplugged/static/img/at_a_distance/tile-background.png new file mode 100755 index 000000000..47ebfa604 Binary files /dev/null and b/csunplugged/static/img/at_a_distance/tile-background.png differ diff --git a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/README.txt b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/README.txt new file mode 100644 index 000000000..7f137727f --- /dev/null +++ b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/README.txt @@ -0,0 +1,2 @@ +Barcode SVGs are created with https://online-barcode-generator.net/ +The parameter is set to EAN-13, and the resulting SVG is upscaled, and text changed to paths. diff --git a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.jpg b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.jpg deleted file mode 100644 index 545fbdcc8..000000000 Binary files a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.jpg and /dev/null differ diff --git a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.svg b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.svg new file mode 100644 index 000000000..defc02d64 --- /dev/null +++ b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-4.svg @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.jpg b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.jpg deleted file mode 100644 index 93c2a4437..000000000 Binary files a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.jpg and /dev/null differ diff --git a/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.svg b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.svg new file mode 100644 index 000000000..acbb7f276 --- /dev/null +++ b/csunplugged/static/img/at_home/unlocking-the-secret-in-product-codes/unlocking-the-secret-in-product-codes-challenge-5.svg @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/csunplugged/static/img/cs-unplugged-logo-at-a-distance-white.svg b/csunplugged/static/img/cs-unplugged-logo-at-a-distance-white.svg new file mode 100755 index 000000000..52d94b9a9 --- /dev/null +++ b/csunplugged/static/img/cs-unplugged-logo-at-a-distance-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/cs-unplugged-logo-at-a-distance.svg b/csunplugged/static/img/cs-unplugged-logo-at-a-distance.svg new file mode 100755 index 000000000..0ee77df26 --- /dev/null +++ b/csunplugged/static/img/cs-unplugged-logo-at-a-distance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/plugging-it-in/tile-background.png b/csunplugged/static/img/plugging-it-in/tile-background.png new file mode 100644 index 000000000..57eeaabcf Binary files /dev/null and b/csunplugged/static/img/plugging-it-in/tile-background.png differ diff --git a/csunplugged/static/img/resources/binary-windows/binary-windows-1-to-8.png b/csunplugged/static/img/resources/binary-windows/binary-windows-1-to-8.png deleted file mode 100644 index 96738e677..000000000 Binary files a/csunplugged/static/img/resources/binary-windows/binary-windows-1-to-8.png and /dev/null differ diff --git a/csunplugged/static/img/resources/binary-windows/binary-windows-16-to-128.png b/csunplugged/static/img/resources/binary-windows/binary-windows-16-to-128.png deleted file mode 100644 index 935fe9b55..000000000 Binary files a/csunplugged/static/img/resources/binary-windows/binary-windows-16-to-128.png and /dev/null differ diff --git a/csunplugged/static/img/resources/binary-windows/binary-windows-blank.png b/csunplugged/static/img/resources/binary-windows/binary-windows-blank.png deleted file mode 100644 index c32e75c71..000000000 Binary files a/csunplugged/static/img/resources/binary-windows/binary-windows-blank.png and /dev/null differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-1.png b/csunplugged/static/img/resources/binary-windows/dots-1.png new file mode 100755 index 000000000..0c32356e3 Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-1.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-128.png b/csunplugged/static/img/resources/binary-windows/dots-128.png new file mode 100755 index 000000000..b858bdff3 Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-128.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-16.png b/csunplugged/static/img/resources/binary-windows/dots-16.png new file mode 100755 index 000000000..792032aac Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-16.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-2.png b/csunplugged/static/img/resources/binary-windows/dots-2.png new file mode 100755 index 000000000..36444bc0a Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-2.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-32.png b/csunplugged/static/img/resources/binary-windows/dots-32.png new file mode 100755 index 000000000..1c762ce20 Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-32.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-4.png b/csunplugged/static/img/resources/binary-windows/dots-4.png new file mode 100755 index 000000000..f9b33a35a Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-4.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-64.png b/csunplugged/static/img/resources/binary-windows/dots-64.png new file mode 100755 index 000000000..4312ca3f7 Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-64.png differ diff --git a/csunplugged/static/img/resources/binary-windows/dots-8.png b/csunplugged/static/img/resources/binary-windows/dots-8.png new file mode 100755 index 000000000..0d7683da2 Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/dots-8.png differ diff --git a/csunplugged/static/img/resources/binary-windows/lightbulb-off.png b/csunplugged/static/img/resources/binary-windows/lightbulb-off.png new file mode 100644 index 000000000..d8139f25c Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/lightbulb-off.png differ diff --git a/csunplugged/static/img/resources/binary-windows/lightbulb-on.png b/csunplugged/static/img/resources/binary-windows/lightbulb-on.png new file mode 100644 index 000000000..16e076884 Binary files /dev/null and b/csunplugged/static/img/resources/binary-windows/lightbulb-on.png differ diff --git a/csunplugged/static/js/at-a-distance.js b/csunplugged/static/js/at-a-distance.js new file mode 100644 index 000000000..25cac0508 --- /dev/null +++ b/csunplugged/static/js/at-a-distance.js @@ -0,0 +1,5 @@ +// Set to global scope to be accessible by inpage JavaScript +// defined in templates/at_a_distance/components/reveal-initialize.html +window.CSU_ATD_Reveal = require('reveal.js'); +window.CSU_ATD_SpeakerNotes = require('./reveal-speaker-notes-plugin/reveal-plugin.js'); +window.CSU_ATD_Highlight = require('reveal.js/plugin/highlight/highlight.js'); diff --git a/csunplugged/static/js/reveal-speaker-notes-plugin/LICENSE b/csunplugged/static/js/reveal-speaker-notes-plugin/LICENSE new file mode 100644 index 000000000..f82a0cc76 --- /dev/null +++ b/csunplugged/static/js/reveal-speaker-notes-plugin/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2011-2022 Hakim El Hattab, http://hakim.se, and reveal.js contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/csunplugged/static/js/reveal-speaker-notes-plugin/README.md b/csunplugged/static/js/reveal-speaker-notes-plugin/README.md new file mode 100644 index 000000000..f099f1ed2 --- /dev/null +++ b/csunplugged/static/js/reveal-speaker-notes-plugin/README.md @@ -0,0 +1,50 @@ +# Custom reveal.js speaker notes plugin + +A modified version of the reveal.js speaker notes plugin. + +- https://github.com/hakimel/reveal.js +- https://github.com/hakimel/reveal.js/tree/master/plugin/notes + +The source repository is licensed under the MIT license. + +The original license is available within this directory, and also in `third-party-licences/revealjs.txt`. + +A big thank you to Hakim El Hattab for making such a great framework. + +## Changes from original + +- HTML for speaker view is served at a specific URL by Django. + This allows us to easier edit and link files to the HTML. +- JavaScript for the speaker view has been moved to its own file for easier editing. +- CSS for the speaker view has been moved to its own file for easier editing and been converted to SCSS. +- Remove Markdown support for speaker notes. +- Add feature to copy <pre> tag inside speaker notes to clipboard. +- Replaced tall layout as default, and removed wide layout. +- Customise speaker view layout and show controls help text. +- Removed pacing timer as we don't use this feature. Timings cannot be suggested due to wide range of speakers (style, language, confidence, etc). +- Scroll to top of notes when slide changes. + +## Files related to plugin + +``` +csunplugged/ + static/ + js/ + reveal-speaker-notes-plugin/ + LICENSE + README.md + reveal-plugin.js + speaker-notes-window.js + scss/ + reveal-speaker-notes-plugin/ + speaker-notes-window.scss + templates/ + at_a_distance/ + reveal-speaker-notes-plugin/ + speaker-notes-window.html +third-party-licences/ + revealjs.txt +``` + +Logic for serving speaker notes view is found within the `at_a_distance` application (in particular the `views.py` and `urls.py` files. +Some SCSS partials are imported for consistency with the custom theme used. diff --git a/csunplugged/static/js/reveal-speaker-notes-plugin/reveal-plugin.js b/csunplugged/static/js/reveal-speaker-notes-plugin/reveal-plugin.js new file mode 100644 index 000000000..b47536075 --- /dev/null +++ b/csunplugged/static/js/reveal-speaker-notes-plugin/reveal-plugin.js @@ -0,0 +1,256 @@ +/** + * Modified version of the reveal.js speaker notes plugin. + * + * Changes from original are listed in the README file. + * + * This script handles opening of and synchronization with the + * speaker notes window. + * + * Handshake process: + * 1. This window posts 'connect' to notes window + * - Includes URL of presentation to show + * 2. Notes window responds with 'connected' when it is available + * 3. This window proceeds to send the current presentation state + * to the notes window + */ + +const Plugin = () => { + + let connectInterval; + let speakerWindow = null; + let deck; + + /** + * Opens a new speaker view window. + */ + function openSpeakerWindow() { + + // If a window is already open, focus it + if (speakerWindow && !speakerWindow.closed) { + speakerWindow.focus(); + } + else { + speakerWindow = window.open('/at-a-distance/speaker-notes/', 'Speaker Notes', 'width=1200,height=800'); + + if (!speakerWindow) { + alert('Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.'); + return; + } + + connect(); + } + + } + + /** + * Reconnect with an existing speaker view window. + */ + function reconnectSpeakerWindow(reconnectWindow) { + + if (speakerWindow && !speakerWindow.closed) { + speakerWindow.focus(); + } + else { + speakerWindow = reconnectWindow; + window.addEventListener('message', onPostMessage); + onConnected(); + } + + } + + /** + * Connect to the notes window through a postmessage handshake. + * Using postmessage enables us to work in situations where the + * origins differ, such as a presentation being opened from the + * file system. + */ + function connect() { + + const presentationURL = deck.getConfig().url; + + const url = typeof presentationURL === 'string' ? presentationURL : + window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search; + + // Keep trying to connect until we get a 'connected' message back + connectInterval = setInterval(function () { + speakerWindow.postMessage(JSON.stringify({ + namespace: 'reveal-notes', + type: 'connect', + state: deck.getState(), + url + }), '*'); + }, 500); + + window.addEventListener('message', onPostMessage); + + } + + /** + * Calls the specified Reveal.js method with the provided argument + * and then pushes the result to the notes frame. + */ + function callRevealApi(methodName, methodArguments, callId) { + + let result = deck[methodName].apply(deck, methodArguments); + speakerWindow.postMessage(JSON.stringify({ + namespace: 'reveal-notes', + type: 'return', + result, + callId + }), '*'); + + } + + /** + * Posts the current slide data to the notes window. + */ + function post(event) { + + let slideElement = deck.getCurrentSlide(), + notesElement = slideElement.querySelector('aside.notes'), + fragmentElement = slideElement.querySelector('.current-fragment'); + + let messageData = { + namespace: 'reveal-notes', + type: 'state', + notes: '', + markdown: false, + whitespace: 'normal', + state: deck.getState() + }; + + // Look for notes defined in a slide attribute + if (slideElement.hasAttribute('data-notes')) { + messageData.notes = slideElement.getAttribute('data-notes'); + messageData.whitespace = 'pre-wrap'; + } + + // Look for notes defined in a fragment + if (fragmentElement) { + let fragmentNotes = fragmentElement.querySelector('aside.notes'); + if (fragmentNotes) { + notesElement = fragmentNotes; + } + else if (fragmentElement.hasAttribute('data-notes')) { + messageData.notes = fragmentElement.getAttribute('data-notes'); + messageData.whitespace = 'pre-wrap'; + + // In case there are slide notes + notesElement = null; + } + } + + // Look for notes defined in an aside element + if (notesElement) { + messageData.notes = notesElement.innerHTML; + messageData.markdown = typeof notesElement.getAttribute('data-markdown') === 'string'; + } + + speakerWindow.postMessage(JSON.stringify(messageData), '*'); + + } + + /** + * Check if the given event is from the same origin as the + * current window. + */ + function isSameOriginEvent(event) { + + try { + return window.location.origin === event.source.location.origin; + } + catch (error) { + return false; + } + + } + + function onPostMessage(event) { + + // Only allow same-origin messages + // (added 12/5/22 as a XSS safeguard) + if (isSameOriginEvent(event)) { + + let data = JSON.parse(event.data); + if (data && data.namespace === 'reveal-notes' && data.type === 'connected') { + clearInterval(connectInterval); + onConnected(); + } + else if (data && data.namespace === 'reveal-notes' && data.type === 'call') { + callRevealApi(data.methodName, data.arguments, data.callId); + } + + } + + } + + /** + * Called once we have established a connection to the notes + * window. + */ + function onConnected() { + + // Monitor events that trigger a change in state + deck.on('slidechanged', post); + deck.on('fragmentshown', post); + deck.on('fragmenthidden', post); + deck.on('overviewhidden', post); + deck.on('overviewshown', post); + deck.on('paused', post); + deck.on('resumed', post); + + // Post the initial state + post(); + + } + + return { + id: 'notes', + + init: function (reveal) { + + deck = reveal; + + if (!/receiver/i.test(window.location.search)) { + + // If the there's a 'notes' query set, open directly + if (window.location.search.match(/(\?|\&)notes/gi) !== null) { + openSpeakerWindow(); + } + else { + // Keep listening for speaker view hearbeats. If we receive a + // heartbeat from an orphaned window, reconnect it. This ensures + // that we remain connected to the notes even if the presentation + // is reloaded. + window.addEventListener('message', event => { + + if (!speakerWindow && typeof event.data === 'string') { + let data; + + try { + data = JSON.parse(event.data); + } + catch (error) { } + + if (data && data.namespace === 'reveal-notes' && data.type === 'heartbeat') { + reconnectSpeakerWindow(event.source); + } + } + }); + } + + // Open the notes when the 's' key is hit + deck.addKeyBinding({ keyCode: 83, key: 'S', description: 'Speaker notes view' }, function () { + openSpeakerWindow(); + }); + + } + + }, + + open: openSpeakerWindow + }; + +}; + +module.exports = Plugin; diff --git a/csunplugged/static/js/reveal-speaker-notes-plugin/speaker-notes-window.js b/csunplugged/static/js/reveal-speaker-notes-plugin/speaker-notes-window.js new file mode 100644 index 000000000..ff9d59c01 --- /dev/null +++ b/csunplugged/static/js/reveal-speaker-notes-plugin/speaker-notes-window.js @@ -0,0 +1,488 @@ +/** + * Modified version of the reveal.js speaker notes plugin. + * + * Changes from original are listed in the README file. + */ + +(function () { + + var notes, + notesValue, + currentState, + currentSlide, + upcomingSlide, + layoutDropdown, + pendingCalls = {}, + lastRevealApiCallId = 0, + connected = false + + var connectionStatus = document.querySelector('#connection-status'); + + var SPEAKER_LAYOUTS = { + 'default': 'Default', + 'notes-only': 'Notes only' + }; + + setupLayout(); + + let openerOrigin; + + + try { + openerOrigin = window.opener.location.origin; + } + catch (error) { console.warn(error) } + + // In order to prevent XSS, the speaker view will only run if its + // opener has the same origin as itself + if (window.location.origin !== openerOrigin) { + connectionStatus.innerHTML = 'Error: The speaker notes window can only be opened from the same origin and by a slide deck.'; + return; + } + + var connectionTimeout = setTimeout(function () { + connectionStatus.innerHTML = 'Error connecting to main window.
Please try closing and reopening the speaker view.'; + }, 5000); + + window.addEventListener('message', function (event) { + + clearTimeout(connectionTimeout); + connectionStatus.style.display = 'none'; + + var data = JSON.parse(event.data); + + // The overview mode is only useful to the reveal.js instance + // where navigation occurs so we don't sync it + if (data.state) delete data.state.overview; + + // Messages sent by the notes plugin inside of the main window + if (data && data.namespace === 'reveal-notes') { + if (data.type === 'connect') { + handleConnectMessage(data); + } + else if (data.type === 'state') { + handleStateMessage(data); + } + else if (data.type === 'return') { + pendingCalls[data.callId](data.result); + delete pendingCalls[data.callId]; + } + } + // Messages sent by the reveal.js inside of the current slide preview + else if (data && data.namespace === 'reveal') { + if (/ready/.test(data.eventName)) { + // Send a message back to notify that the handshake is complete + window.opener.postMessage(JSON.stringify({ namespace: 'reveal-notes', type: 'connected' }), '*'); + } + else if (/slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test(data.eventName) && currentState !== JSON.stringify(data.state)) { + + dispatchStateToMainWindow(data.state); + + } + } + + }); + + /** + * Updates the presentation in the main window to match the state + * of the presentation in the notes window. + */ + const dispatchStateToMainWindow = debounce((state) => { + window.opener.postMessage(JSON.stringify({ method: 'setState', args: [state] }), '*'); + }, 500); + + /** + * Asynchronously calls the Reveal.js API of the main frame. + */ + function callRevealApi(methodName, methodArguments, callback) { + + var callId = ++lastRevealApiCallId; + pendingCalls[callId] = callback; + window.opener.postMessage(JSON.stringify({ + namespace: 'reveal-notes', + type: 'call', + callId: callId, + methodName: methodName, + arguments: methodArguments + }), '*'); + + } + + /** + * Called when the main window is trying to establish a + * connection. + */ + function handleConnectMessage(data) { + + if (connected === false) { + connected = true; + + setupIframes(data); + setupKeyboard(); + setupNotes(); + setupTimer(); + setupHeartbeat(); + } + + } + + /** + * Called when the main window sends an updated state. + */ + function handleStateMessage(data) { + + // Store the most recently set state to avoid circular loops + // applying the same state + currentState = JSON.stringify(data.state); + + // No need for updating the notes in case of fragment changes + if (data.notes) { + notes.classList.remove('hidden'); + notesValue.style.whiteSpace = data.whitespace; + notesValue.innerHTML = data.notes; + notesValue.scrollTop = 0; + setupNoteCopyEvents(); + } + else { + notes.classList.add('hidden'); + } + + // Update the note slides + currentSlide.contentWindow.postMessage(JSON.stringify({ method: 'setState', args: [data.state] }), '*'); + upcomingSlide.contentWindow.postMessage(JSON.stringify({ method: 'setState', args: [data.state] }), '*'); + upcomingSlide.contentWindow.postMessage(JSON.stringify({ method: 'next' }), '*'); + + } + + // Limit to max one state update per X ms + handleStateMessage = debounce(handleStateMessage, 200); + + /** + * Forward keyboard events to the current slide window. + * This enables keyboard events to work even if focus + * isn't set on the current slide iframe. + * + * Block F5 default handling, it reloads and disconnects + * the speaker notes window. + */ + function setupKeyboard() { + + document.addEventListener('keydown', function (event) { + if (event.keyCode === 116 || (event.metaKey && event.keyCode === 82)) { + event.preventDefault(); + return false; + } + currentSlide.contentWindow.postMessage(JSON.stringify({ method: 'triggerKey', args: [event.keyCode] }), '*'); + }); + + } + + /** + * Creates the preview iframes. + */ + function setupIframes(data) { + + var params = [ + 'receiver', + 'progress=false', + 'history=false', + 'transition=none', + 'autoSlide=0', + 'backgroundTransition=none', + 'hide-controls-modal', + ].join('&'); + + var urlSeparator = /\?/.test(data.url) ? '&' : '?'; + var hash = '#/' + data.state.indexh + '/' + data.state.indexv; + var currentURL = data.url + urlSeparator + params + '&postMessageEvents=true' + hash; + var upcomingURL = data.url + urlSeparator + params + '&controls=false&keyboard=false' + hash; + + currentSlide = document.createElement('iframe'); + currentSlide.setAttribute('width', 1280); + currentSlide.setAttribute('height', 1024); + currentSlide.setAttribute('src', currentURL); + document.querySelector('#current-slide').appendChild(currentSlide); + + upcomingSlide = document.createElement('iframe'); + upcomingSlide.setAttribute('width', 640); + upcomingSlide.setAttribute('height', 512); + upcomingSlide.setAttribute('src', upcomingURL); + document.querySelector('#upcoming-slide').appendChild(upcomingSlide); + + } + + /** + * Setup the notes UI. + */ + function setupNotes() { + + notes = document.querySelector('#speaker-controls-notes'); + notesValue = document.querySelector('#speaker-controls-notes .value'); + } + + /** + * We send out a heartbeat at all times to ensure we can + * reconnect with the main presentation window after reloads. + */ + function setupHeartbeat() { + + setInterval(() => { + window.opener.postMessage(JSON.stringify({ namespace: 'reveal-notes', type: 'heartbeat' }), '*'); + }, 1000); + + } + + /** + * Return the number of seconds allocated for presenting + * all slides up to and including this one. + */ + function getTimeAllocated(timings, callback) { + + callRevealApi('getSlidePastCount', [], function (currentSlide) { + var allocated = 0; + for (var i in timings.slice(0, currentSlide + 1)) { + allocated += timings[i]; + } + callback(allocated); + }); + + } + + /** + * Create the timer and clock and start updating them + * at an interval. + */ + function setupTimer() { + + var start = new Date(), + timeEl = document.querySelector('#time-elapsed'), + hoursEl = timeEl.querySelector('.hours-value'), + minutesEl = timeEl.querySelector('.minutes-value'), + secondsEl = timeEl.querySelector('.seconds-value'), + clockEl = document.querySelector('#time-clock .value'); + + var timings = null; + // Update once directly + _updateTimer(); + + // Then update every second + setInterval(_updateTimer, 1000); + + function _resetTimer() { + + if (timings == null) { + start = new Date(); + _updateTimer(); + } + else { + // Reset timer to beginning of current slide + getTimeAllocated(timings, function (slideEndTimingSeconds) { + var slideEndTiming = slideEndTimingSeconds * 1000; + callRevealApi('getSlidePastCount', [], function (currentSlide) { + var currentSlideTiming = timings[currentSlide] * 1000; + var previousSlidesTiming = slideEndTiming - currentSlideTiming; + var now = new Date(); + start = new Date(now.getTime() - previousSlidesTiming); + _updateTimer(); + }); + }); + } + + } + + timeEl.addEventListener('click', function () { + _resetTimer(); + return false; + }); + + function _displayTime(hrEl, minEl, secEl, time) { + + var sign = Math.sign(time) == -1 ? "-" : ""; + time = Math.abs(Math.round(time / 1000)); + var seconds = time % 60; + var minutes = Math.floor(time / 60) % 60; + var hours = Math.floor(time / (60 * 60)); + hrEl.innerHTML = sign + zeroPadInteger(hours); + if (hours == 0) { + hrEl.classList.add('mute'); + } + else { + hrEl.classList.remove('mute'); + } + minEl.innerHTML = ':' + zeroPadInteger(minutes); + if (hours == 0 && minutes == 0) { + minEl.classList.add('mute'); + } + else { + minEl.classList.remove('mute'); + } + secEl.innerHTML = ':' + zeroPadInteger(seconds); + } + + function _updateTimer() { + + var diff, hours, minutes, seconds, + now = new Date(); + + diff = now.getTime() - start.getTime(); + + clockEl.innerHTML = now.toLocaleTimeString('en-US', { hour12: true, hour: '2-digit', minute: '2-digit' }); + _displayTime(hoursEl, minutesEl, secondsEl, diff); + + } + } + + /** + * Sets up the speaker view layout and layout selector. + */ + function setupLayout() { + + layoutDropdown = document.querySelector('#speaker-layout select'); + + // Render the list of available layouts + for (var id in SPEAKER_LAYOUTS) { + var option = document.createElement('option'); + option.setAttribute('value', id); + option.textContent = SPEAKER_LAYOUTS[id]; + layoutDropdown.appendChild(option); + } + + // Monitor the dropdown for changes + layoutDropdown.addEventListener('change', function (event) { + + setLayout(layoutDropdown.value); + + }, false); + + // Restore any currently persisted layout + setLayout(getLayout()); + + } + + /** + * Sets a new speaker view layout. The layout is persisted + * in local storage. + */ + function setLayout(value) { + layoutDropdown.value = value; + document.body.setAttribute('data-speaker-layout', value); + + // Persist locally + if (supportsLocalStorage()) { + window.localStorage.setItem('reveal-speaker-layout', value); + } + + } + + /** + * Returns the ID of the most recently set speaker layout + * or our default layout if none has been set. + */ + function getLayout() { + + if (supportsLocalStorage()) { + var layout = window.localStorage.getItem('reveal-speaker-layout'); + if (layout) { + return layout; + } + } + + // Default to the first record in the layouts hash + for (var id in SPEAKER_LAYOUTS) { + return id; + } + + } + + function supportsLocalStorage() { + + try { + localStorage.setItem('test', 'test'); + localStorage.removeItem('test'); + return true; + } + catch (e) { + return false; + } + + } + + function zeroPadInteger(num) { + + var str = '00' + parseInt(num); + return str.substring(str.length - 2); + + } + + /** + * Limits the frequency at which a function can be called. + */ + function debounce(fn, ms) { + + var lastTime = 0, + timeout; + + return function () { + + var args = arguments; + var context = this; + + clearTimeout(timeout); + + var timeSinceLastCall = Date.now() - lastTime; + if (timeSinceLastCall > ms) { + fn.apply(context, args); + lastTime = Date.now(); + } + else { + timeout = setTimeout(function () { + fn.apply(context, args); + lastTime = Date.now(); + }, ms - timeSinceLastCall); + } + + } + + } + + /* + * Sets up
 tags in speaker notes for copying.
+     */
+    function setupNoteCopyEvents() {
+        var pre_elems = notesValue.querySelectorAll("pre");
+        pre_elems.forEach(
+            function (pre) {
+                pre.addEventListener("click", copyToClipboard, true)
+
+                let tooltip_instruction = document.createElement("div");
+                tooltip_instruction.classList.add("tooltip");
+                tooltip_instruction.innerText = "📋 Click text box above to copy to clipboard";
+
+                let tooltip_success = document.createElement("div");
+                tooltip_success.classList.add("tooltip");
+                tooltip_success.innerText = "✅ Copied!";
+
+                pre.after(tooltip_instruction, tooltip_success);
+            }
+        );
+    }
+
+    /*
+     * Copies elements text to the system clipboard.
+     * New function added by UCCSER
+     */
+    function copyToClipboard(event) {
+        let pre = event.target;
+        // Copy text
+        var text = pre.innerText;
+        navigator.clipboard.writeText(text);
+        // Remove highlight
+        document.getSelection().removeAllRanges();
+        // Update tooltips
+        var hidden_tooltips = notesValue.querySelectorAll(".tooltip-hide");
+        hidden_tooltips.forEach( function(tooltip) {
+            tooltip.classList.remove("tooltip-hide");
+        });
+        pre.nextSibling.classList.add("tooltip-hide");
+    }
+})();
diff --git a/csunplugged/static/js/website-search.js b/csunplugged/static/js/website-search.js
index 055be8468..fced507ff 100644
--- a/csunplugged/static/js/website-search.js
+++ b/csunplugged/static/js/website-search.js
@@ -5,74 +5,76 @@ $(document).ready(function() {
     placeholder: "Show all types",
   });
 
-  $('#areas-filter').multipleSelect({
-    filter: true,
-    textTemplate: formatArea,
-    labelTemplate: formatArea,
-    selectAll: false,
-    width: '100%',
-    onClick: updateSelectedAreas,
-    onOptgroupClick: updateSelectedAreas,
-    maxHeight: 500,
-  });
+//   $('#areas-filter').multipleSelect({
+//     filter: true,
+//     textTemplate: formatArea,
+//     labelTemplate: formatArea,
+//     selectAll: false,
+//     width: '100%',
+//     onClick: updateSelectedAreas,
+//     onOptgroupClick: updateSelectedAreas,
+//     maxHeight: 500,
+//   });
 
   // Render selected areas on initial load.
-  updateSelectedAreas();
+//   updateSelectedAreas();
 
   // Indent all area children.
-  $('.areas-filter-container .ms-drop li:not(.group)').find(':checkbox').each(function(i, obj) {
-    if (areaData[$(this).val()]['child']) {
-      $(this).addClass('area-child');
-    }
-  });
+//   $('.areas-filter-container .ms-drop li:not(.group)').find(':checkbox').each(function(i, obj) {
+//     if (areaData[$(this).val()]['child']) {
+//       $(this).addClass('area-child');
+//     }
+//   });
 
   // Clear form button.
   $('#clear-form').click(function(){
      $('#id_q').val('');
      $('#models-filter').multipleSelect('uncheckAll');
-     $('#areas-filter').multipleSelect('uncheckAll');
-     updateSelectedAreas();
+    //  $('#areas-filter').multipleSelect('uncheckAll');
+    //  updateSelectedAreas();
  });
 });
 
-function createAreaBadge(colour, text) {
-  /**
-   * Create HTML of curriculum area badge.
-   * @param {string} colour - Colour of badge.
-   * @param {string} text - Text of badge.
-   * @return {string} HTML of curriculum area badge.
-   */
-  return `${text}`;
-};
+// function createAreaBadge(id) {
+//     /**
+//      * Create HTML of curriculum area badge.
+//      * @param {int} id - ID for area to create badge for.
+//      * @return {string} HTML of curriculum area badge.
+//      */
+//     var area_data = areaData[id];
+//     var child_class = '';
+//     if (area_data.child) {
+//         child_class = ' area-child';
+//     }
+//     return `${area_data.text}`;
+// };
 
-function updateSelectedAreas(changeData) {
-  /**
-   * Update selected field with curriculum area badges.
-   * @param {object} changeData - Data of the clicked item.
-   */
-  var $selectedSpan = $('.areas-filter-container .ms-choice span');
-  $selectedSpan.empty();
-  var $selectedValues = $('#areas-filter').multipleSelect('getSelects');
-  if ($selectedValues.length == 0) {
-    $selectedSpan.text("Show all curriculum areas");
-  } else {
-    for (var i = 0; i < $selectedValues.length; i++) {
-      var data = areaData[$selectedValues[i]];
-      $selectedSpan.append(createAreaBadge(data.colour, data.text));
-    }
-  }
-};
+// function updateSelectedAreas(changeData) {
+//   /**
+//    * Update selected field with curriculum area badges.
+//    * @param {object} changeData - Data of the clicked item.
+//    */
+//   var $selectedSpan = $('.areas-filter-container .ms-choice span');
+//   $selectedSpan.empty();
+//   var $selectedValues = $('#areas-filter').multipleSelect('getSelects');
+//   if ($selectedValues.length == 0) {
+//     $selectedSpan.text("Show all curriculum areas");
+//   } else {
+//     for (var i = 0; i < $selectedValues.length; i++) {
+//       $selectedSpan.append(createAreaBadge($selectedValues[i]));
+//     }
+//   }
+// };
 
-function formatArea(element) {
-    /**
-     * Render curriculum area option in multiple select widget.
-     * @param {Node} element - Element to render text.
-     * @return {string} HTML of curriculum area badge.
-     */
-    var element_value = element[0].value;
-    if (!element_value) {
-        element_value = areaGroupMapping[element[0].label];
-    }
-    var data = areaData[element_value];
-    return createAreaBadge(data.colour, data.text, data.child);
-};
+// function formatArea(element) {
+//     /**
+//      * Render curriculum area option in multiple select widget.
+//      * @param {Node} element - Element to render text.
+//      * @return {string} HTML of curriculum area badge.
+//      */
+//     var element_value = element[0].value;
+//     if (!element_value) {
+//         element_value = element[0].dataset.value;
+//     }
+//     return createAreaBadge(element_value);
+// };
diff --git a/csunplugged/static/scss/_bootstrap-overrides.scss b/csunplugged/static/scss/_bootstrap-overrides.scss
index e09322f42..c05dc99db 100644
--- a/csunplugged/static/scss/_bootstrap-overrides.scss
+++ b/csunplugged/static/scss/_bootstrap-overrides.scss
@@ -59,8 +59,7 @@ $breadcrumb-bg:                 inherit;
 //
 // Font, line-height, and color for body text, headings, and more.
 
-$font-family-sans-serif: "Noto Sans", sans-serif;
-$headings-font-family: "Sniglet", cursive;
+// Font families defined in _core-variables.scss
 $font-family-base: $font-family-sans-serif;
 
 // Links
diff --git a/csunplugged/static/scss/_core-variables.scss b/csunplugged/static/scss/_core-variables.scss
index 34f2cbd53..ff54c76bf 100644
--- a/csunplugged/static/scss/_core-variables.scss
+++ b/csunplugged/static/scss/_core-variables.scss
@@ -1,3 +1,5 @@
+$background-colour: #f8f9fa;
+
 $ct-abstraction: #E30613;
 $ct-algorithm: #0B983A;
 $ct-decomposition: #E4AB0D;
@@ -8,3 +10,7 @@ $ct-pattern: #82358C;
 $educator-colour: #cc0423;
 $at-home-colour: #00554E;
 $plugging-it-in-colour: #3044b3;
+$at-a-distance-colour: #800256;
+
+$font-family-sans-serif: "Noto Sans", sans-serif;
+$headings-font-family: "CS Unplugged Headings", cursive;
diff --git a/csunplugged/static/scss/at-a-distance.scss b/csunplugged/static/scss/at-a-distance.scss
new file mode 100644
index 000000000..d0e883043
--- /dev/null
+++ b/csunplugged/static/scss/at-a-distance.scss
@@ -0,0 +1,201 @@
+@import "core-variables";
+@import "node_modules/reveal.js/dist/reveal";
+@import "at-a-distance/variables";
+@import "at-a-distance/slide-theme";
+@import "at-a-distance/speaker-notes";
+@import "at-a-distance/reveal-controls-help";
+
+.at-a-distance {
+    h1 {
+        color: $at-a-distance-colour;
+    }
+    h2 {
+        color: mix($at-a-distance-colour, #fff, 80%);
+    }
+    h3 {
+        color: mix($at-a-distance-colour, #fff, 60%);
+    }
+    .link-item {
+        border-color: $at-a-distance-colour;
+    }
+}
+
+#at-a-distance-jumbotron {
+    background: url("../img/at_a_distance/tile-background.png") mix($at-a-distance-colour, #fff, 15%);
+    background-repeat: repeat;
+    background-size: 4rem;
+    background-position: center;
+}
+
+.navbar.navbar-at-a-distance {
+    background-color: $at-a-distance-colour;
+}
+
+#at-a-distance-lessons {
+    img.at-a-distance-icon {
+            max-height: 5rem;
+    }
+}
+
+#slides.slides-embedded {
+    border: 1px solid grey;
+    position: relative;
+    display: block;
+    width: 100%;
+    padding: 0;
+    overflow: hidden;
+
+    &::before {
+        padding-top: 56.25%;
+        display: block;
+        content: "";
+    }
+
+    .reveal {
+        position: absolute;
+        top: 0;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        border: 0;
+    }
+
+    // Widen speaker view on lesson page
+    .reveal.show-notes {
+        max-width: 60%;
+
+        .speaker-notes {
+            width: 66.666%;
+            padding: 0.8rem;
+            // Always show notes
+            top: 0;
+            left: 100%;
+            height: 100%;
+            border: 1px solid rgba(0, 0, 0, 0.05);
+        }
+    }
+}
+
+#controls-modal-background {
+    position: fixed;
+    z-index: 900;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: rgba(0, 0, 0, 0.6);
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    #controls-modal {
+        @extend %reveal-help-container;
+        font-size: 1.4rem;
+        padding: 2rem;
+        line-height: 2em;
+        width: fit-content;
+        max-width: 90%;
+        max-height: 90%;
+        border-radius: 0.3rem;
+
+        h3 {
+            color: #c9760c;
+        }
+
+        .centered {
+            text-align: center;
+        }
+
+        button {
+            @extend %reveal-help-container;
+            padding: 0 1rem;
+            background-color: $reveal-controls-help-colour-light;
+            border: 2px solid $reveal-controls-help-colour;
+            font-weight: bold;
+            color: #444;
+            border-radius: 0.3rem;
+
+            &:hover {
+                color: black;
+                text-decoration: none;
+                cursor: pointer;
+                background-color: #ffde7a;
+            }
+        }
+    }
+}
+
+#resource-buttons {
+    .resource-button-image {
+        max-height: 8rem;
+    }
+    .resource-button-text {
+        color: #000;
+        font-weight: bold;
+    }
+    .resource-button-subtitle {
+        text-align: center;
+        color: #444;
+        font-size: 0.85rem;
+        font-style: italic;
+    }
+}
+
+#at-a-distance-lead {
+    font-size: 1.1rem;
+}
+
+.btn-outline-at-a-distance {
+    border: 2px solid $at-a-distance-colour;
+    background-color: mix($at-a-distance-colour, #fff, 5%);
+    &:hover, &:active {
+        background-color: mix($at-a-distance-colour, #fff, 20%);
+    }
+}
+.btn-at-a-distance {
+    border: 1px solid mix($at-a-distance-colour, #fff, 80%);
+    color: #fff;
+    background-color: $at-a-distance-colour;
+    &:hover, &:active {
+        color: #fff;
+        background-color: darken($at-a-distance-colour, 10%);
+    }
+}
+
+.suitability-boxes {
+    display: flex;
+
+    .suitability-box {
+        flex: 1;
+        padding: 0.5rem 0;
+        text-align: center;
+        font-weight: bold;
+    }
+
+    $suitability-suitable: #319807;
+    $suitability-not-suitable: #c10303;
+    $suitability-not-recommended: #d97900;
+    .suitability-suitable {
+        color: $suitability-suitable;
+        background-color: rgba($suitability-suitable, 0.10);
+    }
+    .suitability-not-suitable {
+        color: $suitability-not-suitable;
+        background-color: rgba($suitability-not-suitable, 0.25);
+    }
+    .suitability-not-recommended {
+        color: $suitability-not-recommended;
+        background-color: rgba($suitability-not-recommended, 0.10);
+    }
+
+    .suitability-box-key {
+        color: #464646;
+        font-size: 0.9rem;
+    }
+    .suitability-box-icon {
+        font-size: 4rem;
+        line-height: 3rem;
+    }
+}
diff --git a/csunplugged/static/scss/at-a-distance/_reveal-controls-help.scss b/csunplugged/static/scss/at-a-distance/_reveal-controls-help.scss
new file mode 100644
index 000000000..cb5e246ef
--- /dev/null
+++ b/csunplugged/static/scss/at-a-distance/_reveal-controls-help.scss
@@ -0,0 +1,21 @@
+@import "variables";
+
+aside.reveal-controls-help-container {
+    @extend %reveal-help-container;
+    margin: 1em 0;
+    padding: 0 1em;
+}
+ul.reveal-controls-help {
+    margin: 0.5em 0;
+    padding: 0em;
+    list-style-type: none;
+
+    kbd {
+        font-family: monospace;
+        padding: 0.2em 0.4em;;
+        font-size: 80%;
+        color: #fff;
+        background-color: #222;
+        border-radius: 0.3em;
+    }
+}
diff --git a/csunplugged/static/scss/at-a-distance/_slide-theme.scss b/csunplugged/static/scss/at-a-distance/_slide-theme.scss
new file mode 100644
index 000000000..2938585d7
--- /dev/null
+++ b/csunplugged/static/scss/at-a-distance/_slide-theme.scss
@@ -0,0 +1,303 @@
+// Default mixins and settings -----------------
+@use "sass:math";
+@import "node_modules/reveal.js/css/theme/template/mixins";
+@import "node_modules/reveal.js/css/theme/template/settings";
+@import "node_modules/reveal.js/plugin/highlight/monokai";
+@import "core-variables";
+
+// Background of the presentation
+$backgroundColor: $background-colour;
+
+// Primary/body text
+$mainFont: $font-family-sans-serif;
+$mainFontSize: 3em;
+$mainColor: #222;
+
+// Vertical spacing between blocks of text
+$blockMargin: 0.2em;
+
+// Headings
+$headingMargin: 0 0 $blockMargin 0;
+$headingFont: $headings-font-family;
+$headingColor: #222;
+$headingLineHeight: 1.2;
+$headingLetterSpacing: normal;
+$headingTextTransform: normal;
+$headingTextShadow: none;
+$headingFontWeight: normal;
+$heading1TextShadow: $headingTextShadow;
+
+$heading1Size: 3.77em;
+$heading2Size: 2.11em;
+$heading3Size: 1.55em;
+$heading4Size: 1.00em;
+
+$codeFont: monospace;
+
+// Links and actions
+$linkColor: #2a76dd;
+$linkColorHover: lighten($linkColor, 20%);
+
+// Text selection
+$selectionBackgroundColor: $at-a-distance-colour;
+$selectionColor: #fff;
+
+// Generates the presentation background, can be overridden
+// to return a background image or gradient
+@mixin bodyBackground() {
+    background: $backgroundColor;
+}
+
+// Change text colors against dark slide backgrounds
+// @include dark-bg-text-color(#fff);
+
+// Custom theme rules
+
+#slides {
+
+    // Font
+    @for $i from 1 through 20 {
+        .r-font-size-#{$i} {
+            font-size: $i * 0.5em;
+        }
+    }
+    .r-left-align {
+        text-align: left;
+    }
+    .r-bold {
+        font-weight: bold;
+    }
+    p {
+        margin: 0 0 1rem;
+    }
+    p:last-child {
+        margin: 0;
+    }
+    li {
+        margin-bottom: $blockMargin;
+    }
+    pre {
+        line-height: inherit;
+
+        code {
+            max-height: none;
+            padding: 1em;
+
+            &.hide-line-numbers td.hljs-ln-numbers {
+                visibility: hidden;
+            }
+        }
+    }
+
+    // Colour overrides
+    .r-text-green {
+        color: #17BA1F;
+    }
+    .r-text-blue {
+        color: #0F70B7;
+    }
+    .r-text-purple {
+        color: #82358C;
+    }
+    .r-text-red {
+        color: #E30613;
+    }
+    .r-text-yellow {
+        color: #F0DA18;
+    }
+    .r-text-black {
+        color: black;
+    }
+    .r-text-white {
+        color: white;
+    }
+    .r-text-grey {
+        color: #575757;
+    }
+    .r-text-light-grey {
+        color: #c7c7c7;
+    }
+
+    // Layout
+    .r-flex {
+        top: 0;
+        bottom: 0;
+        display: flex !important;
+        flex-direction: column;
+        flex-wrap: nowrap;
+        justify-content: center;
+    }
+    .r-flex-grow {
+        flex-grow: 1;
+    }
+
+    .r-grid {
+        display: grid;
+    }
+    .r-grid-columns {
+        grid-auto-flow: column;
+        grid-auto-columns: minmax(0, 1fr);
+    }
+    .r-flex-align-items-end {
+        align-items: flex-end;
+    }
+    .r-flex-align-self-end {
+        align-self: flex-end;
+    }
+    .r-flex-justify-content-center {
+        justify-content: center;
+    }
+    .r-flex-justify-content-between {
+        justify-content: space-between;
+    }
+    .r-m-0 {
+        margin: 0;
+    }
+    .r-mr-2 {
+        margin-right: 2em;
+    }
+    .r-p-0 {
+        padding: 0;
+    }
+    .r-inline-block {
+        display: inline-block;
+    }
+    .r-h-100 {
+        height: 100%;
+    }
+    .r-hidden {
+        visibility: hidden;
+    }
+    .r-svg {
+        margin-bottom: 1em;
+
+        svg {
+            height: 100%;
+            width: auto;
+        }
+        &.compare-block svg #compare-block {
+            stroke: red;
+            stroke-width: 5px;
+        }
+
+        &.say-block svg #say-block {
+            stroke: red;
+            stroke-width: 5px;
+        }
+    }
+
+    // Title slide
+    .r-title-slide {
+        img {
+            max-width: 40%;
+        }
+    }
+
+    // Embeds
+    iframe {
+        border: none;
+        max-width: initial;
+        max-height: initial;
+    }
+    &.embed-responsive .reveal .slides section iframe {
+        position: initial;
+    }
+    .r-iframe-scale {
+        transform-origin: top center;
+    }
+    .r-iframe-scale-1-5 {
+        transform: perspective(300em) scale(1.5);
+    }
+    .r-iframe-scale-2 {
+        transform: perspective(300em) scale(2);
+    }
+
+    .r-supporting-resources {
+        .raw-link {
+            color: #333;
+            font-family: monospace;
+            font-size: 0.7em;
+        }
+    }
+}
+
+// Footer
+$footer-height: 5%;  // To ensure matches slide dimensions
+$footer-padding: 8px;
+.reveal > .footer {
+    position: absolute;
+    height: $footer-height;
+    bottom: $footer-padding;
+    left: 5px;
+    width: 80%;
+    z-index: 0;  // Hidden behind backgrounds
+    display: flex;
+    align-items: flex-end;
+
+    img {
+        margin: 0;
+    }
+}
+.reveal.has-dark-background > .footer {
+    color: white;
+}
+
+// Slide specific
+.binary-digit-word {
+    display: flex;
+    justify-content: center;
+
+    h2 {
+        position: relative;
+    }
+    #binary-digit-word-animation-start {
+        left: 0;
+        transition: left 1.5s ease-in-out 0.5s;
+    }
+    #binary-digit-word-animation-middle {
+        transition: all 1s ease-in;
+        opacity: 1;
+    }
+    #binary-digit-word-animation-end {
+        right: 0;
+        transition: right 1.5s ease-in-out 0.5s;
+    }
+    &.animate {
+        #binary-digit-word-animation-start {
+            left: 1.95em;
+        }
+        #binary-digit-word-animation-middle {
+            opacity: 0;
+        }
+        #binary-digit-word-animation-end {
+            right: 1.95em;
+        }
+    }
+}
+.binary-cards-5 {
+    transform-origin: 86% 0%;
+}
+
+.r-timer {
+    font-family: monospace;
+
+    .r-timer-value {
+        font-size: 2em;
+        font-weight: bold;
+    }
+    .r-timer-unit {
+        color: #575757;
+    }
+}
+
+/*
+Spacer to prevent the content from running into the footer.
+From https://github.com/hakimel/reveal.js/issues/2707#issuecomment-647708919
+*/
+.reveal .slides section::after {
+    content: ' ';
+    display: block;
+    height: $footer-height;
+}
+
+@import "node_modules/reveal.js/css/theme/template/theme";
diff --git a/csunplugged/static/scss/at-a-distance/_speaker-notes.scss b/csunplugged/static/scss/at-a-distance/_speaker-notes.scss
new file mode 100644
index 000000000..bb62f46f9
--- /dev/null
+++ b/csunplugged/static/scss/at-a-distance/_speaker-notes.scss
@@ -0,0 +1,81 @@
+@import "../core-variables";
+
+$speech-bubble-background: mix(#fff, $at-a-distance-colour, 95%);
+
+// Scoped twice to override default reveal.js theme
+#slides .speaker-notes,
+.speaker-notes {
+
+    font-family: $font-family-sans-serif;
+    font-size: 1rem;
+
+    p {
+        line-height: inherit;
+        margin: 0 0 1rem;
+
+        &:last-child {
+            margin: 0;
+        }
+    }
+
+    .speech-bubble {
+        background: $speech-bubble-background;
+        border: 1px solid $at-a-distance-colour;
+        border-radius: 1rem;
+        margin: 1rem 0 1.5em 0;
+        padding: 0.5em;
+        position: relative;
+
+        blockquote {
+            // Overrides for reveal theme defaults
+            margin: 0;
+            padding: 0;
+            box-shadow: none;
+            background: none;
+            width: auto;
+            font-style: normal;
+        }
+
+        .speech-bubble-arrow {
+            border-left: 21px solid transparent;
+            bottom: -25px;
+            position: absolute;
+            right: 15px;
+
+            &::before {
+                border-left: 23px solid transparent;
+                border-top: 23px solid $at-a-distance-colour;
+                bottom: 2px;
+                content: "";
+                position: absolute;
+                right: 5px;
+            }
+
+            &::after {
+                border-left: 21px solid transparent;
+                border-top: 21px solid $speech-bubble-background;
+                bottom: 4px;
+                content: "";
+                position: absolute;
+                right: 6px;
+            }
+        }
+    }
+
+    pre {
+        white-space: pre-line;
+        font-size: 0.8rem;
+        line-height: inherit;
+        padding: 0.5rem;
+        margin: 0;
+        border-left: 3px solid $at-a-distance-colour;
+        background: rgba($at-a-distance-colour, 4%);
+        cursor: pointer;
+        user-select: all;
+        box-shadow: none;
+
+        &:hover {
+            background: rgba($at-a-distance-colour, 10%);
+        }
+    }
+}
diff --git a/csunplugged/static/scss/at-a-distance/_variables.scss b/csunplugged/static/scss/at-a-distance/_variables.scss
new file mode 100644
index 000000000..477525b7e
--- /dev/null
+++ b/csunplugged/static/scss/at-a-distance/_variables.scss
@@ -0,0 +1,7 @@
+$reveal-controls-help-colour-light: #fff2cc;
+$reveal-controls-help-colour: #ffbc00;
+
+%reveal-help-container {
+    background-color: $reveal-controls-help-colour-light;
+    border: 1px solid $reveal-controls-help-colour;
+}
diff --git a/csunplugged/static/scss/at-a-distance/speaker-notes-pdf.print.scss b/csunplugged/static/scss/at-a-distance/speaker-notes-pdf.print.scss
new file mode 100644
index 000000000..a97f14e52
--- /dev/null
+++ b/csunplugged/static/scss/at-a-distance/speaker-notes-pdf.print.scss
@@ -0,0 +1,63 @@
+@import "speaker-notes";
+
+// General
+body {
+    font-family: 'Noto Sans', sans-serif;
+}
+
+$page_x_margin: 10mm;
+$thumbnail_width: 60mm;
+$notes_width: 120mm;
+
+@page {
+    size: A4;
+    margin: 10mm $page_x_margin 20mm $page_x_margin;
+
+    @bottom-right {
+        content: "Page " counter(page) " of " counter(pages);
+        font-family: 'Noto Sans', sans-serif;
+        font-size: 0.8em;
+        color: #888;
+    }
+}
+footer {
+    bottom: -12.3mm;
+}
+.fixed-running-element{
+    text-align: left;
+    width: 100%;
+    position: fixed;
+    margin: 0;
+    font-family: 'Noto Sans', sans-serif;
+    font-size: 0.8em;
+    color: #888;
+    img {
+        max-height: 1.5em;
+        vertical-align: text-bottom;
+    }
+}
+
+#slides {
+    h2 {
+        padding-top: 5mm;
+        margin-bottom: 3mm;
+        break-after: avoid;
+        clear: both;
+        border-bottom: 1px solid $at-a-distance-colour;
+    }
+    .slide {
+        break-inside: avoid;
+    }
+    img {
+        float: right;
+        border: 0.2mm solid grey;
+        width: $thumbnail_width;
+    }
+    .speaker-notes {
+        width: $notes_width;
+    }
+}
+
+.text-muted {
+    color: grey;
+}
diff --git a/csunplugged/static/scss/reveal-speaker-notes-plugin/speaker-notes-window.scss b/csunplugged/static/scss/reveal-speaker-notes-plugin/speaker-notes-window.scss
new file mode 100644
index 000000000..5032fdca8
--- /dev/null
+++ b/csunplugged/static/scss/reveal-speaker-notes-plugin/speaker-notes-window.scss
@@ -0,0 +1,198 @@
+@import "../core-variables";
+@import "../at-a-distance/speaker-notes";
+@import "../at-a-distance/reveal-controls-help";
+
+body {
+    font-size: 18px;
+    font-family: $font-family-sans-serif;
+}
+
+div.tooltip {
+    color: #747474;
+    font-size: 0.8rem;
+    user-select: none;
+    margin-bottom: 0.5rem;
+}
+
+pre+div.tooltip-hide,
+pre+div+div {
+    display: none;
+}
+
+pre+div.tooltip-hide+div {
+    display: block;
+}
+
+#current-slide,
+#upcoming-slide,
+#speaker-controls {
+    padding: 10px;
+    box-sizing: border-box;
+    -moz-box-sizing: border-box;
+}
+
+#current-slide,
+#upcoming-slide {
+    position: absolute;
+    width: 45%;
+    height: 50%;
+    left: 0;
+
+    iframe {
+        width: 100%;
+        height: 100%;
+        border: 1px solid #ddd;
+    }
+    .label {
+        position: absolute;
+        top: 10px;
+        left: 10px;
+        z-index: 2;
+    }
+}
+
+#current-slide {
+    top: 0;
+}
+
+#upcoming-slide {
+    top: 50%;
+}
+
+#connection-status {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    z-index: 20;
+    padding: 30% 20% 20% 20%;
+    font-size: 18px;
+    color: #222;
+    background: #fff;
+    text-align: center;
+    box-sizing: border-box;
+    line-height: 1.4;
+}
+
+.overlay-element {
+    height: 34px;
+    line-height: 34px;
+    padding: 0 10px;
+    text-shadow: none;
+    background: rgba(220, 220, 220, 0.8);
+    color: #222;
+    font-size: 14px;
+}
+
+/* Speaker controls */
+#speaker-controls {
+    position: absolute;
+    top: 0;
+    left: 45%;
+    width: 55%;
+    bottom: 0;
+    font-size: 18px;
+
+    #speaker-controls-top-row {
+        display: flex;
+        flex-wrap: nowrap;
+
+        & > div {
+            flex-grow: 1;
+            flex-basis: 0;
+            min-width: 0;
+        }
+    }
+
+    #time-elapsed {
+        cursor: pointer;
+
+        .reset-button {
+            opacity: 0;
+            color: #666;
+            text-decoration: none;
+            font-size: 0.8rem;
+        }
+
+        &:hover .reset-button {
+            opacity: 1;
+        }
+
+        span.mute {
+            opacity: 0.3;
+        }
+    }
+
+    #time-clock {
+        text-align: center;
+    }
+
+    #speaker-layout {
+        text-align: right;
+        .value {
+            font-size: 1.5rem;
+        }
+    }
+
+    #time-elapsed,
+    #time-clock {
+        user-select: none;
+
+        .value {
+            font-size: 2rem;
+            font-family: monospace;
+        }
+    }
+
+    .reveal-controls-help {
+        margin-top: 0;
+        line-height: 2rem;
+        border-bottom: 1px solid $at-a-distance-colour;
+    }
+}
+
+#speaker-controls-notes {
+    flex: 0 1 auto;
+    overflow-y: hidden;
+
+    &.hidden {
+        display: none;
+    }
+
+    .speaker-notes {
+        overflow-y: auto;
+        line-height: 1.5rem;
+        padding-right: 0.5rem;
+        flex: 1 1 auto;
+    }
+}
+
+h4 {
+    user-select: none;
+    text-transform: uppercase;
+    font-weight: normal;
+    font-size: 1rem;
+    color: #666;
+    margin: 0;
+}
+
+.flex-column {
+    display: flex;
+    flex-direction: column;
+    flex-wrap: nowrap;
+}
+
+
+/* Speaker layout: Notes only */
+body[data-speaker-layout="notes-only"] #current-slide,
+body[data-speaker-layout="notes-only"] #upcoming-slide {
+    display: none;
+}
+
+body[data-speaker-layout="notes-only"] #speaker-controls {
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+}
diff --git a/csunplugged/static/scss/search.scss b/csunplugged/static/scss/search.scss
index 6a83f11f1..2b37b282b 100644
--- a/csunplugged/static/scss/search.scss
+++ b/csunplugged/static/scss/search.scss
@@ -19,13 +19,10 @@
   ul {
     margin-bottom: 0 !important;
   }
-  .area-badge {
-    margin-left: 1px;
+  .area-child {
+    margin-left: 1rem;
   }
 }
-.area-child {
-  margin-left: 1.5em;
-}
 #results {
   .row {
     padding: 0.4em 0;
diff --git a/csunplugged/static/scss/website.scss b/csunplugged/static/scss/website.scss
index 0dcdd2863..e55e84133 100644
--- a/csunplugged/static/scss/website.scss
+++ b/csunplugged/static/scss/website.scss
@@ -40,9 +40,16 @@
 
 @import "pygments-vs";
 @import "directional";
-@import url('https://fonts.googleapis.com/css?family=Sniglet');
+@import "at-a-distance";
 @import url('https://fonts.googleapis.com/css?family=Noto+Sans');
 
+@font-face {
+    font-family: "CS Unplugged Headings";
+    src: url('/static/fonts/CSUnplugged-Headings.otf') format('opentype');
+    font-style: normal;
+    font-weight: normal;
+}
+
 .at-home-divider {
     border-top: 3px solid $at-home-colour;
 }
@@ -83,6 +90,7 @@ h6 {
 .educator-colour { color: $educator-colour;}
 .at-home-colour { color: $at-home-colour;}
 .plugging-it-in-colour { color: $plugging-it-in-colour;}
+.at-a-distance-colour { color: $at-a-distance-colour;}
 
 input[type="text"].long-text-field {
   width: 20em;
@@ -132,7 +140,10 @@ $rounded-corner-radius: 0.5rem;
     }
 }
 #plugging-it-in-jumbotron {
-    background: $plugging-it-in-colour;
+    background: url("../img/plugging-it-in/tile-background.png") $plugging-it-in-colour;
+    background-repeat: repeat;
+    background-size: 18rem;
+    background-position: center;
     h2 {
         font-size: 2rem;
     }
@@ -359,11 +370,11 @@ $navbar-height: 50px;
 $navbar-padding-bottom: 24px;
 body {
   padding-top: $navbar-height;
-  &.homepage {
+  &.no-padding {
     padding-top: 0px;
   }
   position: relative;
-  background-color: $gray-100;
+  background-color: $background-colour;
 }
 
 #content-container {
@@ -384,12 +395,20 @@ body {
   background-color: lighten($green, 40%);
 }
 
-#scrollspy-table-of-contents .nav-link {
-  font-size: 0.9rem;
-  padding: ($spacer * .25) $spacer;
+ul#scrollspy-table-of-contents {
+    .nav-link {
+        font-size: 0.9rem;
+        padding: ($spacer * .25) $spacer;
+    }
+    & ul {
+        margin-left: 2rem;
+        .nav-link.active {
+            background-color: #0050e3;
+        }
+    }
 }
 
-#content-container table:not(.table) {
+#content-container table:not(.table):not(.hljs-ln) {
   display: block;
   margin-bottom: $spacer;
   width: 100%;
@@ -423,7 +442,7 @@ body {
   border-radius: 3px;
 }
 
-.background-csfg {
+.bg-csfg {
   background-color: #2b387c;
 }
 
@@ -503,6 +522,18 @@ ol, ul {
         background-color: mix($plugging-it-in-colour, $white, 10%);
       }
     }
+    &-at-a-distance-1 {
+      border-top-color: $at-a-distance-colour;
+      &:hover {
+        background-color: mix($at-a-distance-colour, $white, 10%);
+      }
+    }
+    &-at-a-distance-2 {
+      border-top-color: mix($at-a-distance-colour, $white, 80%);
+      &:hover {
+        background-color: mix($at-a-distance-colour, $white, 10%);
+      }
+    }
     &-orange {
       border-top-color: $orange;
       &:hover {
diff --git a/csunplugged/templates/at_a_distance/base.html b/csunplugged/templates/at_a_distance/base.html
new file mode 100644
index 000000000..09918e36d
--- /dev/null
+++ b/csunplugged/templates/at_a_distance/base.html
@@ -0,0 +1,78 @@
+{% extends "core.html" %}
+
+{% load i18n %}
+{% load static %}
+{% load render_html_field %}
+{% load translate_url %}
+{% load django_bootstrap_breadcrumbs %}
+
+{% get_language_info for LANGUAGE_CODE as current_language %}
+
+{% block complete_breadcrumbs %}
+    {% trans "Home" as home_label %}
+    {% breadcrumb home_label "at_a_distance:index" %}
+    {% block breadcrumbs %}
+    {% endblock breadcrumbs %}
+{% endblock complete_breadcrumbs %}
+
+{% block extra_body_classes %}at-a-distance{% endblock extra_body_classes %}
+
+{% block navbar %}
+    
+{% endblock navbar %}
+
+{% block scripts %}
+    
+{% endblock scripts %}
diff --git a/csunplugged/templates/at_a_distance/components/algorithms-pseudocode.html b/csunplugged/templates/at_a_distance/components/algorithms-pseudocode.html
new file mode 100644
index 000000000..2e6a01c6f
--- /dev/null
+++ b/csunplugged/templates/at_a_distance/components/algorithms-pseudocode.html
@@ -0,0 +1,11 @@
+

As an algorithm

+ +

+    set the maximum_so_far to the first number
+
+    for each other number:
+        if the next number is larger than maximum_so_far:
+            set maximum_so_far to the number
+
+    At the end, maximum_so_far contains the largest value
+
diff --git a/csunplugged/templates/at_a_distance/components/algorithms-python.html b/csunplugged/templates/at_a_distance/components/algorithms-python.html new file mode 100644 index 000000000..5be1ad3a6 --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/algorithms-python.html @@ -0,0 +1,21 @@ +

Python

+ +
+
+

+            max_so_far = int(input("Type in a score: "))
+
+            for i in range(4):
+                score = int(input("Type in a score: "))
+                if score > max_so_far:
+                    max_so_far = score
+
+            print("High score was", max_so_far)
+        
+
+
+ {% if interactive %} + + {% endif %} +
+
diff --git a/csunplugged/templates/at_a_distance/components/algorithms-scratch.html b/csunplugged/templates/at_a_distance/components/algorithms-scratch.html new file mode 100644 index 000000000..58779a964 --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/algorithms-scratch.html @@ -0,0 +1,16 @@ +{% load static read_static_file %} + +

Scratch

+ +
+
+ {% read_static_file 'img/at_a_distance/algorithms/scratch-program.svg' %} +
+
+ {% if interactive %} +
+ +
+ {% endif %} +
+
diff --git a/csunplugged/templates/at_a_distance/components/base-speaker-notes-pdf.html b/csunplugged/templates/at_a_distance/components/base-speaker-notes-pdf.html new file mode 100644 index 000000000..51fa44f17 --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/base-speaker-notes-pdf.html @@ -0,0 +1,31 @@ +{% load static %} +{% load i18n %} + + + + {{ filename }} + + +
+

{{ lesson.name }} (Speaker Notes)

+ {% for slide in slides %} +
+

Slide {{slide.number }}

+ +
+ {% if slide.notes %} + {{ slide.notes|safe }} + {% else %} + + No speaker notes for this slide. + + {% endif %} +
+
+ {% endfor %} +
+
+ {{ lesson.name }} (Speaker Notes) - csunplugged.org +
+ + diff --git a/csunplugged/templates/at_a_distance/components/reveal-controls-help.html b/csunplugged/templates/at_a_distance/components/reveal-controls-help.html new file mode 100644 index 000000000..2f0e9f31c --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/reveal-controls-help.html @@ -0,0 +1,12 @@ +
    +
  • Press the arrow keys to control the slideshow.
  • + {% if speaker_mode|default:False %} +
  • Press S to open the speaker/presenter window.
  • + {% endif %} + {% if fullscreen|default:False %} +
  • Press F to enter full screen, and Esc to exit full screen.
  • + {% endif %} + {% if blank|default:False %} +
  • Press B to blank the screen.
  • + {% endif %} +
diff --git a/csunplugged/templates/at_a_distance/components/reveal-initialize.html b/csunplugged/templates/at_a_distance/components/reveal-initialize.html new file mode 100644 index 000000000..300dafcbe --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/reveal-initialize.html @@ -0,0 +1,45 @@ + diff --git a/csunplugged/templates/at_a_distance/components/reveal-slides-structure.html b/csunplugged/templates/at_a_distance/components/reveal-slides-structure.html new file mode 100644 index 000000000..6ecfca28d --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/reveal-slides-structure.html @@ -0,0 +1,50 @@ +{% load static render_html_field %} + +
+
+
+
+ +

{{ lesson.name }}

+
+ + {% include lesson.get_slides_path %} + + {% if lesson.supporting_resources.all %} +
+

Supporting Resources

+ + + +
+ {% endif %} +
+ + +
+
diff --git a/csunplugged/templates/at_a_distance/components/speech-bubble-close.html b/csunplugged/templates/at_a_distance/components/speech-bubble-close.html new file mode 100644 index 000000000..e3cd35bb6 --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/speech-bubble-close.html @@ -0,0 +1,3 @@ + +
+ diff --git a/csunplugged/templates/at_a_distance/components/speech-bubble-open.html b/csunplugged/templates/at_a_distance/components/speech-bubble-open.html new file mode 100644 index 000000000..22862c867 --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/speech-bubble-open.html @@ -0,0 +1,2 @@ +
+
diff --git a/csunplugged/templates/at_a_distance/components/suitability-boxes.html b/csunplugged/templates/at_a_distance/components/suitability-boxes.html new file mode 100644 index 000000000..5c1425e86 --- /dev/null +++ b/csunplugged/templates/at_a_distance/components/suitability-boxes.html @@ -0,0 +1,37 @@ +
+
+
+ Teaching students +
+
+ {% if lesson.suitable_for_teaching_students == lesson.SUITABLE %} + ✓ + {% elif lesson.suitable_for_teaching_students == lesson.NOT_SUITABLE %} + ✕ + {% else %} + ~ + {% endif %} +
+
+ {{ lesson.get_suitable_for_teaching_students_display }} +
+
+
+
+ Teaching educators +
+
+ {% if lesson.suitable_for_teaching_educators == lesson.SUITABLE %} + ✓ + {% elif lesson.suitable_for_teaching_educators == lesson.NOT_SUITABLE %} + ✕ + {% else %} + ~ + {% endif %} +
+
+ {{ lesson.get_suitable_for_teaching_educators_display }} +
+
+ +
diff --git a/csunplugged/templates/at_a_distance/delivery-guide.html b/csunplugged/templates/at_a_distance/delivery-guide.html new file mode 100644 index 000000000..66b2dbc73 --- /dev/null +++ b/csunplugged/templates/at_a_distance/delivery-guide.html @@ -0,0 +1,334 @@ +{% extends "at_a_distance/base.html" %} + +{% load i18n static render_html_field django_bootstrap_breadcrumbs %} + +{% block title %} + Delivering CS Unplugged at a distance +{% endblock title %} + +{% block breadcrumbs %} + {% breadcrumb "Delivering CS Unplugged at a distance" "at_a_distance:delivery-guide" %} +{% endblock breadcrumbs %} + +{% block page_heading %} +

Delivering CS Unplugged at a distance

+{% endblock page_heading %} + +{% block content_container %} + + +{% endblock content_container %} diff --git a/csunplugged/templates/at_a_distance/index.html b/csunplugged/templates/at_a_distance/index.html new file mode 100644 index 000000000..1b16585e5 --- /dev/null +++ b/csunplugged/templates/at_a_distance/index.html @@ -0,0 +1,112 @@ +{% extends "at_a_distance/base.html" %} + +{% load i18n %} +{% load static %} +{% load translate_url %} + +{% block custom_title %} + {% trans "CS Unplugged at a distance" %} +{% endblock custom_title %} + +{% block extra_body_classes %}{{ block.super }} no-padding{% endblock extra_body_classes %} + +{% block body_container %} +
+
+
+
+ CS Unplugged at a distance logo +

+ {% blocktrans trimmed %} + Teach CS Unplugged online + {% endblocktrans %} +

+
+
+
+
+ +
+ {% if LANGUAGE_CODE != "en" %} + + {% endif %} + +
+
+ +
+
+

+ CS Unplugged at a distance is a series of short lessons adapted from CS Unplugged activities that are suitable for teaching online to students, or for training educators. +

+
+ CS Unplugged is always better in person! + But if you find yourself having to facilitate online, this content is adapted to support this. +
+
+
+ +

Start here

+ + +

Lessons

+ +

We are releasing nine lessons in 2022

+
+{% endblock body_container %} diff --git a/csunplugged/templates/at_a_distance/lesson-slides.html b/csunplugged/templates/at_a_distance/lesson-slides.html new file mode 100644 index 000000000..f07f9de64 --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson-slides.html @@ -0,0 +1,61 @@ +{% extends "at_a_distance/base.html" %} + +{% load i18n %} +{% load static %} +{% load render_html_field %} +{% load django_bootstrap_breadcrumbs %} + +{% block title %} + {{ lesson.name }} +{% endblock title %} + +{% block breadcrumbs %} + {% breadcrumb lesson.name "at_a_distance:lesson" lesson.slug %} +{% endblock breadcrumbs %} + +{% block extra_body_classes %}no-padding{% endblock extra_body_classes %} + +{% block body %} + +
+
+

Presentation controls

+ {% include "at_a_distance/components/reveal-controls-help.html" with blank=True fullscreen=True speaker_mode=True %} +
+ +
+
+
+ + {% include "at_a_distance/components/reveal-slides-structure.html" %} + + + + {% block scripts %} + {{ block.super }} + {% include "at_a_distance/components/reveal-initialize.html" with embedded=False speaker_mode=True show_notes=False %} + {% endblock scripts %} + +{% endblock body %} diff --git a/csunplugged/templates/at_a_distance/lesson-slides/algorithms.html b/csunplugged/templates/at_a_distance/lesson-slides/algorithms.html new file mode 100644 index 000000000..af57357c6 --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson-slides/algorithms.html @@ -0,0 +1,389 @@ +{% load static %} + +
+

Key questions

+
    +
  • + What is an algorithm? +
  • +
  • + How is an algorithm different from a program? +
  • +
+ + +
+ +
+ + + +
+ +
+ {% include "at_a_distance/components/algorithms-pseudocode.html" with highlight_lines="all" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-pseudocode.html" with highlight_lines="1" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-pseudocode.html" with highlight_lines="3-5" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-pseudocode.html" with highlight_lines="7" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-pseudocode.html" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-scratch.html" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-scratch.html" with highlight_blocks="compare-block" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-scratch.html" with highlight_blocks="say-block" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-scratch.html" with interactive=True %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-python.html" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-python.html" with highlight_lines="1" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-python.html" with highlight_lines="3-6" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-python.html" with highlight_lines="8" %} + + +
+ +
+ {% include "at_a_distance/components/algorithms-python.html" with interactive=True%} + + +
+ +
+

Key questions

+
    +
  • + What is an algorithm? +
  • +
  • + How is an algorithm different from a program? +
  • +
+ + +
diff --git a/csunplugged/templates/at_a_distance/lesson-slides/binary-representation.html b/csunplugged/templates/at_a_distance/lesson-slides/binary-representation.html new file mode 100644 index 000000000..42734eb83 --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson-slides/binary-representation.html @@ -0,0 +1,567 @@ +
+

Key question

+
    +
  • + How do you think a digital device stores information? +
  • +
+ + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

 

+ + + +
+ +
+

Show exactly 13 dots

+ + + +
+ +
+

Show exactly 25 dots

+ + + +
+ +
+
+

Bi

+

nary Digi

+

ts

+
+ + +
+ +
+
+

Bi

+

nary Digi

+

ts

+
+ + +
+ +
+

What month is this?

+ + + +
+ +
+

Letters

+ +

+ + no, yes, no, no, no + +

+

+ + no, yes, no, no, yes + +

+ + +
+ +
+

Alternative objects

+ + +
+ +
+

Key question

+
    +
  • + How do you think a digital device stores information? +
  • +
+ + +
+ + diff --git a/csunplugged/templates/at_a_distance/lesson-slides/finite-state-automata.html b/csunplugged/templates/at_a_distance/lesson-slides/finite-state-automata.html new file mode 100644 index 000000000..6b6ca5597 --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson-slides/finite-state-automata.html @@ -0,0 +1,507 @@ +{% load static %} + +
+

Key questions

+
    +
  • Have you heard of an automaton?
  • +
  • What kinds of things can "state" refer to?
  • +
  • What does "finite" mean?
  • +
+ + + + +
+ +
+

Trainsylvania

+ + + +
+ +
+

Sequences

+

Did we get it right?

+ + + +
+ +
+

Map of Trainsylvania

+ + + +
+ +
+

Trainsylvania Questions

+
    +
  1. BBB will take us to East Station
  2. +
  3. BABA will take us to back to Airport Station
  4. +
  5. Will AAB get us to Harbour Station? No
  6. +
  7. Will ABBAB get us to Harbour Station? Yes
  8. +
  9. Will AAABBAB get us to Harbour Station? Yes
  10. +
  11. Will BBBBB get us to Harbour Station? No
  12. +
+ + +
+ +
+

What is it all about?

+ + + +
+ +
+

Is this English?

+
    +
  1. Tim likes cake.
  2. +
  3. ADM;lasdf oodf9 bosfa
  4. +
  5. Kei te pēhea koe?
  6. +
+ + +
+ +
+

Finite State Automata

+

Map for email addresses

+ +

me@a.com

+ + +
+ +
+

Finite State Automata

+

Map for email addresses

+ +

email@gmail.com

+ + +
+ +
+

Finite State Automata

+

Map for email addresses

+ +

mygooglegmail

+ + +
+ +
+

Finite State Automata

+

Additional challenges

+ +
+
+
    +
  • + Can you find another sequence, perhaps a longer one? +
  • +
  • + Suppose you wanted to take a really long route... can you find a sequence of 12 hops that would get you there? 20 hops? +
  • +
+
+
+ +
+
+ + +
+ +
+

Finite State Automata

+

Treasure Island version

+ + + +
diff --git a/csunplugged/templates/at_a_distance/lesson-slides/parity-magic.html b/csunplugged/templates/at_a_distance/lesson-slides/parity-magic.html new file mode 100644 index 000000000..6dc178712 --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson-slides/parity-magic.html @@ -0,0 +1,39 @@ +
+

Key questions

+
    +
  • + Have you ever had a DVD glitch, a download fail, or a file that your computer can't open because it's corrupted? +
  • +
+ + +
+ +
+

Parity interactive

+ +
diff --git a/csunplugged/templates/at_a_distance/lesson-slides/stroop-effect.html b/csunplugged/templates/at_a_distance/lesson-slides/stroop-effect.html new file mode 100644 index 000000000..c93fc55ff --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson-slides/stroop-effect.html @@ -0,0 +1,490 @@ +{% load static %} + +
+

Key questions

+
    +
  • + Have you ever used an application and had to think carefully about what to click? +
  • +
  • + Do software designers use psychology concepts when designing their applications? +
  • +
+ + +
+ +
+

RED

+ + +
+ +
+

GREEN

+
+ +
+

BLUE

+
+ +
+

BLACK

+
+ +
+

RED

+
+ +
+

PURPLE

+ + +
+ +
+
+
+

Incongruent

+
+ 0 + seconds +
+
+
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
+
+ + +
+ +
+
+
+

Incongruent

+
+ 0 + seconds +
+
+
+
Yellow
+
Green
+
Purple
+
Red
+
Black
+
Blue
+
Purple
+
Blue
+
Green
+
+
+ + +
+
+
+
+

Congruent

+
+ 0 + seconds +
+
+
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
Colour
+
+
+ + +
+ +
+
+
+

Congruent

+
+ 0 + seconds +
+
+
+
Red
+
Purple
+
Green
+
Red
+
Yellow
+
Green
+
Black
+
Blue
+
Red
+
+
+ + +
+ +
+

Results

+
+
+

Incongruent

+
Yellow
+
Green
+
Purple
+
Red
+
Black
+
Blue
+
Purple
+
Blue
+
Green
+
+
+

Congruent

+
Red
+
Purple
+
Green
+
Red
+
Yellow
+
Green
+
Black
+
Blue
+
Red
+
+
+ + +
+ +
+

HCI in action

+ + + +
+ +
+

HCI in action

+ + + +
+ +
+

HCI in action

+ + + +
+ +
+

Key question

+
    +
  • Do software designers use psychology concepts when designing their applications?
  • +
+ + +
+ + diff --git a/csunplugged/templates/at_a_distance/lesson.html b/csunplugged/templates/at_a_distance/lesson.html new file mode 100644 index 000000000..97869d371 --- /dev/null +++ b/csunplugged/templates/at_a_distance/lesson.html @@ -0,0 +1,95 @@ +{% extends "at_a_distance/base.html" %} + +{% load i18n static render_html_field django_bootstrap_breadcrumbs %} + +{% block title %} + {{ lesson.name }} +{% endblock title %} + +{% block breadcrumbs %} + {% breadcrumb lesson.name "at_a_distance:lesson" lesson.slug %} +{% endblock breadcrumbs %} + +{% block page_heading %} +
+ {% if lesson.icon %} +
+ +
+ {% endif %} +
+

{{ lesson.name }}

+ {% if not lesson.translation_available %} + {% include "generic/not-available-badge.html" %} + {% endif %} +
+
+ {% include "at_a_distance/components/suitability-boxes.html" %} +
+
+{% endblock page_heading %} + + +{% block content_container %} + + {% if lesson.translation_available %} + +
+

Preview slides with notes

+ +
+ We recommend previewing these slides on a larger screen to view the slides and speaker notes easily. +
+ + + + {% include "at_a_distance/components/reveal-slides-structure.html" with embed=True %} +
+ {% endif %} +{% endblock content_container %} + +{% block scripts %} + {{ block.super }} + {% include "at_a_distance/components/reveal-initialize.html" with embedded=True speaker_mode=False show_notes=True %} +{% endblock scripts %} diff --git a/csunplugged/templates/at_a_distance/reveal-speaker-notes-plugin/speaker-notes-window.html b/csunplugged/templates/at_a_distance/reveal-speaker-notes-plugin/speaker-notes-window.html new file mode 100644 index 000000000..13b19e313 --- /dev/null +++ b/csunplugged/templates/at_a_distance/reveal-speaker-notes-plugin/speaker-notes-window.html @@ -0,0 +1,48 @@ +{% load static %} + + + + + Speaker Notes + + + + +
Loading speaker view...
+ +
+ Current +
+
+ Upcoming +
+
+
+
+

Elapsed Time

+
+ 00:00:00 +
+

Click to Reset

+
+
+

Current Time

+
0:00 AM
+
+
+

Layout

+ +
+
+ + {% include "at_a_distance/components/reveal-controls-help.html" with blank=True %} + + +
+ + + + diff --git a/csunplugged/templates/at_home/index.html b/csunplugged/templates/at_home/index.html index 42383190d..4638620df 100644 --- a/csunplugged/templates/at_home/index.html +++ b/csunplugged/templates/at_home/index.html @@ -8,7 +8,7 @@ {% trans "CS Unplugged at home" %} {% endblock custom_title %} -{% block body_attribute_overrides %} class="homepage"{% endblock body_attribute_overrides %} +{% block extra_body_classes %}no-padding{% endblock extra_body_classes %} {% block navbar_class_overrides %} trans-navbar{% endblock navbar_class_overrides %} {% block body_container %} diff --git a/csunplugged/templates/core.html b/csunplugged/templates/core.html index 2ce007188..e5e69ba9b 100644 --- a/csunplugged/templates/core.html +++ b/csunplugged/templates/core.html @@ -13,13 +13,6 @@ - {% if LANGUAGE_CODE == "xx-lr" or LANGUAGE_CODE == "yy-rl" %} - - - {% endif %} {% block custom_title %} {% block title %}{% endblock title %} - {% trans "CS Unplugged" %} @@ -44,7 +37,9 @@ <meta name="msapplication-config" content="{% static 'img/browserconfig.xml' %}"> <meta name="theme-color" content="#ffffff"> </head> - <body style="text-align: {{LANGUAGE_START}};"{% block body_attribute_overrides %}{% endblock body_attribute_overrides %}> + <body id="top" style="text-align: {{LANGUAGE_START}};" class="{% block extra_body_classes %}{% endblock extra_body_classes %}"> + {% block body %} + {% block navbar %} {% endblock navbar %} @@ -94,7 +89,7 @@ </div> <footer id="page-footer" class="d-print-none"> - <div class="background-csfg py-3 w-100 text-center"> + <div class="bg-csfg py-3 w-100 text-center"> <div class="container"> <p class="mb-0"> {% blocktrans trimmed %} @@ -271,6 +266,8 @@ <h5 class="modal-title" id="glossary-modal-term"></h5> {% block scripts %} {% endblock scripts %} + {% endblock body %} + {% if DEPLOYED %} <!-- Google Tag Manager --> <script> diff --git a/csunplugged/templates/dev/base.html b/csunplugged/templates/dev/base.html deleted file mode 100644 index bb9a8c6c3..000000000 --- a/csunplugged/templates/dev/base.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "base-educators.html" %} - -{% block page_heading %} - <div class="alert alert-warning" role="alert"> - <p class="h5 mb-1">Heads up!</p> - <p class="mb-1"> - This view is here for <strong>development purposes - only</strong>. This exists to show what content has been added, and to - check what rendered markdown text looks like. The layout and links of each page - in this view does not necessarily reflect what the main website actually - looks like. - </p> - </div> -{% endblock page_heading %} diff --git a/csunplugged/templates/dev/index.html b/csunplugged/templates/dev/index.html deleted file mode 100644 index 144a97bfc..000000000 --- a/csunplugged/templates/dev/index.html +++ /dev/null @@ -1,102 +0,0 @@ -{% extends "dev/base.html" %} - -{% load i18n %} -{% load static %} -{% load render_html_field %} - -{% block title %} - Dev Overview -{% endblock title %} - -{% block content %} - <h1>Topics</h1> - {% if topics.all %} - <ul> - {% for topic in topics %} - <li>Topic: <a href="{% url 'topics:topic' topic.slug %}">{{ topic }}</a></li> - - <ul> - {% if topic.units %} - {% for unit_plan in topic.units %} - <li> - {% trans "Unit Plan:"%} <a href="{% url 'topics:unit_plan' topic.slug unit_plan.slug %}">{{ unit_plan.name }}</a> - {% if unit_plan.lessons %} - {% with grouped_lessons=unit_plan.grouped_lessons %} - {% include "topics/lessons-table.html" %} - {% endwith %} - {% endif %} - </li> - {% endfor %} - {% endif %} - - {% if topic.integrations.all %} - <li>Curriculum integrations: - {% with curriculum_integrations=topic.integrations.all %} - {% include "topics/curriculum-integrations-table.html" %} - {% endwith %} - </li> - {% endif %} - - {% if topic.programming_challenges %} - <li>Programming challenges: - {% with programming_challenges=topic.programming_challenges.all %} - {% include "topics/programming-challenges-table.html" %} - {% endwith %} - </li> - {% endif %} - </ul> - {% endfor %} - </ul> - {% endif %} - - {% if curriculum_areas %} - <h1>Curriculum Areas</h1> - <ul> - {% for area,children in curriculum_areas %} - <li>{% include "topics/curriculum-area-badge.html" %}</li> - <ul> - {% for area in children %} - <li>{% include "topics/curriculum-area-badge.html" %}</li> - {% endfor %} - </ul> - {% endfor %} - </ul> - {% endif %} - - {% if learning_outcomes.all %} - <h1>Learning Outcomes</h1> - <ul> - {% for learning_outcome in learning_outcomes.all %} - <li> - <code>{{ learning_outcome.slug }}</code> - {{ learning_outcome.text}}<br> - {% for area in learning_outcome.curriculum_areas.all %} - {% include "topics/curriculum-area-badge.html" %} - {% endfor %} - </li> - {% endfor %} - </ul> - {% endif %} - - <h1>Glossary Terms</h1> - <p> - <a href="{% url 'topics:glossary' %}">View glossary</a> - </p> - - {% if programming_challenge_languages.all %} - <h1>Programming Challenge Languages</h1> - <ul> - {% for language in programming_challenge_languages.all %} - <li>{{ language }}</li> - {% endfor %} - </ul> - {% endif %} - - {% if programming_challenge_difficulties.all %} - <h1>Programming Challenge Difficulties</h1> - <ul> - {% for difficulty in programming_challenge_difficulties.all %} - <li>{{ difficulty.level }}: {{ difficulty.name }}</li> - {% endfor %} - </ul> - {% endif %} -{% endblock content %} diff --git a/csunplugged/templates/general/index.html b/csunplugged/templates/general/index.html index 387b3fe45..eb978b086 100644 --- a/csunplugged/templates/general/index.html +++ b/csunplugged/templates/general/index.html @@ -7,7 +7,7 @@ {% trans "CS Unplugged" %} {% endblock custom_title %} -{% block body_attribute_overrides %} class="homepage"{% endblock body_attribute_overrides %} +{% block extra_body_classes %}no-padding{% endblock extra_body_classes %} {% block navbar_class_overrides %} trans-navbar{% endblock navbar_class_overrides %} {% block body_container %} @@ -26,8 +26,8 @@ <h1 class="text-center text-white text-shadow"> {% endblocktrans %} </p> {% if LANGUAGE_CODE == "en" %} - <a class="btn btn-info text-wrap mb-4" role="button" href="{% url 'moocs:index' %}"> - <strong>New online course for educators available</strong> - Click here to learn more + <a class="btn btn-at-a-distance text-wrap mb-4" role="button" href="{% url 'at_a_distance:index' %}"> + <strong>New!</strong> Adapted CS Unplugged lessons for teaching students and educators online </a> {% endif %} </div> @@ -76,22 +76,22 @@ <h3 class="mb-0"> {% trans "Curriculum Integrations" %} </h3> </a> - <a class="link-item link-item-top link-item-top-educator-4 no-text-decoration d-block mb-3" href="{% url 'moocs:index' %}"> - <h3 class="mb-0"> - {% trans "Online Courses" %} - </h3> - </a> </div> <div class="col-12 col-md-4 mb-4"> - <h2 class="at-home-colour">At home</h2> - <a class="link-item link-item-top link-item-top-at-home-1 no-text-decoration d-block mb-3" href="{% url 'at_home:index' %}"> + <h2 class="at-a-distance-colour">For remote educators</h2> + <a class="link-item link-item-top link-item-top-at-a-distance-1 no-text-decoration d-block mb-3" href="{% url 'at_a_distance:index' %}"> <h3 class="mb-0"> - {% trans "Activities" %} + {% trans "Distance lessons" %} </h3> {% if LANGUAGE_CODE != "en" %} {% include "generic/not-available-badge.html" %} {% endif %} </a> + <a class="link-item link-item-top link-item-top-at-a-distance-2 no-text-decoration d-block mb-3" href="{% url 'moocs:index' %}"> + <h3 class="mb-0"> + {% trans "MOOC (Online Course)" %} + </h3> + </a> </div> <div class="col-12 col-md-4 mb-4"> <h2 class="plugging-it-in-colour">For students</h2> @@ -103,6 +103,16 @@ <h3 class="mb-0"> {% include "generic/not-available-badge.html" %} {% endif %} </a> + + <h2 class="at-home-colour mt-4">At home</h2> + <a class="link-item link-item-top link-item-top-at-home-1 no-text-decoration d-block mb-3" href="{% url 'at_home:index' %}"> + <h3 class="mb-0"> + {% trans "Activities" %} + </h3> + {% if LANGUAGE_CODE != "en" %} + {% include "generic/not-available-badge.html" %} + {% endif %} + </a> </div> </div> <div class="text-center my-5"> diff --git a/csunplugged/templates/moocs/index.html b/csunplugged/templates/moocs/index.html index 6cdd3dfc7..77b084203 100644 --- a/csunplugged/templates/moocs/index.html +++ b/csunplugged/templates/moocs/index.html @@ -56,7 +56,7 @@ <h4>Course contents and resources</h4> Introduction <ul> <li> - <a href="{% url 'topics:unit_plan' 'sorting-networks' 'unit-plan' %}">Sorting networks unit plan</a> + <a href="{% url 'topics:topic' 'sorting-networks' %}">Sorting networks topic</a> </li> </ul> </li> @@ -64,7 +64,7 @@ <h4>Course contents and resources</h4> Binary basics <ul> <li> - <a href="{% url 'topics:unit_plan' 'binary-numbers' 'unit-plan' %}">Binary numbers unit plan</a> + <a href="{% url 'topics:topic' 'binary-numbers' %}">Binary numbers topic</a> </li> </ul> </li> @@ -85,7 +85,7 @@ <h4>Course contents and resources</h4> </a> </li> <li> - <a href="{% url 'topics:unit_plan' 'image-representation' 'unit-plan' %}">Image representation unit plan</a> + <a href="{% url 'topics:topic' 'image-representation' %}">Image representation topic</a> </li> </ul> </li> @@ -93,13 +93,13 @@ <h4>Course contents and resources</h4> Parity error correction <ul> <li> - <a href="{% url 'topics:lesson' 'error-detection-and-correction' 'unit-plan' 'parity-magic' %}"> + <a href="{% url 'topics:lesson' 'error-detection-and-correction' 'parity-magic' %}"> Parity magic lesson </a> </li> <li> - <a href="{% url 'topics:unit_plan' 'error-detection-and-correction' 'unit-plan' %}"> - Error detection and correction unit plan + <a href="{% url 'topics:topic' 'error-detection-and-correction' %}"> + Error detection and correction topic </a> </li> </ul> diff --git a/csunplugged/templates/plugging_it_in/index.html b/csunplugged/templates/plugging_it_in/index.html index af4b12e4c..cb7edb188 100644 --- a/csunplugged/templates/plugging_it_in/index.html +++ b/csunplugged/templates/plugging_it_in/index.html @@ -8,7 +8,7 @@ {% trans "CS Unplugged - Plugging It In" %} {% endblock custom_title %} -{% block body_attribute_overrides %} class="homepage"{% endblock body_attribute_overrides %} +{% block extra_body_classes %}no-padding{% endblock extra_body_classes %} {% block navbar_class_overrides %} trans-navbar{% endblock navbar_class_overrides %} {% block body_container %} diff --git a/csunplugged/templates/plugging_it_in/programming-challenge.html b/csunplugged/templates/plugging_it_in/programming-challenge.html index 43cc31c12..9e8002fa0 100644 --- a/csunplugged/templates/plugging_it_in/programming-challenge.html +++ b/csunplugged/templates/plugging_it_in/programming-challenge.html @@ -29,7 +29,7 @@ <h5 class='topic-subheading'>{{topic.name}}</h5> <a href="{% url 'plugging_it_in:lesson' topic.slug lesson.slug %}" target="_blank" rel="noopener noreferrer"> <h2 class='lesson-heading'>{{lesson.name}}</h2> </a> - <a href="{% url 'topics:lesson' topic.slug lesson.unit_plan.slug lesson.slug %}" target="_blank" rel="noopener noreferrer"> + <a href="{% url 'topics:lesson' topic.slug lesson.slug %}" target="_blank" rel="noopener noreferrer"> <p> {% trans "Jump to the CS Unplugged lesson" %} <img class="d-inline" src="{% static 'img/plugging-it-in/icons8-external-link.svg' %}"> diff --git a/csunplugged/templates/resources/resource.html b/csunplugged/templates/resources/resource.html index 379bb10dd..0ed6f8e03 100644 --- a/csunplugged/templates/resources/resource.html +++ b/csunplugged/templates/resources/resource.html @@ -97,7 +97,7 @@ <h2>{% trans "Related Lessons" %}</h2> {{ lesson.number }} </td> <td> - <a href="{% url 'topics:lesson' lesson.topic.slug lesson.unit_plan.slug lesson.slug %}"> + <a href="{% url 'topics:lesson' lesson.topic.slug lesson.slug %}"> <strong>{{ lesson.name }}</strong> {% if not lesson.translation_available %} <br> diff --git a/csunplugged/templates/search/curriculum-area-option.html b/csunplugged/templates/search/curriculum-area-option.html new file mode 100644 index 000000000..3f6495c9f --- /dev/null +++ b/csunplugged/templates/search/curriculum-area-option.html @@ -0,0 +1,3 @@ +<option value="{{ area.pk }}" data-child="{{ area.child }}"{% if area.selected %} selected="selected"{% endif %}> + {{ area.name }} +</option> diff --git a/csunplugged/templates/search/index.html b/csunplugged/templates/search/index.html new file mode 100644 index 000000000..a9bad9148 --- /dev/null +++ b/csunplugged/templates/search/index.html @@ -0,0 +1,150 @@ +{% extends "base-educators.html" %} + +{% load static query_replace %} + +{% block title %} + Search +{% endblock title %} + +{% block body_container %} + <div id="content-container" class="container"> + <div class="row"> + <div class="col-12 mb-3"> + <form method="get" action="." id="search-form"> + + <div class="form-group row"> + <label for="{{ form.q.id_for_label }}" class="col-sm-2 col-form-label col-form-label-lg">Search</label> + <div class="col-sm-10"> + <input type="search" id="id_q" name="q" class="form-control form-control-lg" placeholder="What are you searching for?" + aria-describedby="searchHelpText" {% if query %}value="{{ query|stringformat:'s' }}"{% endif %}> + <small id="searchHelpText" class="form-text text-muted pl-3"> + Leave blank to search all items. + </small> + </div> + </div> + + <div class="form-group row"> + <label class="col-md-4 col-lg-3 col-form-label">Filter by type</label> + <div class="col-md-8 col-lg-9"> + <select id="models-filter" name="models" multiple="multiple"> + {% for model in models %} + <option value="{{ model.value }}"{% if model.selected %} selected="selected"{% endif %}> + {{ model.name }} + </option> + {% endfor %} + </select> + </div> + </div> + + {% comment %} <div class="form-group row"> + <label class="col-md-4 col-lg-3 col-form-label">Filter by curriculum areas</label> + <div class="col-md-8 col-lg-9 areas-filter-container"> + <select id="areas-filter" name="curriculum_areas" multiple="multiple"> + {% for area in curriculum_areas %} + {% if area.children %} + <optgroup label="{{ area.name }}" data-value="{{ area.pk }}"> + {% for child in area.children %} + {% include "search/curriculum-area-option.html" with area=child %} + {% endfor %} + </optgroup> + {% else %} + {% include "search/curriculum-area-option.html" %} + {% endif %} + {% endfor %} + </select> + </div> + </div> {% endcomment %} + + <button type="button" id="clear-form" class="btn btn-outline-danger mb-3">Clear form</button> + <button type="submit" class="btn btn-success mb-3 float-right" name="page" value="1">Search</button> + </form> + </div> + + <div class="col-12"> + {% if search %} + <h3 id="results-heading">Result{{ results_count|pluralize }}</h3> + + <p class="text-center"> + <em> + Showing {% if is_paginated %}results {{ page_obj.start_index }} to {{ page_obj.end_index }} of {% endif %}{{ results_count }} result{{ results_count|pluralize }} + </em> + </p> + + <div id="results"> + {% for result in results %} + <div class="row"> + <div class="col-12 col-sm-3 text-sm-right"> + {{ result.MODEL_NAME }} + </div> + <div class="col-12 col-sm-9"> + {% search_result_template result %} + {% if not DEPLOYED %} + <p class="mb-0"> + <small class="text-muted"> + Search score: {{ result.rank|floatformat:3 }} + </small> + </p> + {% endif %} + </div> + </div> + {% empty %} + <p>No results found.</p> + {% endfor %} + </div> + + + {% comment %} {% if paginator.num_pages > 1 %} + <div class="text-center"> + {% if page_obj.has_previous %} + <a class="btn btn-link" + href="{% url 'search:index' %}?{% query_replace page=page_obj.previous_page_number %}">« Previous page</a> + {% endif %} + {% if page_obj.has_next %} + <a class="btn btn-link" href="{% url 'search:index' %}?{% query_replace page=page_obj.next_page_number %}">Next page + »</a> + {% endif %} + </div> + <div id="result-page-links" class="text-center"> + <span>Jump to page:</span> + {% for page in paginator.page_range %} + {% if page_obj.number == page %} + <a class="btn btn-link disabled" aria-disabled="true">{{ page }}</a> + {% else %} + <a class="btn btn-link" href="{% url 'resources:search' %}?{% query_replace page=page %}">{{ page }}</a> + {% endif %} + {% endfor %} + </div> + {% endif %} {% endcomment %} + {% else %} + {# Show some example queries to run, maybe query syntax, something else? #} + {% endif %} + </div> + </div> + </div> +{% endblock body_container %} + +{% block scripts %} + <script type="text/javascript"> + var areaData = { + {% for area in curriculum_areas %} + {{ area.pk }}: { + "text": "{{ area.name }}", + "colour": "{{ area.colour }}", + "child": false, + }, + {% for child in area.children %} + {{ child.pk }}: { + "text": "{{ child.name }}", + "colour": "{{ child.colour }}", + "child": true, + }, + {% endfor %} + {% endfor %} + }; + </script> + <script type="text/javascript" src="{% static 'js/website-search.js' %}"></script> +{% endblock scripts %} + +{% block css %} + <link href="{% static 'css/search.css' %}" type="text/css" media="screen" rel="stylesheet" /> +{% endblock css %} diff --git a/csunplugged/templates/search/indexes/classic/classicpage_text.txt b/csunplugged/templates/search/indexes/classic/classicpage_text.txt deleted file mode 100644 index bd75d3960..000000000 --- a/csunplugged/templates/search/indexes/classic/classicpage_text.txt +++ /dev/null @@ -1 +0,0 @@ -{{ object.name }} diff --git a/csunplugged/templates/search/indexes/resources/resource_text.txt b/csunplugged/templates/search/indexes/resources/resource_text.txt deleted file mode 100644 index bd75d3960..000000000 --- a/csunplugged/templates/search/indexes/resources/resource_text.txt +++ /dev/null @@ -1 +0,0 @@ -{{ object.name }} diff --git a/csunplugged/templates/search/indexes/topics/curriculumarea_text.txt b/csunplugged/templates/search/indexes/topics/curriculumarea_text.txt deleted file mode 100644 index 3cbd38cb7..000000000 --- a/csunplugged/templates/search/indexes/topics/curriculumarea_text.txt +++ /dev/null @@ -1 +0,0 @@ -{{ object }} diff --git a/csunplugged/templates/search/indexes/topics/curriculumintegration_text.txt b/csunplugged/templates/search/indexes/topics/curriculumintegration_text.txt deleted file mode 100644 index 5d2bca909..000000000 --- a/csunplugged/templates/search/indexes/topics/curriculumintegration_text.txt +++ /dev/null @@ -1,8 +0,0 @@ -{{ object.name }} -{{ object.content }} -{% for curriculum_area in object.curriculum_areas.all %} - {{ curriculum_area.name }} - {% if curriculum_area.parent %} - {{ curriculum_area.parent.name }} - {% endif %} -{% endfor %} diff --git a/csunplugged/templates/search/indexes/topics/lesson_text.txt b/csunplugged/templates/search/indexes/topics/lesson_text.txt deleted file mode 100644 index 308665962..000000000 --- a/csunplugged/templates/search/indexes/topics/lesson_text.txt +++ /dev/null @@ -1,11 +0,0 @@ -{{ object.name }} -{{ object.content }} -{{ object.computational_thinking_links }} -{% for learning_outcome in object.learning_outcomes.all %} - {% for curriculum_area in learning_outcome.curriculum_areas.all %} - {{ curriculum_area.name }} - {% if curriculum_area.parent %} - {{ curriculum_area.parent.name }} - {% endif %} - {% endfor %} -{% endfor %} diff --git a/csunplugged/templates/search/indexes/topics/programmingchallenge_text.txt b/csunplugged/templates/search/indexes/topics/programmingchallenge_text.txt deleted file mode 100644 index 20bafd462..000000000 --- a/csunplugged/templates/search/indexes/topics/programmingchallenge_text.txt +++ /dev/null @@ -1,3 +0,0 @@ -{{ object.name }} -{{ object.content }} -{{ object.extra_challenge }} diff --git a/csunplugged/templates/search/indexes/topics/topic_text.txt b/csunplugged/templates/search/indexes/topics/topic_text.txt deleted file mode 100644 index 4db4cc556..000000000 --- a/csunplugged/templates/search/indexes/topics/topic_text.txt +++ /dev/null @@ -1,3 +0,0 @@ -{{ object.name }} -{{ object.content }} -{{ object.other_resources }} diff --git a/csunplugged/templates/search/indexes/topics/unitplan_text.txt b/csunplugged/templates/search/indexes/topics/unitplan_text.txt deleted file mode 100644 index 8bda847b5..000000000 --- a/csunplugged/templates/search/indexes/topics/unitplan_text.txt +++ /dev/null @@ -1,3 +0,0 @@ -{{ object.name }} -{{ object.content }} -{{ object.computational_thinking_links }} diff --git a/csunplugged/templates/search/result/at_home.activity.html b/csunplugged/templates/search/result/at_home.activity.html new file mode 100644 index 000000000..bbf82608d --- /dev/null +++ b/csunplugged/templates/search/result/at_home.activity.html @@ -0,0 +1,5 @@ +<p class="mb-0"> + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} + </a> +</p> diff --git a/csunplugged/templates/search/result/classic.classicpage.html b/csunplugged/templates/search/result/classic.classicpage.html new file mode 100644 index 000000000..bbf82608d --- /dev/null +++ b/csunplugged/templates/search/result/classic.classicpage.html @@ -0,0 +1,5 @@ +<p class="mb-0"> + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} + </a> +</p> diff --git a/csunplugged/templates/search/result/classicpage.html b/csunplugged/templates/search/result/classicpage.html deleted file mode 100644 index 1bc00cc96..000000000 --- a/csunplugged/templates/search/result/classicpage.html +++ /dev/null @@ -1,5 +0,0 @@ -<p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} - </a> -</p> diff --git a/csunplugged/templates/search/result/general.generalpage.html b/csunplugged/templates/search/result/general.generalpage.html new file mode 100644 index 000000000..bbf82608d --- /dev/null +++ b/csunplugged/templates/search/result/general.generalpage.html @@ -0,0 +1,5 @@ +<p class="mb-0"> + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} + </a> +</p> diff --git a/csunplugged/templates/search/result/generalpage.html b/csunplugged/templates/search/result/generalpage.html deleted file mode 100644 index 1bc00cc96..000000000 --- a/csunplugged/templates/search/result/generalpage.html +++ /dev/null @@ -1,5 +0,0 @@ -<p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} - </a> -</p> diff --git a/csunplugged/templates/search/result/programmingchallenge.html b/csunplugged/templates/search/result/programmingchallenge.html deleted file mode 100644 index 78e3ff128..000000000 --- a/csunplugged/templates/search/result/programmingchallenge.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load i18n %} - -<p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} - </a> -</p> -<p class="mb-0"> - <span class="badge badge-default pt-1 difficulty-level-{{ object.difficulty.level }}"> - <strong>{% trans "Challenge Level:" %}</strong> {{ object.difficulty.name }} - </span> -</p> -<p class="mb-0"> - <small class="text-muted"> - {% trans "Within topic" %} - <a href="{{ object.topic.get_absolute_url }}" class="text-muted"> - {{ object.topic.name }} - </a> - </small> -</p> diff --git a/csunplugged/templates/search/result/resource.html b/csunplugged/templates/search/result/resource.html deleted file mode 100644 index 1bc00cc96..000000000 --- a/csunplugged/templates/search/result/resource.html +++ /dev/null @@ -1,5 +0,0 @@ -<p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} - </a> -</p> diff --git a/csunplugged/templates/search/result/resources.resource.html b/csunplugged/templates/search/result/resources.resource.html new file mode 100644 index 000000000..bbf82608d --- /dev/null +++ b/csunplugged/templates/search/result/resources.resource.html @@ -0,0 +1,5 @@ +<p class="mb-0"> + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} + </a> +</p> diff --git a/csunplugged/templates/search/result/topic.html b/csunplugged/templates/search/result/topic.html deleted file mode 100644 index 1bc00cc96..000000000 --- a/csunplugged/templates/search/result/topic.html +++ /dev/null @@ -1,5 +0,0 @@ -<p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} - </a> -</p> diff --git a/csunplugged/templates/search/result/curriculumintegration.html b/csunplugged/templates/search/result/topics.curriculumintegration.html similarity index 54% rename from csunplugged/templates/search/result/curriculumintegration.html rename to csunplugged/templates/search/result/topics.curriculumintegration.html index 4d1942a32..3b32edf5d 100644 --- a/csunplugged/templates/search/result/curriculumintegration.html +++ b/csunplugged/templates/search/result/topics.curriculumintegration.html @@ -1,20 +1,20 @@ {% load i18n %} <p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} </a> </p> <p class="mb-0"> - {% for area in object.curriculum_areas.all %} + {% for area in result.curriculum_areas.all %} {% include "topics/curriculum-area-badge.html" %} {% endfor %} </p> <p class="mb-0"> <small class="text-muted"> {% trans "Within topic" %} - <a href="{{ object.topic.get_absolute_url }}" class="text-muted"> - {{ object.topic.name }} + <a href="{{ result.topic.get_absolute_url }}" class="text-muted"> + {{ result.topic.name }} </a> </small> </p> diff --git a/csunplugged/templates/search/result/lesson.html b/csunplugged/templates/search/result/topics.lesson.html similarity index 57% rename from csunplugged/templates/search/result/lesson.html rename to csunplugged/templates/search/result/topics.lesson.html index 43644a0e9..0dc08fa80 100644 --- a/csunplugged/templates/search/result/lesson.html +++ b/csunplugged/templates/search/result/topics.lesson.html @@ -1,11 +1,11 @@ {% load i18n %} <p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} </a> </p> -{% for lesson_age in result.lesson_ages %} +{% for lesson_age in lesson_ages %} <p class="mb-0"> <small class="text-muted"> {% blocktrans with lower=lesson_age.lower upper=lesson_age.upper number=lesson_age.number trimmed %} @@ -17,17 +17,13 @@ <p class="mb-0"> <small class="text-muted"> {% trans "Within topic" %} - <a href="{{ object.topic.get_absolute_url }}" class="text-muted"> - {{ object.topic.name }} - </a> - {% trans "within unit plan" %} - <a href="{{ object.unit_plan.get_absolute_url }}" class="text-muted"> - {{ object.unit_plan.name }} + <a href="{{ result.topic.get_absolute_url }}" class="text-muted"> + {{ result.topic.name }} </a> </small> </p> <p class="mb-0"> - {% for area in result.curriculum_areas %} + {% for area in curriculum_areas %} {% include "topics/curriculum-area-badge.html" %} {% endfor %} </p> diff --git a/csunplugged/templates/search/result/topics.programmingchallenge.html b/csunplugged/templates/search/result/topics.programmingchallenge.html new file mode 100644 index 000000000..de159c74f --- /dev/null +++ b/csunplugged/templates/search/result/topics.programmingchallenge.html @@ -0,0 +1,20 @@ +{% load i18n %} + +<p class="mb-0"> + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} + </a> +</p> +<p class="mb-0"> + <span class="badge badge-default pt-1 difficulty-level-{{ result.difficulty.level }}"> + <strong>{% trans "Challenge Level:" %}</strong> {{ result.difficulty.name }} + </span> +</p> +<p class="mb-0"> + <small class="text-muted"> + {% trans "Within topic" %} + <a href="{{ result.topic.get_absolute_url }}" class="text-muted"> + {{ result.topic.name }} + </a> + </small> +</p> diff --git a/csunplugged/templates/search/result/topics.topic.html b/csunplugged/templates/search/result/topics.topic.html new file mode 100644 index 000000000..bbf82608d --- /dev/null +++ b/csunplugged/templates/search/result/topics.topic.html @@ -0,0 +1,5 @@ +<p class="mb-0"> + <a href="{{ result.get_absolute_url }}"> + {{ result.name }} + </a> +</p> diff --git a/csunplugged/templates/search/result/unitplan.html b/csunplugged/templates/search/result/unitplan.html deleted file mode 100644 index 19f540b41..000000000 --- a/csunplugged/templates/search/result/unitplan.html +++ /dev/null @@ -1,15 +0,0 @@ -{% load i18n %} - -<p class="mb-0"> - <a href="{{ object.get_absolute_url }}"> - {{ object.name }} - </a> -</p> -<p class="mb-0"> - <small class="text-muted"> - {% trans "Within topic" %} - <a href="{{ object.topic.get_absolute_url }}" class="text-muted"> - {{ object.topic.name }} - </a> - </small> -</p> diff --git a/csunplugged/templates/search/search.html b/csunplugged/templates/search/search.html deleted file mode 100644 index 21f6c7aa8..000000000 --- a/csunplugged/templates/search/search.html +++ /dev/null @@ -1,176 +0,0 @@ -{% extends "base-educators.html" %} - -{% load static %} -{% load django_bootstrap_breadcrumbs %} -{% load widget_tweaks %} -{% load query_replace %} - -{% block title %} - Search -{% endblock title %} - -{% block body_container %} - <div id="content-container" class="container"> - <div class="row"> - <div class="col-12"> - <form method="get" action="."> - {% if form.non_field_errors %} - <div class="alert alert-danger" role="alert"> - {% for error in form.non_field_errors %} - {{ error }} - {% endfor %} - </div> - {% endif %} - - <div class="form-group row"> - <label for="{{ form.q.id_for_label }}" class="col-sm-2 col-form-label col-form-label-lg">Search</label> - <div class="col-sm-10"> - {% if form.is_bound and form.q.errors %} - {% render_field form.q class="form-control form-control-lg is-invalid" aria-describedby="form-query-text-help" placeholder="What are you searching for?" %} - {% for error in field.errors %} - <div class="invalid-feedback"> - {{ error }} - </div> - {% endfor %} - {% else %} - {% render_field form.q class="form-control form-control-lg" aria-describedby="form-query-text-help" placeholder="What are you searching for?" %} - {% endif %} - <small id="form-query-text-help" class="form-text text-muted"> - Leave blank to search all items. - </small> - </div> - </div> - - <div class="form-group row"> - <label class="col-md-4 col-lg-3 col-form-label">Filter by type</label> - <div class="col-md-8 col-lg-9"> - <select id="models-filter" name="models" multiple="multiple" style="display:none;"> - {% for model in models %} - <option value="{{ model.value }}"{% if model.selected == "true" %} selected="selected"{% endif %}> - {{ model.name }} - </option> - {% endfor %} - </select> - </div> - </div> - - <div class="form-group row"> - <label class="col-md-4 col-lg-3 col-form-label">Filter by curriculum areas</label> - <div class="col-md-8 col-lg-9 areas-filter-container"> - <select id="areas-filter" name="curriculum_areas" multiple="multiple" style="display:none;"> - {% for area in curriculum_areas %} - {% if area.children %} - <optgroup label="{{ area.name }}"> - {% for child in area.children %} - <option value="{{ child.pk }}"{% if child.selected %} selected="selected"{% endif %}>{{ child.name }}</option> - {% endfor %} - </optgroup> - {% else %} - <option value="{{ area.pk }}"{% if area.selected %} selected="selected"{% endif %}>{{ area.name }}</option> - {% endif %} - {% endfor %} - </select> - </div> - </div> - - <button type="button" id="clear-form" class="btn btn-outline-danger mb-3">Clear form</button> - <button type="submit" class="btn btn-success mb-3 float-right" name="page" value="1">Search</button> - </form> - - {% if search %} - <h3 id="results-heading">Results</h3> - - {% if object_list %} - <p class="text-center"><em>Showing {% if is_paginated %}results {{ page_obj.start_index }} to {{ page_obj.end_index }} of {% endif %}{{ paginator.count }} results</em></p> - - <div id="results"> - {% for result in page_obj.object_list %} - <div class="row"> - {% with object=result.object %} - <div class="col-12 col-sm-3 text-sm-right"> - {{ object.MODEL_NAME }} - </div> - <div class="col-12 col-sm-9"> - {% with template="search/result/"|add:result.model_name|add:".html" %} - {% include template %} - {% endwith %} - {% if not DEPLOYED %} - <p class="mb-0"> - <small class="text-muted"> - Search score: {{ result.score|floatformat:3 }} - </small> - </p> - {% endif %} - </div> - {% endwith %} - </div> - {% endfor %} - </div> - - {% if paginator.num_pages > 1 %} - <div class="text-center"> - {% if page_obj.has_previous %} - <a class="btn btn-link" href="{% url 'search:index' %}?{% query_replace page=page_obj.previous_page_number %}">« Previous page</a> - {% endif %} - {% if page_obj.has_next %} - <a class="btn btn-link" href="{% url 'search:index' %}?{% query_replace page=page_obj.next_page_number %}">Next page »</a> - {% endif %} - </div> - <div id="result-page-links" class="text-center"> - <span>Jump to page:</span> - {% for page in paginator.page_range %} - {% if page_obj.number == page %} - <a class="btn btn-link disabled" aria-disabled="true">{{ page }}</a> - {% else %} - <a class="btn btn-link" href="{% url 'search:index' %}?{% query_replace page=page %}">{{ page }}</a> - {% endif %} - {% endfor %} - </div> - {% endif %} - {% else %} - <p class="text-center">No results found.</p> - {% endif %} - {% else %} - <p class="text-center mt-3 font-italic"> - <a href="{% url 'search:index' %}?q=&models=topics.curriculumintegration&curriculum_areas=19&curriculum_areas=20&page=1" class="text-muted"> - Try searching for curriculum integrations with reading and writing - </a> - </p> - {% endif %} - </div> - </div> - </div> -{% endblock body_container %} - -{% block scripts %} - <script type="text/javascript"> - var areaData = { - {% for area in curriculum_areas %} - {{ area.pk }}: { - "text": "{{ area.name }}", - "colour": "{{ area.colour }}", - "child": false, - }, - {% for child in area.children %} - {{ child.pk }}: { - "text": "{{ child.name }}", - "colour": "{{ child.colour }}", - "child": true, - }, - {% endfor %} - {% endfor %} - }; - var areaGroupMapping = { - {% for area in curriculum_areas %} - {% if area.children %} - "{{ area.name }}": {{ area.pk }}, - {% endif %} - {% endfor %} - }; - </script> - <script type="text/javascript" src="{% static 'js/website-search.js' %}"></script> -{% endblock scripts %} - -{% block css %} - <link href="{% static 'css/search.css' %}" type="text/css" media="screen" rel="stylesheet" /> -{% endblock css %} diff --git a/csunplugged/templates/topics/curriculum-integration.html b/csunplugged/templates/topics/curriculum-integration.html index b87f5275c..75e2190a3 100644 --- a/csunplugged/templates/topics/curriculum-integration.html +++ b/csunplugged/templates/topics/curriculum-integration.html @@ -47,8 +47,8 @@ <h1>{{ integration.name }}</h1> <ul class="mb-1"> {% for lesson in prerequisite_lessons %} <li> - <a href="{% url 'topics:lesson' lesson.topic.slug lesson.unit_plan.slug lesson.slug %}"> - <strong>{{ lesson.unit_plan.name }}:</strong> {{ lesson.name }} + <a href="{% url 'topics:lesson' lesson.topic.slug lesson.slug %}"> + <strong>{{ lesson.topic.name }}:</strong> {{ lesson.name }} ({% for age_group in lesson.age_group.all %}{{ age_group.ages.lower }} to {{ age_group.ages.upper }}{% if not forloop.last %} and {% endif %}{% endfor %}) </a> {% if not lesson.translation_available %} diff --git a/csunplugged/templates/topics/lesson.html b/csunplugged/templates/topics/lesson.html index 73570a7c6..6ca9fd3ee 100644 --- a/csunplugged/templates/topics/lesson.html +++ b/csunplugged/templates/topics/lesson.html @@ -12,14 +12,13 @@ {% block breadcrumbs %} {% breadcrumb "Topics" "topics:index" %} {% breadcrumb topic.name "topics:topic" topic.slug %} - {% breadcrumb unit_plan.name "topics:unit_plan" topic.slug unit_plan.slug %} - {% breadcrumb lesson.name "topics:lesson" topic.slug unit_plan.slug lesson.slug %} + {% breadcrumb lesson.name "topics:lesson" topic.slug lesson.slug %} {% endblock breadcrumbs %} {% block page_heading %} <h1 id="{{ lesson.slug }}">{{ lesson.name }}</h1> {% if not lesson.translation_available %} - {% with model=lesson parent=unit_plan %} + {% with model=lesson parent=topic %} {% include "topics/not-available-warning.html" %} {% endwith %} {% else %} @@ -100,7 +99,7 @@ <h2 class="mt-2">{% trans "Classroom resources" %}</h2> <div class="d-print-none"> <h2 class="mt-2">{% trans "Programming challenges" %}</h2> <p> - <a href="{% url 'topics:programming_challenges_list' topic.slug unit_plan.slug lesson.slug %}"> + <a href="{% url 'topics:programming_challenges_list' topic.slug lesson.slug %}"> {% trans "View related programming challenges" %} </a> </p> diff --git a/csunplugged/templates/topics/lessons-table.html b/csunplugged/templates/topics/lessons-table.html index 1da6420b8..f225d1ead 100644 --- a/csunplugged/templates/topics/lessons-table.html +++ b/csunplugged/templates/topics/lessons-table.html @@ -28,7 +28,7 @@ {{ lesson.number }} </td> <td style="width:60%"> - <a href="{% url 'topics:lesson' topic.slug unit_plan.slug lesson.slug %}"> + <a href="{% url 'topics:lesson' topic.slug lesson.slug %}"> <strong>{{ lesson.name }}</strong> {% if not lesson.translation_available %} <br> @@ -38,7 +38,7 @@ </td> {% if lesson.has_programming_challenges %} <td class="text-center table-success-cell" style="width:20%"> - <a href="{% url 'topics:programming_challenges_list' topic.slug unit_plan.slug lesson.slug %}"> + <a href="{% url 'topics:programming_challenges_list' topic.slug lesson.slug %}"> {% trans "Yes" %} </a> {% else %} diff --git a/csunplugged/templates/topics/programming-challenge-lesson-list.html b/csunplugged/templates/topics/programming-challenge-lesson-list.html index 02b21f11f..f86f52393 100644 --- a/csunplugged/templates/topics/programming-challenge-lesson-list.html +++ b/csunplugged/templates/topics/programming-challenge-lesson-list.html @@ -12,7 +12,7 @@ {% block breadcrumbs %} {% breadcrumb "Topics" "topics:index" %} {% breadcrumb topic.name "topics:topic" topic.slug %} - {% breadcrumb "Programming Challenges" "topics:programming_challenges_list" topic.slug unit_plan.slug lesson.slug %} + {% breadcrumb "Programming Challenges" "topics:programming_challenges_list" topic.slug lesson.slug %} {% endblock breadcrumbs %} {% block page_heading %} diff --git a/csunplugged/templates/topics/programming-challenge.html b/csunplugged/templates/topics/programming-challenge.html index 21d82638a..b3f408cb8 100644 --- a/csunplugged/templates/topics/programming-challenge.html +++ b/csunplugged/templates/topics/programming-challenge.html @@ -40,7 +40,7 @@ <h1> <ul class="mb-0"> {% for lesson in lessons %} <li> - <a href="{% url 'topics:lesson' topic.slug lesson.unit_plan.slug lesson.slug %}"> + <a href="{% url 'topics:lesson' topic.slug lesson.slug %}"> {% blocktrans with set_num=lesson.challenge_set_number chal_num=lesson.challenge_number name=lesson.name trimmed %} Challenge {{ set_num }}.{{ chal_num }} for {{ name }} {% endblocktrans %} diff --git a/csunplugged/templates/topics/unit-plan-description.html b/csunplugged/templates/topics/topic-whats-it-all-about.html similarity index 58% rename from csunplugged/templates/topics/unit-plan-description.html rename to csunplugged/templates/topics/topic-whats-it-all-about.html index 583f933ba..510761f03 100644 --- a/csunplugged/templates/topics/unit-plan-description.html +++ b/csunplugged/templates/topics/topic-whats-it-all-about.html @@ -5,49 +5,60 @@ {% load django_bootstrap_breadcrumbs %} {% block title %} - {{ unit_plan.name }} - {% trans "Description" %} + {{ topic.name }} - {% trans "What's it all about" %} {% endblock title %} {% block breadcrumbs %} {% breadcrumb "Topics" "topics:index" %} {% breadcrumb topic.name "topics:topic" topic.slug %} - {% breadcrumb unit_plan.name "topics:unit_plan" topic.slug unit_plan.slug %} - {% breadcrumb "Description" "topics:unit_plan_description" topic.slug unit_plan.slug %} + {% breadcrumb "What's it all about" "topics:topic_whats_it_all_about" topic.slug %} {% endblock breadcrumbs %} {% block page_heading %} - <h1 id="{{ unit_plan.slug }}"><span class="text-muted">{% trans "Unit plan:" %}</span> {{ unit_plan.name }}</h1> + <h1 id="{{ topic.slug }}"> + {{ topic.name }} + <br> + <small class="text-muted"> + {% trans "What's it all about?"%} + </small> + </h1> {% if not topic.translation_available %} - {% with model=unit_plan parent=topic %} + {% with model=topic %} {% include 'topics/not-available-warning.html' %} {% endwith %} {% endif %} {% endblock page_heading %} {% block left_column_content %} - {% if unit_plan.translation_available %} - {% render_html_field unit_plan.content %} + {% if topic.translation_available %} + {% render_html_field topic.whats_it_all_about %} - {% with computational_thinking_links=unit_plan.computational_thinking_links %} + {% with computational_thinking_links=topic.computational_thinking_links %} {% include "topics/computational-thinking-links.html" %} {% endwith %} {% endif %} + + <p class="text-center"> + <a href="{% url 'topics:topic' topic.slug %}" class="btn btn-outline-primary"> + {% trans "Go back to the topic homepage" %} + </a> + </p> {% endblock left_column_content %} {% block right_column_content %} - {% if unit_plan.translation_available %} + {% if topic.translation_available %} <div id="sticky-sidebar" class="position-sticky"> <h2 class="heading-underline">{% trans "Table of contents" %}</h2> <ul class="nav nav-pills flex-column" id="scrollspy-table-of-contents"> <li class="nav-item"> - <a class="nav-link" href="#{{ unit_plan.slug }}">{{ unit_plan.name }}</a> + <a class="nav-link" href="#{{ topic.slug }}">{{ topic.name }}</a> </li> - {% for heading_node in unit_plan.heading_tree %} + {% for heading_node in topic.whats_it_all_about_heading_tree %} <li class="nav-item"> <a class="nav-link" href="#{{ heading_node.slug }}">{{ heading_node.text }}</a> </li> {% endfor %} - {% if unit_plan.computational_thinking_links %} + {% if topic.computational_thinking_links %} <li class="nav-item"> <a class="nav-link" href="#ct-links">{% trans "Computational Thinking" %}</a> </li> diff --git a/csunplugged/templates/topics/topic.html b/csunplugged/templates/topics/topic.html index 600f3120e..328afd90f 100644 --- a/csunplugged/templates/topics/topic.html +++ b/csunplugged/templates/topics/topic.html @@ -24,55 +24,52 @@ <h1 id="{{ topic.slug }}">{{ topic.name }}</h1> {% endwith %} {% endif %} - {% if topic.translation_available %} - {% render_html_field topic.content %} - {% endif %} + <div class="pb-3"> + {% if topic.translation_available %} + {% render_html_field topic.content %} + {% endif %} + </div> {% endblock page_heading %} -{% block content %} - <h2 id="units">{% trans "Unit Plans" %}</h2> - <div class="row justify-content-between"> - {% for unit_plan in unit_plans %} - <div class="col-12 col-md-6 mb-4"> - <a class="link-item no-text-decoration d-flex justify-content-between h-100{% if not unit_plan.translation_available %} unavailable{% endif %}" href="{% url 'topics:unit_plan' topic.slug unit_plan.slug %}"> - <div> - <h3>{{ unit_plan.name }}</h3> - {% if not unit_plan.translation_available %} - {% include "generic/not-available-badge.html" %} - {% endif %} - <ul class="list-unstyled list-unstyled-i18n text-muted mb-0"> - <li> - <strong> - {% blocktrans trimmed with min_age=unit_plan.min_age max_age=unit_plan.max_age%} - Ages {{ min_age }} to {{ max_age }} - {% endblocktrans %} - </strong> - </li> - </ul> - </div> - <div class="summary"> - <span class="summary-value">{{ unit_plan.lessons.count }}</span> - <br> - {% trans "lessons" %} - </div> - </a> - </div> - {% endfor %} - </div> +{% block content_container %} + <div class="col-12 col-lg-6 col-xl-5"> + {% if topic.translation_available %} + <h2>{% trans "What's it all about?" %}</h2> + {% render_html_field topic.whats_it_all_about as whats_it_all_about_html %} + {{ whats_it_all_about_html|truncatewords_html:150 }} - {% if curriculum_integrations %} - <h2 id="integrations">{% trans "Curriculum Integrations" %}</h2> - {% include "topics/curriculum-integrations-table.html" %} - {% endif %} -{% endblock content %} + <p class="text-center"> + <a href="{% url 'topics:topic_whats_it_all_about' topic.slug %}" class="btn btn-outline-primary"> + {% trans "Read more..." %} + {% if topic.computational_thinking_links %} + <br> + <small> + {% trans "Includes links to computational thinking" %} + </small> + {% endif %} + </a> + </p> + {% endif %} + </div> -{% block end_content %} - {% if topic.other_resources %} - <h2 id="other-resources">{% trans "Looking for more?" %}</h2> - <p> - <a href="{% url 'topics:other_resources' topic.slug %}"> - {% trans "Click here for other resources" %} - </a> - </p> - {% endif %} -{% endblock end_content %} + <div class="col-12 col-lg-6 col-xl-7"> + {% if grouped_lessons %} + <h2 id="lessons">{% trans "Lessons" %}</h2> + {% include "topics/lessons-table.html" %} + {% endif %} + + {% if curriculum_integrations %} + <h2 id="integrations">{% trans "Curriculum Integrations" %}</h2> + {% include "topics/curriculum-integrations-table.html" %} + {% endif %} + + {% if topic.other_resources %} + <h2 id="other-resources">{% trans "Looking for more?" %}</h2> + <p> + <a href="{% url 'topics:other_resources' topic.slug %}"> + {% trans "Click here for other resources" %} + </a> + </p> + {% endif %} + </div> +{% endblock content_container %} diff --git a/csunplugged/templates/topics/unit-plan.html b/csunplugged/templates/topics/unit-plan.html deleted file mode 100644 index 0cb73611a..000000000 --- a/csunplugged/templates/topics/unit-plan.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends "base-educators.html" %} - -{% load i18n %} -{% load render_html_field %} -{% load django_bootstrap_breadcrumbs %} - -{% block title %} - {{ unit_plan.name }} -{% endblock title %} - -{% block breadcrumbs %} - {% breadcrumb "Topics" "topics:index" %} - {% breadcrumb topic.name "topics:topic" topic.slug %} - {% breadcrumb unit_plan.name "topics:unit_plan" topic.slug unit_plan.slug %} -{% endblock breadcrumbs %} - -{% block page_heading %} - <h1 id="{{ unit_plan.slug }}" class="mb-3"><span class="text-muted">{% trans "Unit plan:" %}</span> {{ unit_plan.name }}</h1> - {% if not topic.translation_available %} - {% with model=unit_plan parent=topic %} - {% include 'topics/not-available-warning.html' %} - {% endwith %} - {% endif %} -{% endblock page_heading %} - -{% block content_container %} - <div class="col-12 col-lg-6 col-xl-5"> - {% if unit_plan.translation_available %} - <h2>{% trans "What's it all about?" %}</h2> - {% render_html_field unit_plan.content as content_html %} - {{ content_html|truncatewords_html:150 }} - - <p class="text-center"> - <a href="{% url 'topics:unit_plan_description' topic.slug unit_plan.slug %}" class="btn btn-outline-primary"> - {% trans "Read the full unit plan description" %} - </a> - </p> - {% endif %} - </div> - - <div class="col-12 col-lg-6 col-xl-7"> - {% if grouped_lessons %} - <h2 id="lessons">{% trans "Lessons" %}</h2> - {% include "topics/lessons-table.html" %} - {% endif %} - </div> -{% endblock content_container %} diff --git a/csunplugged/tests/at_a_distance/AtADistanceTestDataGenerator.py b/csunplugged/tests/at_a_distance/AtADistanceTestDataGenerator.py new file mode 100644 index 000000000..944c2d5f6 --- /dev/null +++ b/csunplugged/tests/at_a_distance/AtADistanceTestDataGenerator.py @@ -0,0 +1,72 @@ +"""Create test data for at a distance tests.""" + +import os.path +import yaml + +from at_a_distance.models import ( + Lesson, + SupportingResource, +) + + +class AtADistanceTestDataGenerator: + """Class for generating test data for at a distance application.""" + + def __init__(self): + """Create AtADistanceTestDataGenerator object.""" + self.BASE_PATH = "tests/at_a_distance/" + self.LOADER_ASSET_PATH = os.path.join(self.BASE_PATH, "loaders/assets/") + + def load_yaml_file(self, yaml_file_path): + """Load a yaml file. + + Args: + yaml_file_path: The path to a given yaml file (str). + + Returns: + Contents of a yaml file. + """ + yaml_file = open(yaml_file_path, encoding="UTF-8").read() + return yaml.load(yaml_file) + + def create_lesson(self, number, student_suitability=Lesson.SUITABLE, educator_suitability=Lesson.SUITABLE): + """Create lesson object. + + Args: + number: Identifier of the lesson (int). + + Returns: + Lesson object. + """ + lesson = Lesson( + slug=f"lesson-{number}", + name=f"Lesson {number}", + order_number=number, + icon=f"img/lesson-{number}.png", + languages=["en"], + suitable_for_teaching_students=student_suitability, + suitable_for_teaching_educators=educator_suitability, + introduction=f"Content for Lesson {number}", + ) + lesson.save() + return lesson + + def create_supporting_resource(self, lesson, number): + """Create supporting resource object. + + Args: + lesson: The related lesson object (Lesson). + number: Identifier of the supporting resource (int). + + Returns: + SupportingResource object. + """ + supporting_resource = SupportingResource( + order_number=number, + text=f"Supporting Resource {number}", + url=f"https://www.resource-{number}.com", + language="en", + lesson=lesson, + ) + supporting_resource.save() + return supporting_resource diff --git a/csunplugged/tests/at_a_distance/__init__.py b/csunplugged/tests/at_a_distance/__init__.py new file mode 100644 index 000000000..b386a4fae --- /dev/null +++ b/csunplugged/tests/at_a_distance/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the at a distance application.""" diff --git a/csunplugged/tests/at_a_distance/loaders/__init__.py b/csunplugged/tests/at_a_distance/loaders/__init__.py new file mode 100644 index 000000000..79da2c16a --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the loaders in the at a distance application.""" diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/basic-config/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/basic-config/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/basic-config/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-content/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-content/introduction.md new file mode 100644 index 000000000..90f316cb6 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-content/introduction.md @@ -0,0 +1 @@ +# Lesson 1 diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-icon/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-icon/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-icon/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-supporting-resources/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-supporting-resources/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-supporting-resources/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-title/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-title/introduction.md new file mode 100644 index 000000000..d3034b301 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/missing-title/introduction.md @@ -0,0 +1 @@ +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-content/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-content/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-content/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-icon/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-icon/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-icon/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-name/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-name/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-name/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-slug/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-slug/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-slug/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-supporting-resources/introduction.md b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-supporting-resources/introduction.md new file mode 100644 index 000000000..2ce3d6c8c --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-supporting-resources/introduction.md @@ -0,0 +1,3 @@ +# Lesson 1 + +Example content text. diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-supporting-resources/supporting-resources.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-supporting-resources/supporting-resources.yaml new file mode 100644 index 000000000..a6cfba9d9 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/en/valid-supporting-resources/supporting-resources.yaml @@ -0,0 +1,4 @@ +- text: URL A + url: https://www.a.com +- text: URL B + url: https://www.b.com diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/static/img/valid-icon.png b/csunplugged/tests/at_a_distance/loaders/assets/lessons/static/img/valid-icon.png new file mode 100644 index 000000000..818c71d03 Binary files /dev/null and b/csunplugged/tests/at_a_distance/loaders/assets/lessons/static/img/valid-icon.png differ diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/basic-config/basic-config.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/basic-config/basic-config.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/basic-config/basic-config.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/invalid-value-suitable-for-teaching-educators/invalid-value-suitable-for-teaching-educators.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/invalid-value-suitable-for-teaching-educators/invalid-value-suitable-for-teaching-educators.yaml new file mode 100644 index 000000000..9617102e5 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/invalid-value-suitable-for-teaching-educators/invalid-value-suitable-for-teaching-educators.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: invalid-value diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/invalid-value-suitable-for-teaching-students/invalid-value-suitable-for-teaching-students.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/invalid-value-suitable-for-teaching-students/invalid-value-suitable-for-teaching-students.yaml new file mode 100644 index 000000000..aae24570b --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/invalid-value-suitable-for-teaching-students/invalid-value-suitable-for-teaching-students.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: invalid-value +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-content/missing-content.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-content/missing-content.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-content/missing-content.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-icon/missing-icon.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-icon/missing-icon.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-icon/missing-icon.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-suitable-for-teaching-educators/missing-suitable-for-teaching-educators.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-suitable-for-teaching-educators/missing-suitable-for-teaching-educators.yaml new file mode 100644 index 000000000..fee3c5c13 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-suitable-for-teaching-educators/missing-suitable-for-teaching-educators.yaml @@ -0,0 +1 @@ +suitable-for-teaching-students: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-suitable-for-teaching-students/missing-suitable-for-teaching-students.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-suitable-for-teaching-students/missing-suitable-for-teaching-students.yaml new file mode 100644 index 000000000..aa104ceac --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-suitable-for-teaching-students/missing-suitable-for-teaching-students.yaml @@ -0,0 +1 @@ +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-supporting-resources/missing-supporting-resources.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-supporting-resources/missing-supporting-resources.yaml new file mode 100644 index 000000000..e7764ceb5 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-supporting-resources/missing-supporting-resources.yaml @@ -0,0 +1,3 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable +supporting-resources: true diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-title/missing-title.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-title/missing-title.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/missing-title/missing-title.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-content/valid-content.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-content/valid-content.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-content/valid-content.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-icon/valid-icon.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-icon/valid-icon.yaml new file mode 100644 index 000000000..bbaf49133 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-icon/valid-icon.yaml @@ -0,0 +1,3 @@ +icon: img/valid-icon.png +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-name/valid-name.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-name/valid-name.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-name/valid-name.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-slug/valid-slug.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-slug/valid-slug.yaml new file mode 100644 index 000000000..0825b0ec3 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-slug/valid-slug.yaml @@ -0,0 +1,2 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable diff --git a/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-supporting-resources/valid-supporting-resources.yaml b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-supporting-resources/valid-supporting-resources.yaml new file mode 100644 index 000000000..e7764ceb5 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/assets/lessons/structure/valid-supporting-resources/valid-supporting-resources.yaml @@ -0,0 +1,3 @@ +suitable-for-teaching-students: suitable +suitable-for-teaching-educators: suitable +supporting-resources: true diff --git a/csunplugged/tests/at_a_distance/loaders/test_lessons_loader.py b/csunplugged/tests/at_a_distance/loaders/test_lessons_loader.py new file mode 100644 index 000000000..2601d4e59 --- /dev/null +++ b/csunplugged/tests/at_a_distance/loaders/test_lessons_loader.py @@ -0,0 +1,229 @@ +import os.path +from django.test import override_settings +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator +from at_a_distance.models import Lesson +from at_a_distance.management.commands._LessonLoader import AtADistanceLessonLoader +from utils.errors.CouldNotFindYAMLFileError import CouldNotFindYAMLFileError +from utils.errors.EmptyMarkdownFileError import EmptyMarkdownFileError +from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError +from utils.errors.NoHeadingFoundInMarkdownFileError import NoHeadingFoundInMarkdownFileError +from utils.errors.InvalidYAMLValueError import InvalidYAMLValueError + + +class AtADistanceLessonsLoaderTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.test_data = AtADistanceTestDataGenerator() + self.loader_name = "lessons" + self.base_path = os.path.join(self.test_data.LOADER_ASSET_PATH, self.loader_name) + + def test_basic_lesson_loader_configuration(self): + test_name = "basic-config" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertQuerysetEqual( + Lesson.objects.all(), + ["<Lesson: Lesson 1>"] + ) + + def test_lesson_loader_slug_set_correctly(self): + test_name = "valid-slug" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertEquals( + Lesson.objects.all()[0].slug, + "valid-slug", + ) + + def test_lesson_loader_name_set_correctly(self): + test_name = "valid-name" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertEquals( + Lesson.objects.get(slug=test_name).name, + "Lesson 1", + ) + + def test_lesson_loader_missing_name_text(self): + test_name = "missing-title" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + NoHeadingFoundInMarkdownFileError, + lesson_loader.load, + ) + + def test_lesson_loader_content_set_correctly(self): + test_name = "valid-content" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertEquals( + Lesson.objects.get(slug=test_name).introduction, + "<p>Example content text.</p>", + ) + + def test_lesson_loader_missing_content_text(self): + test_name = "missing-content" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + EmptyMarkdownFileError, + lesson_loader.load, + ) + + def test_lesson_loader_missing_suitable_for_teaching_students(self): + test_name = "missing-suitable-for-teaching-students" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + MissingRequiredFieldError, + lesson_loader.load, + ) + + def test_lesson_loader_invalid_value_suitable_for_teaching_students(self): + test_name = "invalid-value-suitable-for-teaching-students" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + InvalidYAMLValueError, + lesson_loader.load, + ) + + def test_lesson_loader_missing_suitable_for_teaching_educators(self): + test_name = "missing-suitable-for-teaching-educators" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + MissingRequiredFieldError, + lesson_loader.load, + ) + + def test_lesson_loader_invalid_value_suitable_for_teaching_educators(self): + test_name = "invalid-value-suitable-for-teaching-educators" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + InvalidYAMLValueError, + lesson_loader.load, + ) + + @override_settings(STATIC_ROOT="tests/at_a_distance/loaders/assets/lessons/static") + def test_lesson_loader_valid_icon(self): + test_name = "valid-icon" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertEquals( + Lesson.objects.get(slug=test_name).icon, + "img/valid-icon.png", + ) + + def test_lesson_loader_missing_icon(self): + test_name = "missing-icon" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertIsNone(Lesson.objects.get(slug=test_name).icon) + + def test_lesson_loader_updating_lesson(self): + test_name = "basic-config" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertEqual( + Lesson.objects.get(slug=test_name).order_number, + 1, + ) + lesson_loader = AtADistanceLessonLoader( + 2, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertEqual( + Lesson.objects.get(slug=test_name).order_number, + 2, + ) + + def test_lesson_loader_valid_supporting_resources(self): + test_name = "valid-supporting-resources" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + lesson_loader.load() + self.assertIsNone(Lesson.objects.get(slug=test_name).icon) + + def test_lesson_loader_missing_supporting_resources(self): + test_name = "missing-supporting-resources" + lesson_loader = AtADistanceLessonLoader( + 1, + structure_filename=f"{test_name}.yaml", + content_path=test_name, + base_path=self.base_path + ) + self.assertRaises( + CouldNotFindYAMLFileError, + lesson_loader.load, + ) diff --git a/csunplugged/tests/at_a_distance/management/__init__.py b/csunplugged/tests/at_a_distance/management/__init__.py new file mode 100644 index 000000000..89b867f15 --- /dev/null +++ b/csunplugged/tests/at_a_distance/management/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the management commands in the at a distance application.""" diff --git a/csunplugged/tests/at_a_distance/management/assets/lessons-empty/structure/structure.yaml b/csunplugged/tests/at_a_distance/management/assets/lessons-empty/structure/structure.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/csunplugged/tests/at_a_distance/management/assets/lessons-missing/structure/structure.yaml b/csunplugged/tests/at_a_distance/management/assets/lessons-missing/structure/structure.yaml new file mode 100644 index 000000000..01528d0cc --- /dev/null +++ b/csunplugged/tests/at_a_distance/management/assets/lessons-missing/structure/structure.yaml @@ -0,0 +1 @@ +something-else: True diff --git a/csunplugged/tests/at_a_distance/management/assets/lessons-not-list/structure/structure.yaml b/csunplugged/tests/at_a_distance/management/assets/lessons-not-list/structure/structure.yaml new file mode 100644 index 000000000..d3f207497 --- /dev/null +++ b/csunplugged/tests/at_a_distance/management/assets/lessons-not-list/structure/structure.yaml @@ -0,0 +1,4 @@ +lessons: + lesson-1: + lesson-2: + lesson-3: diff --git a/csunplugged/tests/at_a_distance/management/assets/lessons-valid/structure/structure.yaml b/csunplugged/tests/at_a_distance/management/assets/lessons-valid/structure/structure.yaml new file mode 100644 index 000000000..85bb037e7 --- /dev/null +++ b/csunplugged/tests/at_a_distance/management/assets/lessons-valid/structure/structure.yaml @@ -0,0 +1,4 @@ +lessons: + - lesson-1 + - lesson-2 + - lesson-3 diff --git a/csunplugged/tests/at_a_distance/management/test_load_at_a_distance_data_command.py b/csunplugged/tests/at_a_distance/management/test_load_at_a_distance_data_command.py new file mode 100644 index 000000000..3a5bf315e --- /dev/null +++ b/csunplugged/tests/at_a_distance/management/test_load_at_a_distance_data_command.py @@ -0,0 +1,73 @@ +"""Module for the testing custom Django load_at_a_distance_data command.""" + +import os.path +from unittest import mock +from tests.BaseTestWithDB import BaseTestWithDB +from django.core import management +from django.test import tag, override_settings +from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError +from utils.errors.InvalidYAMLValueError import InvalidYAMLValueError +from utils.errors.EmptyYAMLFileError import EmptyYAMLFileError + +TEST_BASE_PATH = "tests/at_a_distance/management/assets/" + + +@tag("management") +class LoadAtADistanceDataCommandTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.language = "en" + + @mock.patch( + "at_a_distance.management.commands._LessonLoader.AtADistanceLessonLoader.load", + return_value=True + ) + @override_settings( + AT_A_DISTANCE_CONTENT_BASE_PATH=os.path.join(TEST_BASE_PATH, "lessons-valid") + ) + def test_load_at_a_distance_data_lessons_valid(self, lesson_loader): + management.call_command("load_at_a_distance_data") + self.assertTrue(lesson_loader.called) + + @mock.patch( + "at_a_distance.management.commands._LessonLoader.AtADistanceLessonLoader.load", + return_value=True + ) + @override_settings( + AT_A_DISTANCE_CONTENT_BASE_PATH=os.path.join(TEST_BASE_PATH, "lessons-empty") + ) + def test_load_at_a_distance_data_lessons_empty(self, lesson_loader): + self.assertRaises( + EmptyYAMLFileError, + management.call_command, + "load_at_a_distance_data" + ) + + @mock.patch( + "at_a_distance.management.commands._LessonLoader.AtADistanceLessonLoader.load", + return_value=True + ) + @override_settings( + AT_A_DISTANCE_CONTENT_BASE_PATH=os.path.join(TEST_BASE_PATH, "lessons-missing") + ) + def test_load_at_a_distance_data_lessons_missing(self, lesson_loader): + self.assertRaises( + MissingRequiredFieldError, + management.call_command, + "load_at_a_distance_data" + ) + + @mock.patch( + "at_a_distance.management.commands._LessonLoader.AtADistanceLessonLoader.load", + return_value=True + ) + @override_settings( + AT_A_DISTANCE_CONTENT_BASE_PATH=os.path.join(TEST_BASE_PATH, "lessons-not-list") + ) + def test_load_at_a_distance_data_lessons_not_list(self, lesson_loader): + self.assertRaises( + InvalidYAMLValueError, + management.call_command, + "load_at_a_distance_data" + ) diff --git a/csunplugged/tests/at_a_distance/models/__init__.py b/csunplugged/tests/at_a_distance/models/__init__.py new file mode 100644 index 000000000..409681f2d --- /dev/null +++ b/csunplugged/tests/at_a_distance/models/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the models in the at a distance application.""" diff --git a/csunplugged/tests/at_a_distance/models/test_lesson.py b/csunplugged/tests/at_a_distance/models/test_lesson.py new file mode 100644 index 000000000..ecd4ba462 --- /dev/null +++ b/csunplugged/tests/at_a_distance/models/test_lesson.py @@ -0,0 +1,23 @@ +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator + + +class AtADistanceLessonModelTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.test_data = AtADistanceTestDataGenerator() + + def test_at_a_distance_lesson_model_get_absolute_url(self): + lesson = self.test_data.create_lesson(1) + self.assertEqual( + lesson.get_absolute_url(), + "/en/at-a-distance/lesson-1/" + ) + + def test_at_a_distance_lesson_model_get_slides_path(self): + lesson = self.test_data.create_lesson(1) + self.assertEqual( + lesson.get_slides_path(), + "at_a_distance/lesson-slides/lesson-1.html" + ) diff --git a/csunplugged/tests/at_a_distance/utils/__init__.py b/csunplugged/tests/at_a_distance/utils/__init__.py new file mode 100644 index 000000000..23c28481d --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the utils in the at a distance application.""" diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/all-missing-speaker-notes.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/all-missing-speaker-notes.html new file mode 100644 index 000000000..4255dd75b --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/all-missing-speaker-notes.html @@ -0,0 +1,27 @@ +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-1.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-1.html new file mode 100644 index 000000000..a5b82120c --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-1.html @@ -0,0 +1,3 @@ +<section> + <h1>Slide</h1> +</section> diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-2.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-2.html new file mode 100644 index 000000000..2ca8e1093 --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-2.html @@ -0,0 +1,12 @@ +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-3.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/lengths-lesson-3.html new file mode 100644 index 000000000..e69de29bb diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/multiple-speaker-notes.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/multiple-speaker-notes.html new file mode 100644 index 000000000..82a7c1e04 --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/multiple-speaker-notes.html @@ -0,0 +1,27 @@ +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Speaker notes. + </p> + </aside> +</section> +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Some more speaker notes. + </p> + </aside> +</section> +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Final speaker notes. + </p> + </aside> +</section> diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/single-speaker-notes.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/single-speaker-notes.html new file mode 100644 index 000000000..bbc65756e --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/single-speaker-notes.html @@ -0,0 +1,9 @@ +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Speaker notes. + </p> + </aside> +</section> diff --git a/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/some-missing-speaker-notes.html b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/some-missing-speaker-notes.html new file mode 100644 index 000000000..8eb86a524 --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/assets/templates/at_a_distance/lesson-slides/some-missing-speaker-notes.html @@ -0,0 +1,33 @@ +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Speaker notes. + </p> + </aside> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Some more speaker notes. + </p> + </aside> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> + + <aside class="notes"> + <p> + Final speaker notes. + </p> + </aside> +</section> diff --git a/csunplugged/tests/at_a_distance/utils/test_get_lesson_speaker_notes.py b/csunplugged/tests/at_a_distance/utils/test_get_lesson_speaker_notes.py new file mode 100644 index 000000000..26c37cfb8 --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/test_get_lesson_speaker_notes.py @@ -0,0 +1,90 @@ +"""Test class for get_lesson_speaker_notes module.""" + +from django.conf import settings +from django.test import override_settings +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator +from at_a_distance.utils import get_lesson_speaker_notes + +TEST_TEMPLATES = settings.TEMPLATES +TEST_TEMPLATES[0]["DIRS"].append("tests/at_a_distance/utils/assets/templates") + + +@override_settings(TEMPLATES=TEST_TEMPLATES) +class GetLessonSpeakerNotesTest(BaseTestWithDB): + """Test class for get_lesson_speaker_notes module.""" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.language = "en" + self.test_data = AtADistanceTestDataGenerator() + + def test_single_slide_speaker_notes(self): + test_name = "single-speaker-notes" + lesson = self.test_data.create_lesson(1) + lesson.slug = test_name + lesson.save() + speaker_notes = get_lesson_speaker_notes(lesson) + self.assertEqual(len(speaker_notes), 2) + self.assertFalse(speaker_notes[0]) + self.assertHTMLEqual( + speaker_notes[1], + '<aside class="notes"><p>Speaker notes.</p></aside>', + ) + + def test_multiple_slide_speaker_notes(self): + test_name = "multiple-speaker-notes" + lesson = self.test_data.create_lesson(1) + lesson.slug = test_name + lesson.save() + speaker_notes = get_lesson_speaker_notes(lesson) + self.assertEqual(len(speaker_notes), 4) + self.assertFalse(speaker_notes[0]) + self.assertHTMLEqual( + speaker_notes[1], + '<aside class="notes"><p>Speaker notes.</p></aside>', + ) + self.assertHTMLEqual( + speaker_notes[2], + '<aside class="notes"><p>Some more speaker notes.</p></aside>', + ) + self.assertHTMLEqual( + speaker_notes[3], + '<aside class="notes"><p>Final speaker notes.</p></aside>', + ) + + def test_all_missing_slide_speaker_notes(self): + test_name = "all-missing-speaker-notes" + lesson = self.test_data.create_lesson(1) + lesson.slug = test_name + lesson.save() + speaker_notes = get_lesson_speaker_notes(lesson) + expected_length = 10 + self.assertEqual(len(speaker_notes), expected_length) + self.assertListEqual( + speaker_notes, + [False] * expected_length, + ) + + def test_some_missing_slide_speaker_notes(self): + test_name = "some-missing-speaker-notes" + lesson = self.test_data.create_lesson(1) + lesson.slug = test_name + lesson.save() + speaker_notes = get_lesson_speaker_notes(lesson) + self.assertEqual(len(speaker_notes), 6) + self.assertFalse(speaker_notes[0]) + self.assertHTMLEqual( + speaker_notes[1], + '<aside class="notes"><p>Speaker notes.</p></aside>', + ) + self.assertFalse(speaker_notes[2]) + self.assertHTMLEqual( + speaker_notes[3], + '<aside class="notes"><p>Some more speaker notes.</p></aside>', + ) + self.assertFalse(speaker_notes[4]) + self.assertHTMLEqual( + speaker_notes[5], + '<aside class="notes"><p>Final speaker notes.</p></aside>', + ) diff --git a/csunplugged/tests/at_a_distance/utils/test_get_slide_lengths.py b/csunplugged/tests/at_a_distance/utils/test_get_slide_lengths.py new file mode 100644 index 000000000..ba5fc0aa1 --- /dev/null +++ b/csunplugged/tests/at_a_distance/utils/test_get_slide_lengths.py @@ -0,0 +1,52 @@ +"""Test class for get_slide_lengths module.""" + +from django.conf import settings +from django.test import override_settings +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator +from at_a_distance.utils import get_slide_lengths + +TEST_TEMPLATES = settings.TEMPLATES +TEST_TEMPLATES[0]["DIRS"].append("tests/at_a_distance/utils/assets/templates") + + +@override_settings(TEMPLATES=TEST_TEMPLATES) +class GetSlideLengthsTest(BaseTestWithDB): + """Test class for get_slide_lengths module.""" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.language = "en" + self.test_data = AtADistanceTestDataGenerator() + + def test_single_lesson(self): + lesson1 = self.test_data.create_lesson(1) + lesson1.slug = "lengths-lesson-1" + lesson1.save() + result = get_slide_lengths() + self.assertDictEqual( + result, + { + "lengths-lesson-1": 2, + } + ) + + def test_multiple_lessons(self): + lesson1 = self.test_data.create_lesson(1) + lesson1.slug = "lengths-lesson-1" + lesson1.save() + lesson2 = self.test_data.create_lesson(2) + lesson2.slug = "lengths-lesson-2" + lesson2.save() + lesson3 = self.test_data.create_lesson(3) + lesson3.slug = "lengths-lesson-3" + lesson3.save() + result = get_slide_lengths() + self.assertDictEqual( + result, + { + "lengths-lesson-1": 2, + "lengths-lesson-2": 5, + "lengths-lesson-3": 1, + } + ) diff --git a/csunplugged/tests/at_a_distance/views/__init__.py b/csunplugged/tests/at_a_distance/views/__init__.py new file mode 100644 index 000000000..1d51b1d69 --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the views in the at a distance application.""" diff --git a/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-1.html b/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-1.html new file mode 100644 index 000000000..a5b82120c --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-1.html @@ -0,0 +1,3 @@ +<section> + <h1>Slide</h1> +</section> diff --git a/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-2.html b/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-2.html new file mode 100644 index 000000000..ee519411b --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-2.html @@ -0,0 +1,9 @@ +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> diff --git a/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-3.html b/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-3.html new file mode 100644 index 000000000..920a1b2c4 --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/assets/templates/at_a_distance/lesson-slides/lesson-3.html @@ -0,0 +1,18 @@ +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> +<section> + <h1>Slide</h1> +</section> diff --git a/csunplugged/tests/at_a_distance/views/test_lesson_file_generation_view.py b/csunplugged/tests/at_a_distance/views/test_lesson_file_generation_view.py new file mode 100644 index 000000000..24f0d5c8f --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/test_lesson_file_generation_view.py @@ -0,0 +1,31 @@ +from django.conf import settings +from django.test import override_settings +from django.urls import reverse +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator + +TEST_TEMPLATES = settings.TEMPLATES +TEST_TEMPLATES[0]["DIRS"].append("tests/at_a_distance/views/assets/templates") + + +@override_settings(TEMPLATES=TEST_TEMPLATES) +class LessonFileGenerationViewTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.test_data = AtADistanceTestDataGenerator() + self.language = "en" + + def test_lesson_file_generation_view_context(self): + lesson = self.test_data.create_lesson(1) + kwargs = { + "lesson_slug": lesson.slug, + } + url = reverse("at_a_distance:lesson_file_generation", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual( + response.context["lesson"], + lesson + ) + self.assertEqual(response.context["fragments"], "false") + self.assertEqual(response.context["slide_number"], "false") diff --git a/csunplugged/tests/at_a_distance/views/test_lesson_view.py b/csunplugged/tests/at_a_distance/views/test_lesson_view.py new file mode 100644 index 000000000..2b4b77f02 --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/test_lesson_view.py @@ -0,0 +1,56 @@ +from http import HTTPStatus +from django.conf import settings +from django.test import override_settings +from django.urls import reverse +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator + +TEST_TEMPLATES = settings.TEMPLATES +TEST_TEMPLATES[0]["DIRS"].append("tests/at_a_distance/views/assets/templates") + + +@override_settings(TEMPLATES=TEST_TEMPLATES) +class LessonViewTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.test_data = AtADistanceTestDataGenerator() + self.language = "en" + + def test_lesson_view_with_valid_slug(self): + lesson = self.test_data.create_lesson(1) + kwargs = { + "lesson_slug": lesson.slug + } + url = reverse("at_a_distance:lesson", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual(HTTPStatus.OK, response.status_code) + + def test_lesson_view_with_invalid_slug(self): + self.test_data.create_lesson(1) + kwargs = { + "lesson_slug": "wrong_slug", + } + url = reverse("at_a_distance:lesson", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual(404, response.status_code) + + def test_lesson_view_context(self): + lesson = self.test_data.create_lesson(1) + kwargs = { + "lesson_slug": lesson.slug, + } + url = reverse("at_a_distance:lesson", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual( + response.context["lesson"], + lesson + ) + self.assertEqual( + response.context["slides_pdf"], + "slides/en/lesson-1/lesson-1-slides.pdf" + ) + self.assertEqual( + response.context["notes_pdf"], + "slides/en/lesson-1/lesson-1-speaker-notes.pdf" + ) diff --git a/csunplugged/tests/at_a_distance/views/test_slides_file_generation_view.py b/csunplugged/tests/at_a_distance/views/test_slides_file_generation_view.py new file mode 100644 index 000000000..e4f1a860a --- /dev/null +++ b/csunplugged/tests/at_a_distance/views/test_slides_file_generation_view.py @@ -0,0 +1,155 @@ +from django.conf import settings +from django.test import override_settings +from django.urls import reverse +from tests.BaseTestWithDB import BaseTestWithDB +from tests.at_a_distance.AtADistanceTestDataGenerator import AtADistanceTestDataGenerator + +TEST_TEMPLATES = settings.TEMPLATES +TEST_TEMPLATES[0]["DIRS"].append("tests/at_a_distance/views/assets/templates") +LANGUAGE1 = "lang1" +LANGUAGE2 = "lang2" +MULTIPLE_LANGUAGES = ((LANGUAGE1, LANGUAGE1), (LANGUAGE2, LANGUAGE2)) + + +@override_settings(TEMPLATES=TEST_TEMPLATES) +class LessonFileGenerationViewTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.test_data = AtADistanceTestDataGenerator() + self.language = "en" + + def test_slides_file_generation_view_single_lesson(self): + self.test_data.create_lesson(1) + url = reverse("at_a_distance:slides_file_generation_json") + response = self.client.get(url) + self.assertJSONEqual( + response.content.decode(), + { + "resolution": "1920x1080", + "slide_counts": { + "lesson-1": 2, + }, + "languages": { + "en": [ + "lesson-1", + ] + }, + } + ) + + def test_slides_file_generation_view_multiple_lessons(self): + self.test_data.create_lesson(1) + self.test_data.create_lesson(2) + self.test_data.create_lesson(3) + url = reverse("at_a_distance:slides_file_generation_json") + response = self.client.get(url) + self.assertJSONEqual( + response.content.decode(), + { + "resolution": "1920x1080", + "slide_counts": { + "lesson-1": 2, + "lesson-2": 4, + "lesson-3": 7, + }, + "languages": { + "en": [ + "lesson-1", + "lesson-2", + "lesson-3", + ] + }, + } + ) + + @override_settings(DEFAULT_LANGUAGES=MULTIPLE_LANGUAGES) + def test_slides_file_generation_view_single_lesson_multiple_languages(self): + lesson = self.test_data.create_lesson(1) + lesson.languages = [LANGUAGE1, LANGUAGE2] + lesson.save() + url = reverse("at_a_distance:slides_file_generation_json") + "?language=all" + response = self.client.get(url) + self.assertJSONEqual( + response.content.decode(), + { + "resolution": "1920x1080", + "slide_counts": { + "lesson-1": 2, + }, + "languages": { + LANGUAGE1: [ + "lesson-1", + ], + LANGUAGE2: [ + "lesson-1", + ] + }, + } + ) + + @override_settings(DEFAULT_LANGUAGES=MULTIPLE_LANGUAGES) + def test_slides_file_generation_view_multiple_lessons_multiple_languages(self): + lesson1 = self.test_data.create_lesson(1) + lesson1.languages = [LANGUAGE1, LANGUAGE2] + lesson1.save() + lesson2 = self.test_data.create_lesson(2) + lesson2.languages = [LANGUAGE1] + lesson2.save() + lesson3 = self.test_data.create_lesson(3) + lesson3.languages = [LANGUAGE2] + lesson3.save() + url = reverse("at_a_distance:slides_file_generation_json") + "?language=all" + response = self.client.get(url) + self.assertJSONEqual( + response.content.decode(), + { + "resolution": "1920x1080", + "slide_counts": { + "lesson-1": 2, + "lesson-2": 4, + "lesson-3": 7, + }, + "languages": { + LANGUAGE1: [ + "lesson-1", + "lesson-2", + ], + LANGUAGE2: [ + "lesson-1", + "lesson-3", + ] + }, + } + ) + + @override_settings(DEFAULT_LANGUAGES=MULTIPLE_LANGUAGES) + def test_slides_file_generation_view_multiple_lessons_multiple_languages_one_requested(self): + lesson1 = self.test_data.create_lesson(1) + lesson1.languages = [LANGUAGE1, LANGUAGE2] + lesson1.save() + lesson2 = self.test_data.create_lesson(2) + lesson2.languages = [LANGUAGE1] + lesson2.save() + lesson3 = self.test_data.create_lesson(3) + lesson3.languages = [LANGUAGE2] + lesson3.save() + url = reverse("at_a_distance:slides_file_generation_json") + "?language=lang2" + response = self.client.get(url) + self.assertJSONEqual( + response.content.decode(), + { + "resolution": "1920x1080", + "slide_counts": { + "lesson-1": 2, + "lesson-2": 4, + "lesson-3": 7, + }, + "languages": { + LANGUAGE2: [ + "lesson-1", + "lesson-3", + ] + }, + } + ) diff --git a/csunplugged/tests/classic/models/test_classic_page.py b/csunplugged/tests/classic/models/test_classic_page.py index 3e73bff21..425c676c2 100644 --- a/csunplugged/tests/classic/models/test_classic_page.py +++ b/csunplugged/tests/classic/models/test_classic_page.py @@ -21,7 +21,7 @@ def test_classic_page_model_name(self): name="Page", redirect="http://www.example.com", ) - self.assertEqual(page.MODEL_NAME, "Classic CS Unplugged page") + self.assertEqual(page.MODEL_NAME, "Classic CS Unplugged Page") def test_classic_page_model_get_absolute_url(self): page = ClassicPage( diff --git a/csunplugged/tests/config/__init__.py b/csunplugged/tests/config/__init__.py new file mode 100644 index 000000000..23db16f28 --- /dev/null +++ b/csunplugged/tests/config/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the config module.""" diff --git a/csunplugged/tests/config/templatetags/__init__.py b/csunplugged/tests/config/templatetags/__init__.py new file mode 100644 index 000000000..b8bdc1eb8 --- /dev/null +++ b/csunplugged/tests/config/templatetags/__init__.py @@ -0,0 +1 @@ +"""Module for tests of the templatetags module.""" diff --git a/csunplugged/tests/config/templatetags/assets/static/square.svg b/csunplugged/tests/config/templatetags/assets/static/square.svg new file mode 100644 index 000000000..66c3619b0 --- /dev/null +++ b/csunplugged/tests/config/templatetags/assets/static/square.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" standalone="no"?> +<svg width="50" height="50" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <rect x="10" y="10" width="30" height="30" stroke="black" fill="transparent" stroke-width="10"/> +</svg> diff --git a/csunplugged/tests/config/templatetags/assets/static/text-1.txt b/csunplugged/tests/config/templatetags/assets/static/text-1.txt new file mode 100644 index 000000000..7ea21cb59 --- /dev/null +++ b/csunplugged/tests/config/templatetags/assets/static/text-1.txt @@ -0,0 +1 @@ +Text file 1 diff --git a/csunplugged/tests/config/templatetags/assets/static/text-2.txt b/csunplugged/tests/config/templatetags/assets/static/text-2.txt new file mode 100644 index 000000000..4703efc4a --- /dev/null +++ b/csunplugged/tests/config/templatetags/assets/static/text-2.txt @@ -0,0 +1 @@ +Text file 2 diff --git a/csunplugged/tests/config/templatetags/assets/templates/read-static-file-missing-file.html b/csunplugged/tests/config/templatetags/assets/templates/read-static-file-missing-file.html new file mode 100644 index 000000000..701b9a529 --- /dev/null +++ b/csunplugged/tests/config/templatetags/assets/templates/read-static-file-missing-file.html @@ -0,0 +1,3 @@ +{% load read_static_file %} + +{% read_static_file 'missing.csv' %} diff --git a/csunplugged/tests/config/templatetags/assets/templates/read-static-file-multiple.html b/csunplugged/tests/config/templatetags/assets/templates/read-static-file-multiple.html new file mode 100644 index 000000000..bb32e795f --- /dev/null +++ b/csunplugged/tests/config/templatetags/assets/templates/read-static-file-multiple.html @@ -0,0 +1,7 @@ +{% load read_static_file %} + +Line 1 +{% read_static_file 'text-1.txt' %} +Line 2 +{% read_static_file 'text-2.txt' %} +Line 3 diff --git a/csunplugged/tests/config/templatetags/assets/templates/read-static-file-single.html b/csunplugged/tests/config/templatetags/assets/templates/read-static-file-single.html new file mode 100644 index 000000000..29695c3cc --- /dev/null +++ b/csunplugged/tests/config/templatetags/assets/templates/read-static-file-single.html @@ -0,0 +1,5 @@ +{% load read_static_file %} + +<div id="svg-wrapper"> + {% read_static_file 'square.svg' %} +</div> diff --git a/csunplugged/tests/general/templatetags/test_custom_tags.py b/csunplugged/tests/config/templatetags/test_custom_tags.py similarity index 100% rename from csunplugged/tests/general/templatetags/test_custom_tags.py rename to csunplugged/tests/config/templatetags/test_custom_tags.py diff --git a/csunplugged/tests/general/templatetags/test_query_replace.py b/csunplugged/tests/config/templatetags/test_query_replace.py similarity index 100% rename from csunplugged/tests/general/templatetags/test_query_replace.py rename to csunplugged/tests/config/templatetags/test_query_replace.py diff --git a/csunplugged/tests/config/templatetags/test_read_static_file.py b/csunplugged/tests/config/templatetags/test_read_static_file.py new file mode 100644 index 000000000..7946639d0 --- /dev/null +++ b/csunplugged/tests/config/templatetags/test_read_static_file.py @@ -0,0 +1,50 @@ +from django.test import override_settings +from django.template.loader import render_to_string +from tests.BaseTest import BaseTest +from tests.helpers import template_settings_for_test + +templates = template_settings_for_test("tests/config/templatetags/assets/templates/") +static_root = "tests/config/templatetags/assets/static/" + + +@override_settings(TEMPLATES=templates, STATIC_ROOT=static_root) +class ReadStaticFileTest(BaseTest): + + def test_read_static_file_single(self): + html = render_to_string("read-static-file-single.html") + self.assertEqual( + html, + """ + +<div id="svg-wrapper"> + <?xml version="1.0" standalone="no"?> +<svg width="50" height="50" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <rect x="10" y="10" width="30" height="30" stroke="black" fill="transparent" stroke-width="10"/> +</svg> + +</div> +""" + ) + + def test_read_static_file_multiple(self): + html = render_to_string("read-static-file-multiple.html") + self.assertEqual( + html, + """ + +Line 1 +Text file 1 + +Line 2 +Text file 2 + +Line 3 +""" + ) + + def test_read_static_file_no_file(self): + self.assertRaises( + FileNotFoundError, + render_to_string, + "read-static-file-missing-file.html", + ) diff --git a/csunplugged/tests/general/templatetags/test_render_html_field.py b/csunplugged/tests/config/templatetags/test_render_html_field.py similarity index 100% rename from csunplugged/tests/general/templatetags/test_render_html_field.py rename to csunplugged/tests/config/templatetags/test_render_html_field.py diff --git a/csunplugged/tests/general/templatetags/test_translate_url.py b/csunplugged/tests/config/templatetags/test_translate_url.py similarity index 97% rename from csunplugged/tests/general/templatetags/test_translate_url.py rename to csunplugged/tests/config/templatetags/test_translate_url.py index 72cc2b711..cc5b10f96 100644 --- a/csunplugged/tests/general/templatetags/test_translate_url.py +++ b/csunplugged/tests/config/templatetags/test_translate_url.py @@ -15,7 +15,7 @@ ("en", "English"), ) -VALID_PATH = "/topics/topic-name/unit-plan/unit-plan-name/" +VALID_PATH = "/topics/topic-name/" INVALID_PATH = "/this/is/an/invalid/url" diff --git a/csunplugged/tests/create_query_string.py b/csunplugged/tests/create_query_string.py deleted file mode 100644 index a60a25425..000000000 --- a/csunplugged/tests/create_query_string.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Module for creating GET query string from dictionary.""" - -from utils.bool_to_yes_no import bool_to_yes_no - - -def query_string(values): - """Create a GET query to append to a URL from the given values. - - Boolean values are changed to text to mimic forms. - - Args: - values: A dictionary of keys/values of GET parameters. - - Returns: - String of GET query. - """ - string = "?" - for index, (key, value) in enumerate(values): - string += "{key}={value}".format(key=key, value=bool_to_yes_no(value)) - if index < len(values) - 1: - string += "&" - return string diff --git a/csunplugged/tests/general/models/test_general_page.py b/csunplugged/tests/general/models/test_general_page.py index 49213bdd5..d1492708e 100644 --- a/csunplugged/tests/general/models/test_general_page.py +++ b/csunplugged/tests/general/models/test_general_page.py @@ -24,7 +24,7 @@ def test_general_page_model_name(self): template="template.html", url_name="url", ) - self.assertEqual(page.MODEL_NAME, "General page") + self.assertEqual(page.MODEL_NAME, "General Page") @override_settings(ROOT_URLCONF="tests.general.models.assets.urls") def test_general_page_model_get_absolute_url(self): diff --git a/csunplugged/tests/general/templatetags/__init__.py b/csunplugged/tests/general/templatetags/__init__.py deleted file mode 100644 index 635d68b1e..000000000 --- a/csunplugged/tests/general/templatetags/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Module for tests of the template tags in the general application.""" diff --git a/csunplugged/tests/helpers.py b/csunplugged/tests/helpers.py new file mode 100644 index 000000000..f73da42a6 --- /dev/null +++ b/csunplugged/tests/helpers.py @@ -0,0 +1,65 @@ +"""Module for helper functions for test suite.""" + +from os.path import join, dirname +from django.conf import settings + + +def template_settings_for_test(test_folder): + """Return custom settings for templates for test folder. + + Args: + test_folder (str): Path to folder of templates. + Example: "tests/interactives/views/assets/templates/" + + Returns: + Dictionary of custom settings used for overriding tests. + """ + test_template_settings = settings.TEMPLATES + default_path = test_template_settings[0]["DIRS"][0] + new_path = join(dirname(default_path), test_folder) + test_template_settings[0]["DIRS"].append(new_path) + return test_template_settings + + +def bool_to_yes_no(value, error_on_invalid=False): + """Convert value if boolean to yes or no. + + Args: + boolean: Value to check. + error_on_invalid: Boolean to state if an exception should be raised + if the value isn't valid. + + Returns: + "yes" if boolean is True, "no" if False, + otherwise the value is returned. + + Raises: + ValueError if value isn't "yes" or "no". + """ + if type(value) == bool and value: + return "yes" + elif type(value) == bool: + return "no" + elif error_on_invalid: + raise ValueError("Expected True or False.") + else: + return value + + +def query_string(values): + """Create a GET query to append to a URL from the given values. + + Boolean values are changed to text to mimic forms. + + Args: + values: A dictionary of keys/values of GET parameters. + + Returns: + String of GET query. + """ + string = "?" + for index, (key, value) in enumerate(values): + string += "{key}={value}".format(key=key, value=bool_to_yes_no(value)) + if index < len(values) - 1: + string += "&" + return string diff --git a/csunplugged/tests/plugging_it_in/views/test_index_view.py b/csunplugged/tests/plugging_it_in/views/test_index_view.py index c93537f90..7ec5b5bf9 100644 --- a/csunplugged/tests/plugging_it_in/views/test_index_view.py +++ b/csunplugged/tests/plugging_it_in/views/test_index_view.py @@ -12,15 +12,13 @@ def __init__(self, *args, **kwargs): self.test_data = TopicsTestDataGenerator() def test_pii_index_view_with_valid_slug(self): - topic = self.test_data.create_topic(1) - self.test_data.create_unit_plan(topic, 1) + self.test_data.create_topic(1) url = reverse("plugging_it_in:index") response = self.client.get(url) self.assertEqual(HTTPStatus.OK, response.status_code) def test_pii_index_view_topics_context_without_programming_challenge(self): - topic = self.test_data.create_topic(1) - self.test_data.create_unit_plan(topic, 1) + self.test_data.create_topic(1) url = reverse("plugging_it_in:index") response = self.client.get(url) self.assertEqual( @@ -30,11 +28,9 @@ def test_pii_index_view_topics_context_without_programming_challenge(self): def test_pii_index_view_topics_context_with_programming_challenge(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -56,11 +52,9 @@ def test_pii_index_view_topics_context_with_programming_challenge(self): def test_pii_index_view_grouped_lessons_context_with_programming_challenges(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -90,18 +84,15 @@ def test_pii_index_view_grouped_lessons_context_with_programming_challenges(self def test_pii_index_view_grouped_lessons_context_with_lesson_without_programming_challenges(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) lesson_with_programming_exercise = self.test_data.create_lesson( topic, - unit_plan, 2, age_group_1 ) @@ -133,9 +124,7 @@ def test_pii_index_view_grouped_lessons_context_with_lesson_without_programming_ ) def test_pii_index_view_templates(self): - topic = self.test_data.create_topic(1) - self.test_data.create_unit_plan(topic, 1) - + self.test_data.create_topic(1) url = reverse("plugging_it_in:index") response = self.client.get(url) template_found = False diff --git a/csunplugged/tests/plugging_it_in/views/test_programming_challenge_list_view.py b/csunplugged/tests/plugging_it_in/views/test_programming_challenge_list_view.py index 9b529fcc3..2edfc27e9 100644 --- a/csunplugged/tests/plugging_it_in/views/test_programming_challenge_list_view.py +++ b/csunplugged/tests/plugging_it_in/views/test_programming_challenge_list_view.py @@ -13,11 +13,9 @@ def __init__(self, *args, **kwargs): def test_programming_challenge_list_with_valid_slugs(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -46,11 +44,9 @@ def test_programming_challenge_list_with_valid_slugs(self): def test_programming_challenge_list_with_invalid_topic_slug(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -79,11 +75,9 @@ def test_programming_challenge_list_with_invalid_topic_slug(self): def test_programming_challenge_list_with_invalid_lesson_slug(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -112,11 +106,9 @@ def test_programming_challenge_list_with_invalid_lesson_slug(self): def test_programming_challenge_list_topic_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -148,11 +140,9 @@ def test_programming_challenge_list_topic_context(self): def test_programming_challenge_list_lesson_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -184,11 +174,9 @@ def test_programming_challenge_list_lesson_context(self): def test_programming_challenge_list_challenges_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) diff --git a/csunplugged/tests/plugging_it_in/views/test_programming_challenge_view.py b/csunplugged/tests/plugging_it_in/views/test_programming_challenge_view.py index 1c91f3535..5f76b6271 100644 --- a/csunplugged/tests/plugging_it_in/views/test_programming_challenge_view.py +++ b/csunplugged/tests/plugging_it_in/views/test_programming_challenge_view.py @@ -19,11 +19,9 @@ def __init__(self, *args, **kwargs): def create_challenge(self): self.topic = self.test_data.create_topic(1) - self.unit_plan = self.test_data.create_unit_plan(self.topic, 1) self.age_group = self.test_data.create_age_group(5, 7) self.lesson = self.test_data.create_lesson( self.topic, - self.unit_plan, 1, self.age_group ) @@ -115,7 +113,6 @@ def test_programming_challenge_view_lesson_context(self): self.create_challenge() lesson2 = self.test_data.create_lesson( self.topic, - self.unit_plan, 2, self.age_group ) diff --git a/csunplugged/tests/resources/management/test_makeresources_command.py b/csunplugged/tests/resources/management/test_makeresources_command.py index 65a63af73..92a9bf217 100644 --- a/csunplugged/tests/resources/management/test_makeresources_command.py +++ b/csunplugged/tests/resources/management/test_makeresources_command.py @@ -1,7 +1,6 @@ """Module for the testing custom Django resource commands.""" from tests.BaseTestWithDB import BaseTestWithDB -from django.conf import settings from django.core import management from django.test import tag, override_settings from tests.resources.ResourcesTestDataGenerator import ResourcesTestDataGenerator @@ -15,10 +14,6 @@ LANGUAGE2 = "lang2" SINGLE_LANGUAGE = ((LANGUAGE1, LANGUAGE1), ) MULTIPLE_LANGUAGES = ((LANGUAGE1, LANGUAGE1), (LANGUAGE2, LANGUAGE2)) -MULTIPLE_LANGUAGES_WITH_INCONTEXT = ( - (LANGUAGE1, LANGUAGE1), - (settings.INCONTEXT_L10N_PSEUDOLANGUAGE, settings.INCONTEXT_L10N_PSEUDOLANGUAGE) -) @tag("management") @@ -178,19 +173,3 @@ def test_makeresources_command_single_language(self): self.assertFalse(os.path.exists(filepath)) filepath = os.path.join(RESOURCE_PATH, LANGUAGE2, resource.slug, "Resource 1 (letter).pdf") self.assertFalse(os.path.exists(filepath)) - - @override_settings(LANGUAGES=MULTIPLE_LANGUAGES_WITH_INCONTEXT) - def test_makeresources_command_single_language_incontext(self): - invalid_language = settings.INCONTEXT_L10N_PSEUDOLANGUAGE - resource = self.test_data.create_resource( - "resource1", - "Resource 1", - "Description of resource 1", - "BareResourceGenerator", - ) - management.call_command("makeresources") - # Check incontext language does not exist - filepath = os.path.join(RESOURCE_PATH, invalid_language, resource.slug, "Resource 1 (a4).pdf") - self.assertFalse(os.path.exists(filepath)) - filepath = os.path.join(RESOURCE_PATH, invalid_language, resource.slug, "Resource 1 (letter).pdf") - self.assertFalse(os.path.exists(filepath)) diff --git a/csunplugged/tests/resources/management/test_makeresourcethumbnails_command.py b/csunplugged/tests/resources/management/test_makeresourcethumbnails_command.py index e750ab025..7dc0515de 100644 --- a/csunplugged/tests/resources/management/test_makeresourcethumbnails_command.py +++ b/csunplugged/tests/resources/management/test_makeresourcethumbnails_command.py @@ -2,7 +2,6 @@ from tests.BaseTestWithDB import BaseTestWithDB from django.core import management -from django.conf import settings from django.test import tag, override_settings from tests.resources.ResourcesTestDataGenerator import ResourcesTestDataGenerator @@ -58,16 +57,3 @@ def test_makeresourcethumbnails_command_resource_generator_has_non_enum_options( ) with self.assertRaises(TypeError): management.call_command("makeresourcethumbnails") - - def test_makeresourcethumbnails_command_single_resource_multiple_languages(self): - self.test_data.create_resource( - "resource1", - "Resource 1", - "Description of resource 1", - "BareResourceGenerator", - ) - management.call_command("makeresourcethumbnails", "--all-languages") - for language_code, _ in settings.PRODUCTION_LANGUAGES: - if language_code not in settings.INCONTEXT_L10N_PSEUDOLANGUAGES: - open(self.THUMBNAIL_PATH.format("resource1", language_code, "resource1-paper_size-a4.png")) - open(self.THUMBNAIL_PATH.format("resource1", language_code, "resource1-paper_size-letter.png")) diff --git a/csunplugged/tests/resources/utils/test_get_thumbnail.py b/csunplugged/tests/resources/utils/test_get_thumbnail.py index fae000af0..8ea709c96 100644 --- a/csunplugged/tests/resources/utils/test_get_thumbnail.py +++ b/csunplugged/tests/resources/utils/test_get_thumbnail.py @@ -1,4 +1,3 @@ -from django.conf import settings from django.test import tag, override_settings from django.utils import translation from tests.BaseTestWithDB import BaseTestWithDB @@ -9,11 +8,6 @@ ) from tests.resources.ResourcesTestDataGenerator import ResourcesTestDataGenerator -MULTIPLE_LANGUAGES_WITH_INCONTEXT = ( - *settings.LANGUAGES, - (settings.INCONTEXT_L10N_PSEUDOLANGUAGE, settings.INCONTEXT_L10N_PSEUDOLANGUAGE) -) - @tag("resource") class GetThumbnailTest(BaseTestWithDB): @@ -88,16 +82,6 @@ def test_get_thumbnail_base_production_de(self): "https://static.csunplugged.org/img/resources/resource/thumbnails/de/" ) - @override_settings(DEPLOYED=True) - @override_settings(STATIC_URL="https://static.csunplugged.org/") - @override_settings(LANGUAGES=MULTIPLE_LANGUAGES_WITH_INCONTEXT) - def test_get_thumbnail_base_production_in_context(self): - with translation.override(settings.INCONTEXT_L10N_PSEUDOLANGUAGE): - self.assertEqual( - get_thumbnail_base("resource"), - "https://static.csunplugged.org/img/resources/resource/thumbnails/en/" - ) - def test_get_thumbnail_static_path_for_resource_local_development(self): resource = self.test_data.create_resource( "resource", @@ -138,19 +122,3 @@ def test_get_thumbnail_static_path_for_resource_production_de(self): get_thumbnail_static_path_for_resource(resource), "https://static.csunplugged.org/img/resources/resource/thumbnails/de/resource-paper_size-a4.png" ) - - @override_settings(DEPLOYED=True) - @override_settings(STATIC_URL="https://static.csunplugged.org/") - @override_settings(LANGUAGES=MULTIPLE_LANGUAGES_WITH_INCONTEXT) - def test_get_thumbnail_static_path_for_resource_production_in_context(self): - with translation.override(settings.INCONTEXT_L10N_PSEUDOLANGUAGE): - resource = self.test_data.create_resource( - "resource", - "Resource", - "Description of resource", - "GridResourceGenerator", - ) - self.assertEqual( - get_thumbnail_static_path_for_resource(resource), - "https://static.csunplugged.org/img/resources/resource/thumbnails/en/resource-paper_size-a4.png" - ) diff --git a/csunplugged/tests/resources/views/test_generate_resource.py b/csunplugged/tests/resources/views/test_generate_resource.py index 0f1279d54..207e37009 100644 --- a/csunplugged/tests/resources/views/test_generate_resource.py +++ b/csunplugged/tests/resources/views/test_generate_resource.py @@ -2,7 +2,7 @@ from django.urls import reverse from tests.BaseTestWithDB import BaseTestWithDB from tests.resources.ResourcesTestDataGenerator import ResourcesTestDataGenerator -from tests.create_query_string import query_string +from tests.helpers import query_string from http import HTTPStatus diff --git a/csunplugged/tests/resources/views/test_resource_view.py b/csunplugged/tests/resources/views/test_resource_view.py index a24056460..7281e01ef 100644 --- a/csunplugged/tests/resources/views/test_resource_view.py +++ b/csunplugged/tests/resources/views/test_resource_view.py @@ -1,5 +1,4 @@ from http import HTTPStatus -from django.conf import settings from django.test import tag, override_settings from django.urls import reverse from django.utils import translation @@ -9,11 +8,6 @@ from topics.models import ResourceDescription from collections import OrderedDict -MULTIPLE_LANGUAGES_WITH_INCONTEXT = ( - *settings.LANGUAGES, - (settings.INCONTEXT_L10N_PSEUDOLANGUAGE, settings.INCONTEXT_L10N_PSEUDOLANGUAGE) -) - @tag("resource") class ResourceViewTest(BaseTestWithDB): @@ -107,28 +101,6 @@ def test_resource_view_resource_thumbnail_base_context_production_de(self): "/static/img/resources/grid/thumbnails/de/" ) - @override_settings(DEPLOYED=True) - @override_settings(LANGUAGES=MULTIPLE_LANGUAGES_WITH_INCONTEXT) - def test_resource_view_resource_thumbnail_base_context_production_in_context(self): - resource = self.test_data.create_resource( - "grid", - "Grid", - "resources/grid.html", - "GridResourceGenerator", - ) - kwargs = { - "resource_slug": resource.slug, - } - lang = settings.INCONTEXT_L10N_PSEUDOLANGUAGE - with translation.override(lang): - url = reverse("resources:resource", kwargs=kwargs) - response = self.client.get(url) - print(response.context["resource"]) - self.assertEqual( - response.context["resource_thumbnail_base"], - "/static/img/resources/grid/thumbnails/en/" - ) - def test_resource_view_lesson_context(self): resource = self.test_data.create_resource( "grid", @@ -140,24 +112,20 @@ def test_resource_view_lesson_context(self): # Create topic data topic_test_data = TopicsTestDataGenerator() topic = topic_test_data.create_topic(1) - unit_plan = topic_test_data.create_unit_plan(topic, 1) age_group_1 = topic_test_data.create_age_group(5, 7) age_group_2 = topic_test_data.create_age_group(8, 10) lesson1 = topic_test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) lesson2 = topic_test_data.create_lesson( topic, - unit_plan, 2, age_group_1 ) lesson3 = topic_test_data.create_lesson( topic, - unit_plan, 1, age_group_2 ) diff --git a/csunplugged/tests/search/management/test_rebuild_index_command.py b/csunplugged/tests/search/management/test_rebuild_search_indexes_command.py similarity index 63% rename from csunplugged/tests/search/management/test_rebuild_index_command.py rename to csunplugged/tests/search/management/test_rebuild_search_indexes_command.py index b8653b80a..0d2b549d1 100644 --- a/csunplugged/tests/search/management/test_rebuild_index_command.py +++ b/csunplugged/tests/search/management/test_rebuild_search_indexes_command.py @@ -1,4 +1,4 @@ -"""Module for the testing custom Django rebuild_index command.""" +"""Module for the testing custom Django rebuild_search_indexes command.""" from os.path import join, dirname from django.conf import settings @@ -27,36 +27,29 @@ def __init__(self, *args, **kwargs): self.language = "en" self.test_data = TopicsTestDataGenerator() - def test_rebuild_index_command_no_items(self): - management.call_command("rebuild_index", "--noinput") + def test_rebuild_search_indexes_command_no_items(self): + management.call_command("rebuild_search_indexes") - def test_rebuild_index_command_topic_model(self): + def test_rebuild_search_indexes_command_topic_model(self): self.test_data.create_topic(1) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") - def test_rebuild_index_command_unit_plan_model(self): + def test_rebuild_search_indexes_command_lesson_model(self): topic = self.test_data.create_topic(1) - self.test_data.create_unit_plan(topic, 1) - management.call_command("rebuild_index", "--noinput") - - def test_rebuild_index_command_lesson_model(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") - def test_rebuild_index_command_curriculum_integration_model(self): + def test_rebuild_search_indexes_command_curriculum_integration_model(self): topic = self.test_data.create_topic(1) self.test_data.create_integration(topic, 1) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") - def test_rebuild_index_command_programming_challenge_model(self): + def test_rebuild_search_indexes_command_programming_challenge_model(self): topic = self.test_data.create_topic(1) difficulty = self.test_data.create_difficulty_level(1) language = self.test_data.create_programming_language(1) @@ -66,9 +59,9 @@ def test_rebuild_index_command_programming_challenge_model(self): language, challenge, ) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") - def test_rebuild_index_command_resource_model(self): + def test_rebuild_search_indexes_command_resource_model(self): resources_test_data = ResourcesTestDataGenerator() resources_test_data.create_resource( "grid", @@ -76,19 +69,19 @@ def test_rebuild_index_command_resource_model(self): "resources/grid.html", "GridResourceGenerator", ) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") - def test_rebuild_index_command_classic_page_model(self): + def test_rebuild_search_indexes_command_classic_page_model(self): page = ClassicPage( slug="page", name="Page", redirect="http://www.example.com", ) page.save() - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") @override_settings(TEMPLATES=test_template_settings) - def test_rebuild_index_command_general_page_model(self): + def test_rebuild_search_indexes_command_general_page_model(self): page = GeneralPage( slug="page", name="Page", @@ -96,10 +89,10 @@ def test_rebuild_index_command_general_page_model(self): url_name="url", ) page.save() - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") @override_settings(TEMPLATES=test_template_settings) - def test_rebuild_index_command_general_page_with_invalid_template(self): + def test_rebuild_search_indexes_command_general_page_with_invalid_template(self): page = GeneralPage( slug="page", name="Page", @@ -110,18 +103,15 @@ def test_rebuild_index_command_general_page_with_invalid_template(self): self.assertRaises( TemplateSyntaxError, management.call_command, - "rebuild_index", - "--noinput" + "rebuild_search_indexes", ) - def test_rebuild_index_command_multiple_models(self): + def test_rebuild_search_indexes_command_multiple_models(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") diff --git a/csunplugged/tests/search/views/test_index_view.py b/csunplugged/tests/search/views/test_index_view.py index 1dd8660f2..833dd85e8 100644 --- a/csunplugged/tests/search/views/test_index_view.py +++ b/csunplugged/tests/search/views/test_index_view.py @@ -3,7 +3,8 @@ from django.core import management from tests.BaseTestWithDB import BaseTestWithDB from tests.topics.TopicsTestDataGenerator import TopicsTestDataGenerator -from tests.create_query_string import query_string +from tests.helpers import query_string +from topics.models import Topic, Lesson class IndexViewTest(BaseTestWithDB): @@ -19,70 +20,77 @@ def test_search_view_with_no_query_with_index(self): self.test_data.create_topic(1) self.test_data.create_topic(2) self.test_data.create_topic(3) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") url = reverse("search:index") response = self.client.get(url) self.assertEqual(HTTPStatus.OK, response.status_code) - self.assertFalse(response.context["object_list"]) - self.assertEqual(response.context.get("query"), "") + self.assertNotIn("results", response.context) + self.assertNotIn("query", response.context) def test_search_view_with_no_query_with_no_index(self): url = reverse("search:index") response = self.client.get(url) self.assertEqual(HTTPStatus.OK, response.status_code) - self.assertFalse(response.context["object_list"]) - self.assertEqual(response.context.get("query"), "") + self.assertNotIn("results", response.context) + self.assertNotIn("query", response.context) # Context def test_search_view_context_model_data(self): - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") url = reverse("search:index") response = self.client.get(url) self.assertEqual( response.context["models"], [ { - "value": "classic.classicpage", - "name": "Classic CS Unplugged pages" + "value": "topics.topic", + "name": "Topic", + "selected": False, }, { - "value": "topics.curriculumintegration", - "name": "Curriculum integrations" + "value": "topics.lesson", + "name": "Lesson", + "selected": False, }, { - "value": "general.generalpage", - "name": "General pages" + "value": "resources.resource", + "name": "Printable", + "selected": False, }, { - "value": "topics.lesson", - "name": "Lessons" + "value": "general.generalpage", + "name": "General Page", + "selected": False, }, { - "value": "topics.programmingchallenge", - "name": "Programming challenges" + "value": "at_home.activity", + "name": "At Home Activity", + "selected": False, }, { - "value": "resources.resource", - "name": "Resources" + "value": "topics.curriculumintegration", + "name": "Curriculum Integration", + "selected": False, }, { - "value": "topics.topic", - "name": "Topics" + "value": "classic.classicpage", + "name": "Classic CS Unplugged Page", + "selected": False, }, { - "value": "topics.unitplan", - "name": "Unit plans" - } + "value": "topics.programmingchallenge", + "name": "Programming Challenge", + "selected": False, + }, ] ) def test_search_view_context_model_data_with_selected(self): - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") url = reverse("search:index") get_parameters = [ ("models", "topics.topic"), - ("models", "topics.unitplan"), ] url += query_string(get_parameters) response = self.client.get(url) @@ -90,467 +98,451 @@ def test_search_view_context_model_data_with_selected(self): response.context["models"], [ { - "value": "classic.classicpage", - "name": "Classic CS Unplugged pages" - }, - { - "value": "topics.curriculumintegration", - "name": "Curriculum integrations" - }, - { - "value": "general.generalpage", - "name": "General pages" + "value": "topics.topic", + "name": "Topic", + "selected": True, }, { "value": "topics.lesson", - "name": "Lessons" - }, - { - "value": "topics.programmingchallenge", - "name": "Programming challenges" + "name": "Lesson", + "selected": False, }, { "value": "resources.resource", - "name": "Resources" - }, - { - "value": "topics.topic", - "name": "Topics", - "selected": "true", + "name": "Printable", + "selected": False, }, { - "value": "topics.unitplan", - "name": "Unit plans", - "selected": "true", - } - ] - ) - - def test_search_view_context_curriculum_areas_data(self): - area_1 = self.test_data.create_curriculum_area(1) - area_2 = self.test_data.create_curriculum_area(2) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - response = self.client.get(url) - self.assertEqual( - response.context["curriculum_areas"], - [ - { - "pk": area_1.pk, - "name": "Area 1", - "colour": "colour-1", - "parent__pk": None, - "parent__name": None, - "children": [] + "value": "general.generalpage", + "name": "General Page", + "selected": False, }, { - "pk": area_2.pk, - "name": "Area 2", - "colour": "colour-2", - "parent__pk": None, - "parent__name": None, - "children": [] + "value": "at_home.activity", + "name": "At Home Activity", + "selected": False, }, - ] - ) - - def test_search_view_context_curriculum_areas_data_with_selected(self): - area_1 = self.test_data.create_curriculum_area(1) - area_2 = self.test_data.create_curriculum_area(2) - area_3 = self.test_data.create_curriculum_area(3) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - get_parameters = [ - ("curriculum_areas", area_1.pk), - ("curriculum_areas", area_3.pk), - ] - url += query_string(get_parameters) - response = self.client.get(url) - self.assertEqual( - response.context["curriculum_areas"], - [ { - "pk": area_1.pk, - "name": "Area 1", - "colour": "colour-1", - "parent__pk": None, - "parent__name": None, - "children": [], - "selected": "true", + "value": "topics.curriculumintegration", + "name": "Curriculum Integration", + "selected": False, }, { - "pk": area_2.pk, - "name": "Area 2", - "colour": "colour-2", - "parent__pk": None, - "parent__name": None, - "children": [], + "value": "classic.classicpage", + "name": "Classic CS Unplugged Page", + "selected": False, }, { - "pk": area_3.pk, - "name": "Area 3", - "colour": "colour-3", - "parent__pk": None, - "parent__name": None, - "children": [], - "selected": "true", + "value": "topics.programmingchallenge", + "name": "Programming Challenge", + "selected": False, }, ] ) - def test_search_view_context_curriculum_areas_data_with_children(self): - area_1 = self.test_data.create_curriculum_area(1) - area_2 = self.test_data.create_curriculum_area(2) - area_3 = self.test_data.create_curriculum_area(3, parent=area_2) - area_4 = self.test_data.create_curriculum_area(4, parent=area_2) - area_5 = self.test_data.create_curriculum_area(5, parent=area_2) - management.call_command("rebuild_index", "--noinput") + # def test_search_view_context_curriculum_areas_data(self): + # area_1 = self.test_data.create_curriculum_area(1) + # area_2 = self.test_data.create_curriculum_area(2) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # response = self.client.get(url) + # self.assertEqual( + # response.context["curriculum_areas"], + # [ + # { + # "pk": area_1.pk, + # "name": "Area 1", + # "colour": "colour-1", + # "parent__pk": None, + # "parent__name": None, + # "children": [] + # }, + # { + # "pk": area_2.pk, + # "name": "Area 2", + # "colour": "colour-2", + # "parent__pk": None, + # "parent__name": None, + # "children": [] + # }, + # ] + # ) + + # def test_search_view_context_curriculum_areas_data_with_selected(self): + # area_1 = self.test_data.create_curriculum_area(1) + # area_2 = self.test_data.create_curriculum_area(2) + # area_3 = self.test_data.create_curriculum_area(3) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # get_parameters = [ + # ("curriculum_areas", area_1.pk), + # ("curriculum_areas", area_3.pk), + # ] + # url += query_string(get_parameters) + # response = self.client.get(url) + # self.assertEqual( + # response.context["curriculum_areas"], + # [ + # { + # "pk": area_1.pk, + # "name": "Area 1", + # "colour": "colour-1", + # "parent__pk": None, + # "parent__name": None, + # "children": [], + # "selected": "true", + # }, + # { + # "pk": area_2.pk, + # "name": "Area 2", + # "colour": "colour-2", + # "parent__pk": None, + # "parent__name": None, + # "children": [], + # }, + # { + # "pk": area_3.pk, + # "name": "Area 3", + # "colour": "colour-3", + # "parent__pk": None, + # "parent__name": None, + # "children": [], + # "selected": "true", + # }, + # ] + # ) + + # def test_search_view_context_curriculum_areas_data_with_children(self): + # area_1 = self.test_data.create_curriculum_area(1) + # area_2 = self.test_data.create_curriculum_area(2) + # area_3 = self.test_data.create_curriculum_area(3, parent=area_2) + # area_4 = self.test_data.create_curriculum_area(4, parent=area_2) + # area_5 = self.test_data.create_curriculum_area(5, parent=area_2) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # response = self.client.get(url) + # self.assertEqual( + # response.context["curriculum_areas"], + # [ + # { + # "pk": area_1.pk, + # "name": "Area 1", + # "colour": "colour-1", + # "parent__pk": None, + # "parent__name": None, + # "children": [] + # }, + # { + # "pk": area_2.pk, + # "name": "Area 2", + # "colour": "colour-2", + # "parent__pk": None, + # "parent__name": None, + # "children": [ + # { + # "pk": area_3.pk, + # "name": "Area 3", + # "colour": "colour-3", + # "parent__pk": area_2.pk, + # "parent__name": "Area 2", + # }, + # { + # "pk": area_4.pk, + # "name": "Area 4", + # "colour": "colour-4", + # "parent__pk": area_2.pk, + # "parent__name": "Area 2", + # }, + # { + # "pk": area_5.pk, + # "name": "Area 5", + # "colour": "colour-5", + # "parent__pk": area_2.pk, + # "parent__name": "Area 2", + # }, + # ] + # }, + # ] + # ) + + # def test_search_view_context_curriculum_areas_data_with_children_with_selected(self): + # area_1 = self.test_data.create_curriculum_area(1) + # area_2 = self.test_data.create_curriculum_area(2) + # area_3 = self.test_data.create_curriculum_area(3, parent=area_2) + # area_4 = self.test_data.create_curriculum_area(4, parent=area_2) + # area_5 = self.test_data.create_curriculum_area(5, parent=area_2) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # get_parameters = [ + # ("curriculum_areas", area_1.pk), + # ("curriculum_areas", area_2.pk), + # ("curriculum_areas", area_3.pk), + # ("curriculum_areas", area_5.pk), + # ] + # url += query_string(get_parameters) + # response = self.client.get(url) + # self.assertEqual( + # response.context["curriculum_areas"], + # [ + # { + # "pk": area_1.pk, + # "name": "Area 1", + # "colour": "colour-1", + # "parent__pk": None, + # "parent__name": None, + # "children": [], + # "selected": "true", + # }, + # { + # "pk": area_2.pk, + # "name": "Area 2", + # "colour": "colour-2", + # "parent__pk": None, + # "parent__name": None, + # "selected": "true", + # "children": [ + # { + # "pk": area_3.pk, + # "name": "Area 3", + # "colour": "colour-3", + # "parent__pk": area_2.pk, + # "parent__name": "Area 2", + # "selected": "true", + # }, + # { + # "pk": area_4.pk, + # "name": "Area 4", + # "colour": "colour-4", + # "parent__pk": area_2.pk, + # "parent__name": "Area 2", + # }, + # { + # "pk": area_5.pk, + # "name": "Area 5", + # "colour": "colour-5", + # "parent__pk": area_2.pk, + # "parent__name": "Area 2", + # "selected": "true", + # }, + # ] + # }, + # ] + # ) + + # TODO: Test is broken as query text provides zero matches + # def test_search_view_context_lesson_data(self): + # topic = self.test_data.create_topic(1) + # age_group = self.test_data.create_age_group(5, 7) + # lesson = self.test_data.create_lesson( + # topic, + # 1, + # age_group + # ) + # learning_outcome1 = self.test_data.create_learning_outcome(1) + # area_1 = self.test_data.create_curriculum_area(1) + # learning_outcome1.curriculum_areas.add(area_1) + # lesson.learning_outcomes.add(learning_outcome1) + # learning_outcome2 = self.test_data.create_learning_outcome(2) + # area_2 = self.test_data.create_curriculum_area(2) + # learning_outcome2.curriculum_areas.add(area_2) + # area_3 = self.test_data.create_curriculum_area(3) + # learning_outcome2.curriculum_areas.add(area_3) + # lesson.learning_outcomes.add(learning_outcome2) + # self.test_data.create_curriculum_area(4) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # get_parameters = [("q", lesson.name)] + # url += query_string(get_parameters) + # response = self.client.get(url) + # result_lesson = response.context["results"][0] + # self.assertEqual( + # result_lesson.lesson_ages, + # [ + # { + # "lower": 5, + # "upper": 7, + # "number": 1, + # }, + # ] + # ) + # self.assertQuerysetEqual( + # result_lesson.curriculum_areas, + # [ + # "<CurriculumArea: Area 1>", + # "<CurriculumArea: Area 2>", + # "<CurriculumArea: Area 3>", + # ] + # ) + + # With query + + def test_search_view_all_items(self): + topic = self.test_data.create_topic(1) + self.test_data.create_topic(2) + self.test_data.create_topic(3) + age_group = self.test_data.create_age_group(5, 7) + self.test_data.create_lesson( + topic, + 1, + age_group + ) + management.call_command("rebuild_search_indexes") url = reverse("search:index") + get_parameters = [("q", "")] + url += query_string(get_parameters) response = self.client.get(url) - self.assertEqual( - response.context["curriculum_areas"], - [ - { - "pk": area_1.pk, - "name": "Area 1", - "colour": "colour-1", - "parent__pk": None, - "parent__name": None, - "children": [] - }, - { - "pk": area_2.pk, - "name": "Area 2", - "colour": "colour-2", - "parent__pk": None, - "parent__name": None, - "children": [ - { - "pk": area_3.pk, - "name": "Area 3", - "colour": "colour-3", - "parent__pk": area_2.pk, - "parent__name": "Area 2", - }, - { - "pk": area_4.pk, - "name": "Area 4", - "colour": "colour-4", - "parent__pk": area_2.pk, - "parent__name": "Area 2", - }, - { - "pk": area_5.pk, - "name": "Area 5", - "colour": "colour-5", - "parent__pk": area_2.pk, - "parent__name": "Area 2", - }, - ] - }, - ] - ) + self.assertEqual(len(response.context["results"]), 4) - def test_search_view_context_curriculum_areas_data_with_children_with_selected(self): - area_1 = self.test_data.create_curriculum_area(1) - area_2 = self.test_data.create_curriculum_area(2) - area_3 = self.test_data.create_curriculum_area(3, parent=area_2) - area_4 = self.test_data.create_curriculum_area(4, parent=area_2) - area_5 = self.test_data.create_curriculum_area(5, parent=area_2) - management.call_command("rebuild_index", "--noinput") + def test_search_view_assert_order(self): + topic = self.test_data.create_topic(1) + self.test_data.create_topic(2) + age_group = self.test_data.create_age_group(5, 7) + self.test_data.create_lesson( + topic, + 1, + age_group + ) + management.call_command("rebuild_search_indexes") url = reverse("search:index") - get_parameters = [ - ("curriculum_areas", area_1.pk), - ("curriculum_areas", area_2.pk), - ("curriculum_areas", area_3.pk), - ("curriculum_areas", area_5.pk), - ] + get_parameters = [("q", "")] url += query_string(get_parameters) response = self.client.get(url) - self.assertEqual( - response.context["curriculum_areas"], - [ - { - "pk": area_1.pk, - "name": "Area 1", - "colour": "colour-1", - "parent__pk": None, - "parent__name": None, - "children": [], - "selected": "true", - }, - { - "pk": area_2.pk, - "name": "Area 2", - "colour": "colour-2", - "parent__pk": None, - "parent__name": None, - "selected": "true", - "children": [ - { - "pk": area_3.pk, - "name": "Area 3", - "colour": "colour-3", - "parent__pk": area_2.pk, - "parent__name": "Area 2", - "selected": "true", - }, - { - "pk": area_4.pk, - "name": "Area 4", - "colour": "colour-4", - "parent__pk": area_2.pk, - "parent__name": "Area 2", - }, - { - "pk": area_5.pk, - "name": "Area 5", - "colour": "colour-5", - "parent__pk": area_2.pk, - "parent__name": "Area 2", - "selected": "true", - }, - ] - }, - ] - ) + result_objects = response.context["results"] + self.assertIsInstance(result_objects[0], Topic) + self.assertIsInstance(result_objects[1], Topic) + self.assertIsInstance(result_objects[2], Lesson) - def test_search_view_context_lesson_data(self): + def test_search_view_model_filter(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) + self.test_data.create_topic(2) age_group = self.test_data.create_age_group(5, 7) - lesson = self.test_data.create_lesson( + self.test_data.create_lesson( topic, - unit_plan, 1, age_group ) - learning_outcome1 = self.test_data.create_learning_outcome(1) - area_1 = self.test_data.create_curriculum_area(1) - learning_outcome1.curriculum_areas.add(area_1) - lesson.learning_outcomes.add(learning_outcome1) - learning_outcome2 = self.test_data.create_learning_outcome(2) - area_2 = self.test_data.create_curriculum_area(2) - learning_outcome2.curriculum_areas.add(area_2) - area_3 = self.test_data.create_curriculum_area(3) - learning_outcome2.curriculum_areas.add(area_3) - lesson.learning_outcomes.add(learning_outcome2) - self.test_data.create_curriculum_area(4) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") url = reverse("search:index") - get_parameters = [("q", lesson.name)] + get_parameters = [ + ("models", "topics.topic"), + ] url += query_string(get_parameters) response = self.client.get(url) - result_lesson = response.context["object_list"][0] - self.assertEqual( - result_lesson.lesson_ages, - [ - { - "lower": 5, - "upper": 7, - "number": 1, - }, - ] - ) - self.assertQuerysetEqual( - result_lesson.curriculum_areas, - [ - "<CurriculumArea: Area 1>", - "<CurriculumArea: Area 2>", - "<CurriculumArea: Area 3>", - ] - ) - - # With query + result_objects = response.context["results"] + self.assertEqual(len(result_objects), 2) + self.assertIsInstance(result_objects[0], Topic) + self.assertIsInstance(result_objects[1], Topic) - def test_search_view_all_items(self): + def test_search_view_model_filter_multiple(self): topic = self.test_data.create_topic(1) self.test_data.create_topic(2) - self.test_data.create_topic(3) - unit_plan = self.test_data.create_unit_plan(topic, 1) - unit_plan = self.test_data.create_unit_plan(topic, 2) age_group = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group ) - management.call_command("rebuild_index", "--noinput") + management.call_command("rebuild_search_indexes") url = reverse("search:index") - get_parameters = [("q", "")] + get_parameters = [ + ("models", "topics.topic"), + ] url += query_string(get_parameters) response = self.client.get(url) - self.assertEqual(len(response.context["object_list"]), 6) + result_objects = response.context["results"] + self.assertEqual(len(result_objects), 2) + self.assertIsInstance(result_objects[0], Topic) + self.assertIsInstance(result_objects[1], Topic) - # TODO: Test is currently broken, however test is skipped as not required for server migration. - # def test_search_view_assert_order(self): + # TODO: Test is broken as query text provides zero matches + # def test_search_view_model_filter_multiple_with_query(self): # topic = self.test_data.create_topic(1) # self.test_data.create_topic(2) - # unit_plan = self.test_data.create_unit_plan(topic, 1) # age_group = self.test_data.create_age_group(5, 7) # self.test_data.create_lesson( # topic, - # unit_plan, # 1, # age_group # ) - # management.call_command("rebuild_index", "--noinput") + # management.call_command("rebuild_search_indexes") # url = reverse("search:index") - # get_parameters = [("q", "")] + # get_parameters = [ + # ("q", "Unit Plan 1"), + # ("models", "topics.topic"), + # ] # url += query_string(get_parameters) # response = self.client.get(url) - # result_objects = response.context["object_list"] - # self.assertEqual(result_objects[0].model_name, "topic") - # self.assertEqual(result_objects[1].model_name, "topic") - # self.assertEqual(result_objects[2].model_name, "unitplan") - # self.assertEqual(result_objects[3].model_name, "lesson") + # result_objects = response.context["results"] - # TODO: Test is currently broken (all models are returned), - # however test is skipped as not required for server migration. - # def test_search_view_model_filter(self): + # def test_search_view_curriculum_areas_filter_1(self): # topic = self.test_data.create_topic(1) - # self.test_data.create_topic(2) - # unit_plan = self.test_data.create_unit_plan(topic, 1) - # age_group = self.test_data.create_age_group(5, 7) - # self.test_data.create_lesson( - # topic, - # unit_plan, - # 1, - # age_group - # ) - # management.call_command("rebuild_index", "--noinput") + # area_1 = self.test_data.create_curriculum_area(1) + # self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) + # area_2 = self.test_data.create_curriculum_area(2) + # self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) + # self.test_data.create_integration(topic, 3) + # self.test_data.create_integration(topic, 4) + # management.call_command("rebuild_search_indexes") # url = reverse("search:index") # get_parameters = [ - # ("models", "topics.topic"), + # ("curriculum_areas", area_1.pk), # ] # url += query_string(get_parameters) # response = self.client.get(url) - # result_objects = response.context["object_list"] + # result_objects = response.context["results"] # self.assertEqual(len(result_objects), 2) - # self.assertEqual(result_objects[0].model_name, "topic") - # self.assertEqual(result_objects[1].model_name, "topic") - # TODO: Test is currently broken (all models are returned), - # however test is skipped as not required for server migration. - # def test_search_view_model_filter_multiple(self): + # def test_search_view_curriculum_areas_filter_2(self): # topic = self.test_data.create_topic(1) - # self.test_data.create_topic(2) - # unit_plan = self.test_data.create_unit_plan(topic, 1) - # age_group = self.test_data.create_age_group(5, 7) - # self.test_data.create_lesson( - # topic, - # unit_plan, - # 1, - # age_group - # ) - # management.call_command("rebuild_index", "--noinput") + # area_1 = self.test_data.create_curriculum_area(1) + # self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) + # area_2 = self.test_data.create_curriculum_area(2) + # self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) + # self.test_data.create_integration(topic, 3) + # self.test_data.create_integration(topic, 4) + # management.call_command("rebuild_search_indexes") # url = reverse("search:index") # get_parameters = [ - # ("models", "topics.topic"), - # ("models", "topics.unitplan"), + # ("curriculum_areas", area_2.pk), # ] # url += query_string(get_parameters) # response = self.client.get(url) - # result_objects = response.context["object_list"] - # self.assertEqual(len(result_objects), 3) - # self.assertEqual(result_objects[0].model_name, "topic") - # self.assertEqual(result_objects[1].model_name, "topic") - # self.assertEqual(result_objects[2].model_name, "unitplan") - - def test_search_view_model_filter_multiple_with_query(self): - topic = self.test_data.create_topic(1) - self.test_data.create_topic(2) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group = self.test_data.create_age_group(5, 7) - self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group - ) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - get_parameters = [ - ("q", "Unit Plan 1"), - ("models", "topics.topic"), - ("models", "topics.unitplan"), - ] - url += query_string(get_parameters) - response = self.client.get(url) - result_objects = response.context["object_list"] - self.assertEqual(len(result_objects), 1) - self.assertEqual(result_objects[0].model_name, "unitplan") - - def test_search_view_curriculum_areas_filter_1(self): - topic = self.test_data.create_topic(1) - area_1 = self.test_data.create_curriculum_area(1) - self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) - area_2 = self.test_data.create_curriculum_area(2) - self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) - self.test_data.create_integration(topic, 3) - self.test_data.create_integration(topic, 4) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - get_parameters = [ - ("curriculum_areas", area_1.pk), - ] - url += query_string(get_parameters) - response = self.client.get(url) - result_objects = response.context["object_list"] - self.assertEqual(len(result_objects), 2) + # result_objects = response.context["results"] + # self.assertEqual(len(result_objects), 1) - def test_search_view_curriculum_areas_filter_2(self): - topic = self.test_data.create_topic(1) - area_1 = self.test_data.create_curriculum_area(1) - self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) - area_2 = self.test_data.create_curriculum_area(2) - self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) - self.test_data.create_integration(topic, 3) - self.test_data.create_integration(topic, 4) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - get_parameters = [ - ("curriculum_areas", area_2.pk), - ] - url += query_string(get_parameters) - response = self.client.get(url) - result_objects = response.context["object_list"] - self.assertEqual(len(result_objects), 1) - - def test_search_view_curriculum_areas_filter_parent_no_results(self): - # This search is not accessible to user, but - # checks indexes are created without including parent. - topic = self.test_data.create_topic(1) - area_1 = self.test_data.create_curriculum_area(1) - area_2 = self.test_data.create_curriculum_area(2, parent=area_1) - self.test_data.create_integration(topic, 1, curriculum_areas=[area_2]) + # def test_search_view_curriculum_areas_filter_parent_no_results(self): + # # This search is not accessible to user, but + # # checks indexes are created without including parent. + # topic = self.test_data.create_topic(1) + # area_1 = self.test_data.create_curriculum_area(1) + # area_2 = self.test_data.create_curriculum_area(2, parent=area_1) + # self.test_data.create_integration(topic, 1, curriculum_areas=[area_2]) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - get_parameters = [ - ("curriculum_areas", area_1.pk), - ] - url += query_string(get_parameters) - response = self.client.get(url) - self.assertFalse(response.context["object_list"]) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # get_parameters = [ + # ("curriculum_areas", area_1.pk), + # ] + # url += query_string(get_parameters) + # response = self.client.get(url) + # self.assertFalse(response.context["results"]) - def test_search_view_curriculum_areas_filter_with_query(self): - topic = self.test_data.create_topic(1) - area_1 = self.test_data.create_curriculum_area(1) - self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) - area_2 = self.test_data.create_curriculum_area(2) - self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) - self.test_data.create_integration(topic, 3) - self.test_data.create_integration(topic, 4) - management.call_command("rebuild_index", "--noinput") - url = reverse("search:index") - get_parameters = [ - ("q", "Integration"), - ("curriculum_areas", area_2.pk), - ] - url += query_string(get_parameters) - response = self.client.get(url) - result_objects = response.context["object_list"] - self.assertEqual(len(result_objects), 1) - self.assertEqual(result_objects[0].object.name, "Integration 2") + # def test_search_view_curriculum_areas_filter_with_query(self): + # topic = self.test_data.create_topic(1) + # area_1 = self.test_data.create_curriculum_area(1) + # self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) + # area_2 = self.test_data.create_curriculum_area(2) + # self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) + # self.test_data.create_integration(topic, 3) + # self.test_data.create_integration(topic, 4) + # management.call_command("rebuild_search_indexes") + # url = reverse("search:index") + # get_parameters = [ + # ("q", "Integration"), + # ("curriculum_areas", area_2.pk), + # ] + # url += query_string(get_parameters) + # response = self.client.get(url) + # result_objects = response.context["results"] + # self.assertEqual(len(result_objects), 1) + # self.assertEqual(result_objects[0].object.name, "Integration 2") diff --git a/csunplugged/tests/topics/TopicsTestDataGenerator.py b/csunplugged/tests/topics/TopicsTestDataGenerator.py index 3cf1a4cad..68888a5e5 100644 --- a/csunplugged/tests/topics/TopicsTestDataGenerator.py +++ b/csunplugged/tests/topics/TopicsTestDataGenerator.py @@ -5,7 +5,6 @@ from topics.models import ( Topic, - UnitPlan, Lesson, LessonNumber, AgeGroup, @@ -111,32 +110,11 @@ def create_topic(self, number): topic.save() return topic - def create_unit_plan(self, topic, number): - """Create unit plan object. - - Args: - topic: The related Topic object (Topic). - number: Identifier of the unit plan (int). - - Returns: - UnitPlan object. - """ - unit_plan = UnitPlan( - topic=topic, - slug="unit-plan-{}".format(number), - name="Unit Plan {}".format(number), - content="<p>Content for unit plan {}.</p>".format(number), - languages=["en"], - ) - unit_plan.save() - return unit_plan - - def create_lesson(self, topic, unit_plan, number, age_groups=None): + def create_lesson(self, topic, number, age_groups=None): """Create lesson object. Args: topic: The related Topic object (Topic). - unit_plan: The related UnitPlan object (UnitPlan). number: Identifier of the topic (int). Returns: @@ -146,7 +124,6 @@ def create_lesson(self, topic, unit_plan, number, age_groups=None): age_groups = [age_groups] lesson = Lesson( topic=topic, - unit_plan=unit_plan, slug="lesson-{}".format(number), name="Lesson {} ({} to {})".format( number, diff --git a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-blank-lessons.yaml b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-blank-lessons.yaml deleted file mode 100644 index 589fbbcfb..000000000 --- a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-blank-lessons.yaml +++ /dev/null @@ -1,6 +0,0 @@ -integration-1: - number: 1 - curriculum-areas: - - area-1 - prerequisite-lessons: - unit-plan-1: diff --git a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-lesson.yaml b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-lesson.yaml index 8d2d32696..64d5008ce 100644 --- a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-lesson.yaml +++ b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-lesson.yaml @@ -3,5 +3,4 @@ integration-1: curriculum-areas: - area-1 prerequisite-lessons: - unit-plan-1: - lesson-invalid diff --git a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-unit-plan.yaml b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-unit-plan.yaml deleted file mode 100644 index bbbe493a0..000000000 --- a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-invalid-unit-plan.yaml +++ /dev/null @@ -1,8 +0,0 @@ -integration-1: - number: 1 - curriculum-areas: - - area-1 - prerequisite-lessons: - unit-plan-invalid: - - lesson-1 - - lesson-2 diff --git a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-translation.yaml b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-translation.yaml index 58702b3fb..e2beb63c3 100644 --- a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-translation.yaml +++ b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons-translation.yaml @@ -3,6 +3,5 @@ translation: curriculum-areas: - area-1 prerequisite-lessons: - unit-plan-1: - lesson-1 - lesson-2 diff --git a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons.yaml b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons.yaml index 10bcffe0b..3468939c0 100644 --- a/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons.yaml +++ b/csunplugged/tests/topics/loaders/assets/curriculum_integrations/structure/prerequisite-lessons.yaml @@ -3,6 +3,5 @@ integration-1: curriculum-areas: - area-1 prerequisite-lessons: - unit-plan-1: - lesson-1 - lesson-2 diff --git a/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-lessons/other.md b/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-lessons/other.md new file mode 100644 index 000000000..e57d09c7e --- /dev/null +++ b/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-lessons/other.md @@ -0,0 +1,3 @@ +# Other resources + +English content for other resources. diff --git a/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-lessons/topic-missing-lessons.md b/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-lessons/topic-missing-lessons.md new file mode 100644 index 000000000..57a63c08d --- /dev/null +++ b/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-lessons/topic-missing-lessons.md @@ -0,0 +1,3 @@ +# Topic 1 + +English content for Topic 1. diff --git a/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-unit-plans/other.md b/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-unit-plans/other.md deleted file mode 100644 index b7c04a0cd..000000000 --- a/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-unit-plans/other.md +++ /dev/null @@ -1 +0,0 @@ -# Other resources diff --git a/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-unit-plans/topic-missing-unit-plans.md b/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-unit-plans/topic-missing-unit-plans.md deleted file mode 100644 index 85fdee826..000000000 --- a/csunplugged/tests/topics/loaders/assets/topic/en/topic-missing-unit-plans/topic-missing-unit-plans.md +++ /dev/null @@ -1 +0,0 @@ -# Topic 1 diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-curriculum-integrations/empty-curriculum-integrations.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-curriculum-integrations/empty-curriculum-integrations.yaml index 38c0da7f9..a9d0e3da4 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-curriculum-integrations/empty-curriculum-integrations.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-curriculum-integrations/empty-curriculum-integrations.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 curriculum-integrations: diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-icon/empty-icon.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-icon/empty-icon.yaml index ec5018da2..e4c6773ad 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-icon/empty-icon.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-icon/empty-icon.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 icon: diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-other-resources/empty-other-resources.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-other-resources/empty-other-resources.yaml index f6a01908f..fa57b59fc 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-other-resources/empty-other-resources.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-other-resources/empty-other-resources.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 other-resources: diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-programming-challenges/empty-programming-challenges.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-programming-challenges/empty-programming-challenges.yaml index 2367c6f25..3ca70d1ae 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/empty-programming-challenges/empty-programming-challenges.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/empty-programming-challenges/empty-programming-challenges.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 programming-challenges: diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-1/topic-1.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-1/topic-1.yaml index f21959299..ac2b12b99 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-1/topic-1.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-1/topic-1.yaml @@ -1,2 +1,5 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-content/topic-missing-content.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-content/topic-missing-content.yaml index f21959299..ac2b12b99 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-content/topic-missing-content.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-content/topic-missing-content.yaml @@ -1,2 +1,5 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-unit-plans/topic-missing-unit-plans.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-lessons/topic-missing-lessons.yaml similarity index 100% rename from csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-unit-plans/topic-missing-unit-plans.yaml rename to csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-lessons/topic-missing-lessons.yaml diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-name/topic-missing-name.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-name/topic-missing-name.yaml index f21959299..ac2b12b99 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-name/topic-missing-name.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-missing-name/topic-missing-name.yaml @@ -1,2 +1,5 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation-other-resources-missing/topic-translation-other-resources-missing.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation-other-resources-missing/topic-translation-other-resources-missing.yaml index f2a065fa7..1644ea62d 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation-other-resources-missing/topic-translation-other-resources-missing.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation-other-resources-missing/topic-translation-other-resources-missing.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 other-resources: other-resources.md diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation/topic-translation.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation/topic-translation.yaml index f2a065fa7..1644ea62d 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation/topic-translation.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-translation/topic-translation.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 other-resources: other-resources.md diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-valid-icon/topic-valid-icon.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-valid-icon/topic-valid-icon.yaml index dd7c5f3c6..829e4a0ca 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-valid-icon/topic-valid-icon.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-valid-icon/topic-valid-icon.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 icon: img/logo.png diff --git a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-with-other-resources/topic-with-other-resources.yaml b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-with-other-resources/topic-with-other-resources.yaml index f2a065fa7..1644ea62d 100644 --- a/csunplugged/tests/topics/loaders/assets/topic/structure/topic-with-other-resources/topic-with-other-resources.yaml +++ b/csunplugged/tests/topics/loaders/assets/topic/structure/topic-with-other-resources/topic-with-other-resources.yaml @@ -1,3 +1,6 @@ -unit-plans: - - unit-plan-1 +lessons: lessons/lessons.yaml +age-groups: + 5-12: + lesson-1: + number: 1 other-resources: other-resources.md diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/ct-links.md b/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/ct-links.md deleted file mode 100644 index ec81d1fc3..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/ct-links.md +++ /dev/null @@ -1,3 +0,0 @@ -# German CT Links - -German CT links content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/translation-missing-ct-links.md b/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/translation-missing-ct-links.md deleted file mode 100644 index eb2fb68b8..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/translation-missing-ct-links.md +++ /dev/null @@ -1,3 +0,0 @@ -# German Heading - -German unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/translation.md b/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/translation.md deleted file mode 100644 index eb2fb68b8..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/de/translation/translation.md +++ /dev/null @@ -1,3 +0,0 @@ -# German Heading - -German unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/ct-links/ct-links-text.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/ct-links/ct-links-text.md deleted file mode 100644 index 8afbdbae2..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/ct-links/ct-links-text.md +++ /dev/null @@ -1 +0,0 @@ -CT link text diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/ct-links/ct-links.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/ct-links/ct-links.md deleted file mode 100644 index 8f5aada04..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/ct-links/ct-links.md +++ /dev/null @@ -1,3 +0,0 @@ -# CT Links - -Etiam in massa. Nam ut metus. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/missing-content/missing-content.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/missing-content/missing-content.md deleted file mode 100644 index ca34edc2c..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/missing-content/missing-content.md +++ /dev/null @@ -1 +0,0 @@ -# Unit Plan 1 \ No newline at end of file diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/missing-name/missing-name.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/missing-name/missing-name.md deleted file mode 100644 index 09796647c..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/missing-name/missing-name.md +++ /dev/null @@ -1,53 +0,0 @@ -Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut -aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis -sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin -luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et -malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna, -pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum -euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut -massa. - -Nulla consequat erat at massa. Vivamus id mi. Morbi purus enim, dapibus a, -facilisis non, tincidunt at, enim. Vestibulum ante ipsum primis in faucibus -orci luctus et ultrices posuere cubilia Curae; Duis imperdiet eleifend arcu. -Cras magna ligula, consequat at, tempor non, posuere nec, libero. Vestibulum -vel ipsum. Praesent congue justo et nunc. Vestibulum nec felis vitae nisl -pharetra sollicitudin. Quisque nec arcu vel tellus tristique vestibulum. Aenean -vel lacus. Mauris dolor erat, commodo ut, dapibus vehicula, lobortis sit amet, -orci. Aliquam augue. In semper nisi nec libero. Cras magna ipsum, scelerisque -et, tempor eget, gravida nec, lacus. Fusce eros nisi, ullamcorper blandit, -ultricies eget, elementum eget, pede. Phasellus id risus vitae nisl ullamcorper -congue. Proin est. - -Sed eleifend odio sed leo. Mauris tortor turpis, dignissim vel, ornare ac, -ultricies quis, magna. Phasellus lacinia, augue ac dictum tempor, nisi felis -ornare magna, eu vehicula tellus enim eu neque. Fusce est eros, sagittis eget, -interdum a, ornare suscipit, massa. Sed vehicula elementum ligula. Aliquam erat -volutpat. Donec odio. Quisque nunc. Integer cursus feugiat magna. Fusce ac elit -ut elit aliquam suscipit. Duis leo est, interdum nec, varius in, facilisis -vitae, odio. Phasellus eget leo at urna adipiscing vulputate. Nam eu erat vel -arcu tristique mattis. Nullam placerat lorem non augue. Cras et velit. Morbi -sapien nulla, volutpat a, tristique eu, molestie ac, felis. - -Suspendisse sit amet tellus non odio porta pellentesque. Nulla facilisi. -Integer iaculis condimentum augue. Nullam urna nulla, vestibulum quis, lacinia -eget, ullamcorper eu, dui. Quisque dignissim consequat nisl. Pellentesque porta -augue in diam. Duis mattis. Aliquam et mi quis turpis pellentesque consequat. -Suspendisse nulla erat, lacinia nec, pretium vitae, feugiat ac, quam. Etiam sed -tellus vel est ultrices condimentum. Vestibulum euismod. Vivamus blandit. -Pellentesque eu urna. Vestibulum consequat sem vitae dui. In dictum feugiat -quam. Phasellus placerat. In sem nisl, elementum vitae, venenatis nec, lacinia -ac, arcu. Pellentesque gravida egestas mi. Integer rutrum tincidunt libero. - -Duis viverra. Nulla diam lectus, tincidunt et, scelerisque vitae, aliquam -vitae, justo. Quisque eget erat. Donec aliquet porta magna. Sed nisl. Ut -tellus. Suspendisse quis mi eget dolor sagittis tristique. Aenean non pede eget -nisl bibendum gravida. Class aptent taciti sociosqu ad litora torquent per -conubia nostra, per inceptos himenaeos. Morbi laoreet. Suspendisse potenti. -Donec accumsan porta felis. - -Fusce tristique leo quis pede. Cras nibh. Sed eget est vitae tortor mollis -ullamcorper. Suspendisse placerat dolor a dui. Vestibulum condimentum dui et -elit. Pellentesque porttitor ipsum at ipsum. Nam massa. Duis lorem. Donec -porta. Proin ligula. Aenean nunc massa, dapibus quis, imperdiet id, commodo a, -lacus. Cras sit amet. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/ct-links-no-german.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/ct-links-no-german.md deleted file mode 100644 index b5b9d201c..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/ct-links-no-german.md +++ /dev/null @@ -1,3 +0,0 @@ -# English CT Links - -English CT links content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/ct-links.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/ct-links.md deleted file mode 100644 index b5b9d201c..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/ct-links.md +++ /dev/null @@ -1,3 +0,0 @@ -# English CT Links - -English CT links content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/translation-missing-ct-links.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/translation-missing-ct-links.md deleted file mode 100644 index 89aa756dd..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/translation-missing-ct-links.md +++ /dev/null @@ -1,3 +0,0 @@ -# English Heading - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/translation.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/translation.md deleted file mode 100644 index 89aa756dd..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/translation/translation.md +++ /dev/null @@ -1,3 +0,0 @@ -# English Heading - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-age-groups.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-age-groups.md deleted file mode 100644 index 8b181e8a0..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-age-groups.md +++ /dev/null @@ -1,3 +0,0 @@ -# Unit Plan 1 - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lesson-keys.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lesson-keys.md deleted file mode 100644 index 8b181e8a0..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lesson-keys.md +++ /dev/null @@ -1,3 +0,0 @@ -# Unit Plan 1 - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lesson-number.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lesson-number.md deleted file mode 100644 index 8b181e8a0..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lesson-number.md +++ /dev/null @@ -1,3 +0,0 @@ -# Unit Plan 1 - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lessons-config.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lessons-config.md deleted file mode 100644 index 8b181e8a0..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/missing-lessons-config.md +++ /dev/null @@ -1,3 +0,0 @@ -# Unit Plan 1 - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/unit-plan-1.md b/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/unit-plan-1.md deleted file mode 100644 index 8b181e8a0..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/en/unit-plan-1/unit-plan-1.md +++ /dev/null @@ -1,3 +0,0 @@ -# Unit Plan 1 - -English unit plan content. diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/ct-links/ct-links.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/ct-links/ct-links.yaml deleted file mode 100644 index 822e29fc9..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/ct-links/ct-links.yaml +++ /dev/null @@ -1,7 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: ct-links-text.md - -age-groups: - 8-10: - lesson-1: - number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/missing-content/missing-content.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/missing-content/missing-content.yaml deleted file mode 100644 index 564120bd7..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/missing-content/missing-content.yaml +++ /dev/null @@ -1,6 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: - lesson-1: - number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/missing-name/missing-name.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/missing-name/missing-name.yaml deleted file mode 100644 index 564120bd7..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/missing-name/missing-name.yaml +++ /dev/null @@ -1,6 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: - lesson-1: - number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/translation/translation-missing-ct-links.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/translation/translation-missing-ct-links.yaml deleted file mode 100644 index 626f112c8..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/translation/translation-missing-ct-links.yaml +++ /dev/null @@ -1,8 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: - lesson-1: - number: 1 - -computational-thinking-links: ct-links-no-german.md diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/translation/translation.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/translation/translation.yaml deleted file mode 100644 index 0b4e001fc..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/translation/translation.yaml +++ /dev/null @@ -1,8 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: - lesson-1: - number: 1 - -computational-thinking-links: ct-links.md diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-age-groups.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-age-groups.yaml deleted file mode 100644 index 054942893..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-age-groups.yaml +++ /dev/null @@ -1 +0,0 @@ -lessons: lessons/lessons.yaml diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lesson-keys.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lesson-keys.yaml deleted file mode 100644 index 9fd317fc2..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lesson-keys.yaml +++ /dev/null @@ -1,4 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lesson-number.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lesson-number.yaml deleted file mode 100644 index 1125e39e7..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lesson-number.yaml +++ /dev/null @@ -1,5 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: - lesson-1: diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lessons-config.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lessons-config.yaml deleted file mode 100644 index a02c9f89b..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/missing-lessons-config.yaml +++ /dev/null @@ -1,4 +0,0 @@ -age-groups: - 8-10: - lesson-1: - number: 1 diff --git a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/unit-plan-1.yaml b/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/unit-plan-1.yaml deleted file mode 100644 index 564120bd7..000000000 --- a/csunplugged/tests/topics/loaders/assets/unit_plan/structure/unit-plan-1/unit-plan-1.yaml +++ /dev/null @@ -1,6 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 8-10: - lesson-1: - number: 1 diff --git a/csunplugged/tests/topics/loaders/test_curriculum_integrations_loader.py b/csunplugged/tests/topics/loaders/test_curriculum_integrations_loader.py index ec4f44749..df4e9ae19 100644 --- a/csunplugged/tests/topics/loaders/test_curriculum_integrations_loader.py +++ b/csunplugged/tests/topics/loaders/test_curriculum_integrations_loader.py @@ -110,9 +110,8 @@ def test_prerequisite_lessons(self): config_file = "prerequisite-lessons.yaml" self.test_data.create_curriculum_area("1") topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_lesson(topic, unit_plan, "2") + self.test_data.create_lesson(topic, "1") + self.test_data.create_lesson(topic, "2") ci_loader = CurriculumIntegrationsLoader(topic, base_path=self.base_path, structure_filename=config_file) ci_loader.load() ci_objects = CurriculumIntegration.objects.all() @@ -135,9 +134,8 @@ def test_prerequisite_lessons_translation(self): config_file = "prerequisite-lessons-translation.yaml" self.test_data.create_curriculum_area("1") topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_lesson(topic, unit_plan, "2") + self.test_data.create_lesson(topic, "1") + self.test_data.create_lesson(topic, "2") ci_loader = CurriculumIntegrationsLoader(topic, base_path=self.base_path, structure_filename=config_file) ci_loader.load() ci_objects = CurriculumIntegration.objects.all() @@ -180,31 +178,10 @@ def test_prerequisite_lessons_blank(self): [], ) - def test_prerequisite_lessons_blank_lessons(self): - config_file = "prerequisite-lessons-blank-lessons.yaml" - self.test_data.create_curriculum_area("1") - topic = self.test_data.create_topic("1") - ci_loader = CurriculumIntegrationsLoader(topic, base_path=self.base_path, structure_filename=config_file) - self.assertRaises( - MissingRequiredFieldError, - ci_loader.load - ) - def test_prerequisite_lessons_invalid_lesson(self): config_file = "prerequisite-lessons-invalid-lesson.yaml" self.test_data.create_curriculum_area("1") topic = self.test_data.create_topic("1") - self.test_data.create_unit_plan(topic, "1") - ci_loader = CurriculumIntegrationsLoader(topic, base_path=self.base_path, structure_filename=config_file) - self.assertRaises( - KeyNotFoundError, - ci_loader.load - ) - - def test_prerequisite_lessons_invalid_unit_plan(self): - config_file = "prerequisite-lessons-invalid-unit-plan.yaml" - self.test_data.create_curriculum_area("1") - topic = self.test_data.create_topic("1") ci_loader = CurriculumIntegrationsLoader(topic, base_path=self.base_path, structure_filename=config_file) self.assertRaises( KeyNotFoundError, diff --git a/csunplugged/tests/topics/loaders/test_lessons_loader.py b/csunplugged/tests/topics/loaders/test_lessons_loader.py index d2da61e1c..02d0d89e8 100644 --- a/csunplugged/tests/topics/loaders/test_lessons_loader.py +++ b/csunplugged/tests/topics/loaders/test_lessons_loader.py @@ -28,11 +28,9 @@ def test_basic_lesson_loader_configuration(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -47,11 +45,9 @@ def test_lesson_loader_topic_set_correctly(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -65,37 +61,13 @@ def test_lesson_loader_topic_set_correctly(self): # is a parent loader to the lesson loader. Therefore this loader, # is not run if the topic cannot be found. - def test_lesson_loader_unit_plan_set_correctly(self): - config_file = "basic-config.yaml" - - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") - - lesson_loader = LessonsLoader( - topic, - unit_plan, - structure_filename=config_file, - base_path=self.base_path - ) - lesson_loader.load() - self.assertEquals( - Lesson.objects.get(slug="lesson-1").unit_plan, - unit_plan, - ) - - # Note: Missing unit plan does not need to be tested as the unit plan loader - # is a parent loader to the lesson loader. Therefore this loader, - # is not run if the unit plan cannot be found. - def test_lesson_loader_slug_set_correctly(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -112,11 +84,9 @@ def test_lesson_loader_name_set_correctly(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -130,11 +100,9 @@ def test_lesson_loader_missing_name_text(self): config_file = "missing-title.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -147,11 +115,9 @@ def test_lesson_loader_content_set_correctly(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -165,11 +131,9 @@ def test_lesson_loader_missing_content_text(self): config_file = "missing-content.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -182,11 +146,9 @@ def test_lesson_loader_valid_computational_thinking_content(self): config_file = "ct-links.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -200,11 +162,9 @@ def test_lesson_loader_missing_computational_thinking_content(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -215,11 +175,9 @@ def test_lesson_loader_duration_set_correctly(self): config_file = "duration.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -238,11 +196,9 @@ def test_lesson_loader_heading_tree_set_correctly(self): config_file = "heading-tree.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -276,30 +232,26 @@ def test_lesson_loader_no_heading_tree(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) lesson_loader.load() - # Empty list will evaluate to false + # Empty dict will evaluate to false self.assertFalse(Lesson.objects.get(slug="lesson-1").heading_tree) def test_lesson_loader_optional_programming_challenges_set_correctly(self): config_file = "programming-challenges.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) difficulty = self.test_data.create_difficulty_level(1) self.test_data.create_programming_challenge(topic, 1, difficulty) self.test_data.create_programming_challenge(topic, 2, difficulty) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -316,10 +268,8 @@ def test_lesson_loader_optional_programming_challenges_set_correctly(self): def test_lesson_loader_optional_programming_challenges_empty(self): config_file = "programming-challenges-empty.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -329,10 +279,8 @@ def test_lesson_loader_optional_programming_challenges_invalid_slug(self): config_file = "programming-challenges-invalid.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -345,14 +293,12 @@ def test_lesson_loader_optional_programming_challenges_set_correctly_when_omitte config_file = "basic-config.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) difficulty = self.test_data.create_difficulty_level(1) self.test_data.create_programming_challenge(topic, 1, difficulty) self.test_data.create_programming_challenge(topic, 2, difficulty) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -366,11 +312,9 @@ def test_lesson_loader_valid_programming_challenges_description(self): config_file = "programming-challenges-description.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -384,11 +328,9 @@ def test_lesson_loader_missing_programming_challenges_description(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -399,13 +341,11 @@ def test_lesson_loader_optional_learning_outcomes_set_correctly(self): config_file = "learning-outcomes.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.test_data.create_learning_outcome(1) self.test_data.create_learning_outcome(2) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -423,12 +363,10 @@ def test_lesson_loader_optional_learning_outcomes_invalid(self): config_file = "learning-outcomes.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.test_data.create_learning_outcome(1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -441,11 +379,9 @@ def test_lesson_loader_optional_learning_outcomes_empty(self): config_file = "learning-outcomes-empty.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -458,13 +394,11 @@ def test_lesson_loader_optional_learning_outcomes_set_correctly_when_omitted(sel config_file = "basic-config.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.test_data.create_learning_outcome(1) self.test_data.create_learning_outcome(2) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -478,13 +412,11 @@ def test_lesson_loader_optional_classroom_resources_set_correctly(self): config_file = "classroom-resources.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.test_data.create_classroom_resource(1) self.test_data.create_classroom_resource(2) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -502,12 +434,10 @@ def test_lesson_loader_optional_classroom_resources_invalid(self): config_file = "classroom-resources.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.test_data.create_classroom_resource(1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -520,11 +450,9 @@ def test_lesson_loader_optional_classroom_resources_empty(self): config_file = "classroom-resources-empty.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -537,11 +465,9 @@ def test_lesson_loader_optional_classroom_resources_set_correctly_when_omitted(s config_file = "basic-config.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -555,11 +481,9 @@ def test_lesson_loader_multiple_lessons(self): config_file = "multiple-lessons.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -577,10 +501,8 @@ def test_lesson_loader_multiple_lessons(self): def test_lessons_loader_missing_configuration_file(self): config_file = "missing.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -592,10 +514,8 @@ def test_lessons_loader_missing_configuration_file(self): def test_lessons_loader_empty_configuration_file(self): config_file = "empty.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -607,10 +527,8 @@ def test_lessons_loader_empty_configuration_file(self): def test_lessons_loader_missing_lesson_data(self): config_file = "missing-lesson-data.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -623,7 +541,6 @@ def test_lesson_loader_optional_generated_resources_set_correctly(self): config_file = "generated-resources.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.resource_test_data.create_resource( "grid", "Grid", @@ -638,7 +555,6 @@ def test_lesson_loader_optional_generated_resources_set_correctly(self): ) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -654,10 +570,8 @@ def test_lesson_loader_optional_generated_resources_set_correctly(self): def test_lesson_loader_optional_generated_resources_empty(self): config_file = "generated-resources-empty.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -668,7 +582,6 @@ def test_lesson_loader_optional_generated_resources_empty(self): def test_lesson_loader_optional_generated_resources_description_empty(self): config_file = "generated-resources-description-empty.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.resource_test_data.create_resource( "grid", "Grid", @@ -677,7 +590,6 @@ def test_lesson_loader_optional_generated_resources_description_empty(self): ) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -689,7 +601,6 @@ def test_lesson_loader_optional_generated_resources_description_empty(self): def test_lesson_loader_optional_generated_resources_description_missing(self): config_file = "generated-resources-description-missing.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) self.resource_test_data.create_resource( "grid", "Grid", @@ -698,7 +609,6 @@ def test_lesson_loader_optional_generated_resources_description_missing(self): ) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -707,10 +617,8 @@ def test_lesson_loader_optional_generated_resources_description_missing(self): def test_lesson_loader_optional_generated_resources_slug_invalid(self): config_file = "generated-resources.yaml" topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -722,10 +630,8 @@ def test_lesson_loader_optional_generated_resources_slug_invalid(self): def test_lessons_loader_translation_basic(self): config_file = "basic-translation.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -742,11 +648,9 @@ def test_lessons_loader_translation_complex(self): config_file = "complex-translation.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -785,11 +689,9 @@ def test_lessons_loader_translation_missing_lesson_file(self): config_file = "basic-config.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -803,11 +705,9 @@ def test_lessons_loader_translation_missing_ct_links(self): config_file = "translation-missing-ct-links.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) @@ -831,11 +731,9 @@ def test_lessons_loader_translation_missing_programming_challenges(self): config_file = "translation-missing-pcd.yaml" topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "1") lesson_loader = LessonsLoader( topic, - unit_plan, structure_filename=config_file, base_path=self.base_path ) diff --git a/csunplugged/tests/topics/loaders/test_topic_loader.py b/csunplugged/tests/topics/loaders/test_topic_loader.py index 1f6773aeb..24daec112 100644 --- a/csunplugged/tests/topics/loaders/test_topic_loader.py +++ b/csunplugged/tests/topics/loaders/test_topic_loader.py @@ -22,6 +22,10 @@ def __init__(self, *args, **kwargs): def test_basic_topic_loader_configuration(self): content_path, structure_filename = "topic-1", "topic-1.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -29,6 +33,8 @@ def test_basic_topic_loader_configuration(self): structure_filename=structure_filename ) topic_loader.load() + # Delete temp topic after loader is run + temp_topic.delete() self.assertQuerysetEqual( Topic.objects.all(), ["<Topic: Topic 1>"] @@ -38,6 +44,10 @@ def test_basic_topic_loader_configuration(self): def test_topic_loader_slug(self): content_path, structure_filename = "topic-1", "topic-1.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -67,6 +77,10 @@ def test_topic_loader_missing_configuration_file(self): def test_topic_loader_valid_name_text(self): content_path, structure_filename = "topic-1", "topic-1.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -82,6 +96,10 @@ def test_topic_loader_valid_name_text(self): def test_topic_loader_missing_name_text(self): content_path, structure_filename = "topic-missing-name", "topic-missing-name.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -96,6 +114,10 @@ def test_topic_loader_missing_name_text(self): def test_topic_loader_valid_content_text(self): content_path, structure_filename = "topic-1", "topic-1.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -111,6 +133,10 @@ def test_topic_loader_valid_content_text(self): def test_topic_loader_missing_content_text(self): content_path, structure_filename = "topic-missing-content", "topic-missing-content.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -122,8 +148,8 @@ def test_topic_loader_missing_content_text(self): topic_loader.load, ) - def test_topic_loader_missing_unit_plans(self): - content_path, structure_filename = "topic-missing-unit-plans", "topic-missing-unit-plans.yaml" + def test_topic_loader_missing_lessons(self): + content_path, structure_filename = "topic-missing-lessons", "topic-missing-lessons.yaml" factory = Mock() topic_loader = TopicLoader( factory, @@ -139,6 +165,10 @@ def test_topic_loader_missing_unit_plans(self): def test_topic_loader_valid_icon(self): content_path, structure_filename = "topic-valid-icon", "topic-valid-icon.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -154,6 +184,10 @@ def test_topic_loader_valid_icon(self): def test_topic_loader_missing_icon(self): content_path, structure_filename = "topic-1", "topic-1.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -166,6 +200,10 @@ def test_topic_loader_missing_icon(self): def test_topic_loader_with_other_resources(self): content_path, structure_filename = "topic-with-other-resources", "topic-with-other-resources.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -180,6 +218,10 @@ def test_topic_loader_with_other_resources(self): def test_topic_translation(self): content_path, structure_filename = "topic-translation", "topic-translation.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -205,6 +247,12 @@ def test_topic_translation_other_resources_missing(self): content_path = "topic-translation-other-resources-missing" structure_filename = "topic-translation-other-resources-missing.yaml" factory = Mock() + + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) + topic_loader = TopicLoader( factory, content_path=content_path, @@ -226,6 +274,10 @@ def test_topic_loader_empty_icon(self): content_path = "empty-icon" structure_filename = "empty-icon.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -240,6 +292,10 @@ def test_topic_loader_other_resources_empty(self): content_path = "empty-other-resources" structure_filename = "empty-other-resources.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -254,6 +310,10 @@ def test_topic_loader_programming_challenges_empty(self): content_path = "empty-programming-challenges" structure_filename = "empty-programming-challenges.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, @@ -267,6 +327,10 @@ def test_topic_loader_curriculum_integrations_empty(self): content_path = "empty-curriculum-integrations" structure_filename = "empty-curriculum-integrations.yaml" factory = Mock() + # Create data as other loaders are mocked + self.test_data.create_age_group(5, 12) + temp_topic = self.test_data.create_topic("test") + self.test_data.create_lesson(temp_topic, 1) topic_loader = TopicLoader( factory, content_path=content_path, diff --git a/csunplugged/tests/topics/loaders/test_unit_plan_loader.py b/csunplugged/tests/topics/loaders/test_unit_plan_loader.py deleted file mode 100644 index 4e0c834f0..000000000 --- a/csunplugged/tests/topics/loaders/test_unit_plan_loader.py +++ /dev/null @@ -1,321 +0,0 @@ -import os.path -from unittest.mock import Mock -from django.utils import translation -from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError -from utils.errors.EmptyMarkdownFileError import EmptyMarkdownFileError -from utils.errors.NoHeadingFoundInMarkdownFileError import NoHeadingFoundInMarkdownFileError -from utils.errors.KeyNotFoundError import KeyNotFoundError -from tests.BaseTestWithDB import BaseTestWithDB -from tests.topics.TopicsTestDataGenerator import TopicsTestDataGenerator -from topics.models import UnitPlan -from topics.management.commands._UnitPlanLoader import UnitPlanLoader - - -class UnitPlanLoaderTest(BaseTestWithDB): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.test_data = TopicsTestDataGenerator() - self.loader_name = "unit_plan" - self.base_path = os.path.join(self.test_data.LOADER_ASSET_PATH, self.loader_name) - - def test_basic_unit_plan_configuration(self): - content_path, structure_filename = "unit-plan-1", "unit-plan-1.yaml" - - # create test objects so that lesson exist for age group - factory = Mock() - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "test") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - up_loader.load() - - up_objects = UnitPlan.objects.all() - - self.assertQuerysetEqual( - up_objects, - [ - "<UnitPlan: Unit Plan test>", - "<UnitPlan: Unit Plan 1>" - ], - ordered=False - ) - - up = UnitPlan.objects.get(slug="unit-plan-1") - self.assertSetEqual(set(["en"]), set(up.languages)) - - def test_unit_plan_loader_missing_lessons_config_value(self): - content_path, structure_filename = "unit-plan-1", "missing-lessons-config.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - self.assertRaises( - MissingRequiredFieldError, - up_loader.load, - ) - - def test_unit_plan_invalid_lessons(self): - content_path, structure_filename = "unit-plan-1", "unit-plan-1.yaml" - factory = Mock() - topic = self.test_data.create_topic("1") - self.test_data.create_age_group(8, 10) - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - self.assertRaises( - KeyNotFoundError, - up_loader.load, - ) - - def test_unit_plan_loader_missing_content_text(self): - content_path, structure_filename = "missing-content", "missing-content.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - self.assertRaises( - EmptyMarkdownFileError, - up_loader.load, - ) - - def test_unit_plan_loader_missing_name_text(self): - content_path, structure_filename = "missing-name", "missing-name.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - self.assertRaises( - NoHeadingFoundInMarkdownFileError, - up_loader.load, - ) - - def test_unit_plan_missing_age_groups(self): - content_path, structure_filename = "unit-plan-1", "missing-age-groups.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - self.assertRaises( - MissingRequiredFieldError, - up_loader.load, - ) - - def test_unit_plan_invalid_age_groups(self): - content_path, structure_filename = "unit-plan-1", "unit-plan-1.yaml" - factory = Mock() - topic = self.test_data.create_topic("1") - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - self.assertRaises( - KeyNotFoundError, - up_loader.load, - ) - - def test_unit_plan_loader_valid_computational_thinking_content(self): - content_path, structure_filename = "ct-links", "ct-links.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "test") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - up_loader.load() - - self.assertEqual( - UnitPlan.objects.get(slug="ct-links").computational_thinking_links, - "<p>CT link text</p>" - ) - - def test_unit_plan_loader_missing_computational_thinking_content(self): - content_path, structure_filename = "unit-plan-1", "unit-plan-1.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "test") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - up_loader.load() - - up_objects = UnitPlan.objects.all() - - self.assertQuerysetEqual( - up_objects, - [ - "<UnitPlan: Unit Plan test>", - "<UnitPlan: Unit Plan 1>" - ], - ordered=False - ) - - def test_unit_plan_missing_lesson_keys(self): - content_path, structure_filename = "unit-plan-1", "missing-lesson-keys.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - self.assertRaises( - MissingRequiredFieldError, - up_loader.load, - ) - - def test_unit_plan_missing_lesson_number(self): - content_path, structure_filename = "unit-plan-1", "missing-lesson-number.yaml" - - factory = Mock() - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "test") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - self.assertRaises( - MissingRequiredFieldError, - up_loader.load, - ) - - def test_unit_plan_translation(self): - content_path, structure_filename = "translation", "translation.yaml" - - # create test objects so that lesson exist for age group - factory = Mock() - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "test") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - up_loader.load() - - up = UnitPlan.objects.get(slug="translation") - - self.assertSetEqual(set(["en", "de"]), set(up.languages)) - - self.assertEqual("English Heading", up.name) - self.assertIn("English unit plan content.", up.content) - self.assertIn("English CT links content.", up.computational_thinking_links) - with translation.override("de"): - self.assertEqual("German Heading", up.name) - self.assertIn("German unit plan content.", up.content) - self.assertIn("German CT links content.", up.computational_thinking_links) - - def test_unit_plan_translation_missing_ct_links(self): - content_path, structure_filename = "translation", "translation-missing-ct-links.yaml" - - # create test objects so that lesson exist for age group - factory = Mock() - topic = self.test_data.create_topic("1") - unit_plan = self.test_data.create_unit_plan(topic, "test") - self.test_data.create_lesson(topic, unit_plan, "1") - self.test_data.create_age_group(8, 10) - - up_loader = UnitPlanLoader( - factory, - topic, - structure_filename=structure_filename, - base_path=self.base_path, - content_path=content_path - ) - - up_loader.load() - - up = UnitPlan.objects.get(slug="translation-missing-ct-links") - - # 'de' should still be an available language as ct_links is optional - self.assertSetEqual(set(["en", "de"]), set(up.languages)) - - self.assertEqual("English Heading", up.name) - self.assertIn("English unit plan content.", up.content) - self.assertIn("English CT links content.", up.computational_thinking_links) - with translation.override("de"): - self.assertEqual("German Heading", up.name) - self.assertIn("German unit plan content.", up.content) - # accessing the untranslated field should not default back to english - self.assertEqual("", up.computational_thinking_links) diff --git a/csunplugged/tests/topics/models/test_lesson.py b/csunplugged/tests/topics/models/test_lesson.py index a259886e8..e8768f7af 100644 --- a/csunplugged/tests/topics/models/test_lesson.py +++ b/csunplugged/tests/topics/models/test_lesson.py @@ -10,11 +10,9 @@ def __init__(self, *args, **kwargs): def test_lesson_str(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -22,11 +20,9 @@ def test_lesson_str(self): def test_lesson_model_name(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -34,26 +30,22 @@ def test_lesson_model_name(self): def test_lesson_model_get_absolute_url(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) self.assertEqual( lesson.get_absolute_url(), - "/en/topics/topic-1/unit-plan-1/lesson-1/" + "/en/topics/topic-1/lesson-1/" ) def test_get_filtered_programming_exercises_by_lanaguge(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -84,11 +76,9 @@ def test_get_filtered_programming_exercises_by_lanaguge(self): def test_get_programming_exercises_without_filter(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -119,11 +109,9 @@ def test_get_programming_exercises_without_filter(self): def test_get_available_languages(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) diff --git a/csunplugged/tests/topics/models/test_resource_description.py b/csunplugged/tests/topics/models/test_resource_description.py index b82730037..15dd31b11 100644 --- a/csunplugged/tests/topics/models/test_resource_description.py +++ b/csunplugged/tests/topics/models/test_resource_description.py @@ -19,9 +19,8 @@ def test_connected_generated_resource(self): "BinaryCardsResourceGenerator", ) topic = self.test_topics_data.create_topic(1) - unit_plan = self.test_topics_data.create_unit_plan(topic, 1) age_group = self.test_topics_data.create_age_group(1, 99) - lesson = self.test_topics_data.create_lesson(topic, unit_plan, 1, age_group) + lesson = self.test_topics_data.create_lesson(topic, 1, age_group) new_resource = ResourceDescription.objects.create( resource=resource, lesson=lesson, diff --git a/csunplugged/tests/topics/models/test_unit_plan.py b/csunplugged/tests/topics/models/test_unit_plan.py deleted file mode 100644 index fa3c587bf..000000000 --- a/csunplugged/tests/topics/models/test_unit_plan.py +++ /dev/null @@ -1,27 +0,0 @@ -from tests.BaseTestWithDB import BaseTestWithDB -from tests.topics.TopicsTestDataGenerator import TopicsTestDataGenerator - - -class UnitPlanModelTest(BaseTestWithDB): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.test_data = TopicsTestDataGenerator() - - def test_unit_plan_str(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - self.assertEqual(unit_plan.__str__(), "Unit Plan 1") - - def test_unit_plan_model_name(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - self.assertEqual(unit_plan.MODEL_NAME, "Unit Plan") - - def test_unit_plan_model_get_absolute_url(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - self.assertEqual( - unit_plan.get_absolute_url(), - "/en/topics/topic-1/unit-plan-1/" - ) diff --git a/csunplugged/tests/topics/urls/test_lesson.py b/csunplugged/tests/topics/urls/test_lesson.py index 3924f280b..934b79430 100644 --- a/csunplugged/tests/topics/urls/test_lesson.py +++ b/csunplugged/tests/topics/urls/test_lesson.py @@ -11,8 +11,7 @@ def __init__(self, *args, **kwargs): def test_valid_lesson(self): kwargs = { "topic_slug": "binary-numbers", - "unit_plan_slug": "unit-plan", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) - self.assertEqual(url, "/en/topics/binary-numbers/unit-plan/lesson-1/") + self.assertEqual(url, "/en/topics/binary-numbers/lesson-1/") diff --git a/csunplugged/tests/topics/urls/test_programming_challenges_list.py b/csunplugged/tests/topics/urls/test_programming_challenges_list.py index 6fc6d1196..470eecff6 100644 --- a/csunplugged/tests/topics/urls/test_programming_challenges_list.py +++ b/csunplugged/tests/topics/urls/test_programming_challenges_list.py @@ -11,8 +11,7 @@ def __init__(self, *args, **kwargs): def test_valid_programming_challenges_list(self): kwargs = { "topic_slug": "binary-numbers", - "unit_plan_slug": "unit-plan", "lesson_slug": "lesson-1", } url = reverse("topics:programming_challenges_list", kwargs=kwargs) - self.assertEqual(url, "/en/topics/binary-numbers/unit-plan/lesson-1/programming/") + self.assertEqual(url, "/en/topics/binary-numbers/lesson-1/programming/") diff --git a/csunplugged/tests/topics/urls/test_unit_plan.py b/csunplugged/tests/topics/urls/test_topic_whats_it_all_about.py similarity index 51% rename from csunplugged/tests/topics/urls/test_unit_plan.py rename to csunplugged/tests/topics/urls/test_topic_whats_it_all_about.py index 81deba367..890946a6d 100644 --- a/csunplugged/tests/topics/urls/test_unit_plan.py +++ b/csunplugged/tests/topics/urls/test_topic_whats_it_all_about.py @@ -2,16 +2,15 @@ from django.urls import reverse -class UnitPlanURLTest(BaseTestWithDB): +class TopicWhatsItAllAboutURLTest(BaseTestWithDB): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.language = "en" - def test_valid_unit_plan(self): + def test_valid_topic_whats_it_all_about(self): kwargs = { "topic_slug": "binary-numbers", - "unit_plan_slug": "unit-plan", } - url = reverse("topics:unit_plan", kwargs=kwargs) - self.assertEqual(url, "/en/topics/binary-numbers/unit-plan/") + url = reverse("topics:topic_whats_it_all_about", kwargs=kwargs) + self.assertEqual(url, "/en/topics/binary-numbers/whats-it-all-about/") diff --git a/csunplugged/tests/topics/urls/test_unit_plan_description.py b/csunplugged/tests/topics/urls/test_unit_plan_description.py deleted file mode 100644 index 080f97e70..000000000 --- a/csunplugged/tests/topics/urls/test_unit_plan_description.py +++ /dev/null @@ -1,17 +0,0 @@ -from tests.BaseTestWithDB import BaseTestWithDB -from django.urls import reverse - - -class UnitPlanDescriptionURLTest(BaseTestWithDB): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.language = "en" - - def test_valid_unit_plan_description(self): - kwargs = { - "topic_slug": "binary-numbers", - "unit_plan_slug": "unit-plan", - } - url = reverse("topics:unit_plan_description", kwargs=kwargs) - self.assertEqual(url, "/en/topics/binary-numbers/unit-plan/description/") diff --git a/csunplugged/tests/topics/views/test_curriculum_integration_view.py b/csunplugged/tests/topics/views/test_curriculum_integration_view.py index 2f1cfe2bb..2e4773f52 100644 --- a/csunplugged/tests/topics/views/test_curriculum_integration_view.py +++ b/csunplugged/tests/topics/views/test_curriculum_integration_view.py @@ -87,17 +87,14 @@ def test_curriculum_integration_view_curriculum_areas_context(self): def test_curriculum_integration_view_prerequisite_lessons_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson_1 = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) lesson_2 = self.test_data.create_lesson( topic, - unit_plan, 2, age_group_1 ) diff --git a/csunplugged/tests/topics/views/test_index_view.py b/csunplugged/tests/topics/views/test_index_view.py index 9f88ad908..567740b7b 100644 --- a/csunplugged/tests/topics/views/test_index_view.py +++ b/csunplugged/tests/topics/views/test_index_view.py @@ -18,11 +18,9 @@ def test_index_with_no_topics(self): def test_index_with_one_topic(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group ) @@ -36,20 +34,16 @@ def test_index_with_one_topic(self): def test_index_with_mulitple_topics(self): topic_1 = self.test_data.create_topic(1) - unit_plan_1 = self.test_data.create_unit_plan(topic_1, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic_1, - unit_plan_1, 1, age_group_1 ) topic_2 = self.test_data.create_topic(2) - unit_plan_2 = self.test_data.create_unit_plan(topic_2, 1) age_group_2 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic_2, - unit_plan_2, 1, age_group_2 ) @@ -63,11 +57,9 @@ def test_index_with_mulitple_topics(self): def test_index_topic_single_age_group_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group = self.test_data.create_age_group(10, 30) self.test_data.create_lesson( topic, - unit_plan, 1, age_group ) @@ -80,13 +72,11 @@ def test_index_topic_single_age_group_context(self): def test_index_topic_multiple_age_groups_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(10, 30) age_group_2 = self.test_data.create_age_group(30, 50) age_group_3 = self.test_data.create_age_group(50, 99) self.test_data.create_lesson( topic, - unit_plan, 1, [age_group_1, age_group_2, age_group_3] ) diff --git a/csunplugged/tests/topics/views/test_lesson_view.py b/csunplugged/tests/topics/views/test_lesson_view.py index 25b7ea17b..8d42ab801 100644 --- a/csunplugged/tests/topics/views/test_lesson_view.py +++ b/csunplugged/tests/topics/views/test_lesson_view.py @@ -16,17 +16,14 @@ def __init__(self, *args, **kwargs): def test_lesson_view_with_valid_slugs(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -35,36 +32,14 @@ def test_lesson_view_with_valid_slugs(self): def test_lesson_view_with_invalid_topic_slug(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "invalid-slug", - "unit_plan_slug": "unit-plan-1", - "lesson_slug": "lesson-1", - } - url = reverse("topics:lesson", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) - - def test_lesson_view_with_invalid_unit_plan_slug(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - kwargs = { - "topic_slug": "topic-1", - "unit_plan_slug": "invalid-slug", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -73,17 +48,14 @@ def test_lesson_view_with_invalid_unit_plan_slug(self): def test_lesson_view_with_invalid_lesson_slug(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "invalid-slug", } url = reverse("topics:lesson", kwargs=kwargs) @@ -92,17 +64,14 @@ def test_lesson_view_with_invalid_lesson_slug(self): def test_lesson_view_topic_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -112,41 +81,16 @@ def test_lesson_view_topic_context(self): topic ) - def test_lesson_view_unit_plan_context(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - kwargs = { - "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", - "lesson_slug": "lesson-1", - } - url = reverse("topics:lesson", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - response.context["unit_plan"], - unit_plan - ) - def test_lesson_view_ages_context_single_group(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -158,12 +102,10 @@ def test_lesson_view_ages_context_single_group(self): def test_lesson_view_ages_context_multiple_group(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) age_group_2 = self.test_data.create_age_group(8, 10) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -174,7 +116,6 @@ def test_lesson_view_ages_context_multiple_group(self): ).save() kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -189,11 +130,9 @@ def test_lesson_view_ages_context_multiple_group(self): def test_lesson_view_ages_context_programming_challenges(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -202,7 +141,6 @@ def test_lesson_view_ages_context_programming_challenges(self): self.test_data.add_challenge_lesson_relationship(challenge, lesson, 1, 1) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -211,17 +149,14 @@ def test_lesson_view_ages_context_programming_challenges(self): def test_lesson_view_ages_context_programming_challenges_none(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -230,11 +165,9 @@ def test_lesson_view_ages_context_programming_challenges_none(self): def test_lesson_view_ages_context_learning_outcome_single(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -242,7 +175,6 @@ def test_lesson_view_ages_context_learning_outcome_single(self): lesson.learning_outcomes.add(learning_outcome) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -254,11 +186,9 @@ def test_lesson_view_ages_context_learning_outcome_single(self): def test_lesson_view_ages_context_learning_outcome_multiple(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -270,7 +200,6 @@ def test_lesson_view_ages_context_learning_outcome_multiple(self): lesson.learning_outcomes.add(learning_outcome3) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -288,11 +217,9 @@ def test_lesson_view_ages_context_learning_outcome_multiple(self): # Created to avoid https://github.com/uccser/cs-unplugged/issues/827 def test_lesson_view_ages_context_learning_outcome_not_duplicated(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -303,7 +230,6 @@ def test_lesson_view_ages_context_learning_outcome_not_duplicated(self): lesson.learning_outcomes.add(learning_outcome) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -315,17 +241,14 @@ def test_lesson_view_ages_context_learning_outcome_not_duplicated(self): def test_lesson_view_ages_context_learning_outcome_none(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -334,11 +257,9 @@ def test_lesson_view_ages_context_learning_outcome_none(self): def test_lesson_view_ages_context_generated_resources_single(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -351,7 +272,6 @@ def test_lesson_view_ages_context_generated_resources_single(self): self.test_data.add_lesson_resource_relationship(lesson, resource, 1) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -370,11 +290,9 @@ def test_lesson_view_ages_context_generated_resources_single(self): def test_lesson_view_ages_context_generated_resources_multiple(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -394,7 +312,6 @@ def test_lesson_view_ages_context_generated_resources_multiple(self): self.test_data.add_lesson_resource_relationship(lesson, resource2, 2) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) @@ -419,17 +336,14 @@ def test_lesson_view_ages_context_generated_resources_multiple(self): def test_lesson_view_ages_context_generated_resources_none(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) kwargs = { "topic_slug": "topic-1", - "unit_plan_slug": "unit-plan-1", "lesson_slug": "lesson-1", } url = reverse("topics:lesson", kwargs=kwargs) diff --git a/csunplugged/tests/topics/views/test_programming_challenge_list.py b/csunplugged/tests/topics/views/test_programming_challenge_list.py index b9e2aec70..704532990 100644 --- a/csunplugged/tests/topics/views/test_programming_challenge_list.py +++ b/csunplugged/tests/topics/views/test_programming_challenge_list.py @@ -13,11 +13,9 @@ def __init__(self, *args, **kwargs): def test_programming_challenge_list_with_valid_slugs(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -38,7 +36,6 @@ def test_programming_challenge_list_with_valid_slugs(self): ) kwargs = { "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, "lesson_slug": lesson.slug, } url = reverse("topics:programming_challenges_list", kwargs=kwargs) @@ -47,11 +44,9 @@ def test_programming_challenge_list_with_valid_slugs(self): def test_programming_challenge_list_with_invalid_topic_slug(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -72,41 +67,6 @@ def test_programming_challenge_list_with_invalid_topic_slug(self): ) kwargs = { "topic_slug": "wrong_slug", - "unit_plan_slug": unit_plan.slug, - "lesson_slug": lesson.slug, - } - url = reverse("topics:programming_challenges_list", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) - - def test_programming_challenge_list_with_invalid_unit_plan_slug(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - lesson = self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - difficulty = self.test_data.create_difficulty_level(1) - challenge1 = self.test_data.create_programming_challenge(topic, 1, difficulty) - challenge2 = self.test_data.create_programming_challenge(topic, 2, difficulty) - self.test_data.add_challenge_lesson_relationship( - challenge1, - lesson, - 1, - 1 - ) - self.test_data.add_challenge_lesson_relationship( - challenge2, - lesson, - 1, - 2 - ) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": "wrong_slug", "lesson_slug": lesson.slug, } url = reverse("topics:programming_challenges_list", kwargs=kwargs) @@ -115,11 +75,9 @@ def test_programming_challenge_list_with_invalid_unit_plan_slug(self): def test_programming_challenge_list_with_invalid_lesson_slug(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -140,7 +98,6 @@ def test_programming_challenge_list_with_invalid_lesson_slug(self): ) kwargs = { "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, "lesson_slug": "wrong_slug", } url = reverse("topics:programming_challenges_list", kwargs=kwargs) @@ -149,11 +106,9 @@ def test_programming_challenge_list_with_invalid_lesson_slug(self): def test_programming_challenge_list_topic_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -174,7 +129,6 @@ def test_programming_challenge_list_topic_context(self): ) kwargs = { "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, "lesson_slug": lesson.slug, } url = reverse("topics:programming_challenges_list", kwargs=kwargs) @@ -184,50 +138,11 @@ def test_programming_challenge_list_topic_context(self): topic ) - def test_programming_challenge_list_unit_plan_context(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - lesson = self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - difficulty = self.test_data.create_difficulty_level(1) - challenge1 = self.test_data.create_programming_challenge(topic, 1, difficulty) - challenge2 = self.test_data.create_programming_challenge(topic, 2, difficulty) - self.test_data.add_challenge_lesson_relationship( - challenge1, - lesson, - 1, - 1 - ) - self.test_data.add_challenge_lesson_relationship( - challenge2, - lesson, - 1, - 2 - ) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - "lesson_slug": lesson.slug, - } - url = reverse("topics:programming_challenges_list", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - response.context["unit_plan"], - unit_plan - ) - def test_programming_challenge_list_lesson_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -248,7 +163,6 @@ def test_programming_challenge_list_lesson_context(self): ) kwargs = { "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, "lesson_slug": lesson.slug, } url = reverse("topics:programming_challenges_list", kwargs=kwargs) @@ -260,11 +174,9 @@ def test_programming_challenge_list_lesson_context(self): def test_programming_challenge_list_challenges_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) @@ -278,7 +190,6 @@ def test_programming_challenge_list_challenges_context(self): ) kwargs = { "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, "lesson_slug": lesson.slug, } url = reverse("topics:programming_challenges_list", kwargs=kwargs) diff --git a/csunplugged/tests/topics/views/test_programming_challenge_view.py b/csunplugged/tests/topics/views/test_programming_challenge_view.py index 494857b73..17bdc34c9 100644 --- a/csunplugged/tests/topics/views/test_programming_challenge_view.py +++ b/csunplugged/tests/topics/views/test_programming_challenge_view.py @@ -88,17 +88,14 @@ def test_programming_challenge_view_topic_context(self): def test_programming_challenge_view_lessons_context(self): topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) age_group_1 = self.test_data.create_age_group(5, 7) lesson1 = self.test_data.create_lesson( topic, - unit_plan, 1, age_group_1 ) lesson2 = self.test_data.create_lesson( topic, - unit_plan, 2, age_group_1 ) diff --git a/csunplugged/tests/topics/views/test_topic_whats_it_all_about_view.py b/csunplugged/tests/topics/views/test_topic_whats_it_all_about_view.py new file mode 100644 index 000000000..eedc183ed --- /dev/null +++ b/csunplugged/tests/topics/views/test_topic_whats_it_all_about_view.py @@ -0,0 +1,55 @@ +from http import HTTPStatus +from django.urls import reverse +from tests.BaseTestWithDB import BaseTestWithDB +from tests.topics.TopicsTestDataGenerator import TopicsTestDataGenerator + + +class TopicWhatsItAllAboutViewTest(BaseTestWithDB): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.language = "en" + self.test_data = TopicsTestDataGenerator() + + def test_topic_whats_it_all_about_view_with_valid_slugs(self): + topic = self.test_data.create_topic(1) + kwargs = { + "topic_slug": topic.slug, + } + url = reverse("topics:topic_whats_it_all_about", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual(HTTPStatus.OK, response.status_code) + + def test_topic_whats_it_all_about_view_with_invalid_topic_slug(self): + self.test_data.create_topic(1) + kwargs = { + "topic_slug": "wrong_slug", + } + url = reverse("topics:topic_whats_it_all_about", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) + + def test_topic_whats_it_all_about_view_topic_context(self): + topic = self.test_data.create_topic(1) + kwargs = { + "topic_slug": topic.slug, + } + url = reverse("topics:topic_whats_it_all_about", kwargs=kwargs) + response = self.client.get(url) + self.assertEqual( + response.context["topic"], + topic + ) + + def test_topic_whats_it_all_about_view_templates(self): + topic = self.test_data.create_topic(1) + kwargs = { + "topic_slug": topic.slug, + } + url = reverse("topics:topic_whats_it_all_about", kwargs=kwargs) + response = self.client.get(url) + template_found = False + for template in response.templates: + if template.name == "topics/topic-whats-it-all-about.html": + template_found = True + self.assertTrue(template_found) diff --git a/csunplugged/tests/topics/views/test_unit_plan_description_view.py b/csunplugged/tests/topics/views/test_unit_plan_description_view.py deleted file mode 100644 index 0f171ce7c..000000000 --- a/csunplugged/tests/topics/views/test_unit_plan_description_view.py +++ /dev/null @@ -1,74 +0,0 @@ -from http import HTTPStatus -from django.urls import reverse -from tests.BaseTestWithDB import BaseTestWithDB -from tests.topics.TopicsTestDataGenerator import TopicsTestDataGenerator - - -class UnitPlanDescriptionViewTest(BaseTestWithDB): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.language = "en" - self.test_data = TopicsTestDataGenerator() - - def test_unit_plan_description_view_with_valid_slugs(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan_description", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.OK, response.status_code) - - def test_unit_plan_description_view_with_invalid_topic_slug(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": "wrong_slug", - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan_description", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) - - def test_unit_plan_description_view_with_invalid_unit_plan_slug(self): - topic = self.test_data.create_topic(1) - self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": "wrong_slug", - } - url = reverse("topics:unit_plan_description", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) - - def test_unit_plan_description_view_topic_context(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan_description", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - response.context["topic"], - topic - ) - - def test_unit_plan_description_view_templates(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan_description", kwargs=kwargs) - response = self.client.get(url) - template_found = False - for template in response.templates: - if template.name == "topics/unit-plan-description.html": - template_found = True - self.assertTrue(template_found) diff --git a/csunplugged/tests/topics/views/test_unit_plan_view.py b/csunplugged/tests/topics/views/test_unit_plan_view.py deleted file mode 100644 index ae1787e6b..000000000 --- a/csunplugged/tests/topics/views/test_unit_plan_view.py +++ /dev/null @@ -1,201 +0,0 @@ -from http import HTTPStatus -from django.urls import reverse -from tests.BaseTestWithDB import BaseTestWithDB -from tests.topics.TopicsTestDataGenerator import TopicsTestDataGenerator - - -class UnitPlanViewTest(BaseTestWithDB): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.language = "en" - self.test_data = TopicsTestDataGenerator() - - def test_unit_plan_view_with_valid_slugs(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.OK, response.status_code) - - def test_unit_plan_view_with_invalid_topic_slug(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": "wrong_slug", - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) - - def test_unit_plan_view_with_invalid_unit_plan_slug(self): - topic = self.test_data.create_topic(1) - self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": "wrong_slug", - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code) - - def test_unit_plan_view_topic_context(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - response.context["topic"], - topic - ) - - def test_unit_plan_view_lessons_context(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - lesson1 = self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - lesson2 = self.test_data.create_lesson( - topic, - unit_plan, - 2, - age_group_1 - ) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - len(response.context["grouped_lessons"]), - 1 - ) - grouped_lessons = response.context["grouped_lessons"] - for (age_group, lessons) in grouped_lessons.items(): - self.assertEqual(repr(age_group), "<AgeGroup: NumericRange(5, 7, '[)')>") - self.assertEqual( - lessons, - [lesson1, lesson2] - ) - - def test_unit_plan_view_lessons_context_order(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - age_group_2 = self.test_data.create_age_group(8, 10) - lesson1 = self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_2 - ) - lesson2 = self.test_data.create_lesson( - topic, - unit_plan, - 2, - age_group_1 - ) - lesson3 = self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - len(response.context["grouped_lessons"]), - 2 - ) - - expected_grouped_lessons = [ - ("<AgeGroup: NumericRange(5, 7, '[)')>", [lesson3, lesson2]), - ("<AgeGroup: NumericRange(8, 10, '[)')>", [lesson1]), - ] - grouped_lessons = response.context["grouped_lessons"] - i = 0 - for (age_group, lessons) in grouped_lessons.items(): - self.assertEqual(repr(age_group), expected_grouped_lessons[i][0]) - self.assertEqual( - lessons, - expected_grouped_lessons[i][1] - ) - i += 1 - - def test_unit_plan_view_lessons_with_programming_exercises(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - age_group_1 = self.test_data.create_age_group(5, 7) - lesson1 = self.test_data.create_lesson( - topic, - unit_plan, - 1, - age_group_1 - ) - lesson2 = self.test_data.create_lesson( - topic, - unit_plan, - 2, - age_group_1 - ) - - # This covers the false true senario in the retrieve_related_programming_challenges method - difficulty = self.test_data.create_difficulty_level(1) - challenge = self.test_data.create_programming_challenge(topic, 1, difficulty) - self.test_data.add_challenge_lesson_relationship( - challenge, - lesson1, - 1, - 1 - ) - - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - self.assertEqual( - len(response.context["grouped_lessons"]), - 1 - ) - grouped_lessons = response.context["grouped_lessons"] - for (age_group, lessons) in grouped_lessons.items(): - self.assertEqual(repr(age_group), "<AgeGroup: NumericRange(5, 7, '[)')>") - self.assertEqual( - lessons, - [lesson1, lesson2] - ) - - def test_unit_plan_view_templates(self): - topic = self.test_data.create_topic(1) - unit_plan = self.test_data.create_unit_plan(topic, 1) - kwargs = { - "topic_slug": topic.slug, - "unit_plan_slug": unit_plan.slug, - } - url = reverse("topics:unit_plan", kwargs=kwargs) - response = self.client.get(url) - template_found = False - for template in response.templates: - if template.name == "topics/unit-plan.html": - template_found = True - self.assertTrue(template_found) diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/de/binary-numbers/ct-links.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/de/binary-numbers/ct-links.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md b/csunplugged/topics/content/de/binary-numbers/lessons/codes-for-letters-using-binary-representation-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md rename to csunplugged/topics/content/de/binary-numbers/lessons/codes-for-letters-using-binary-representation-ct-links.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml b/csunplugged/topics/content/de/binary-numbers/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml rename to csunplugged/topics/content/de/binary-numbers/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md b/csunplugged/topics/content/de/binary-numbers/lessons/codes-for-letters-using-binary-representation.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md rename to csunplugged/topics/content/de/binary-numbers/lessons/codes-for-letters-using-binary-representation.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md rename to csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-ct-links.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md b/csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md rename to csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-junior-ct-links.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml b/csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml rename to csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md b/csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-junior.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md rename to csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-junior.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml b/csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml rename to csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work.md b/csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work.md similarity index 100% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/lessons/how-binary-digits-work.md rename to csunplugged/topics/content/de/binary-numbers/lessons/how-binary-digits-work.md diff --git a/csunplugged/topics/content/de/binary-numbers/unit-plan/unit-plan.md b/csunplugged/topics/content/de/binary-numbers/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/de/binary-numbers/unit-plan/unit-plan.md rename to csunplugged/topics/content/de/binary-numbers/whats-it-all-about.md index d66b0e33a..6fe0a6a5a 100644 --- a/csunplugged/topics/content/de/binary-numbers/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/de/binary-numbers/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Binärzahlen - Computer verwenden heutzutage Binärzahlen um Daten darzustellen – deshalb werden sie auch digitale Systeme genannt. Die einfachste und gebräuchlichste Art und Weise, Zahlen darzustellen, ist das binäre Zahlensystem, das aus nur zwei Ziffern besteht (normalerweise als 0 und 1 geschrieben). Es wird binär genannt, da es nur zwei verschiedene Ziffern bzw. Zustände gibt. {panel type="video"} diff --git a/csunplugged/topics/content/de/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md b/csunplugged/topics/content/de/error-detection-and-correction/lessons/parity-magic-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md rename to csunplugged/topics/content/de/error-detection-and-correction/lessons/parity-magic-ct-links.md diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/de/kidbots/ct-links.md similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/de/kidbots/ct-links.md diff --git a/csunplugged/topics/content/de/kidbots/curriculum-integrations/finding-shapes.md b/csunplugged/topics/content/de/kidbots/curriculum-integrations/finding-shapes.md index e7d414e0e..2386ec6c6 100644 --- a/csunplugged/topics/content/de/kidbots/curriculum-integrations/finding-shapes.md +++ b/csunplugged/topics/content/de/kidbots/curriculum-integrations/finding-shapes.md @@ -1,6 +1,6 @@ # Formen aufspüren -Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') verwendeten Struktur und Ressourcen können wir auch Geometrie in die Kidbots-Aktivitäten integrieren. +Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'rescue-mission') verwendeten Struktur und Ressourcen können wir auch Geometrie in die Kidbots-Aktivitäten integrieren. ## Lektionsaktivitäten @@ -20,4 +20,4 @@ Platzieren Sie Hindernisse auf dem Gitterfeld, um den Pfad komplexer zu gestalte ## Lektionsbetrachtung -Welche Schüler können visualisieren, was programmiert werden muss? \ No newline at end of file +Welche Schüler können visualisieren, was programmiert werden muss? diff --git a/csunplugged/topics/content/de/kidbots/curriculum-integrations/move-to-a-number.md b/csunplugged/topics/content/de/kidbots/curriculum-integrations/move-to-a-number.md index 786bbb96c..2178d45f0 100644 --- a/csunplugged/topics/content/de/kidbots/curriculum-integrations/move-to-a-number.md +++ b/csunplugged/topics/content/de/kidbots/curriculum-integrations/move-to-a-number.md @@ -1,6 +1,6 @@ # Zahlen ansteuern -Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') verwendeten Struktur und Ressourcen können wir auch Rechnen in die Kidbots-Aktivitäten integrieren. +Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'rescue-mission') verwendeten Struktur und Ressourcen können wir auch Rechnen in die Kidbots-Aktivitäten integrieren. ## Lektionsaktivitäten @@ -26,4 +26,4 @@ Programmiert das Objekt, die Zahl 6 zu bilden, indem es erst zur Zahl 3 und dann ## Lektionsbetrachtung -Welche Schüler können visualisieren, was programmiert werden muss? \ No newline at end of file +Welche Schüler können visualisieren, was programmiert werden muss? diff --git a/csunplugged/topics/content/de/kidbots/curriculum-integrations/moving-in-a-shape.md b/csunplugged/topics/content/de/kidbots/curriculum-integrations/moving-in-a-shape.md index 1d26657aa..4a6da3608 100644 --- a/csunplugged/topics/content/de/kidbots/curriculum-integrations/moving-in-a-shape.md +++ b/csunplugged/topics/content/de/kidbots/curriculum-integrations/moving-in-a-shape.md @@ -1,6 +1,6 @@ # Eine Form nachbilden -Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') verwendeten Struktur und Ressourcen können wir auch Geometrie in die Kidbots-Aktivitäten integrieren. +Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'rescue-mission') verwendeten Struktur und Ressourcen können wir auch Geometrie in die Kidbots-Aktivitäten integrieren. ## Schlüsselfragen @@ -24,4 +24,4 @@ Sie können die Schüler auch dazu auffordern, andere einfache geometrische Form ## Lektionsbetrachtung -Welche Schüler können visualisieren, was programmiert werden muss? \ No newline at end of file +Welche Schüler können visualisieren, was programmiert werden muss? diff --git a/csunplugged/topics/content/de/kidbots/curriculum-integrations/storytelling.md b/csunplugged/topics/content/de/kidbots/curriculum-integrations/storytelling.md index 25071674f..72fa09753 100644 --- a/csunplugged/topics/content/de/kidbots/curriculum-integrations/storytelling.md +++ b/csunplugged/topics/content/de/kidbots/curriculum-integrations/storytelling.md @@ -1,6 +1,6 @@ # Geschichtenerzählen -Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') verwendeten Struktur und Ressourcen können wir mit den Kidbots auch eine Geschichte nacherzählen. +Anhand der in der Lektion [Rettungsaktion]('topics:lesson' 'kidbots' 'rescue-mission') verwendeten Struktur und Ressourcen können wir mit den Kidbots auch eine Geschichte nacherzählen. ## Schlüsselfragen @@ -44,4 +44,4 @@ Denkt euch anhand eines Spielzeugs und eines Hindernisses eure eigene Geschichte Anhand der Möglichkeit, sich eigene Geschichten auszudenken, werden Schülern durch integratives Lernen die Strukturen des kreativen Schreibens und des Programmierens vermittelt. -{panel end} \ No newline at end of file +{panel end} diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md b/csunplugged/topics/content/de/kidbots/lessons/fitness-unplugged-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md rename to csunplugged/topics/content/de/kidbots/lessons/fitness-unplugged-ct-links.md diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml b/csunplugged/topics/content/de/kidbots/lessons/fitness-unplugged-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml rename to csunplugged/topics/content/de/kidbots/lessons/fitness-unplugged-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/lessons/fitness-unplugged.md b/csunplugged/topics/content/de/kidbots/lessons/fitness-unplugged.md similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/lessons/fitness-unplugged.md rename to csunplugged/topics/content/de/kidbots/lessons/fitness-unplugged.md diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/lessons/rescue-mission-ct-links.md b/csunplugged/topics/content/de/kidbots/lessons/rescue-mission-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/lessons/rescue-mission-ct-links.md rename to csunplugged/topics/content/de/kidbots/lessons/rescue-mission-ct-links.md diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml b/csunplugged/topics/content/de/kidbots/lessons/rescue-mission-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml rename to csunplugged/topics/content/de/kidbots/lessons/rescue-mission-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/lessons/rescue-mission.md b/csunplugged/topics/content/de/kidbots/lessons/rescue-mission.md similarity index 100% rename from csunplugged/topics/content/de/kidbots/unit-plan/lessons/rescue-mission.md rename to csunplugged/topics/content/de/kidbots/lessons/rescue-mission.md diff --git a/csunplugged/topics/content/de/kidbots/unit-plan/unit-plan.md b/csunplugged/topics/content/de/kidbots/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/de/kidbots/unit-plan/unit-plan.md rename to csunplugged/topics/content/de/kidbots/whats-it-all-about.md index 642e98142..7658a7a11 100644 --- a/csunplugged/topics/content/de/kidbots/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/de/kidbots/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Kidbots - {panel type="video"} # Unterrichtsbeispiel ansehen @@ -48,4 +46,4 @@ Sequentielle Anweisungen erteilen zu können, gut mit anderen zusammenzuarbeiten - Welche Schüler sind bei den Aktivitäten sehr detailliert vorgegangen? -- Wie würde ich das Unterrichten dieser Einheit anders gestalten? \ No newline at end of file +- Wie würde ich das Unterrichten dieser Einheit anders gestalten? diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/de/sorting-networks/ct-links.md similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/de/sorting-networks/ct-links.md diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md b/csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md rename to csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml rename to csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md b/csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior.md similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md rename to csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior.md diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml rename to csunplugged/topics/content/de/sorting-networks/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md b/csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md rename to csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml rename to csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md b/csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md rename to csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml rename to csunplugged/topics/content/de/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml diff --git a/csunplugged/topics/content/de/sorting-networks/unit-plan/unit-plan.md b/csunplugged/topics/content/de/sorting-networks/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/de/sorting-networks/unit-plan/unit-plan.md rename to csunplugged/topics/content/de/sorting-networks/whats-it-all-about.md index 7c888c749..21f913549 100644 --- a/csunplugged/topics/content/de/sorting-networks/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/de/sorting-networks/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Sortiernetzwerke - {panel type="video"} # Unterrichtsbeispiel ansehen @@ -77,4 +75,4 @@ Eine zurzeit populäres Modell der parallelen Verarbeitung ist „MapReduce“, - Was war hinsichtlich der durch das Unterrichten dieser Einheit erzielten Lernerfolge am überraschendsten? - Welche Schüler sind beim Durcharbeiten der Aktivitäten sehr systematisch vorgegangen? - Welche Schüler sind bei den Aktivitäten sehr detailliert vorgegangen? -- Wie würde ich das Unterrichten dieser Einheit anders gestalten? \ No newline at end of file +- Wie würde ich das Unterrichten dieser Einheit anders gestalten? diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/binary-numbers/ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md b/csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md b/csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md b/csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md rename to csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml b/csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml rename to csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md b/csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md rename to csunplugged/topics/content/en/binary-numbers/lessons/codes-for-letters-using-binary-representation.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md b/csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-junior-ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md b/csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-junior.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md rename to csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-junior.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml b/csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml rename to csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work.md b/csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/how-binary-digits-work.md rename to csunplugged/topics/content/en/binary-numbers/lessons/how-binary-digits-work.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md b/csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md b/csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md rename to csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md b/csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md rename to csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml b/csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml rename to csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems.md b/csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems.md similarity index 100% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems.md rename to csunplugged/topics/content/en/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems.md diff --git a/csunplugged/topics/content/en/binary-numbers/unit-plan/unit-plan.md b/csunplugged/topics/content/en/binary-numbers/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/en/binary-numbers/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/binary-numbers/whats-it-all-about.md index d4876ec0f..a991bd4a2 100644 --- a/csunplugged/topics/content/en/binary-numbers/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/binary-numbers/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Binary numbers - Computers today use digits to represent information - that's why they're called digital systems. The simplest and most common way to represent digits is the binary number system, with just two digits (usually written as 0 and 1). It is called binary because there are only two different digits used, or two states. diff --git a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/data-structures-for-searching/ct-links.md similarity index 97% rename from csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/en/data-structures-for-searching/ct-links.md index 7ba99377f..cc9393f41 100644 --- a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan-ct-links.md +++ b/csunplugged/topics/content/en/data-structures-for-searching/ct-links.md @@ -53,7 +53,7 @@ There are many patterns (some algorithmic, some mathematical, and some abstract We have included several in our explanations, but it’s possible that students will come across more as well! Hashing, and using hash functions, is a strategy that appears in many different areas in Computer Science. Along with searching, it is common in error detection and correction, in cryptography, and in security. -In fact, if you have learnt about check digits in the [Error Detection and Correction unit]('topics:unit_plan' 'error-detection-and-correction' 'unit-plan'), then you have already used a simple hash function - the formula we use to calculate a check digit is a hash function. +In fact, if you have learnt about check digits in the [Error Detection and Correction unit]('topics:topic' 'error-detection-and-correction'), then you have already used a simple hash function - the formula we use to calculate a check digit is a hash function. When we use hash tables for searching we use hash functions to locate data, and in these other areas it is used to validate data and check it is correct. Some of the hash functions used in this unit, for specific sized hash tables, follow a pattern. This pattern can be used to make an algorithm that means we can apply these hash functions to hash tables of any size. diff --git a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/lessons/binary-search-trees-ct-links.md b/csunplugged/topics/content/en/data-structures-for-searching/lessons/binary-search-trees-ct-links.md similarity index 99% rename from csunplugged/topics/content/en/data-structures-for-searching/unit-plan/lessons/binary-search-trees-ct-links.md rename to csunplugged/topics/content/en/data-structures-for-searching/lessons/binary-search-trees-ct-links.md index 169f5b7b0..6967fc587 100644 --- a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/lessons/binary-search-trees-ct-links.md +++ b/csunplugged/topics/content/en/data-structures-for-searching/lessons/binary-search-trees-ct-links.md @@ -57,7 +57,7 @@ Students who have previously used sorting networks will probably notice many sim As with a sorting network, at each node a comparison is made between two numbers, and the result of this comparison tells you where to go next. The interesting thing to observe here is that using just one very simple comparison operation (in different ways), we are able to both sort data into order, and search through it. Another connection between these two activities is the type of data that can be used - the data must have something called a "transitive relation". -This is further explained under logic, and also in the [Sorting networks unit plan]('topics:unit_plan' 'sorting-networks' 'unit-plan') under logic. +This is further explained under logic, and also in the [Sorting networks topic]('topics:topic' 'sorting-networks') under logic. Because it is based on a simple comparison step, any type of data that can be sorted using a sorting network can also be placed into a binary search tree. As binary search trees are abstract data structures, they can be generalised for use with any type of data that can be put into some kind of order. The other connection students will likely make is between binary search trees, and binary search! While the names are almost the same, the actual pattern they both follow is subtly different, although they both make use of the divide and conquer strategy. diff --git a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/lessons/binary-search-trees.md b/csunplugged/topics/content/en/data-structures-for-searching/lessons/binary-search-trees.md similarity index 99% rename from csunplugged/topics/content/en/data-structures-for-searching/unit-plan/lessons/binary-search-trees.md rename to csunplugged/topics/content/en/data-structures-for-searching/lessons/binary-search-trees.md index 35cf5fbec..4cf6f5c5c 100644 --- a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/lessons/binary-search-trees.md +++ b/csunplugged/topics/content/en/data-structures-for-searching/lessons/binary-search-trees.md @@ -2,7 +2,7 @@ ## Preparatory knowledge -- [Binary searching and sequential searching lessons]('topics:unit_plan' 'searching-algorithms' 'unit-plan'). +- [Binary searching and sequential searching lessons]('topics:topic' 'searching-algorithms'). **Note:** This activity is about Binary Search Trees, or BSTs. There is a previous activity about Binary Search, which uses a sorted list of values. diff --git a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan.md b/csunplugged/topics/content/en/data-structures-for-searching/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/data-structures-for-searching/whats-it-all-about.md index d74cb1042..0352675c5 100644 --- a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/data-structures-for-searching/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Data structures for searching - {image file-path="img/topics/data-structures-for-searching-search-icon.png" alt="Searching through items."} The previous lessons in the Searching algorithms unit have shown that the way we organise data can affect which algorithms we can use for searching through it. diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/error-detection-and-correction/ct-links.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/en/error-detection-and-correction/ct-links.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md b/csunplugged/topics/content/en/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md index ccf1150d8..446c29aa5 100644 --- a/csunplugged/topics/content/en/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md +++ b/csunplugged/topics/content/en/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md @@ -26,7 +26,7 @@ We've given some links to Wikipedia below to get you started, but make sure you Some people to research about are: -- Richard Hamming (very early ideas in error control) [https://en.wikipedia.org/wiki/Richard_Hamming](https://en.wikipedia.org/wiki/Richard_Hamming) -- Claude Shannon (American mathematician, juggler, and unicyclist - you should check out some of the interesting and entertaining gadgets that he invented) [https://en.wikipedia.org/wiki/Claude_Shannon](https://en.wikipedia.org/wiki/Claude_Shannon) -- Hans Peter Luhn (developed a checksum algorithm that is widely used, especially in bank and credit card numbers) [https://en.wikipedia.org/wiki/Hans_Peter_Luhn](https://en.wikipedia.org/wiki/Hans_Peter_Luhn) -- Irving S. Reed and Gustave Solomon (developed one of the most widely used error control codes, used on most digital devices) [https://en.wikipedia.org/wiki/Irving_S._Reed https://en.wikipedia.org/wiki/Gustave_Solomon](https://en.wikipedia.org/wiki/Irving_S._Reed https://en.wikipedia.org/wiki/Gustave_Solomon) +- [Richard Hamming](https://en.wikipedia.org/wiki/Richard_Hamming) (very early ideas in error control) +- [Claude Shannon](https://en.wikipedia.org/wiki/Claude_Shannon) (American mathematician, juggler, and unicyclist - you should check out some of the interesting and entertaining gadgets that he invented) +- [Hans Peter Luhn](https://en.wikipedia.org/wiki/Hans_Peter_Luhn) (developed a checksum algorithm that is widely used, especially in bank and credit card numbers) +- [Irving S. Reed](https://en.wikipedia.org/wiki/Irving_S._Reed) and [Gustave Solomon](https://en.wikipedia.org/wiki/Gustave_Solomon) (developed one of the most widely used error control codes, used on most digital devices) diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-ct-links.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-junior-ct-links.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-junior.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-junior.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml b/csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/parity-magic.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/parity-magic.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-ct-links.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-ct-links.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits-ct-links.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-programming.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits-programming.md similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-programming.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits-programming.md diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-resource-descriptions.yaml b/csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-resource-descriptions.yaml rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits.md b/csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits.md similarity index 98% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits.md rename to csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits.md index 277d9bf27..f63558cfd 100644 --- a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/lessons/product-code-check-digits.md +++ b/csunplugged/topics/content/en/error-detection-and-correction/lessons/product-code-check-digits.md @@ -24,7 +24,7 @@ A demonstration of lesson two ("Product Code Check Digits") being taught is avai # Preparatory knowledge -It is helpful, but not essential, for students to have done the [lesson on the Modulo operator]('topics:lesson' 'unplugged-programming' 'numeracy-unit-plan' 'modulo') before doing this lesson. +It is helpful, but not essential, for students to have done the [lesson on the Modulo operator]('topics:lesson' 'kidbots' 'modulo') before doing this lesson. {panel end} diff --git a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/unit-plan.md b/csunplugged/topics/content/en/error-detection-and-correction/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/en/error-detection-and-correction/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/error-detection-and-correction/whats-it-all-about.md index c0456f2be..520a05813 100644 --- a/csunplugged/topics/content/en/error-detection-and-correction/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/error-detection-and-correction/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Error detection and correction - {panel type="video"} # See teaching this in action diff --git a/csunplugged/topics/content/en/image-representation/image-representation.md b/csunplugged/topics/content/en/image-representation/image-representation.md index dc339a78e..d6a26a1f6 100644 --- a/csunplugged/topics/content/en/image-representation/image-representation.md +++ b/csunplugged/topics/content/en/image-representation/image-representation.md @@ -5,4 +5,4 @@ Digital devices store everything using digits, so how are these digits used to c How do these devices convert a long list of digits into photos, video game graphics, and web pages? This unit will explore how we can represent pictures and colours using binary digits, how these are displayed using pixels on a screen, and why the way we represent these images changes what we see. -We recommend completing Lesson 1 (for the relevant age group) of the [Binary Numbers unit]('topics:unit_plan' 'binary-numbers' 'unit-plan') before beginning this unit. +We recommend completing Lesson 1 (for the relevant age group) of the [Binary Numbers lessons]('topics:topic' 'binary-numbers') before beginning this unit. diff --git a/csunplugged/topics/content/en/image-representation/unit-plan/lessons/colour-by-numbers.md b/csunplugged/topics/content/en/image-representation/lessons/colour-by-numbers.md similarity index 100% rename from csunplugged/topics/content/en/image-representation/unit-plan/lessons/colour-by-numbers.md rename to csunplugged/topics/content/en/image-representation/lessons/colour-by-numbers.md diff --git a/csunplugged/topics/content/en/image-representation/unit-plan/unit-plan.md b/csunplugged/topics/content/en/image-representation/whats-it-all-about.md similarity index 98% rename from csunplugged/topics/content/en/image-representation/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/image-representation/whats-it-all-about.md index f82911442..c6edab830 100644 --- a/csunplugged/topics/content/en/image-representation/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/image-representation/whats-it-all-about.md @@ -1,10 +1,8 @@ -# Image Representation - {panel type="text"} # Preparatory knowledge -Students should have completed Lesson 1 (for the relevant age group) of the [Binary Numbers unit]('topics:unit_plan' 'binary-numbers' 'unit-plan') before beginning this unit. +Students should have completed Lesson 1 (for the relevant age group) of the [Binary Numbers topic]('topics:topic' 'binary-numbers') before beginning this unit. {panel end} diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/kidbots/ct-links.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/en/kidbots/ct-links.md diff --git a/csunplugged/topics/content/en/kidbots/curriculum-integrations/finding-shapes.md b/csunplugged/topics/content/en/kidbots/curriculum-integrations/finding-shapes.md index cf1d68597..ce1ae69d8 100644 --- a/csunplugged/topics/content/en/kidbots/curriculum-integrations/finding-shapes.md +++ b/csunplugged/topics/content/en/kidbots/curriculum-integrations/finding-shapes.md @@ -1,6 +1,6 @@ # Finding shapes -Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') lesson, we can integrate geometry with Kidbots. +Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'rescue-mission') lesson, we can integrate geometry with Kidbots. ## Lesson activities diff --git a/csunplugged/topics/content/en/kidbots/curriculum-integrations/move-to-a-number.md b/csunplugged/topics/content/en/kidbots/curriculum-integrations/move-to-a-number.md index 5e866385e..318f5dcf2 100644 --- a/csunplugged/topics/content/en/kidbots/curriculum-integrations/move-to-a-number.md +++ b/csunplugged/topics/content/en/kidbots/curriculum-integrations/move-to-a-number.md @@ -1,6 +1,6 @@ # Move to a number -Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') lesson, we can integrate numeracy with Kidbots. +Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'rescue-mission') lesson, we can integrate numeracy with Kidbots. ## Lesson activity diff --git a/csunplugged/topics/content/en/kidbots/curriculum-integrations/moving-in-a-shape.md b/csunplugged/topics/content/en/kidbots/curriculum-integrations/moving-in-a-shape.md index 17433116a..de6511e76 100644 --- a/csunplugged/topics/content/en/kidbots/curriculum-integrations/moving-in-a-shape.md +++ b/csunplugged/topics/content/en/kidbots/curriculum-integrations/moving-in-a-shape.md @@ -1,6 +1,6 @@ # Moving in a shape -Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') lesson, we can integrate geometry with Kidbots. +Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'rescue-mission') lesson, we can integrate geometry with Kidbots. ## Key questions diff --git a/csunplugged/topics/content/en/kidbots/curriculum-integrations/storytelling.md b/csunplugged/topics/content/en/kidbots/curriculum-integrations/storytelling.md index b8d905d20..083286f18 100644 --- a/csunplugged/topics/content/en/kidbots/curriculum-integrations/storytelling.md +++ b/csunplugged/topics/content/en/kidbots/curriculum-integrations/storytelling.md @@ -1,6 +1,6 @@ # Storytelling -Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'unit-plan' 'rescue-mission') lesson, we can retell a story using Kidbots. +Using the same structure and resources as the [Rescue Mission]('topics:lesson' 'kidbots' 'rescue-mission') lesson, we can retell a story using Kidbots. ## Key questions diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md b/csunplugged/topics/content/en/kidbots/lessons/fitness-unplugged-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md rename to csunplugged/topics/content/en/kidbots/lessons/fitness-unplugged-ct-links.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml b/csunplugged/topics/content/en/kidbots/lessons/fitness-unplugged-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml rename to csunplugged/topics/content/en/kidbots/lessons/fitness-unplugged-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/fitness-unplugged.md b/csunplugged/topics/content/en/kidbots/lessons/fitness-unplugged.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/fitness-unplugged.md rename to csunplugged/topics/content/en/kidbots/lessons/fitness-unplugged.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo-ct-links.md b/csunplugged/topics/content/en/kidbots/lessons/modulo-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo-ct-links.md rename to csunplugged/topics/content/en/kidbots/lessons/modulo-ct-links.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo-programming.md b/csunplugged/topics/content/en/kidbots/lessons/modulo-programming.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo-programming.md rename to csunplugged/topics/content/en/kidbots/lessons/modulo-programming.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo-resource-descriptions.yaml b/csunplugged/topics/content/en/kidbots/lessons/modulo-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo-resource-descriptions.yaml rename to csunplugged/topics/content/en/kidbots/lessons/modulo-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo.md b/csunplugged/topics/content/en/kidbots/lessons/modulo.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/modulo.md rename to csunplugged/topics/content/en/kidbots/lessons/modulo.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/rescue-mission-ct-links.md b/csunplugged/topics/content/en/kidbots/lessons/rescue-mission-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/rescue-mission-ct-links.md rename to csunplugged/topics/content/en/kidbots/lessons/rescue-mission-ct-links.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml b/csunplugged/topics/content/en/kidbots/lessons/rescue-mission-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml rename to csunplugged/topics/content/en/kidbots/lessons/rescue-mission-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/rescue-mission.md b/csunplugged/topics/content/en/kidbots/lessons/rescue-mission.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/rescue-mission.md rename to csunplugged/topics/content/en/kidbots/lessons/rescue-mission.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-ct-links.md b/csunplugged/topics/content/en/kidbots/lessons/sending-a-rocket-to-mars-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-ct-links.md rename to csunplugged/topics/content/en/kidbots/lessons/sending-a-rocket-to-mars-ct-links.md diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml b/csunplugged/topics/content/en/kidbots/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml rename to csunplugged/topics/content/en/kidbots/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/lessons/sending-a-rocket-to-mars.md b/csunplugged/topics/content/en/kidbots/lessons/sending-a-rocket-to-mars.md similarity index 100% rename from csunplugged/topics/content/en/kidbots/unit-plan/lessons/sending-a-rocket-to-mars.md rename to csunplugged/topics/content/en/kidbots/lessons/sending-a-rocket-to-mars.md diff --git a/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-expected.md b/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-expected.md index 567ee45af..fe4c73105 100644 --- a/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-expected.md +++ b/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-expected.md @@ -21,7 +21,7 @@ set [new month v] to (((original month) + (months to add)) mod (12)) ``` ```scratch -ask [Type in a number betweem 1 and 12 for a month of the year:] and wait +ask [Type in a number between 1 and 12 for a month of the year:] and wait ask [Enter the number of months to add to the month:] and wait ``` diff --git a/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-hints.md b/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-hints.md index 53d147da5..586b6e335 100644 --- a/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-hints.md +++ b/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-hints.md @@ -1,4 +1,4 @@ - Make variables called “original month” and “months to add” and set their values to the inputs entered by the user. Make a variable called “new month” and set its value to the sum of the “original month” and “months to add” modulo 12. - Make a list called “months” and add the 12 months; January, February, March, April, May, June, July, August, September, October, November and December to your list (list of length 12). -- Display the output as December, If the value of “new month” is equal to 0 otherwise display the month at the index “new month” as the output. +- Display the output as December if the value of “new month” is equal to 0 otherwise display the month at the index “new month” as the output. diff --git a/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-solution.md b/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-solution.md index ccd6de64c..15ee0ee57 100644 --- a/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-solution.md +++ b/csunplugged/topics/content/en/kidbots/programming-challenges/modulo-add-months/scratch-solution.md @@ -1,7 +1,7 @@ ```scratch when green flag clicked set [new month v] to [0] -ask [Type in a number betweem 1 and 12 for a month of the year:] and wait +ask [Type in a number between 1 and 12 for a month of the year:] and wait set [original month v] to (answer) ask [Enter the number of months to add to the month:] and wait set [months to add v] to (answer) diff --git a/csunplugged/topics/content/en/kidbots/unit-plan/unit-plan.md b/csunplugged/topics/content/en/kidbots/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/en/kidbots/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/kidbots/whats-it-all-about.md index fa889ca00..5435faab6 100644 --- a/csunplugged/topics/content/en/kidbots/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/kidbots/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Kidbots - {panel type="video"} # See teaching this in action diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-junior-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-junior-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-junior-ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-junior.md b/csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-junior.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-junior.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-junior.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-resource-descriptions.yaml b/csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer-resource-descriptions.yaml rename to csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer.md b/csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/divide-and-conquer.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/divide-and-conquer.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-junior-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-junior-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-junior-ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-junior.md b/csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-junior.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-junior.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-junior.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-resource-descriptions.yaml b/csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses-resource-descriptions.yaml rename to csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses.md b/csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/how-many-guesses.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/how-many-guesses.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-sorted-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-sorted-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-sorted-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-sorted-ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-sorted-resource-descriptions.yaml b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-sorted-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-sorted-resource-descriptions.yaml rename to csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-sorted-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-sorted.md b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-sorted.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-sorted.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-sorted.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted-ct-links.md b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted-ct-links.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted-ct-links.md diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted-resource-descriptions.yaml b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted-resource-descriptions.yaml rename to csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted.md b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted.md similarity index 96% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted.md rename to csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted.md index 5ee7d4c4c..94ee77c24 100644 --- a/csunplugged/topics/content/en/searching-algorithms/unit-plan/lessons/the-great-number-hunt-unsorted.md +++ b/csunplugged/topics/content/en/searching-algorithms/lessons/the-great-number-hunt-unsorted.md @@ -27,7 +27,7 @@ Guide students through how the game will work by following the instructions on t # Teaching observations If students make the connection that the real money serial could have a check digit, they would be correct in that what they learnt in the error detection and correction unit would apply in knowing if the serial number represents real money or fake money. -Here’s a link to the [Error Detection and Correction unit]('topics:unit_plan' 'error-detection-and-correction' 'unit-plan') for more information. +Here’s a link to the [Error Detection and Correction topic]('topics:topic' 'error-detection-and-correction') for more information. However, this isn't the purpose of this exercise; the goal is to find a number in the number boxes. {panel end} diff --git a/csunplugged/topics/content/en/searching-algorithms/unit-plan/unit-plan.md b/csunplugged/topics/content/en/searching-algorithms/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/en/searching-algorithms/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/searching-algorithms/whats-it-all-about.md index 84266ae5d..5dd411376 100644 --- a/csunplugged/topics/content/en/searching-algorithms/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/searching-algorithms/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Sequential and binary search - {comment Video 1: Sequential search: Random numbered cards with pictures on them. (using numbers from 0 - 31) - SETTING: As if it’s a maths group in a class setting} {comment Video 2: Binary search using numbered cards with pictures on them ranging from 0 - 999.} diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/sorting-networks/ct-links.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/en/sorting-networks/ct-links.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-ct-links.md b/csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-ct-links.md rename to csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-ct-links.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md b/csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md rename to csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md b/csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md rename to csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml rename to csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network.md b/csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network.md rename to csunplugged/topics/content/en/sorting-networks/lessons/investigating-variations-using-the-sorting-network.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md b/csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md rename to csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md b/csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md rename to csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml rename to csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md b/csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md rename to csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml rename to csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network.md b/csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network.md similarity index 100% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network.md rename to csunplugged/topics/content/en/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network.md diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan.md b/csunplugged/topics/content/en/sorting-networks/whats-it-all-about.md similarity index 99% rename from csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan.md rename to csunplugged/topics/content/en/sorting-networks/whats-it-all-about.md index c393b4e13..778e5099c 100644 --- a/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/sorting-networks/whats-it-all-about.md @@ -1,5 +1,3 @@ -# Sorting networks - {panel type="video"} # See teaching this in action diff --git a/csunplugged/topics/content/es/binary-numbers/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/es/binary-numbers/ct-links.md similarity index 100% rename from csunplugged/topics/content/es/binary-numbers/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/es/binary-numbers/ct-links.md diff --git a/csunplugged/topics/content/es/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/es/binary-numbers/lessons/how-binary-digits-work-ct-links.md similarity index 100% rename from csunplugged/topics/content/es/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md rename to csunplugged/topics/content/es/binary-numbers/lessons/how-binary-digits-work-ct-links.md diff --git a/csunplugged/topics/content/es/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml b/csunplugged/topics/content/es/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/es/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml rename to csunplugged/topics/content/es/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml diff --git a/csunplugged/topics/content/es/binary-numbers/unit-plan/lessons/how-binary-digits-work.md b/csunplugged/topics/content/es/binary-numbers/lessons/how-binary-digits-work.md similarity index 100% rename from csunplugged/topics/content/es/binary-numbers/unit-plan/lessons/how-binary-digits-work.md rename to csunplugged/topics/content/es/binary-numbers/lessons/how-binary-digits-work.md diff --git a/csunplugged/topics/content/es/binary-numbers/unit-plan/unit-plan.md b/csunplugged/topics/content/es/binary-numbers/whats-it-all-about.md similarity index 100% rename from csunplugged/topics/content/es/binary-numbers/unit-plan/unit-plan.md rename to csunplugged/topics/content/es/binary-numbers/whats-it-all-about.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md b/csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-ct-links.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-ct-links.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md b/csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml b/csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml rename to csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md b/csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml b/csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml rename to csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md b/csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/codes-for-letters-using-binary-representation.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-ct-links.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-ct-links.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md b/csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-junior-ct-links.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml b/csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml rename to csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md b/csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-junior.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-junior.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml b/csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml rename to csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work.md b/csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/how-binary-digits-work.md rename to csunplugged/topics/content/fr/binary-numbers/lessons/how-binary-digits-work.md diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml b/csunplugged/topics/content/fr/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml rename to csunplugged/topics/content/fr/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml b/csunplugged/topics/content/fr/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml rename to csunplugged/topics/content/fr/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/binary-numbers/programming-challenges/binary-cards-as-dots/binary-cards-as-dots.md b/csunplugged/topics/content/fr/binary-numbers/programming-challenges/binary-cards-as-dots/binary-cards-as-dots.md new file mode 100644 index 000000000..440a83e56 --- /dev/null +++ b/csunplugged/topics/content/fr/binary-numbers/programming-challenges/binary-cards-as-dots/binary-cards-as-dots.md @@ -0,0 +1,5 @@ +# Afficher des cartes binaires avec des points représentant un nombre entre 0 et 31 + +## Consigne : + +Écrivez un programme qui demande à l'utilisateur d'entrer un nombre décimal entre 0 et 31 en entrée et affiche les cartes binaires (5 cartes noires ou blanches) représentant le nombre en binaire en sortie. \ No newline at end of file diff --git a/csunplugged/topics/content/fr/binary-numbers/unit-plan/unit-plan.md b/csunplugged/topics/content/fr/binary-numbers/whats-it-all-about.md similarity index 100% rename from csunplugged/topics/content/fr/binary-numbers/unit-plan/unit-plan.md rename to csunplugged/topics/content/fr/binary-numbers/whats-it-all-about.md diff --git a/csunplugged/topics/content/fr/curriculum-areas.yaml b/csunplugged/topics/content/fr/curriculum-areas.yaml index e4d673197..151d229e0 100644 --- a/csunplugged/topics/content/fr/curriculum-areas.yaml +++ b/csunplugged/topics/content/fr/curriculum-areas.yaml @@ -8,7 +8,7 @@ decomposition: abstraction: name: Abstraction generalising-and-patterns: - name: Généralisation et modèles + name: Généralisation et motifs logic: name: Logique evaluation: @@ -28,13 +28,13 @@ geometry: measurement: name: Mesures numeracy: - name: Innumérisme + name: Numératie algebra: name: Algèbre statistics: name: Statistiques literacy: - name: Illétrisme + name: Littératie reading: name: Lecture writing: @@ -52,7 +52,7 @@ art: language: name: Apprentissage des langues performing-arts: - name: Arts du spectacle + name: Arts de la scène music: name: Musique dance: @@ -62,7 +62,7 @@ drama: physical-education: name: Éducation physique fitness: - name: Fitness + name: Motricité sport: name: Sport health: diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/instructional-writing.md b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/instructional-writing.md new file mode 100644 index 000000000..54fe217cc --- /dev/null +++ b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/instructional-writing.md @@ -0,0 +1,4 @@ +# Rédaction d'instructions + +- Écrivez les instructions pour jouer au jeu des cartes de parité pour que d'autres puissent y jouer. +- Écrivez des les instructions sur la façon d'ajouter un chiffre de contrôle pour une code barre de 12 chiffres afin que quelqu'un d'autre puisse le faire. \ No newline at end of file diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/quick-card-flip-magic.md b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/quick-card-flip-magic.md new file mode 100644 index 000000000..69ac25d89 --- /dev/null +++ b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/quick-card-flip-magic.md @@ -0,0 +1,37 @@ +# Le tour de magie du retournement rapide de carte + +{image file-path="img/topics/kids-parity-trick.jpg" alt="Enfants utilisant l'astuce de la parité."} + +*Chaque donnée que nous stockons et transmettons possède des bits supplémentaires afin d'éviter les erreurs. Pouvez vous trouver l'erreur et la corriger ?* + +### Équipement : + +Au moins 36, voire 100 cartes ou plus qui sont noires d'un côté, et blanches de l'autre, d'environ 20mm par 20mm (ou n'importe quelle paire de couleurs facilement distinguables) Un espace libre au sol ou une table autour desquels les élèves peuvent se tenir + +### Préparation : + +Choisissez un "maitre magicien". Ce sera le maitre du jeu. Cette personne sera changée à la fin de chaque tour. + +### Instructions : + +1. Le maitre magicien pose les cartes au sol, dont les cartes de parité dans la dernière ligne et la dernière colonne, en utilisant un membre du groupe comme assistant. La grille peut être de n'importe quelle taille ; au minimum 6 par 6, mais la taille peut aller jusqu'à 10 par 10 ou plus pour rendre le défi plus compliqué. La grille ne doit pas nécessairement être carrée (par exemple 9 par 8 fonctionne), mais l'effet est meilleur quand la grille est proche d'un carré. + +2. Le maitre magicien demande à tout le monde de fermer les yeux et de se retourner, sauf lui et son assistant. + +3. Le magicien demande à l'assistant de choisir une carte, place un compteur ou une marque sous l'emplacement de la carte et la retourne. + +4. Une fois cela fait, le maitre magicien clame (calmement)... "que la magie commence" et démarre le chronomètre. Quand les autres élèves entendent cela, ils se tournent et tentent de trouver "l'erreur". + +5. Aussitôt qu'ils trouvent l'erreur, ils mettent leur doigt sur leur nez. + +6. Le magicien arrête le chronomètre et demande à la première personne qui à mis le doigt sur son nez de montrer où se trouve la carte qui a été retournée. + +7. L'élève pointe la carte retournée, vérifie si c'est bien la bonne en la retournant. + +8. S'il a raison, il explique comment il a trouvé la qui carte a été retournée. + +9. Le maitre magicien enregistre le nom de l'élève qui a gagné ce tour et son temps. + +10. A-t-il battu le temps précédent ? + +11. S'il a amélioré le temps précédent, il devient l'assistant. L'élève qui gagne ce tour reste l'assistant tant que son temps n'est pas battu. \ No newline at end of file diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/what-if.md b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/what-if.md new file mode 100644 index 000000000..4dbd9e520 --- /dev/null +++ b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/what-if.md @@ -0,0 +1,9 @@ +# Et si ? + +{image file-path="img/topics/gobbly-gook-computer.png" alt="ordinateur avec des symboles étranges au lieu de texte simple"} + +Et si les ordinateurs n'avaient aucun moyen de se rendre compte qu'une erreur s'est produite lors de la lecture d'un fichier ou de la réception de données ? D'après vous, où en serait-on avec la technologie ? Écrivez un texte pour expliquer cela. + +Un exemple de ce à quoi ça pourrait ressembler : votre ami vous envoie un message et vous l'ouvrez, mais une partie des données du fichier a été changée, ce qui fait que vous voyez non seulement des mots mais également du "charabia". + +Un autre exemple : vous avez cliqué pour ouvrir une application sur votre appareil, mais elle ne s'ouvre pas et reste bloquée. \ No newline at end of file diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/word-study-activity.md b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/word-study-activity.md new file mode 100644 index 000000000..2cbd77a45 --- /dev/null +++ b/csunplugged/topics/content/fr/error-detection-and-correction/curriculum-integrations/word-study-activity.md @@ -0,0 +1,7 @@ +# Étude du mot + +{image file-path="img/topics/par-pair.png" alt="sac et clubs de golf"} + +- Quelles sont les définitions du dictionnaire pour le mot "parité". +- De quel origine latine vient-il ? +- Quels autres mots dérivent de ce mot latin ? (Un des mots est utilisé pour désigner deux chaussettes ; l'autre est utilisé lorsqu'on joue au golf). \ No newline at end of file diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml b/csunplugged/topics/content/fr/error-detection-and-correction/lessons/parity-magic-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml rename to csunplugged/topics/content/fr/error-detection-and-correction/lessons/parity-magic-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml b/csunplugged/topics/content/fr/error-detection-and-correction/lessons/parity-magic-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml rename to csunplugged/topics/content/fr/error-detection-and-correction/lessons/parity-magic-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/calculate-credit-card-last-digit.md b/csunplugged/topics/content/fr/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/calculate-credit-card-last-digit.md new file mode 100644 index 000000000..49bd640e6 --- /dev/null +++ b/csunplugged/topics/content/fr/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/calculate-credit-card-last-digit.md @@ -0,0 +1,5 @@ +# Calculer le dernier chiffre du numéro d'une carte de crédit + +## Pré-requis : + +Écrire un programme qui demande à l'utilisateur de donner les 15 premiers chiffres d'une carte de crédit (entrée) et qui donne ce que devrait être le dernier chiffre (sortie). \ No newline at end of file diff --git a/csunplugged/topics/content/fr/image-representation/unit-plan/lessons/colour-by-numbers.md b/csunplugged/topics/content/fr/image-representation/unit-plan/lessons/colour-by-numbers.md deleted file mode 100644 index e2e8e77d0..000000000 --- a/csunplugged/topics/content/fr/image-representation/unit-plan/lessons/colour-by-numbers.md +++ /dev/null @@ -1,111 +0,0 @@ -# Couleur par les nombres - -## Questions clé - -- Comment pensez-vous que les ordinateurs affichent des images sur un écran? -- Comment les ordinateurs stockent-ils des images s'ils ne peuvent mémoriser que des informations sous forme de chiffres ? - -## Lancement du cours - -Ce cours contient 2 activités : une que les élèves peuvent faire seuls et une activité de groupe. Pour chaque activité, vous aurez besoin de suffisamment de feuilles pour que chaque élève en ait une. Chaque activité nécessite différentes versions des feuilles du Peintre Pixel. Utilisez les couleurs **Noir et Blanc** (la première option de la liste), et : - -- Pour la première activité choisissez les images de la page 1 (l'étoile, la tasse de thé, ou le chat). Vous pouvez utiliser une combinaison de ces images, les élèves n'ont pas besoin de tous faire la même, -- Pour la seconde activité, choisissez parmi les images des pages 6, 8 et 9. Imprimez suffisamment d'exemplaires pour que chaque groupe d'élèves possède l'ensemble des images. - -{panel type="general"} - -# Notes sur les ressources - -- Imprimez des copies de chaque feuille de travail au cas où les élèves se trompent et aient besoin d'une nouvelle feuille. -- Utilisez les choix de couleur **Noir et Blanc (2 valeur binaires possibles)**, et **pas** l'option qui dit "en codage par plages". -- Les élèves peuvent utiliser des pastels noirs, un crayon, ou un feutre, mais des crayons effaçables fonctionnent bien mieux la première fois que les élèves font l'activité. - -{panel end} - -Le professeur à la classe : Les écrans des ordinateurs sont découpés en une grille de petits carrés, chacun pouvant afficher une couleur. On appelle ces carrés "Picture elements", ou pixels. - -Écrivez les mots "Picture elements" au tableau. Pour montrer comment nous obtenons le mot pixel, entourez le "pi" de picture et le "el" de elements, et écrivez "pixel" en dessous. - -L'enseignant à la classe : Chacun de ces pixels peut être d'une couleur différente, et quand il y en a beaucoup sur un écran, ils forment une image. Quelqu'un a déjà entendu parler de pixels ? Et de megapixels ? - -{panel type="general"} - -# Observations pour l'enseignant - -Megapixel signifie un million de pixels. Les élèves peuvent avoir entendu le terme "megapixel" précédemment car les appareils photos sont souvent décrits par une quantité de megapixels, par exemple un téléphone peut avoir un appareil photo de *12 megapixels*. Cela décrit la résolution des photos que la caméra peut prendre. Une caméra de 12 megapixels peut produire une image contenant 12 millions de pixels. - -Les écrans de télé et les projecteurs affichent aussi des images en utilisant des pixels. - -{panel end} - -L'enseignant à la classe : Chacune des images que l'on voit sur un écran, que ce soit une photo, une vidéo, ou du texte, est affichée en utilisant des pixels, et tout ce qu'un ordinateur a besoin de stocker est la couleur que doit avoir chaque pixel de l'écran. - -Montrez les images suivantes aux étudiants sur un écran ou au tableau. - -L'enseignant à la classe : Dans une image en noir et blanc, chaque pixel peut être soit noir soit blanc, donc la seule chose que les ordinateurs ont besoin de stocker est quels sont les pixels noirs et quels sont les pixels blancs. Par exemple, si nous voulons afficher la lettre **C**, nous devons commencer par diviser la lettre en carrés. Si on zoome encore plus, on peut observer une grille de pixels similaire à ça : - -{image file-path="img/topics/letter-zooming-to-pixels.png" alt="Trois images de la lettre majuscule 'C' sont montrées. Elles zooment progressivement pour montrer les carrés noir et blancs qui forment la lettre à l'écran."} - -Nous pouvons représenter cette image en utilisant des chiffres binaires (bits). Si un 1 indique un carré blanc et un 0 un carré noir, alors on peut représenter notre lettre **C**, sur une grille de 5x6 pixels, comme cela : - -**10001, 01110, 01111, 01111, 01110, 10001** - -Si nous prenons ces nombres et dessinons l'image qu'ils représentent, nous obtenons la lettre **C** : - -{image file-path="img/topics/pixel-visible-grid-with-letter-and-numbers.png" alt="Une grille 6x5 est affichée. Certains des carrés sont blancs, d'autres sont noirs, ce qui permet de créer la forme de la lettre 'C'. À la droite de chaque ligne de carrés, il y a 5 chiffres binaires qui décrivent l'image."} - -Nous utilisons 1 pour représenter blanc et 0 pour représenter noir, de la même manière que nous avons utilisé les cartes noires et blanches pour représenter 'on' et 'off' dans le module des nombres binaires. - -## Activités de la leçon - -Donnez la première feuille de travail aux élèves et demandez leur de regarder la grille de carrés. Que remarquent-ils à propos des nombres dans les carrés ? Il sont tous soit 1 soit 0. - -L'enseignant à la classe : Les grilles sur ces feuilles représentent les pixels sur un écran d'ordinateur. Maintenant vous allez être l'ordinateur et utiliser les nombres dans les carrés pour faire une image. - -Sur les feuilles, demandez aux élèves de colorer chaque carré avec un 0 en noir, et laissez les carrés avec un 1 en blanc. Nous utilisons 1 pour représenter blanc et 0 pour représenter noir, car 1 indique qu'un pixel est 'allumé' (et donc blanc) alors que 0 indique qu'il est 'éteint' (et donc il est noir). En coloriant les carrés 0 durant cette activité, les élèves 'éteignent' ces pixels. Conseillez-leur de colorier légèrement les carrés au début, puis lorsqu'ils sont certains qu'ils n'ont pas fait d'erreur ils peuvent les colorier complètement. Alors qu'ils travaillent sur les feuilles ils devraient voir une image apparaître. - -L'enseignant à la classe : Maintenant que nous avons fait des images simples avec nos nombres et nos pixels, nous pouvons essayer d'en faire des plus détaillées et plus dures. Comment pensez-vous que nous pourrions faire des images plus détaillées ? - -{panel type="general"} - -# Observations pour l'enseignant - -Les réponses possibles incluent d'ajouter plus de couleurs. C'est une bonne réponse et les couleurs seront dans des leçons plus avancées de ce cours, mais cette leçon se concentre seulement sur les pixels en noir et blanc, rappelez donc aux élèves cette contrainte et demandez leur comment faire une image plus détaillée en noir et blanc. - -Ils peuvent aussi suggérer d'utiliser des pixels plus petits pour la même image. C'est une bonne réponse et cela pourrait être une idée à explorer par les élèves dans un futur cours. Pour le moment, nous cherchons à créer des images plus compliquées et plus détaillées, plutôt que de rendre les précédentes plus détaillées. - -{panel end} - -La réponse que vous attendez est d'utiliser plus de pixels pour l'image, c'est ce que les élèves vont faire dans la prochaine activité. - -Mettez les élèves en groupes et donnez à chaque groupe l'ensemble des images sur plusieurs pages, de sorte que chaque élève ait une page sur laquelle travailler. Si ce n'est pas possible avec le nombre d'élèves que vous avez, assurez-vous que les groupes soient suffisamment petits pour que chaque élève ait au moins une page, ou, de préférence, que chaque élève ait le même nombre de pages. Par exemple, faites travailler les groupes de 3 sur 6 pages, de sorte que chaque élève ait 2 pages à remplir. - -L'enseignant à la classe : Ces ensembles de grilles peuvent être combinés pour créer une image plus grande, qui contient bien plus de pixels que les précédentes. Vous allez tous colorier les pixels sur votre propre feuille, comme précédemment, puis assembler l'image complète. - -Une fois que les élèves ont colorié leur feuille, il peuvent les assembler pour former l'image complète. Il y a des indications sur les imprimables que les enseignants peuvent utiliser pour aider les élèves à assembler leurs images s'ils sont coincés. - -## Appliquer ce que nous venons d'apprendre - -- Les élèves peuvent utiliser une grille ou un papier quadrillé pour créer leurs propres images. Demandez aux élèves d'écrire les chiffres binaires qui représentent leur image (de la même façon que le 'C' dans la section de démarrage du cours, au lieu d'écrire les 1 et les 0 dans chacune des cases de la grille), donnez ceci à d'autres élèves, et voyez s'ils peuvent recréer la même image. - -- Il y a un certain nombre de sites disponibles que les élèves peuvent utiliser pour créer facilement du pixel art. Ils peuvent créer leur propre pixel art, convertir cela en une grille de chiffres, et ensuite faire en sorte que leurs amis essaient de recréer leur image. - -- Maintenant que les élèves ont essayé de créer des images plus grandes, ils pourraient aller plus loin et faire une image en tant que classe entière. L'option Perroquet du Peintre Pixels est composée de 32 pages, et constitue un grand défi pour une classe. - -{panel type="general"} - -# Notes sur les ressources - -Il y a une [grille]('resources:resource' 'grid') de 8 par 8 dans la section des imprimables qui peut être utilisée pour dessiner ces images. - -{panel end} - -## Réflexion sur la leçon - -Cette leçon portait sur les images en noir et blanc; pourquoi ne pouvons-nous pas faire plus de deux couleurs avec cette activité ? - -- Avec un chiffre binaire, nous ne pouvons représenter que deux valeurs différentes. Cela signifie que si nous utilisons un chiffre pour représenter la couleur d'un pixel, chaque pixel ne peut être qu'une de deux couleurs différentes. - -Que pourrions-nous faire pour représenter plus de couleurs ? - -- Si nous voulons que chaque pixel soit capable de montrer plus de couleurs que le noir et le blanc, alors nous devons utiliser plus de nombres (i.e., plus de chiffres binaires) pour représenter la couleur de chaque pixel. Cela sera exploré lors des prochaines leçons. \ No newline at end of file diff --git a/csunplugged/topics/content/fr/programming-reminders-python.md b/csunplugged/topics/content/fr/programming-reminders-python.md new file mode 100644 index 000000000..9830e6ca8 --- /dev/null +++ b/csunplugged/topics/content/fr/programming-reminders-python.md @@ -0,0 +1,78 @@ +# Rappels de programmation + +#### Affichage + +```python3 +# Afficher directement une chaîne de caractères +print("Hello World!") + +# Afficher une variable +print(ma_var) +``` + +#### Variables + +```Python +# Déclarer une chaîne de caractères +nom_fruit = "Pomme" + +# Déclarer un entier +parts_de_fruit = 7 + +# Déclarer une variable à partir d'un calcul +prix_fruit = parts_de_fruit * prix_par_unite + +# Ajouter un à une valeur +parts_de_fruit += 1 +``` + +#### Conditions + +```Python +# Trouver la remise sur un fruit +if parts_de_fruit > 100: + print("Remise en gros") +elif parts_de_fruit > 5: + print("Simple remise") +else: + print("Pas de remise") +``` + +#### Boucles for + +```Python +# Afficher les nombres de 0 à 9 - N'oubliez pas que Python commence à compter à partir de 0 +for nombre in range(10): + print(nombre) +``` + +#### Boucles while + +```Python +# Afficher les nombres de 0 à 9 en utilisant une boucle while et une variable +nombre = 0 +while nombre < 10: + print(nombre) + + # Incrémenter la variable de 1 + # Cela évite une boucle infinie ! + nombre += 1 +``` + +#### Listes + +```Python +# Crée une liste de fruits +fruit = ["Pomme", "Banane", "Orange", "Poire"] +``` + +#### Fonctions + +```Python +# Crée une fonction qui affiche une salutation +def salutation(nom): + print("Bonjour", nom) + +# Appel de la fonction +salutation("Spiderman") +``` diff --git a/csunplugged/topics/content/fr/searching-algorithms/curriculum-integrations/drama-video.md b/csunplugged/topics/content/fr/searching-algorithms/curriculum-integrations/drama-video.md new file mode 100644 index 000000000..4cc552bef --- /dev/null +++ b/csunplugged/topics/content/fr/searching-algorithms/curriculum-integrations/drama-video.md @@ -0,0 +1,21 @@ +# Activité de théâtre ou de vidéo + +*Cette activité est inspirée de [Computational Fairy Tales ](http://computationaltales.blogspot.com/) par Jeremy Kubica.* + +## Exemple de fil conducteur + +Les résultats de la compétition de la meilleure vache du pays sont arrivés et les 31 meilleures sont listées par ordre de poids de la plus lourde à la plus légère. Ces vaches ont été ramenées dans leurs fermes à travers le pays. + +Personne ne savait que dans les collines était caché un géant très affamé, qui adorait le bœuf rôti par dessus tout et avait tendance à rôtir une vache entière à la fois. Ce géant avait une mémoire fantastique et avait appris par cœur non seulement l'ordre des vaches, de la plus lourde à la plus légère, mais aussi dans quelle ferme elles se trouvaient et où les fermes étaient. Le géant commence à la ferme avec vache la plus lourde et continue petit à petit dans l'ordre décroissant des poids. + +Un assassin de géant est appelé pour trouver le géant affamé. L'assassin de géant sait que le géant est passé par une ferme si la vache a disparu. Si la vache est toujours dans la ferme, le géant doit être dans une ferme avec une vache plus lourde, mais si la vache n'est plus là, le géant doit être dans une ferme avec une vache plus légère. + +## Votre tâche + +Réaliser une animation image par image ou une pièce de théâtre qui montre que le géant utilise une recherche séquentielle pour manger les vaches par ordre de poids décroissant, et que l'assassin du géant qui doit empêcher le géant de manger toutes les vaches peut facilement trouver le géant avec une recherche dichotomique avant que le géant n'ait mangé trop de vaches. + +### Supplément pour les experts + +Vous pouvez changer le cadre et les personnages mais conserver le thème de l'histoire ! + +Gardez en tête qu'un algorithme de recherche suit toujours les mêmes règles pour trouver une solution. \ No newline at end of file diff --git a/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/growing-into-a-butterfly.md b/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/growing-into-a-butterfly.md new file mode 100644 index 000000000..06caa71ef --- /dev/null +++ b/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/growing-into-a-butterfly.md @@ -0,0 +1,5 @@ +# Devenir un papillon + +Utilisez les images [cycle de vie du papillon]('resources:resource' 'sorting-network-cards'?type=butterfly) avec le Réseau de Tri ! Ces images peuvent également s'appliquer aux six stades de développement sur lesquels vous vous concentrez dans votre programme d'études. Le cycle de vie d'un papillon : œuf, petite larve, qui mange beaucoup pour devenir une grosse larve, chrysalide, prête à éclore, le papillon s'envole. + +{image file-path="img/topics/butterfly-story-caterpillar.png" alt="Une chenille."} \ No newline at end of file diff --git a/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/retelling-a-story.md b/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/retelling-a-story.md index 4f9fa4ba8..0d91ac584 100644 --- a/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/retelling-a-story.md +++ b/csunplugged/topics/content/fr/sorting-networks/curriculum-integrations/retelling-a-story.md @@ -2,4 +2,4 @@ Utilisez les [cartes du Petit Chaperon Rouge]('resources:resource' 'sorting-network-cards'?type=riding_hood) avec le Réseau de Tri pour raconter à nouveau l'histoire du Petit Chaperon Rouge. -{image file-path="img/topics/little-red-riding-hood-3.png" alt="Le Petit Chaperon Rouge frappant à la porte d'une maison."} +{image file-path="img/topics/little-red-riding-hood-3.png" alt="Le Petit Chaperon Rouge frappant à la porte d'une maison."} \ No newline at end of file diff --git a/csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/fr/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml rename to csunplugged/topics/content/fr/sorting-networks/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/fr/sorting-networks/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml rename to csunplugged/topics/content/fr/sorting-networks/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/fr/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml rename to csunplugged/topics/content/fr/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/fr/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/fr/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml rename to csunplugged/topics/content/fr/sorting-networks/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml diff --git a/csunplugged/topics/content/fr/sorting-networks/sorting-networks.md b/csunplugged/topics/content/fr/sorting-networks/sorting-networks.md new file mode 100644 index 000000000..3b7bf31c3 --- /dev/null +++ b/csunplugged/topics/content/fr/sorting-networks/sorting-networks.md @@ -0,0 +1,3 @@ +# Réseaux de Tri + +En tant que consommateurs, nous nous attendons à ce que les ordinateurs traitent les informations aussi rapidement que possible, de sorte que les programmes s'exécutent plus rapidement, que les sites web se chargent plus vite, et pour que nous n'ayons pas à rester longtemps devant une barre de progression ou une roue qui tourne, indiquant qu'un ordinateur est en train de réfléchir ! Une façon d'augmenter la vitesse d'un ordinateur est d'écrire des programmes qui utilisent de moins en moins d'étapes de calcul (comme indiqué dans les leçons sur le tri et les algorithmes de recherche). Une autre façon de résoudre les problèmes plus rapidement est d'avoir plusieurs ordinateurs qui travaillent sur différentes parties de la même tâche en même temps. C'est ce qui est abordé dans cette leçon. \ No newline at end of file diff --git a/csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml b/csunplugged/topics/content/mi/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml rename to csunplugged/topics/content/mi/binary-numbers/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/mi/binary-numbers/lessons/how-binary-digits-work-ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md rename to csunplugged/topics/content/mi/binary-numbers/lessons/how-binary-digits-work-ct-links.md diff --git a/csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml b/csunplugged/topics/content/mi/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml rename to csunplugged/topics/content/mi/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml b/csunplugged/topics/content/mi/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml rename to csunplugged/topics/content/mi/binary-numbers/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/mi/error-detection-and-correction/ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/mi/error-detection-and-correction/ct-links.md diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md b/csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md rename to csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-ct-links.md diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md b/csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-junior-ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md rename to csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-junior-ct-links.md diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml b/csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-junior-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml rename to csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-junior-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md b/csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-junior.md similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md rename to csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-junior.md diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml b/csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml rename to csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic.md b/csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic.md similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/lessons/parity-magic.md rename to csunplugged/topics/content/mi/error-detection-and-correction/lessons/parity-magic.md diff --git a/csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/unit-plan.md b/csunplugged/topics/content/mi/error-detection-and-correction/whats-it-all-about.md similarity index 100% rename from csunplugged/topics/content/mi/error-detection-and-correction/unit-plan/unit-plan.md rename to csunplugged/topics/content/mi/error-detection-and-correction/whats-it-all-about.md diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/mi/kidbots/ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/mi/kidbots/ct-links.md diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md b/csunplugged/topics/content/mi/kidbots/lessons/fitness-unplugged-ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md rename to csunplugged/topics/content/mi/kidbots/lessons/fitness-unplugged-ct-links.md diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml b/csunplugged/topics/content/mi/kidbots/lessons/fitness-unplugged-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml rename to csunplugged/topics/content/mi/kidbots/lessons/fitness-unplugged-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/lessons/fitness-unplugged.md b/csunplugged/topics/content/mi/kidbots/lessons/fitness-unplugged.md similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/lessons/fitness-unplugged.md rename to csunplugged/topics/content/mi/kidbots/lessons/fitness-unplugged.md diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/lessons/rescue-mission-ct-links.md b/csunplugged/topics/content/mi/kidbots/lessons/rescue-mission-ct-links.md similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/lessons/rescue-mission-ct-links.md rename to csunplugged/topics/content/mi/kidbots/lessons/rescue-mission-ct-links.md diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml b/csunplugged/topics/content/mi/kidbots/lessons/rescue-mission-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml rename to csunplugged/topics/content/mi/kidbots/lessons/rescue-mission-resource-descriptions.yaml diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/lessons/rescue-mission.md b/csunplugged/topics/content/mi/kidbots/lessons/rescue-mission.md similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/lessons/rescue-mission.md rename to csunplugged/topics/content/mi/kidbots/lessons/rescue-mission.md diff --git a/csunplugged/topics/content/mi/kidbots/unit-plan/unit-plan.md b/csunplugged/topics/content/mi/kidbots/whats-it-all-about.md similarity index 100% rename from csunplugged/topics/content/mi/kidbots/unit-plan/unit-plan.md rename to csunplugged/topics/content/mi/kidbots/whats-it-all-about.md diff --git a/csunplugged/topics/content/mi/sorting-networks/unit-plan/unit-plan.md b/csunplugged/topics/content/mi/sorting-networks/whats-it-all-about.md similarity index 100% rename from csunplugged/topics/content/mi/sorting-networks/unit-plan/unit-plan.md rename to csunplugged/topics/content/mi/sorting-networks/whats-it-all-about.md diff --git a/csunplugged/topics/content/structure/binary-numbers/binary-numbers.yaml b/csunplugged/topics/content/structure/binary-numbers/binary-numbers.yaml index 5cf1f790e..820cfa585 100644 --- a/csunplugged/topics/content/structure/binary-numbers/binary-numbers.yaml +++ b/csunplugged/topics/content/structure/binary-numbers/binary-numbers.yaml @@ -1,9 +1,25 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/binary-cards-4-bits-icon.png -other-resources: other-resources.md +lessons: lessons/lessons.yaml +age-groups: + 5-7: + how-binary-digits-work-junior: + number: 1 + reinforcing-sequencing-in-binary-number-systems-junior: + number: 2 + codes-for-letters-using-binary-representation-junior: + number: 3 + 8-10: + how-binary-digits-work: + number: 1 + reinforcing-sequencing-in-binary-number-systems: + number: 2 + codes-for-letters-using-binary-representation: + number: 3 + +whats-it-all-about: whats-it-all-about.md +computational-thinking-links: ct-links.md +other-resources: other-resources.md programming-challenges: programming-challenges/programming-challenges.yaml curriculum-integrations: curriculum-integrations/curriculum-integrations.yaml diff --git a/csunplugged/topics/content/structure/binary-numbers/curriculum-integrations/curriculum-integrations.yaml b/csunplugged/topics/content/structure/binary-numbers/curriculum-integrations/curriculum-integrations.yaml index ca434a969..c7d2c9aa7 100644 --- a/csunplugged/topics/content/structure/binary-numbers/curriculum-integrations/curriculum-integrations.yaml +++ b/csunplugged/topics/content/structure/binary-numbers/curriculum-integrations/curriculum-integrations.yaml @@ -3,7 +3,6 @@ binary-or-normal-candles: curriculum-areas: - writing prerequisite-lessons: - unit-plan: - how-binary-digits-work whose-cake-is-it: @@ -11,7 +10,6 @@ whose-cake-is-it: curriculum-areas: - writing prerequisite-lessons: - unit-plan: - how-binary-digits-work binary-name-necklaces: @@ -19,7 +17,6 @@ binary-name-necklaces: curriculum-areas: - art prerequisite-lessons: - unit-plan: - codes-for-letters-using-binary-representation binary-patterns: @@ -27,7 +24,6 @@ binary-patterns: curriculum-areas: - art prerequisite-lessons: - unit-plan: - how-binary-digits-work binary-tunes: @@ -35,7 +31,6 @@ binary-tunes: curriculum-areas: - music prerequisite-lessons: - unit-plan: - how-binary-digits-work biographies-and-binary-number-system-history: @@ -49,5 +44,4 @@ binary-art: curriculum-areas: - art prerequisite-lessons: - unit-plan: - codes-for-letters-using-binary-representation diff --git a/csunplugged/topics/content/structure/binary-numbers/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/binary-numbers/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/binary-numbers/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/binary-numbers/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/binary-numbers/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/binary-numbers/unit-plan/unit-plan.yaml deleted file mode 100644 index ea5e179da..000000000 --- a/csunplugged/topics/content/structure/binary-numbers/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,18 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: unit-plan-ct-links.md - -age-groups: - 5-7: - how-binary-digits-work-junior: - number: 1 - reinforcing-sequencing-in-binary-number-systems-junior: - number: 2 - codes-for-letters-using-binary-representation-junior: - number: 3 - 8-10: - how-binary-digits-work: - number: 1 - reinforcing-sequencing-in-binary-number-systems: - number: 2 - codes-for-letters-using-binary-representation: - number: 3 diff --git a/csunplugged/topics/content/structure/data-structures-for-searching/data-structures-for-searching.yaml b/csunplugged/topics/content/structure/data-structures-for-searching/data-structures-for-searching.yaml index e10760c37..57ba4634e 100644 --- a/csunplugged/topics/content/structure/data-structures-for-searching/data-structures-for-searching.yaml +++ b/csunplugged/topics/content/structure/data-structures-for-searching/data-structures-for-searching.yaml @@ -1,4 +1,11 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/data-structures-for-searching-icon.png + +lessons: lessons/lessons.yaml + +age-groups: + 11-14: + binary-search-trees: + number: 1 + +whats-it-all-about: whats-it-all-about.md +computational-thinking-links: ct-links.md diff --git a/csunplugged/topics/content/structure/data-structures-for-searching/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/data-structures-for-searching/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/data-structures-for-searching/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/data-structures-for-searching/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/data-structures-for-searching/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/data-structures-for-searching/unit-plan/unit-plan.yaml deleted file mode 100644 index aac207d20..000000000 --- a/csunplugged/topics/content/structure/data-structures-for-searching/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,7 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: unit-plan-ct-links.md - -age-groups: - 11-14: - binary-search-trees: - number: 1 diff --git a/csunplugged/topics/content/structure/error-detection-and-correction/curriculum-integrations/curriculum-integrations.yaml b/csunplugged/topics/content/structure/error-detection-and-correction/curriculum-integrations/curriculum-integrations.yaml index 2dffa152f..37fb3a6fb 100644 --- a/csunplugged/topics/content/structure/error-detection-and-correction/curriculum-integrations/curriculum-integrations.yaml +++ b/csunplugged/topics/content/structure/error-detection-and-correction/curriculum-integrations/curriculum-integrations.yaml @@ -3,7 +3,6 @@ quick-card-flip-magic: curriculum-areas: - numeracy prerequisite-lessons: - unit-plan: - parity-magic what-if: @@ -11,7 +10,6 @@ what-if: curriculum-areas: - writing prerequisite-lessons: - unit-plan: - parity-magic biographies-and-error-control-history: @@ -24,7 +22,6 @@ instructional-writing: curriculum-areas: - writing prerequisite-lessons: - unit-plan: - parity-magic word-study-activity: @@ -32,5 +29,4 @@ word-study-activity: curriculum-areas: - word-study prerequisite-lessons: - unit-plan: - parity-magic diff --git a/csunplugged/topics/content/structure/error-detection-and-correction/error-detection-and-correction.yaml b/csunplugged/topics/content/structure/error-detection-and-correction/error-detection-and-correction.yaml index d9e001abe..34b4a840d 100644 --- a/csunplugged/topics/content/structure/error-detection-and-correction/error-detection-and-correction.yaml +++ b/csunplugged/topics/content/structure/error-detection-and-correction/error-detection-and-correction.yaml @@ -1,7 +1,19 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/parity-trick-example-icon.png + +lessons: lessons/lessons.yaml + +age-groups: + 5-7: + parity-magic-junior: + number: 1 + 8-10: + parity-magic: + number: 1 + product-code-check-digits: + number: 2 + +whats-it-all-about: whats-it-all-about.md +computational-thinking-links: ct-links.md programming-challenges: programming-challenges/programming-challenges.yaml curriculum-integrations: curriculum-integrations/curriculum-integrations.yaml other-resources: other-resources.md diff --git a/csunplugged/topics/content/structure/error-detection-and-correction/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/error-detection-and-correction/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/error-detection-and-correction/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/error-detection-and-correction/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/error-detection-and-correction/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/error-detection-and-correction/unit-plan/unit-plan.yaml deleted file mode 100644 index ed3f3a59c..000000000 --- a/csunplugged/topics/content/structure/error-detection-and-correction/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,12 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: unit-plan-ct-links.md - -age-groups: - 5-7: - parity-magic-junior: - number: 1 - 8-10: - parity-magic: - number: 1 - product-code-check-digits: - number: 2 diff --git a/csunplugged/topics/content/structure/image-representation/image-representation.yaml b/csunplugged/topics/content/structure/image-representation/image-representation.yaml index 782e09082..71eb94a32 100644 --- a/csunplugged/topics/content/structure/image-representation/image-representation.yaml +++ b/csunplugged/topics/content/structure/image-representation/image-representation.yaml @@ -1,4 +1,13 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/binary-picture-showing-bits.png + +lessons: lessons/lessons.yaml + +age-groups: + 5-7: + colour-by-numbers: + number: 1 + 8-10: + colour-by-numbers: + number: 1 + +whats-it-all-about: whats-it-all-about.md diff --git a/csunplugged/topics/content/structure/image-representation/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/image-representation/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/image-representation/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/image-representation/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/image-representation/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/image-representation/unit-plan/unit-plan.yaml deleted file mode 100644 index 091ba5420..000000000 --- a/csunplugged/topics/content/structure/image-representation/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,9 +0,0 @@ -lessons: lessons/lessons.yaml - -age-groups: - 5-7: - colour-by-numbers: - number: 1 - 8-10: - colour-by-numbers: - number: 1 diff --git a/csunplugged/topics/content/structure/kidbots/curriculum-integrations/curriculum-integrations.yaml b/csunplugged/topics/content/structure/kidbots/curriculum-integrations/curriculum-integrations.yaml index 4abd7d49c..56548bded 100644 --- a/csunplugged/topics/content/structure/kidbots/curriculum-integrations/curriculum-integrations.yaml +++ b/csunplugged/topics/content/structure/kidbots/curriculum-integrations/curriculum-integrations.yaml @@ -3,7 +3,6 @@ storytelling: curriculum-areas: - speaking prerequisite-lessons: - unit-plan: - rescue-mission move-to-a-number: @@ -11,7 +10,6 @@ move-to-a-number: curriculum-areas: - numeracy prerequisite-lessons: - unit-plan: - rescue-mission finding-shapes: @@ -19,7 +17,6 @@ finding-shapes: curriculum-areas: - geometry prerequisite-lessons: - unit-plan: - rescue-mission moving-in-a-shape: @@ -27,5 +24,4 @@ moving-in-a-shape: curriculum-areas: - geometry prerequisite-lessons: - unit-plan: - rescue-mission diff --git a/csunplugged/topics/content/structure/kidbots/kidbots.yaml b/csunplugged/topics/content/structure/kidbots/kidbots.yaml index 3fac40105..c659af1d4 100644 --- a/csunplugged/topics/content/structure/kidbots/kidbots.yaml +++ b/csunplugged/topics/content/structure/kidbots/kidbots.yaml @@ -1,7 +1,20 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/unplugged-programming-icon.png +lessons: lessons/lessons.yaml + +age-groups: + 5-7: + rescue-mission: + number: 1 + fitness-unplugged: + number: 2 + 8-10: + sending-a-rocket-to-mars: + number: 1 + modulo: + number: 3 + +whats-it-all-about: whats-it-all-about.md +computational-thinking-links: ct-links.md programming-challenges: programming-challenges/programming-challenges.yaml curriculum-integrations: curriculum-integrations/curriculum-integrations.yaml diff --git a/csunplugged/topics/content/structure/kidbots/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/kidbots/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/kidbots/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/kidbots/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/kidbots/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/kidbots/unit-plan/unit-plan.yaml deleted file mode 100644 index 340a67b9b..000000000 --- a/csunplugged/topics/content/structure/kidbots/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,14 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: unit-plan-ct-links.md - -age-groups: - 5-7: - rescue-mission: - number: 1 - fitness-unplugged: - number: 2 - 8-10: - sending-a-rocket-to-mars: - number: 1 - modulo: - number: 3 diff --git a/csunplugged/topics/content/structure/searching-algorithms/curriculum-integrations/curriculum-integrations.yaml b/csunplugged/topics/content/structure/searching-algorithms/curriculum-integrations/curriculum-integrations.yaml index 50258e9d6..a784b32e1 100644 --- a/csunplugged/topics/content/structure/searching-algorithms/curriculum-integrations/curriculum-integrations.yaml +++ b/csunplugged/topics/content/structure/searching-algorithms/curriculum-integrations/curriculum-integrations.yaml @@ -3,7 +3,6 @@ where-is-my-hat: curriculum-areas: - writing prerequisite-lessons: - unit-plan: - how-many-guesses biography: @@ -19,7 +18,6 @@ drama-video: - drama - art prerequisite-lessons: - unit-plan: - how-many-guesses - divide-and-conquer music: @@ -27,6 +25,5 @@ music: curriculum-areas: - music prerequisite-lessons: - unit-plan: - how-many-guesses - divide-and-conquer diff --git a/csunplugged/topics/content/structure/searching-algorithms/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/searching-algorithms/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/searching-algorithms/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/searching-algorithms/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/searching-algorithms/searching-algorithms.yaml b/csunplugged/topics/content/structure/searching-algorithms/searching-algorithms.yaml index db3d1d97c..166fbce3e 100644 --- a/csunplugged/topics/content/structure/searching-algorithms/searching-algorithms.yaml +++ b/csunplugged/topics/content/structure/searching-algorithms/searching-algorithms.yaml @@ -1,6 +1,23 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/searching-algorithms-icon.png +lessons: lessons/lessons.yaml + +age-groups: + 5-7: + how-many-guesses-junior: + number: 1 + divide-and-conquer-junior: + number: 2 + 8-10: + how-many-guesses: + number: 1 + divide-and-conquer: + number: 2 + the-great-number-hunt-unsorted: + number: 3 + the-great-number-hunt-sorted: + number: 4 + +whats-it-all-about: whats-it-all-about.md +computational-thinking-links: ct-links.md curriculum-integrations: curriculum-integrations/curriculum-integrations.yaml diff --git a/csunplugged/topics/content/structure/searching-algorithms/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/searching-algorithms/unit-plan/unit-plan.yaml deleted file mode 100644 index 29ea92d41..000000000 --- a/csunplugged/topics/content/structure/searching-algorithms/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,18 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: unit-plan-ct-links.md - -age-groups: - 5-7: - how-many-guesses-junior: - number: 1 - divide-and-conquer-junior: - number: 2 - 8-10: - how-many-guesses: - number: 1 - divide-and-conquer: - number: 2 - the-great-number-hunt-unsorted: - number: 3 - the-great-number-hunt-sorted: - number: 4 diff --git a/csunplugged/topics/content/structure/sorting-networks/curriculum-integrations/curriculum-integrations.yaml b/csunplugged/topics/content/structure/sorting-networks/curriculum-integrations/curriculum-integrations.yaml index 55bd961e6..db1c85ceb 100644 --- a/csunplugged/topics/content/structure/sorting-networks/curriculum-integrations/curriculum-integrations.yaml +++ b/csunplugged/topics/content/structure/sorting-networks/curriculum-integrations/curriculum-integrations.yaml @@ -3,13 +3,11 @@ retelling-a-story: curriculum-areas: - speaking prerequisite-lessons: - unit-plan: - - investigating-variations-using-the-sorting-network-junior + - investigating-variations-using-the-sorting-network-junior growing-into-a-butterfly: number: 2 curriculum-areas: - biology prerequisite-lessons: - unit-plan: - - investigating-variations-using-the-sorting-network-junior + - investigating-variations-using-the-sorting-network-junior diff --git a/csunplugged/topics/content/structure/sorting-networks/unit-plan/lessons/lessons.yaml b/csunplugged/topics/content/structure/sorting-networks/lessons/lessons.yaml similarity index 100% rename from csunplugged/topics/content/structure/sorting-networks/unit-plan/lessons/lessons.yaml rename to csunplugged/topics/content/structure/sorting-networks/lessons/lessons.yaml diff --git a/csunplugged/topics/content/structure/sorting-networks/sorting-networks.yaml b/csunplugged/topics/content/structure/sorting-networks/sorting-networks.yaml index de105a64d..9b2d0ac7b 100644 --- a/csunplugged/topics/content/structure/sorting-networks/sorting-networks.yaml +++ b/csunplugged/topics/content/structure/sorting-networks/sorting-networks.yaml @@ -1,6 +1,24 @@ -unit-plans: - - unit-plan/unit-plan.yaml - icon: img/topics/sorting-network-kids.png +lessons: lessons/lessons.yaml + +age-groups: + 5-7: + reinforcing-numeracy-through-a-sorting-network-junior: + number: 1 + investigating-variations-using-the-sorting-network-junior: + number: 2 + 8-10: + reinforcing-numeracy-through-a-sorting-network: + number: 1 + investigating-variations-using-the-sorting-network: + number: 2 + 11-14: + reinforcing-numeracy-through-a-sorting-network: + number: 1 + investigating-variations-using-the-sorting-network: + number: 2 + +whats-it-all-about: whats-it-all-about.md +computational-thinking-links: ct-links.md curriculum-integrations: curriculum-integrations/curriculum-integrations.yaml diff --git a/csunplugged/topics/content/structure/sorting-networks/unit-plan/unit-plan.yaml b/csunplugged/topics/content/structure/sorting-networks/unit-plan/unit-plan.yaml deleted file mode 100644 index 56f2391ed..000000000 --- a/csunplugged/topics/content/structure/sorting-networks/unit-plan/unit-plan.yaml +++ /dev/null @@ -1,19 +0,0 @@ -lessons: lessons/lessons.yaml -computational-thinking-links: unit-plan-ct-links.md - -age-groups: - 5-7: - reinforcing-numeracy-through-a-sorting-network-junior: - number: 1 - investigating-variations-using-the-sorting-network-junior: - number: 2 - 8-10: - reinforcing-numeracy-through-a-sorting-network: - number: 1 - investigating-variations-using-the-sorting-network: - number: 2 - 11-14: - reinforcing-numeracy-through-a-sorting-network: - number: 1 - investigating-variations-using-the-sorting-network: - number: 2 diff --git a/csunplugged/topics/content/xx_LR/age-groups.yaml b/csunplugged/topics/content/xx_LR/age-groups.yaml deleted file mode 100644 index f4ee3d5ac..000000000 --- a/csunplugged/topics/content/xx_LR/age-groups.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -5-7: - description: crwdns8030:0crwdne8030:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/binary-numbers.md b/csunplugged/topics/content/xx_LR/binary-numbers/binary-numbers.md deleted file mode 100644 index 692b112c9..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/binary-numbers.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns8254:0crwdne8254:0 - -crwdns8255:0crwdne8255:0 crwdns8256:0crwdne8256:0 crwdns8257:0crwdne8257:0 crwdns20128:0crwdne20128:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-art.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-art.md deleted file mode 100644 index e173ec547..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-art.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns8262:0crwdne8262:0 - -*BlockTag: crwdns8263:0crwdne8263:0* - -{image file-path="img/topics/binary_grids.png"} - -- crwdns8264:0crwdne8264:0 -- crwdns8265:0crwdne8265:0 -- crwdns8266:0crwdne8266:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-name-necklaces.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-name-necklaces.md deleted file mode 100644 index c39343b79..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-name-necklaces.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns8267:0crwdne8267:0 - -*BlockTag: crwdns8268:0crwdne8268:0* - -{image file-path="img/topics/col_binary_necklace_copy.png"} - -crwdns8269:0crwdne8269:0 - -crwdns8270:0crwdne8270:0 crwdns8271:0crwdne8271:0 crwdns8272:0crwdne8272:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-or-normal-candles.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-or-normal-candles.md deleted file mode 100644 index 441da38f0..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-or-normal-candles.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns8273:0crwdne8273:0 - -crwdns8274:0crwdne8274:0 - -crwdns8275:0crwdne8275:0 crwdns8276:0crwdne8276:0 - -*BlockTag: crwdns20129:0crwdne20129:0* - -{image file-path="img/topics/col_binary_cake.png" alignment="right"} - -crwdns8278:0crwdne8278:0 - -- crwdns8279:0crwdne8279:0 -- crwdns8280:0crwdne8280:0 -- crwdns8281:0crwdne8281:0 - -crwdns8282:0crwdne8282:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-patterns.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-patterns.md deleted file mode 100644 index 30ea7f4e5..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-patterns.md +++ /dev/null @@ -1,7 +0,0 @@ -# crwdns8283:0crwdne8283:0 - -- crwdns8284:0crwdne8284:0 -- crwdns8285:0crwdne8285:0 -- crwdns8286:0crwdne8286:0 -- crwdns8287:0crwdne8287:0 -- crwdns8288:0crwdne8288:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-tunes.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-tunes.md deleted file mode 100644 index 32256596a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/binary-tunes.md +++ /dev/null @@ -1,11 +0,0 @@ -# crwdns8289:0crwdne8289:0 - -- crwdns8290:0crwdne8290:0 -- crwdns8291:0crwdne8291:0 -- crwdns8292:0crwdne8292:0 -- crwdns8293:0crwdne8293:0 -- crwdns8294:0crwdne8294:0 - -#### crwdns8295:0crwdne8295:0 - -crwdns8296:0crwdne8296:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/biographies-and-binary-number-system-history.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/biographies-and-binary-number-system-history.md deleted file mode 100644 index cf6d8f54f..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/biographies-and-binary-number-system-history.md +++ /dev/null @@ -1,23 +0,0 @@ -# crwdns8297:0crwdne8297:0 - -crwdns8298:0crwdne8298:0 - -crwdns8299:0crwdne8299:0 - -crwdns8300:0crwdne8300:0 - -crwdns8301:0crwdne8301:0 - -- crwdns8302:0crwdne8302:0 -- crwdns8303:0crwdne8303:0 -- crwdns8304:0crwdne8304:0 -- crwdns8305:0crwdne8305:0 - -crwdns8306:0crwdne8306:0 crwdns8307:0crwdne8307:0 crwdns8308:0crwdne8308:0 crwdns8309:0crwdne8309:0 - -crwdns8310:0crwdne8310:0 - -- crwdns8311:0crwdne8311:0 crwdns8312:0crwdne8312:0 -- crwdns8313:0crwdne8313:0 crwdns8314:0crwdne8314:0 -- crwdns8315:0crwdne8315:0 -- crwdns8316:0crwdne8316:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/whose-cake-is-it.md b/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/whose-cake-is-it.md deleted file mode 100644 index 72188c16a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/curriculum-integrations/whose-cake-is-it.md +++ /dev/null @@ -1,7 +0,0 @@ -# crwdns8317:0crwdne8317:0 - -crwdns8318:0crwdne8318:0 - -*BlockTag: crwdns8319:0crwdne8319:0* - -{image file-path="img/topics/col_binary_birthdayFinal.png"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/other-resources.md b/csunplugged/topics/content/xx_LR/binary-numbers/other-resources.md deleted file mode 100644 index 745b9e264..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/other-resources.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns8259:0crwdne8259:0 - -crwdns20520:0crwdne20520:0 crwdns8261:0crwdne8261:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/binary-cards-as-dots.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/binary-cards-as-dots.md deleted file mode 100644 index 58f0cf2dc..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/binary-cards-as-dots.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns8320:0crwdne8320:0 - -## crwdns8321:0crwdne8321:0 - -crwdns8322:0crwdne8322:0 - -## crwdns8323:0crwdne8323:0 - -crwdns8324:0crwdne8324:0 - -| crwdns8325:0crwdne8325:0 | crwdns8326:0crwdne8326:0 | -| ------------------------ | ------------------------ | -| crwdns8327:0crwdne8327:0 | crwdns8328:0crwdne8328:0 | -| crwdns8329:0crwdne8329:0 | crwdns8330:0crwdne8330:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-expected.md deleted file mode 100644 index b3a49674f..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-expected.md +++ /dev/null @@ -1,5 +0,0 @@ -crwdns8331:0crwdne8331:0 - -*BlockTag: crwdns8332:0crwdne8332:0* - -{iframe link="https://scratch.mit.edu/projects/embed/158861081/?autostart=false"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-hints.md deleted file mode 100644 index 0a10ffc0e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-hints.md +++ /dev/null @@ -1,15 +0,0 @@ -crwdns8333:0crwdne8333:0 - -crwdns8334:0crwdne8334:0 crwdns8335:0crwdne8335:0 - -crwdns8336:0crwdne8336:0 - -crwdns8337:0crwdne8337:0 - -crwdns8338:0crwdne8338:0 crwdns8339:0crwdne8339:0 - -crwdns8340:0crwdne8340:0 - -*BlockTag: crwdns8341:0crwdne8341:0* - -{iframe link="https://scratch.mit.edu/projects/embed/159501752/?autostart=false"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-solution.md deleted file mode 100644 index 29dc65668..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-as-dots/scratch-solution.md +++ /dev/null @@ -1,146 +0,0 @@ -*BlockTag: crwdns18981:0crwdne18981:0* - -{panel type="general" subtitle="true"} - -# crwdns18982:0crwdne18982:0 - -## crwdns18983:0crwdne18983:0 - -**crwdns8343:0crwdne8343:0** - -```scratch -crwdns8344:0[32]crwdnd8344:0[1]crwdnd8344:0[1]crwdnd8344:0[0]crwdne8344:0 -``` - -**crwdns8345:0crwdne8345:0** - -<pre><code class="scratch:inline">crwdns8346:0[1]crwdne8346:0 -</code></pre> - -**crwdns8347:0crwdne8347:0** - -<pre><code class="scratch:inline">crwdns8348:0[1]crwdne8348:0 -</code></pre> - -**crwdns8349:0crwdne8349:0** - -<pre><code class="scratch:inline">crwdns8350:0[1]crwdne8350:0 -</code></pre> - -**crwdns8351:0crwdne8351:0** - -<pre><code class="scratch:inline">crwdns8352:0[1]crwdne8352:0 -</code></pre> - -**crwdns8353:0crwdne8353:0** - -<pre><code class="scratch:inline">crwdns8354:0[1]crwdne8354:0 -</code></pre> - -*BlockTag: crwdns8355:0crwdne8355:0* - -{panel end} - -*BlockTag: crwdns18984:0crwdne18984:0* - -{panel type="general" subtitle="true"} - -# crwdns18985:0crwdne18985:0 - -## crwdns18986:0crwdne18986:0 - -**crwdns8357:0crwdne8357:0** - -```scratch -crwdns8358:0[32]crwdnd8358:0[1]crwdne8358:0 -``` - -**crwdns8359:0crwdne8359:0** - -<pre><code class="scratch:inline">crwdns8360:0crwdne8360:0 -</code></pre> - -**crwdns8361:0crwdne8361:0** - -<pre><code class="scratch:inline">crwdns8362:0crwdne8362:0 -</code></pre> - -**crwdns8363:0crwdne8363:0** - -<pre><code class="scratch:inline">crwdns8364:0crwdne8364:0 -</code></pre> - -**crwdns8365:0crwdne8365:0** - -<pre><code class="scratch:inline">crwdns8366:0crwdne8366:0 -</code></pre> - -**crwdns8367:0crwdne8367:0** - -<pre><code class="scratch:inline">crwdns8368:0crwdne8368:0 -</code></pre> - -*BlockTag: crwdns8369:0crwdne8369:0* - -{panel end} - -*BlockTag: crwdns18987:0crwdne18987:0* - -{panel type="general" subtitle="true"} - -# crwdns18988:0crwdne18988:0 - -## crwdns18989:0crwdne18989:0 - -**crwdns8371:0crwdne8371:0** - -```scratch -crwdns8372:0[32]crwdnd8372:0[1]crwdne8372:0 -``` - -**crwdns8373:0crwdne8373:0** - -<pre><code class="scratch:inline">crwdns8374:0[0]crwdnd8374:0[1]crwdne8374:0 -</code></pre> - -**crwdns8375:0crwdne8375:0** - -<pre><code class="scratch:inline">crwdns8376:0[0]crwdnd8376:0[2]crwdne8376:0 -</code></pre> - -**crwdns8377:0crwdne8377:0** - -<pre><code class="scratch:inline">crwdns8378:0[0]crwdnd8378:0[4]crwdne8378:0 -</code></pre> - -**crwdns8379:0crwdne8379:0** - -<pre><code class="scratch:inline">crwdns8380:0[0]crwdnd8380:0[8]crwdne8380:0 -</code></pre> - -**crwdns8381:0crwdne8381:0** - -<pre><code class="scratch:inline">crwdns8382:0[0]crwdnd8382:0[16]crwdne8382:0 -</code></pre> - -*BlockTag: crwdns8383:0crwdne8383:0* - -{panel end} - -*BlockTag: crwdns18990:0crwdne18990:0* - -{panel type="general" subtitle="true"} - -# crwdns18991:0crwdne18991:0 - -## crwdns18992:0crwdne18992:0 - -**crwdns8385:0crwdne8385:0** - -```scratch -crwdns8386:0[-190]crwdnd8386:0[32]crwdnd8386:0[1]crwdne8386:0 -``` - -*BlockTag: crwdns8387:0crwdne8387:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/binary-cards-representing-any-number.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/binary-cards-representing-any-number.md deleted file mode 100644 index 57e563b2d..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/binary-cards-representing-any-number.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8388:0crwdne8388:0 - -## crwdns8389:0crwdne8389:0 - -crwdns8390:0crwdne8390:0 - -## crwdns8391:0crwdne8391:0 - -crwdns8392:0crwdne8392:0 - -| crwdns8393:0crwdne8393:0 | crwdns8394:0crwdne8394:0 | -| ------------------------ | ------------------------ | -| crwdns8395:0crwdne8395:0 | crwdns8396:0crwdne8396:0 | -| crwdns8397:0crwdne8397:0 | crwdns8398:0crwdne8398:0 | -| crwdns8399:0crwdne8399:0 | crwdns8400:0crwdne8400:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-expected.md deleted file mode 100644 index c9df5cfac..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns8401:0crwdne8401:0 - -*BlockTag: crwdns8402:0crwdne8402:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424247/?autostart=false"} - -*BlockTag: crwdns19027:0crwdne19027:0* - -{panel type="help"} - -# crwdns19028:0crwdne19028:0 - -<pre><code class="scratch:split:random">crwdns8404:0crwdne8404:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8405:0[1]crwdne8405:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8406:0[1]crwdnd8406:0[W]crwdnd8406:0[B]crwdne8406:0 -</code></pre> - -*BlockTag: crwdns8407:0crwdne8407:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-hints.md deleted file mode 100644 index 91051a1d1..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-hints.md +++ /dev/null @@ -1,11 +0,0 @@ -- crwdns8408:0crwdne8408:0 - - - crwdns8409:0crwdne8409:0 - - crwdns8410:0crwdne8410:0 - - crwdns8411:0crwdne8411:0 - -- crwdns8412:0crwdne8412:0 crwdns8413:0crwdne8413:0 - -- crwdns8414:0crwdne8414:0 crwdns8415:0crwdne8415:0 crwdns8416:0crwdne8416:0 crwdns8417:0crwdne8417:0 crwdns8418:0crwdne8418:0 - -- crwdns8419:0crwdne8419:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-solution.md deleted file mode 100644 index c6644109b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-any-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8420:0[1]crwdnd8420:0[1]crwdnd8420:0[W]crwdnd8420:0[B]crwdne8420:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/binary-cards-representing-number.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/binary-cards-representing-number.md deleted file mode 100644 index cb32eab74..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/binary-cards-representing-number.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8421:0crwdne8421:0 - -## crwdns8422:0crwdne8422:0 - -crwdns8423:0crwdne8423:0 - -## crwdns8424:0crwdne8424:0 - -crwdns8425:0crwdne8425:0 - -| crwdns8426:0crwdne8426:0 | crwdns8427:0crwdne8427:0 | -| ------------------------ | ------------------------ | -| crwdns8428:0crwdne8428:0 | crwdns8429:0crwdne8429:0 | -| crwdns8430:0crwdne8430:0 | crwdns8431:0crwdne8431:0 | -| crwdns8432:0crwdne8432:0 | crwdns8433:0crwdne8433:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-expected.md deleted file mode 100644 index 20db64546..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns8434:0crwdne8434:0 - -*BlockTag: crwdns8435:0crwdne8435:0* - -{iframe link="https://scratch.mit.edu/projects/embed/159486263/?autostart=false"} - -*BlockTag: crwdns19007:0crwdne19007:0* - -{panel type="help"} - -# crwdns19008:0crwdne19008:0 - -<pre><code class="scratch:split:random">crwdns8437:0[1]crwdne8437:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8438:0[32]crwdnd8438:0[W]crwdnd8438:0[B]crwdne8438:0 -</code></pre> - -*BlockTag: crwdns8439:0crwdne8439:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-hints.md deleted file mode 100644 index 91d7e3f3a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns8440:0crwdne8440:0 - - - crwdns8441:0crwdne8441:0 - - crwdns8442:0crwdne8442:0 - - crwdns8443:0crwdne8443:0 - -- crwdns8444:0crwdne8444:0 crwdns8445:0crwdne8445:0 crwdns8446:0crwdne8446:0 crwdns8447:0crwdne8447:0 crwdns8448:0crwdne8448:0 - -- crwdns8449:0crwdne8449:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-solution.md deleted file mode 100644 index 98259e48d..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-cards-representing-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8450:0[32]crwdnd8450:0[1]crwdnd8450:0[W]crwdnd8450:0[B]crwdne8450:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/binary-notes-representing-any-number.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/binary-notes-representing-any-number.md deleted file mode 100644 index 3d87cf609..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/binary-notes-representing-any-number.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8451:0crwdne8451:0 - -## crwdns8452:0crwdne8452:0 - -crwdns8453:0crwdne8453:0 - -## crwdns8454:0crwdne8454:0 - -crwdns8455:0crwdne8455:0 - -| crwdns8456:0crwdne8456:0 | crwdns8457:0crwdne8457:0 | -| ------------------------ | ------------------------ | -| crwdns8458:0crwdne8458:0 | crwdns8459:0crwdne8459:0 | -| crwdns8460:0crwdne8460:0 | crwdns8461:0crwdne8461:0 | -| crwdns8462:0crwdne8462:0 | crwdns8463:0crwdne8463:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/extra-challenge.md deleted file mode 100644 index 5ecc2195e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8464:0crwdne8464:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-expected.md deleted file mode 100644 index a4a47bbcd..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns8465:0crwdne8465:0 - -*BlockTag: crwdns8466:0crwdne8466:0* - -{iframe link="https://scratch.mit.edu/projects/embed/158861213/?autostart=false"} - -*BlockTag: crwdns19033:0crwdne19033:0* - -{panel type="help"} - -# crwdns19034:0crwdne19034:0 - -<pre><code class="scratch:split:random">crwdns8468:0crwdne8468:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8469:0crwdne8469:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8470:0[1]crwdne8470:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8471:0[1]crwdne8471:0 -</code></pre> - -*BlockTag: crwdns8472:0crwdne8472:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-hints.md deleted file mode 100644 index 459335c84..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns8473:0crwdne8473:0 - - - crwdns8474:0crwdne8474:0 - - crwdns8475:0crwdne8475:0 crwdns8476:0crwdne8476:0 - -- crwdns8477:0crwdne8477:0 crwdns8478:0crwdne8478:0 - -- crwdns8479:0crwdne8479:0 crwdns8480:0crwdne8480:0 crwdns8481:0crwdne8481:0 crwdns8482:0crwdne8482:0 -- crwdns8483:0crwdne8483:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-solution.md deleted file mode 100644 index 814c4f3f2..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-any-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8484:0[1]crwdnd8484:0[1]crwdne8484:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/binary-notes-representing-number.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/binary-notes-representing-number.md deleted file mode 100644 index f1e8652b8..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/binary-notes-representing-number.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8485:0crwdne8485:0 - -## crwdns8486:0crwdne8486:0 - -crwdns8487:0crwdne8487:0 - -## crwdns8488:0crwdne8488:0 - -crwdns8489:0crwdne8489:0 - -| crwdns8490:0crwdne8490:0 | crwdns8491:0crwdne8491:0 | -| ------------------------ | ------------------------ | -| crwdns8492:0crwdne8492:0 | crwdns8493:0crwdne8493:0 | -| crwdns8494:0crwdne8494:0 | crwdns8495:0crwdne8495:0 | -| crwdns8496:0crwdne8496:0 | crwdns8497:0crwdne8497:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-expected.md deleted file mode 100644 index 31b32dabc..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns8498:0crwdne8498:0 - -*BlockTag: crwdns8499:0crwdne8499:0* - -{iframe link="https://scratch.mit.edu/projects/embed/158861343/?autostart=false"} - -*BlockTag: crwdns19009:0crwdne19009:0* - -{panel type="help"} - -# crwdns19010:0crwdne19010:0 - -<pre><code class="scratch:split:random">crwdns8501:0crwdne8501:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8502:0[1]crwdne8502:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8503:0crwdne8503:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8504:0[32]crwdne8504:0 -</code></pre> - -*BlockTag: crwdns8505:0crwdne8505:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-hints.md deleted file mode 100644 index 11be1050a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns8506:0crwdne8506:0 - - - crwdns8507:0crwdne8507:0 - - crwdns8508:0crwdne8508:0 - -- crwdns8509:0crwdne8509:0 crwdns8510:0crwdne8510:0 crwdns8511:0crwdne8511:0 crwdns8512:0crwdne8512:0 - -- crwdns8513:0crwdne8513:0 -- crwdns8514:0crwdne8514:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-solution.md deleted file mode 100644 index a1312f263..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-notes-representing-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8515:0[32]crwdnd8515:0[1]crwdne8515:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/binary-numbers-no-calculations.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/binary-numbers-no-calculations.md deleted file mode 100644 index 417aa9fe4..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/binary-numbers-no-calculations.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns8516:0crwdne8516:0 - -## crwdns8517:0crwdne8517:0 - -crwdns8518:0crwdne8518:0 - -## crwdns8519:0crwdne8519:0 - -crwdns8520:0crwdne8520:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/extra-challenge.md deleted file mode 100644 index 7e4c88c99..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8521:0crwdne8521:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-expected.md deleted file mode 100644 index 2c9da6537..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-expected.md +++ /dev/null @@ -1 +0,0 @@ - crwdns8522:0crwdne8522:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-hints.md deleted file mode 100644 index f8a48ebd3..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns8523:0crwdne8523:0 -- crwdns8524:0crwdne8524:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-solution.md deleted file mode 100644 index a6ecdfe38..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/python-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```python -crwdns8525:0crwdne8525:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-expected.md deleted file mode 100644 index d4991d6f2..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-expected.md +++ /dev/null @@ -1,18 +0,0 @@ -crwdns8526:0crwdne8526:0 - -*BlockTag: crwdns8527:0crwdne8527:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148423714/?autostart=false"} - -*BlockTag: crwdns18997:0crwdne18997:0* - -{panel type="help"} - -# crwdns18998:0crwdne18998:0 - -<pre><code class="scratch:split:random">crwdns8529:0[1]crwdnd8529:0[2]crwdnd8529:0[4]crwdnd8529:0[8]crwdnd8529:0[16]crwdne8529:0 -</code></pre> - -*BlockTag: crwdns8530:0crwdne8530:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-hints.md deleted file mode 100644 index 8940d34fc..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-hints.md +++ /dev/null @@ -1,7 +0,0 @@ -- crwdns8531:0[Hello]crwdne8531:0 crwdns8532:0crwdne8532:0 - -- crwdns8533:0crwdne8533:0 - -- crwdns8534:0crwdne8534:0 - -- crwdns8535:0crwdne8535:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-solution.md deleted file mode 100644 index 3c1eb81cf..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-no-calculations/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8536:0[1]crwdnd8536:0[2]crwdnd8536:0[4]crwdnd8536:0[8]crwdnd8536:0[16]crwdne8536:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/binary-numbers-using-variable-operator-repeat.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/binary-numbers-using-variable-operator-repeat.md deleted file mode 100644 index e3f7e7a78..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/binary-numbers-using-variable-operator-repeat.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns8590:0crwdne8590:0 - -## crwdns8591:0crwdne8591:0 - -crwdns8592:0crwdne8592:0 crwdns8593:0crwdne8593:0 - -## crwdns8594:0crwdne8594:0 - -crwdns8595:0crwdne8595:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/extra-challenge.md deleted file mode 100644 index 8d35db4cc..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8596:0crwdne8596:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-expected.md deleted file mode 100644 index 7c9e4bf5e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-expected.md +++ /dev/null @@ -1,18 +0,0 @@ -crwdns8597:0crwdne8597:0 - -*BlockTag: crwdns8598:0crwdne8598:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148423848/?autostart=false"} - -*BlockTag: crwdns18995:0crwdne18995:0* - -{panel type="help"} - -# crwdns18996:0crwdne18996:0 - -<pre><code class="scratch:split:random">crwdns8600:0[1]crwdne8600:0 -</code></pre> - -*BlockTag: crwdns8601:0crwdne8601:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-hints.md deleted file mode 100644 index 6dff986f1..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns8602:0[1]crwdne8602:0 crwdns8603:0crwdne8603:0 -- crwdns8604:0[Hello]crwdne8604:0 -- crwdns8605:0crwdne8605:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-solution.md deleted file mode 100644 index dbb96383b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable-operator-repeat/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8606:0[1]crwdne8606:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/binary-numbers-using-variable.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/binary-numbers-using-variable.md deleted file mode 100644 index 7ab434bd3..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/binary-numbers-using-variable.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns8559:0crwdne8559:0 - -## crwdns8560:0crwdne8560:0 - -crwdns8561:0crwdne8561:0 - -## crwdns8562:0crwdne8562:0 - -crwdns8563:0crwdne8563:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/extra-challenge.md deleted file mode 100644 index 10241b743..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8564:0crwdne8564:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-expected.md deleted file mode 100644 index 79d7c0dad..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-expected.md +++ /dev/null @@ -1 +0,0 @@ - crwdns8565:0crwdne8565:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-hints.md deleted file mode 100644 index 5108063d7..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-hints.md +++ /dev/null @@ -1,4 +0,0 @@ -- crwdns8566:0crwdne8566:0 crwdns8567:0crwdne8567:0 crwdns8568:0crwdne8568:0 -- crwdns8569:0crwdne8569:0 -- crwdns8570:0crwdne8570:0 -- crwdns8571:0crwdne8571:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-solution.md deleted file mode 100644 index ff6a21118..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/python-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```python -crwdns8572:0crwdne8572:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-expected.md deleted file mode 100644 index 5bff11365..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-expected.md +++ /dev/null @@ -1,25 +0,0 @@ -crwdns8573:0crwdne8573:0 - -*BlockTag: crwdns8574:0crwdne8574:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148423794/?autostart=false"} - -*BlockTag: crwdns19015:0crwdne19015:0* - -{panel type="help"} - -# crwdns19016:0crwdne19016:0 - -```scratch -crwdns8576:0crwdne8576:0 -``` - -<pre><code class="scratch:split:random">crwdns8577:0[1]crwdnd8577:0[2]crwdnd8577:0[4]crwdnd8577:0[8]crwdnd8577:0[16]crwdne8577:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8578:0crwdne8578:0 -</code></pre> - -*BlockTag: crwdns8579:0crwdne8579:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-hints.md deleted file mode 100644 index b4aa3f375..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-hints.md +++ /dev/null @@ -1,6 +0,0 @@ -- crwdns8580:0crwdne8580:0 crwdns8581:0crwdne8581:0 crwdns8582:0crwdne8582:0 crwdns8583:0crwdne8583:0 -- crwdns8584:0[0]crwdne8584:0 -- crwdns8585:0[Hello]crwdne8585:0 -- crwdns8586:0crwdne8586:0 -- crwdns8587:0crwdne8587:0 -- crwdns8588:0crwdne8588:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-solution.md deleted file mode 100644 index f3e0be3a2..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variable/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8589:0[1]crwdnd8589:0[2]crwdnd8589:0[4]crwdnd8589:0[8]crwdnd8589:0[16]crwdne8589:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/binary-numbers-using-variables-as-operator.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/binary-numbers-using-variables-as-operator.md deleted file mode 100644 index dbbc20f92..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/binary-numbers-using-variables-as-operator.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns8607:0crwdne8607:0 - -## crwdns8608:0crwdne8608:0 - -crwdns8609:0crwdne8609:0 crwdns8610:0crwdne8610:0 crwdns8611:0crwdne8611:0 - -## crwdns8612:0crwdne8612:0 - -crwdns8613:0crwdne8613:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/extra-challenge.md deleted file mode 100644 index 643baa19c..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8614:0crwdne8614:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-expected.md deleted file mode 100644 index 18ec4175a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-expected.md +++ /dev/null @@ -1 +0,0 @@ - crwdns8615:0crwdne8615:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-hints.md deleted file mode 100644 index c78b460f9..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-hints.md +++ /dev/null @@ -1,4 +0,0 @@ -- crwdns8616:0crwdne8616:0 -- crwdns8617:0crwdne8617:0 -- crwdns8618:0crwdne8618:0 crwdns8619:0crwdne8619:0 -- crwdns8620:0crwdne8620:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-solution.md deleted file mode 100644 index 89d4bf7fd..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/python-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```python -crwdns8621:0crwdne8621:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-expected.md deleted file mode 100644 index c392cd413..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-expected.md +++ /dev/null @@ -1,25 +0,0 @@ -crwdns8622:0crwdne8622:0 - -*BlockTag: crwdns8623:0crwdne8623:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148423827/?autostart=false"} - -*BlockTag: crwdns19013:0crwdne19013:0* - -{panel type="help"} - -# crwdns19014:0crwdne19014:0 - -```scratch -crwdns8625:0crwdne8625:0 -``` - -<pre><code class="scratch:split:random">crwdns8626:0[1]crwdne8626:0 -</code></pre> - -<pre><code class="scratch:split">crwdns8627:0crwdne8627:0 -</code></pre> - -*BlockTag: crwdns8628:0crwdne8628:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-hints.md deleted file mode 100644 index 6b7ce74f3..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns8629:0crwdne8629:0 crwdns8630:0crwdne8630:0 crwdns8631:0crwdne8631:0 -- crwdns8632:0[1]crwdne8632:0 crwdns8633:0crwdne8633:0 -- crwdns8634:0[Hello]crwdne8634:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-solution.md deleted file mode 100644 index cc372b0d4..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/binary-numbers-using-variables-as-operator/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8635:0[1]crwdne8635:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/cards-given-number-one-line.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/cards-given-number-one-line.md deleted file mode 100644 index 6241e366e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/cards-given-number-one-line.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns8670:0crwdne8670:0 - -## crwdns8671:0crwdne8671:0 - -crwdns8672:0crwdne8672:0 - -## crwdns8673:0crwdne8673:0 - -crwdns8674:0crwdne8674:0 - -| crwdns8675:0crwdne8675:0 | crwdns8676:0crwdne8676:0 | -| ------------------------ | ------------------------ | -| crwdns8677:0crwdne8677:0 | crwdns8678:0crwdne8678:0 | -| crwdns8679:0crwdne8679:0 | crwdns8680:0crwdne8680:0 | -| crwdns8681:0crwdne8681:0 | crwdns8682:0crwdne8682:0 | -| crwdns8683:0crwdne8683:0 | crwdns8684:0crwdne8684:0 | -| crwdns8685:0crwdne8685:0 | crwdns8686:0crwdne8686:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/extra-challenge.md deleted file mode 100644 index 5cae7104e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8687:0crwdne8687:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-expected.md deleted file mode 100644 index a7bf04ce4..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-expected.md +++ /dev/null @@ -1,28 +0,0 @@ -crwdns8688:0crwdne8688:0 - -*BlockTag: crwdns8689:0crwdne8689:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424217/?autostart=false"} - -*BlockTag: crwdns18999:0crwdne18999:0* - -{panel type="help"} - -# crwdns19000:0crwdne19000:0 - -<pre><code class="scratch:split:random">crwdns8691:0crwdne8691:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8692:0[16]crwdnd8692:0[16]crwdnd8692:0[8]crwdnd8692:0[8]crwdnd8692:0[4]crwdnd8692:0[4]crwdnd8692:0[2]crwdnd8692:0[2]crwdnd8692:0[1]crwdnd8692:0[1]crwdnd8692:0[31]crwdnd8692:0[31]crwdne8692:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8693:0crwdne8693:0 - -</code></pre> - -<pre><code class="scratch:split:random">crwdns8694:0crwdne8694:0 -</code></pre> - -*BlockTag: crwdns8695:0crwdne8695:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-hints.md deleted file mode 100644 index 47d72f77b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-hints.md +++ /dev/null @@ -1,14 +0,0 @@ -- crwdns8696:0crwdne8696:0 - - crwdns8697:0crwdne8697:0 - - -- crwdns8698:0crwdne8698:0 crwdns8699:0crwdne8699:0 crwdns8700:0crwdne8700:0 -- crwdns8701:0crwdne8701:0 - -```scratch -crwdns8702:0crwdne8702:0 -``` - -- crwdns8703:0crwdne8703:0 -- crwdns8704:0crwdne8704:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-solution.md deleted file mode 100644 index 8379cb62f..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number-one-line/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8705:0[31]crwdnd8705:0[31]crwdnd8705:0[16]crwdnd8705:0[16]crwdnd8705:0[8]crwdnd8705:0[8]crwdnd8705:0[4]crwdnd8705:0[4]crwdnd8705:0[2]crwdnd8705:0[2]crwdnd8705:0[1]crwdnd8705:0[1]crwdne8705:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/cards-given-number.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/cards-given-number.md deleted file mode 100644 index 2369f3209..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/cards-given-number.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns8636:0crwdne8636:0 - -## crwdns8637:0crwdne8637:0 - -crwdns8638:0crwdne8638:0 - -## crwdns8639:0crwdne8639:0 - -crwdns8640:0crwdne8640:0 - -| crwdns8641:0crwdne8641:0 | crwdns8642:0crwdne8642:0 | -| ------------------------ | ------------------------ | -| crwdns8643:0crwdne8643:0 | crwdns8644:0crwdne8644:0 | -| crwdns8645:0crwdne8645:0 | crwdns8646:0crwdne8646:0 | -| crwdns8647:0crwdne8647:0 | crwdns8648:0crwdne8648:0 | -| crwdns8649:0crwdne8649:0 | crwdns8650:0crwdne8650:0 | -| crwdns8651:0crwdne8651:0 | crwdns8652:0crwdne8652:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-expected.md deleted file mode 100644 index ec3e0e2c0..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns8653:0crwdne8653:0 - -*BlockTag: crwdns8654:0crwdne8654:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424197/?autostart=false"} - -*BlockTag: crwdns19021:0crwdne19021:0* - -{panel type="help"} - -# crwdns19022:0crwdne19022:0 - -<pre><code class="scratch:split:random">crwdns8656:0crwdne8656:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8657:0[31]crwdnd8657:0[31]crwdnd8657:0[16]crwdnd8657:0[16]crwdnd8657:0[8]crwdnd8657:0[8]crwdnd8657:0[4]crwdnd8657:0[4]crwdnd8657:0[2]crwdnd8657:0[2]crwdnd8657:0[1]crwdnd8657:0[1]crwdne8657:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8658:0crwdne8658:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8659:0[16]crwdnd8659:0[8]crwdnd8659:0[4]crwdnd8659:0[2]crwdnd8659:0[1]crwdne8659:0 -</code></pre> - -*BlockTag: crwdns8660:0crwdne8660:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-hints.md deleted file mode 100644 index 990df1076..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-hints.md +++ /dev/null @@ -1,13 +0,0 @@ -- crwdns8661:0crwdne8661:0 - - crwdns8662:0crwdne8662:0 - - -- crwdns8663:0crwdne8663:0 crwdns8664:0crwdne8664:0 crwdns8665:0crwdne8665:0 -- crwdns8666:0crwdne8666:0 - -```scratch -crwdns8667:0crwdne8667:0 -``` - -- crwdns8668:0crwdne8668:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-solution.md deleted file mode 100644 index cdc4dd2b6..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/cards-given-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8669:0[31]crwdnd8669:0[31]crwdnd8669:0[16]crwdnd8669:0[16]crwdnd8669:0[16]crwdnd8669:0[8]crwdnd8669:0[8]crwdnd8669:0[8]crwdnd8669:0[4]crwdnd8669:0[4]crwdnd8669:0[4]crwdnd8669:0[2]crwdnd8669:0[2]crwdnd8669:0[2]crwdnd8669:0[1]crwdnd8669:0[1]crwdnd8669:0[1]crwdne8669:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/count-5-bw-no-loop.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/count-5-bw-no-loop.md deleted file mode 100644 index 7a21feb2e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/count-5-bw-no-loop.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8706:0crwdne8706:0 - -## crwdns8707:0crwdne8707:0 - -crwdns8708:0crwdne8708:0 - -## crwdns8709:0crwdne8709:0 - -crwdns8710:0crwdne8710:0 - -| crwdns8711:0crwdne8711:0 | crwdns8712:0crwdne8712:0 | -| ------------------------ | ------------------------ | -| crwdns8713:0crwdne8713:0 | crwdns8714:0crwdne8714:0 | -| crwdns8715:0crwdne8715:0 | crwdns8716:0crwdne8716:0 | -| crwdns8717:0crwdne8717:0 | crwdns8718:0crwdne8718:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-expected.md deleted file mode 100644 index 872655dd5..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns8719:0crwdne8719:0 - -*BlockTag: crwdns8720:0crwdne8720:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424082/?autostart=false"} - -*BlockTag: crwdns19029:0crwdne19029:0* - -{panel type="help"} - -# crwdns19030:0crwdne19030:0 - -<pre><code class="scratch:split:random">crwdns8722:0crwdne8722:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8723:0[W]crwdnd8723:0[W]crwdnd8723:0[W]crwdnd8723:0[W]crwdnd8723:0[W]crwdne8723:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8724:0crwdne8724:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8725:0[0]crwdne8725:0 -</code></pre> - -*BlockTag: crwdns8726:0crwdne8726:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-hints.md deleted file mode 100644 index c18d009f0..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns8727:0crwdne8727:0 crwdns8728:0crwdne8728:0 crwdns8729:0crwdne8729:0 -- crwdns8730:0[0]crwdne8730:0 -- crwdns8731:0crwdne8731:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-solution.md deleted file mode 100644 index c04e79ed3..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-no-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8732:0[0]crwdnd8732:0[W]crwdnd8732:0[W]crwdnd8732:0[W]crwdnd8732:0[W]crwdnd8732:0[W]crwdne8732:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/count-5-bw-one-input-no-loop.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/count-5-bw-one-input-no-loop.md deleted file mode 100644 index 3f0cb2131..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/count-5-bw-one-input-no-loop.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8733:0crwdne8733:0 - -## crwdns8734:0crwdne8734:0 - -crwdns8735:0crwdne8735:0 crwdns8736:0crwdne8736:0 - -## crwdns8737:0crwdne8737:0 - -crwdns8738:0crwdne8738:0 - -| crwdns8739:0crwdne8739:0 | crwdns8740:0crwdne8740:0 | -| ------------------------ | ------------------------ | -| crwdns8741:0crwdne8741:0 | crwdns8742:0crwdne8742:0 | -| crwdns8743:0crwdne8743:0 | crwdns8744:0crwdne8744:0 | -| crwdns8745:0crwdne8745:0 | crwdns8746:0crwdne8746:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-expected.md deleted file mode 100644 index 785ac6c33..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns8747:0crwdne8747:0 - -*BlockTag: crwdns8748:0crwdne8748:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424155/?autostart=false"} - -*BlockTag: crwdns18979:0crwdne18979:0* - -{panel type="help"} - -# crwdns18980:0crwdne18980:0 - -<pre><code class="scratch:split:random">crwdns8750:0crwdne8750:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8751:0[W]crwdnd8751:0[W]crwdnd8751:0[W]crwdnd8751:0[W]crwdnd8751:0[W]crwdne8751:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8752:0[0]crwdne8752:0 -</code></pre> - -*BlockTag: crwdns8753:0crwdne8753:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-hints.md deleted file mode 100644 index b3b69ffdb..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns8754:0crwdne8754:0 crwdns8755:0crwdne8755:0 crwdns8756:0crwdne8756:0 crwdns8757:0crwdne8757:0 -- crwdns8758:0[world]crwdne8758:0 crwdns8759:0[world]crwdne8759:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-solution.md deleted file mode 100644 index a40fd6423..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-no-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8760:0[0]crwdnd8760:0[W]crwdnd8760:0[W]crwdnd8760:0[W]crwdnd8760:0[W]crwdnd8760:0[W]crwdne8760:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/count-5-bw-one-input-using-loop.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/count-5-bw-one-input-using-loop.md deleted file mode 100644 index 2207415ec..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/count-5-bw-one-input-using-loop.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8761:0crwdne8761:0 - -## crwdns8762:0crwdne8762:0 - -crwdns8763:0crwdne8763:0 crwdns8764:0crwdne8764:0 - -## crwdns8765:0crwdne8765:0 - -crwdns8766:0crwdne8766:0 - -| crwdns8767:0crwdne8767:0 | crwdns8768:0crwdne8768:0 | -| ------------------------ | ------------------------ | -| crwdns8769:0crwdne8769:0 | crwdns8770:0crwdne8770:0 | -| crwdns8771:0crwdne8771:0 | crwdns8772:0crwdne8772:0 | -| crwdns8773:0crwdne8773:0 | crwdns8774:0crwdne8774:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-expected.md deleted file mode 100644 index 4207c6bc4..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns8775:0crwdne8775:0 - -*BlockTag: crwdns8776:0crwdne8776:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424160/?autostart=false"} - -*BlockTag: crwdns19023:0crwdne19023:0* - -{panel type="help"} - -# crwdns19024:0crwdne19024:0 - -<pre><code class="scratch:split:random">crwdns8778:0[W]crwdne8778:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8779:0[0]crwdnd8779:0[1]crwdnd8779:0[16]crwdne8779:0 -</code></pre> - -*BlockTag: crwdns8780:0crwdne8780:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-hints.md deleted file mode 100644 index 5ca00d839..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-hints.md +++ /dev/null @@ -1,10 +0,0 @@ -- crwdns8781:0crwdne8781:0 - - - crwdns8782:0crwdne8782:0 - - crwdns8783:0crwdne8783:0 - - crwdns8784:0crwdne8784:0 crwdns8785:0crwdne8785:0 crwdns8786:0crwdne8786:0 crwdns8787:0crwdne8787:0 - - crwdns8788:0crwdne8788:0 - -- crwdns8789:0[world]crwdne8789:0 crwdns8790:0[world]crwdne8790:0 - -- crwdns8791:0crwdne8791:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-solution.md deleted file mode 100644 index a433c58ca..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-one-input-using-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8792:0[0]crwdnd8792:0[1]crwdnd8792:0[16]crwdnd8792:0[W]crwdne8792:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/count-5-bw-using-loop.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/count-5-bw-using-loop.md deleted file mode 100644 index 1d0383673..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/count-5-bw-using-loop.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8793:0crwdne8793:0 - -## crwdns8794:0crwdne8794:0 - -crwdns8795:0crwdne8795:0 crwdns8796:0crwdne8796:0 - -## crwdns8797:0crwdne8797:0 - -crwdns8798:0crwdne8798:0 - -| crwdns8799:0crwdne8799:0 | crwdns8800:0crwdne8800:0 | -| ------------------------ | ------------------------ | -| crwdns8801:0crwdne8801:0 | crwdns8802:0crwdne8802:0 | -| crwdns8803:0crwdne8803:0 | crwdns8804:0crwdne8804:0 | -| crwdns8805:0crwdne8805:0 | crwdns8806:0crwdne8806:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-expected.md deleted file mode 100644 index 830a57bde..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns8807:0crwdne8807:0 - -*BlockTag: crwdns8808:0crwdne8808:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424135/?autostart=false"} - -*BlockTag: crwdns19005:0crwdne19005:0* - -{panel type="help"} - -# crwdns19006:0crwdne19006:0 - -<pre><code class="scratch:split:random">crwdns8810:0[W]crwdne8810:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8811:0[16]crwdnd8811:0[0]crwdne8811:0 -</code></pre> - -*BlockTag: crwdns8812:0crwdne8812:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-hints.md deleted file mode 100644 index 77d9d3ac6..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns8813:0crwdne8813:0 crwdns8814:0crwdne8814:0 crwdns8815:0crwdne8815:0 crwdns8816:0crwdne8816:0 crwdns8817:0crwdne8817:0 -- crwdns8818:0crwdne8818:0 -- crwdns8819:0crwdne8819:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-solution.md deleted file mode 100644 index e068e4302..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-5-bw-using-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8820:0[16]crwdnd8820:0[0]crwdnd8820:0[W]crwdne8820:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/count-bw-one-input-using-loop.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/count-bw-one-input-using-loop.md deleted file mode 100644 index cfcffa4df..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/count-bw-one-input-using-loop.md +++ /dev/null @@ -1,16 +0,0 @@ -# crwdns8821:0crwdne8821:0 - -## crwdns8822:0crwdne8822:0 - -crwdns8823:0crwdne8823:0 - -## crwdns8824:0crwdne8824:0 - -crwdns8825:0crwdne8825:0 - -| crwdns8826:0crwdne8826:0 | crwdns8827:0crwdne8827:0 | -| ------------------------ | ------------------------ | -| crwdns8828:0crwdne8828:0 | crwdns8829:0crwdne8829:0 | -| crwdns8830:0crwdne8830:0 | crwdns8831:0crwdne8831:0 | -| crwdns8832:0crwdne8832:0 | crwdns8833:0crwdne8833:0 | -| crwdns8834:0crwdne8834:0 | crwdns8835:0crwdne8835:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-expected.md deleted file mode 100644 index 43453e772..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns8836:0crwdne8836:0 - -*BlockTag: crwdns8837:0crwdne8837:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424178/?autostart=false"} - -*BlockTag: crwdns19025:0crwdne19025:0* - -{panel type="help"} - -# crwdns19026:0crwdne19026:0 - -<pre><code class="scratch:split:random">crwdns8839:0[W]crwdne8839:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8840:0[0]crwdnd8840:0[1]crwdne8840:0 -</code></pre> - -*BlockTag: crwdns8841:0crwdne8841:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-hints.md deleted file mode 100644 index e5c130d5b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-hints.md +++ /dev/null @@ -1,14 +0,0 @@ -- crwdns8842:0crwdne8842:0 - - - crwdns8843:0crwdne8843:0 - - crwdns8844:0crwdne8844:0 - - crwdns8845:0crwdne8845:0 crwdns8846:0crwdne8846:0 crwdns8847:0crwdne8847:0 crwdns8848:0crwdne8848:0 - - crwdns8849:0crwdne8849:0 - -- crwdns8850:0[world]crwdne8850:0 crwdns8851:0[world]crwdne8851:0 - -- crwdns8852:0crwdne8852:0 - -- crwdns8853:0[world]crwdne8853:0 - -- crwdns8854:0crwdne8854:0 crwdns8855:0crwdne8855:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-solution.md deleted file mode 100644 index f6a009833..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/count-bw-one-input-using-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8856:0[0]crwdnd8856:0[1]crwdnd8856:0[W]crwdne8856:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/decimal-to-binary-alternative.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/decimal-to-binary-alternative.md deleted file mode 100644 index a3f044430..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/decimal-to-binary-alternative.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns8891:0crwdne8891:0 - -## crwdns8892:0crwdne8892:0 - -crwdns8893:0crwdne8893:0 crwdns8894:0crwdne8894:0 - -## crwdns8895:0crwdne8895:0 - -crwdns8896:0crwdne8896:0 - -| crwdns8897:0crwdne8897:0 | crwdns8898:0crwdne8898:0 | -| ------------------------ | ------------------------ | -| crwdns8899:0crwdne8899:0 | crwdns8900:0crwdne8900:0 | -| crwdns8901:0crwdne8901:0 | crwdns8902:0crwdne8902:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-expected.md deleted file mode 100644 index 6760d76db..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns8903:0crwdne8903:0 - -*BlockTag: crwdns8904:0crwdne8904:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424337/?autostart=false"} - -*BlockTag: crwdns19001:0crwdne19001:0* - -{panel type="help"} - -# crwdns19002:0crwdne19002:0 - -<pre><code class="scratch:split:random">crwdns8906:0[1]crwdne8906:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8907:0[0]crwdne8907:0 -</code></pre> - -*BlockTag: crwdns8908:0crwdne8908:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-hints.md deleted file mode 100644 index 24be44082..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-hints.md +++ /dev/null @@ -1,6 +0,0 @@ -- crwdns8909:0crwdne8909:0 crwdns8910:0crwdne8910:0 -- crwdns8911:0crwdne8911:0 -- crwdns8912:0crwdne8912:0 crwdns8913:0[9]crwdne8913:0 crwdns8914:0crwdne8914:0 -- crwdns8915:0crwdne8915:0 crwdns8916:0crwdne8916:0 -- crwdns8917:0crwdne8917:0 -- crwdns8918:0crwdne8918:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-solution.md deleted file mode 100644 index ea215c24f..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary-alternative/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8919:0[0]crwdnd8919:0[1]crwdne8919:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/decimal-to-binary.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/decimal-to-binary.md deleted file mode 100644 index 6293a090b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/decimal-to-binary.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8857:0crwdne8857:0 - -## crwdns8858:0crwdne8858:0 - -crwdns8859:0crwdne8859:0 crwdns8860:0crwdne8860:0 - -## crwdns8861:0crwdne8861:0 - -crwdns8862:0crwdne8862:0 - -| crwdns8863:0crwdne8863:0 | crwdns8864:0crwdne8864:0 | -| ------------------------ | ------------------------ | -| crwdns8865:0crwdne8865:0 | crwdns8866:0crwdne8866:0 | -| crwdns8867:0crwdne8867:0 | crwdns8868:0crwdne8868:0 | -| crwdns8869:0crwdne8869:0 | crwdns8870:0crwdne8870:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-expected.md deleted file mode 100644 index 837bd74e8..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns8871:0crwdne8871:0 - -*BlockTag: crwdns8872:0crwdne8872:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424317/?autostart=false"} - -*BlockTag: crwdns19017:0crwdne19017:0* - -{panel type="help"} - -# crwdns19018:0crwdne19018:0 - -<pre><code class="scratch:split:random">crwdns8874:0crwdne8874:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8875:0[1]crwdne8875:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8876:0[1]crwdnd8876:0[1]crwdnd8876:0[0]crwdne8876:0 -</code></pre> - -*BlockTag: crwdns8877:0crwdne8877:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-hints.md deleted file mode 100644 index 82b66af3e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns8878:0crwdne8878:0 - - - crwdns8879:0crwdne8879:0 - - crwdns8880:0crwdne8880:0 crwdns8881:0crwdne8881:0 - - crwdns8882:0crwdne8882:0 - -- crwdns8883:0crwdne8883:0 crwdns8884:0crwdne8884:0 - -- crwdns8885:0crwdne8885:0 crwdns8886:0crwdne8886:0 crwdns8887:0crwdne8887:0 crwdns8888:0crwdne8888:0 crwdns8889:0crwdne8889:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-solution.md deleted file mode 100644 index 8df280c38..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/decimal-to-binary/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8890:0[1]crwdnd8890:0[1]crwdnd8890:0[1]crwdnd8890:0[0]crwdne8890:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/dots-largest-to-1.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/dots-largest-to-1.md deleted file mode 100644 index 5f18fbdd0..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/dots-largest-to-1.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8920:0crwdne8920:0 - -## crwdns8921:0crwdne8921:0 - -crwdns8922:0crwdne8922:0 - -## crwdns8923:0crwdne8923:0 - -crwdns8924:0crwdne8924:0 - -| crwdns8925:0crwdne8925:0 | crwdns8926:0crwdne8926:0 | -| ------------------------ | ------------------------ | -| crwdns8927:0crwdne8927:0 | crwdns8928:0crwdne8928:0 | -| crwdns8929:0crwdne8929:0 | crwdns8930:0crwdne8930:0 | -| crwdns8931:0crwdne8931:0 | crwdns8932:0crwdne8932:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-expected.md deleted file mode 100644 index dc41d1cb2..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns8933:0crwdne8933:0 - -*BlockTag: crwdns8934:0crwdne8934:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424005/?autostart=false"} - -*BlockTag: crwdns19019:0crwdne19019:0* - -{panel type="help"} - -# crwdns19020:0crwdne19020:0 - -<pre><code class="scratch:split:random">crwdns8936:0[1]crwdne8936:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8937:0crwdne8937:0 -</code></pre> - -<pre><code class="scratch:split">crwdns8938:0crwdne8938:0 -</code></pre> - -*BlockTag: crwdns8939:0crwdne8939:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-hints.md deleted file mode 100644 index 91cc0b0cb..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns8940:0crwdne8940:0 crwdns8941:0crwdne8941:0 -- crwdns8942:0crwdne8942:0 -- crwdns8943:0crwdne8943:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-solution.md deleted file mode 100644 index ffe4f22c6..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-largest-to-1/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8944:0[1]crwdne8944:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/dots-right-left.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/dots-right-left.md deleted file mode 100644 index adfc120e2..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/dots-right-left.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8945:0crwdne8945:0 - -## crwdns8946:0crwdne8946:0 - -crwdns8947:0crwdne8947:0 - -## crwdns8948:0crwdne8948:0 - -crwdns8949:0crwdne8949:0 - -| crwdns8950:0crwdne8950:0 | crwdns8951:0crwdne8951:0 | -| ------------------------ | ------------------------ | -| crwdns8952:0crwdne8952:0 | crwdns8953:0crwdne8953:0 | -| crwdns8954:0crwdne8954:0 | crwdns8955:0crwdne8955:0 | -| crwdns8956:0crwdne8956:0 | crwdns8957:0crwdne8957:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/extra-challenge.md deleted file mode 100644 index 8bf2a055d..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8958:0crwdne8958:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-expected.md deleted file mode 100644 index e4f682d89..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns8959:0crwdne8959:0 - -*BlockTag: crwdns8960:0crwdne8960:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148423954/?autostart=false"} - -*BlockTag: crwdns19003:0crwdne19003:0* - -{panel type="help"} - -# crwdns19004:0crwdne19004:0 - -<pre><code class="scratch:split:random">crwdns8962:0[1]crwdne8962:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8963:0crwdne8963:0 -</code></pre> - -*BlockTag: crwdns8964:0crwdne8964:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-hints.md deleted file mode 100644 index db5bd118a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns8965:0crwdne8965:0 - - - crwdns8966:0crwdne8966:0 - - crwdns8967:0crwdne8967:0 - - crwdns8968:0crwdne8968:0 - -- crwdns8969:0[hello]crwdnd8969:0[world]crwdne8969:0 crwdns8970:0crwdne8970:0 - -- crwdns8971:0[hello]crwdnd8971:0[world]crwdne8971:0 crwdns8972:0crwdne8972:0 crwdns8973:0crwdne8973:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-solution.md deleted file mode 100644 index 963d96fec..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/dots-right-left/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns8974:0[1]crwdne8974:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/extra-challenge.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/extra-challenge.md deleted file mode 100644 index 63aac3e3a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns8975:0crwdne8975:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/left-right-given-largest.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/left-right-given-largest.md deleted file mode 100644 index 410825065..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/left-right-given-largest.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns8976:0crwdne8976:0 - -## crwdns8977:0crwdne8977:0 - -crwdns8978:0crwdne8978:0 - -## crwdns8979:0crwdne8979:0 - -crwdns8980:0crwdne8980:0 - -| crwdns8981:0crwdne8981:0 | crwdns8982:0crwdne8982:0 | -| ------------------------ | ------------------------ | -| crwdns8983:0crwdne8983:0 | crwdns8984:0crwdne8984:0 | -| crwdns8985:0crwdne8985:0 | crwdns8986:0crwdne8986:0 | -| crwdns8987:0crwdne8987:0 | crwdns8988:0crwdne8988:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-expected.md deleted file mode 100644 index 2bb8467b0..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns8989:0crwdne8989:0 - -*BlockTag: crwdns8990:0crwdne8990:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424023/?autostart=false"} - -*BlockTag: crwdns19011:0crwdne19011:0* - -{panel type="help"} - -# crwdns19012:0crwdne19012:0 - -<pre><code class="scratch:split:random">crwdns8992:0[1]crwdne8992:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8993:0crwdne8993:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns8994:0crwdne8994:0 -</code></pre> - -*BlockTag: crwdns8995:0crwdne8995:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-hints.md deleted file mode 100644 index 5a5758905..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns8996:0crwdne8996:0 crwdns8997:0crwdne8997:0 crwdns8998:0crwdne8998:0 -- crwdns8999:0[hello]crwdnd8999:0[world]crwdne8999:0 -- crwdns9000:0[hello]crwdnd9000:0[world]crwdne9000:0 crwdns9001:0crwdne9001:0 crwdns9002:0crwdne9002:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-solution.md deleted file mode 100644 index 1876686a4..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/left-right-given-largest/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns9003:0[1]crwdne9003:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/number-bits-representing-number.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/number-bits-representing-number.md deleted file mode 100644 index 547f54892..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/number-bits-representing-number.md +++ /dev/null @@ -1,16 +0,0 @@ -# crwdns9004:0crwdne9004:0 - -## crwdns9005:0crwdne9005:0 - -crwdns9006:0crwdne9006:0 crwdns9007:0crwdne9007:0 crwdns9008:0crwdne9008:0 - -## crwdns9009:0crwdne9009:0 - -crwdns9010:0crwdne9010:0 - -| crwdns9011:0crwdne9011:0 | crwdns9012:0crwdne9012:0 | -| ------------------------ | ------------------------ | -| crwdns9013:0crwdne9013:0 | crwdns9014:0crwdne9014:0 | -| crwdns9015:0crwdne9015:0 | crwdns9016:0crwdne9016:0 | -| crwdns9017:0crwdne9017:0 | crwdns9018:0crwdne9018:0 | -| crwdns9019:0crwdne9019:0 | crwdns9020:0crwdne9020:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-expected.md deleted file mode 100644 index 732b936ef..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns9021:0crwdne9021:0 - -*BlockTag: crwdns9022:0crwdne9022:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148424235/?autostart=false"} - -*BlockTag: crwdns18993:0crwdne18993:0* - -{panel type="help"} - -# crwdns18994:0crwdne18994:0 - -<pre><code class="scratch:split:random">crwdns9024:0crwdne9024:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns9025:0[0]crwdnd9025:0[1]crwdne9025:0 -</code></pre> - -*BlockTag: crwdns9026:0crwdne9026:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-hints.md deleted file mode 100644 index 2e715d3de..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-hints.md +++ /dev/null @@ -1,10 +0,0 @@ -- crwdns9027:0crwdne9027:0 - - - crwdns9028:0crwdne9028:0 - - crwdns9029:0crwdne9029:0 - - crwdns9030:0crwdne9030:0 - -- crwdns9031:0crwdne9031:0 crwdns9032:0crwdne9032:0 crwdns9033:0crwdne9033:0 - -- crwdns9034:0crwdne9034:0 crwdns9035:0crwdne9035:0 crwdns9036:0crwdne9036:0 crwdns9037:0crwdne9037:0 crwdns9038:0crwdne9038:0 crwdns9039:0crwdne9039:0 -- crwdns9040:0crwdne9040:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-solution.md deleted file mode 100644 index 197b5e9ea..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-bits-representing-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns9041:0[0]crwdnd9041:0[1]crwdne9041:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/number-cards-display.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/number-cards-display.md deleted file mode 100644 index 99ccb1713..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/number-cards-display.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns9042:0crwdne9042:0 - -## crwdns9043:0crwdne9043:0 - -crwdns9044:0crwdne9044:0 - -## crwdns9045:0crwdne9045:0 - -crwdns9046:0crwdne9046:0 - -| crwdns9047:0crwdne9047:0 | crwdns9048:0crwdne9048:0 | -| ------------------------ | ------------------------ | -| crwdns9049:0crwdne9049:0 | crwdns9050:0crwdne9050:0 | -| crwdns9051:0crwdne9051:0 | crwdns9052:0crwdne9052:0 | -| crwdns9053:0crwdne9053:0 | crwdns9054:0crwdne9054:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-expected.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-expected.md deleted file mode 100644 index f003ec9c0..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns9055:0crwdne9055:0 - -*BlockTag: crwdns9056:0crwdne9056:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148423938/?autostart=false"} - -*BlockTag: crwdns19031:0crwdne19031:0* - -{panel type="help"} - -# crwdns19032:0crwdne19032:0 - -<pre><code class="scratch:split:random">crwdns9058:0[1]crwdne9058:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns9059:0crwdne9059:0 -</code></pre> - -*BlockTag: crwdns9060:0crwdne9060:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-hints.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-hints.md deleted file mode 100644 index df0908092..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns9061:0crwdne9061:0 - -- crwdns9062:0crwdne9062:0 crwdns9063:0crwdne9063:0 crwdns9064:0crwdne9064:0 crwdns9065:0crwdne9065:0 crwdns9066:0crwdne9066:0 crwdns9067:0crwdne9067:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-solution.md b/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-solution.md deleted file mode 100644 index c2df5ee6b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/programming-challenges/number-cards-display/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns9068:0[1]crwdne9068:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md deleted file mode 100644 index 8e08667ed..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-ct-links.md +++ /dev/null @@ -1,132 +0,0 @@ -*BlockTag: crwdns19067:0crwdne19067:0* - -{panel type="ct-algorithm"} - -# crwdns19068:0crwdne19068:0 - -crwdns9141:0crwdne9141:0 crwdns9142:0crwdne9142:0 - -crwdns9143:0crwdne9143:0 - -crwdns9144:0crwdne9144:0 - -- crwdns9145:0crwdne9145:0 -- crwdns9146:0crwdne9146:0 - - crwdns9147:0crwdne9147:0 - - crwdns9148:0crwdne9148:0 - - crwdns9149:0crwdne9149:0 -- crwdns9150:0crwdne9150:0 - -crwdns9151:0crwdne9151:0 - -*BlockTag: crwdns20161:0crwdne20161:0* - -{image file-path="img/topics/binary_count_girl.png" alt="Girl thinking about the algorithm" alignment="right"} - -crwdns9153:0crwdne9153:0 - -crwdns9154:0crwdne9154:0 - -- crwdns9155:0crwdne9155:0 -- crwdns9156:0crwdne9156:0 - - crwdns9157:0crwdne9157:0 - - crwdns9158:0crwdne9158:0 - - crwdns9159:0crwdne9159:0 - - crwdns9160:0crwdne9160:0 - - crwdns9161:0crwdne9161:0 - -#### crwdns9162:0crwdne9162:0 - -crwdns9163:0crwdne9163:0 crwdns9164:0crwdne9164:0 - -*BlockTag: crwdns9165:0crwdne9165:0* - -{panel end} - -*BlockTag: crwdns19069:0crwdne19069:0* - -{panel type="ct-abstraction"} - -# crwdns19070:0crwdne19070:0 - -crwdns9167:0crwdne9167:0 crwdns9168:0crwdne9168:0 crwdns9169:0crwdne9169:0 - -*BlockTag: crwdns20162:0crwdne20162:0* - -{image file-path="img/topics/binary_torch.png" alt="Flashlight" alignment="right"} - -crwdns9171:0crwdne9171:0 crwdns9172:0crwdne9172:0 crwdns9173:0crwdne9173:0 - -#### crwdns9174:0crwdne9174:0 - -crwdns9175:0crwdne9175:0 crwdns9176:0crwdne9176:0 crwdns9177:0crwdne9177:0 - -*BlockTag: crwdns9178:0crwdne9178:0* - -{panel end} - -*BlockTag: crwdns19071:0crwdne19071:0* - -{panel type="ct-decomposition"} - -# crwdns19072:0crwdne19072:0 - -crwdns9180:0crwdne9180:0 crwdns9181:0crwdne9181:0 - -crwdns9182:0crwdne9182:0 crwdns9183:0crwdne9183:0 crwdns9184:0crwdne9184:0 - -#### crwdns9185:0crwdne9185:0 - -crwdns9186:0crwdne9186:0 crwdns9187:0crwdne9187:0 - -*BlockTag: crwdns9188:0crwdne9188:0* - -{panel end} - -*BlockTag: crwdns19073:0crwdne19073:0* - -{panel type="ct-pattern"} - -# crwdns19074:0crwdne19074:0 - -crwdns9190:0crwdne9190:0 - -#### crwdns9191:0crwdne9191:0 - -crwdns9192:0crwdne9192:0 crwdns9193:0crwdne9193:0 crwdns9194:0crwdne9194:0 crwdns9195:0crwdne9195:0 crwdns9196:0crwdne9196:0 crwdns9197:0crwdne9197:0 - -*BlockTag: crwdns9198:0crwdne9198:0* - -{panel end} - -*BlockTag: crwdns19075:0crwdne19075:0* - -{panel type="ct-logic"} - -# crwdns19076:0crwdne19076:0 - -crwdns9200:0crwdne9200:0 crwdns9201:0crwdne9201:0 crwdns9202:0crwdne9202:0 crwdns9203:0crwdne9203:0 crwdns9204:0crwdne9204:0 crwdns9205:0crwdne9205:0 crwdns9206:0crwdne9206:0 crwdns9207:0crwdne9207:0 crwdns9208:0crwdne9208:0 - -#### crwdns9209:0crwdne9209:0 - -crwdns9210:0crwdne9210:0 crwdns9211:0crwdne9211:0 crwdns9212:0crwdne9212:0 crwdns9213:0crwdne9213:0 crwdns9214:0crwdne9214:0 crwdns9215:0crwdne9215:0 crwdns9216:0crwdne9216:0 - -*BlockTag: crwdns9217:0crwdne9217:0* - -{panel end} - -*BlockTag: crwdns19077:0crwdne19077:0* - -{panel type="ct-evaluation"} - -# crwdns19078:0crwdne19078:0 - -crwdns9219:0crwdne9219:0 crwdns9220:0crwdne9220:0 crwdns9221:0crwdne9221:0 - -#### crwdns9222:0crwdne9222:0 - -crwdns9223:0crwdne9223:0 crwdns9224:0crwdne9224:0 - -*BlockTag: crwdns9225:0crwdne9225:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md deleted file mode 100644 index 28318f3ce..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-ct-links.md +++ /dev/null @@ -1,130 +0,0 @@ -*BlockTag: crwdns19164:0crwdne19164:0* - -{panel type="ct-algorithm"} - -# crwdns19165:0crwdne19165:0 - -crwdns9227:0crwdne9227:0 crwdns9228:0crwdne9228:0 - -crwdns9229:0crwdne9229:0 - -crwdns9230:0crwdne9230:0 - -- crwdns9231:0crwdne9231:0 -- crwdns9232:0crwdne9232:0 - - crwdns9233:0crwdne9233:0 - - crwdns9234:0crwdne9234:0 - - crwdns9235:0crwdne9235:0 -- crwdns9236:0crwdne9236:0 - -crwdns9237:0crwdne9237:0 - -*BlockTag: crwdns20221:0crwdne20221:0* - -{image file-path="img/topics/binary_count_girl.png" alt="girl thinking about alphabet and numbers" alignment="right"} - -crwdns9239:0crwdne9239:0 - -crwdns9240:0crwdne9240:0 - -- crwdns9241:0crwdne9241:0 -- crwdns9242:0crwdne9242:0 - - crwdns9243:0crwdne9243:0 - - crwdns9244:0crwdne9244:0 - - crwdns9245:0crwdne9245:0 - - crwdns9246:0crwdne9246:0 - - crwdns9247:0crwdne9247:0 - -#### crwdns9248:0crwdne9248:0 - -crwdns9249:0crwdne9249:0 - -*BlockTag: crwdns9250:0crwdne9250:0* - -{panel end} - -*BlockTag: crwdns19166:0crwdne19166:0* - -{panel type="ct-abstraction"} - -# crwdns19167:0crwdne19167:0 - -crwdns9252:0crwdne9252:0 crwdns9253:0crwdne9253:0 crwdns9254:0crwdne9254:0 - -*BlockTag: crwdns20222:0crwdne20222:0* - -{image file-path="img/topics/binary_torch.png" alt="Flashlight" alignment="right"} - -crwdns9256:0crwdne9256:0 crwdns9257:0crwdne9257:0 crwdns9258:0crwdne9258:0 - -#### crwdns9259:0crwdne9259:0 - -crwdns9260:0crwdne9260:0 - -*BlockTag: crwdns9261:0crwdne9261:0* - -{panel end} - -*BlockTag: crwdns19168:0crwdne19168:0* - -{panel type="ct-pattern"} - -# crwdns19169:0crwdne19169:0 - -crwdns9263:0crwdne9263:0 - -#### crwdns9264:0crwdne9264:0 - -crwdns9265:0crwdne9265:0 crwdns9266:0crwdne9266:0 crwdns9267:0crwdne9267:0 - -*BlockTag: crwdns9268:0crwdne9268:0* - -{panel end} - -*BlockTag: crwdns19170:0crwdne19170:0* - -{panel type="ct-logic"} - -# crwdns19171:0crwdne19171:0 - -crwdns9270:0crwdne9270:0 crwdns9271:0crwdne9271:0 - -#### crwdns9272:0crwdne9272:0 - -crwdns9273:0crwdne9273:0 - -*BlockTag: crwdns9274:0crwdne9274:0* - -{panel end} - -*BlockTag: crwdns19172:0crwdne19172:0* - -{panel type="ct-decomposition"} - -# crwdns19173:0crwdne19173:0 - -crwdns9276:0crwdne9276:0 crwdns9277:0crwdne9277:0 - -#### crwdns9278:0crwdne9278:0 - -crwdns9279:0crwdne9279:0 - -*BlockTag: crwdns9280:0crwdne9280:0* - -{panel end} - -*BlockTag: crwdns19174:0crwdne19174:0* - -{panel type="ct-evaluation"} - -# crwdns19175:0crwdne19175:0 - -crwdns9282:0crwdne9282:0 - -#### crwdns9283:0crwdne9283:0 - -crwdns9284:0crwdne9284:0 crwdns9285:0crwdne9285:0 - -*BlockTag: crwdns9286:0crwdne9286:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml deleted file mode 100644 index ee4df78c8..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior-resource-descriptions.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -binary-cards: - description: crwdns8199:0crwdne8199:0 -binary-cards-small: - description: crwdns8200:0crwdne8200:0 -binary-to-alphabet: - description: crwdns8201:0crwdne8201:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md deleted file mode 100644 index 69c8614e4..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-junior.md +++ /dev/null @@ -1,131 +0,0 @@ -# crwdns20220:0crwdne20220:0 - -## crwdns9288:0crwdne9288:0 - -crwdns9289:0crwdne9289:0 - -*BlockTag: crwdns19133:0crwdne19133:0* - -{panel type="teaching"} - -# crwdns19134:0crwdne19134:0 - -crwdns9291:0crwdne9291:0 crwdns9292:0crwdne9292:0 - -*BlockTag: crwdns9293:0crwdne9293:0* - -{panel end} - -## crwdns9294:0crwdne9294:0 - -*BlockTag: crwdns19135:0crwdne19135:0* - -{panel type="general"} - -# crwdns19136:0crwdne19136:0 - -crwdns9296:0crwdne9296:0 - -*BlockTag: crwdns9297:0crwdne9297:0* - -{panel end} - -crwdns9298:0crwdne9298:0 - -crwdns9299:0crwdne9299:0 - -crwdns9300:0crwdne9300:0 - -crwdns9301:0crwdne9301:0 - -crwdns9302:0crwdne9302:0 - -crwdns9303:0crwdne9303:0 - -crwdns9304:0crwdne9304:0 crwdns9305:0crwdne9305:0 crwdns9306:0crwdne9306:0 crwdns9307:0crwdne9307:0 crwdns9308:0crwdne9308:0 - -crwdns9309:0crwdne9309:0 - -crwdns9310:0crwdne9310:0 - -crwdns9311:0crwdne9311:0 crwdns9312:0crwdne9312:0 crwdns9313:0crwdne9313:0 - -*BlockTag: crwdns19137:0crwdne19137:0* - -{panel type="teaching"} - -# crwdns19138:0crwdne19138:0 - -crwdns9315:0crwdne9315:0 - -*BlockTag: crwdns9316:0crwdne9316:0* - -{panel end} - -# crwdns19139:0crwdne19139:0 - -crwdns9318:0crwdne9318:0 - -crwdns9319:0crwdne9319:0 - -crwdns9320:0crwdne9320:0 - -*BlockTag: crwdns9321:0crwdne9321:0* - -{image file-path="img/topics/binary-4-equals-d.png" alt="Kids holding binary cards"} - -crwdns9322:0crwdne9322:0 - -crwdns9323:0crwdne9323:0 - -crwdns9324:0crwdne9324:0 - -*BlockTag: crwdns9325:0crwdne9325:0* - -{image file-path="img/topics/binary-1-equals-a.png" alt="Kids holding binary cards"} - -crwdns9326:0crwdne9326:0 - -crwdns9327:0crwdne9327:0 - -crwdns9328:0crwdne9328:0 - -crwdns9329:0crwdne9329:0 - -crwdns9330:0crwdne9330:0 - -*BlockTag: crwdns19140:0crwdne19140:0* - -{panel type="teaching"} - -# crwdns19141:0crwdne19141:0 - -crwdns9332:0crwdne9332:0 crwdns9333:0crwdne9333:0 crwdns9334:0crwdne9334:0 - -crwdns9335:0crwdne9335:0 crwdns9336:0crwdne9336:0 crwdns9337:0crwdne9337:0 - -crwdns9338:0crwdne9338:0 - -crwdns9339:0crwdne9339:0 crwdns9340:0crwdne9340:0 crwdns9341:0crwdne9341:0 - -*BlockTag: crwdns9342:0crwdne9342:0* - -{panel end} - -*BlockTag: crwdns19142:0crwdne19142:0* - -{panel type="teaching"} - -# crwdns19143:0crwdne19143:0 - -crwdns9344:0crwdne9344:0 crwdns9345:0crwdne9345:0 crwdns9346:0crwdne9346:0 crwdns9347:0crwdne9347:0 crwdns9348:0crwdne9348:0 crwdns9349:0crwdne9349:0 - -*BlockTag: crwdns9350:0crwdne9350:0* - -{panel end} - -## crwdns9351:0crwdne9351:0 - -- crwdns9352:0crwdne9352:0 -- crwdns9353:0crwdne9353:0 -- crwdns9354:0crwdne9354:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml deleted file mode 100644 index 1bd3bf5c9..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation-resource-descriptions.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -binary-cards: - description: crwdns8202:0crwdne8202:0 -binary-cards-small: - description: crwdns8203:0crwdne8203:0 -binary-to-alphabet: - description: crwdns8204:0crwdne8204:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md deleted file mode 100644 index b3a0ec5fb..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/codes-for-letters-using-binary-representation.md +++ /dev/null @@ -1,104 +0,0 @@ -# crwdns9355:0crwdne9355:0 - -## crwdns9356:0crwdne9356:0 - -- crwdns9357:0crwdne9357:0 crwdns9358:0crwdne9358:0 crwdns9359:0crwdne9359:0 - -## crwdns9360:0crwdne9360:0 - -*BlockTag: crwdns19057:0crwdne19057:0* - -{panel type="general"} - -# crwdns19058:0crwdne19058:0 - -crwdns9362:0crwdne9362:0 - -*BlockTag: crwdns9363:0crwdne9363:0* - -{panel end} - -*BlockTag: crwdns20157:0crwdne20157:0* - -{image file-path="img/topics/col_binary_robot_boy_convo.png" alt="Cartoon boy talking to robot" alignment="left"} - -crwdns20158:0crwdne20158:0 crwdns20159:0crwdne20159:0 - -crwdns20160:0crwdne20160:0 - -*BlockTag: crwdns19059:0crwdne19059:0* - -{panel type="teaching"} - -# crwdns19060:0crwdne19060:0 - -- crwdns9369:0crwdne9369:0 -- crwdns9370:0crwdne9370:0 -- crwdns9371:0crwdne9371:0 -- crwdns9372:0crwdne9372:0 -- crwdns9373:0crwdne9373:0 - -*BlockTag: crwdns9374:0crwdne9374:0* - -{panel end} - -## crwdns9375:0crwdne9375:0 - -crwdns9376:0crwdne9376:0 - -crwdns9377:0crwdne9377:0 - -crwdns9378:0crwdne9378:0 crwdns9379:0crwdne9379:0 - -## crwdns9380:0crwdne9380:0 - -crwdns9381:0crwdne9381:0 crwdns9382:0crwdne9382:0 crwdns9383:0crwdne9383:0 - -crwdns9384:0crwdne9384:0 - -crwdns9385:0crwdne9385:0 crwdns9386:0crwdne9386:0 crwdns9387:0crwdne9387:0 - -crwdns9388:0crwdne9388:0 - -*BlockTag: crwdns19061:0crwdne19061:0* - -{panel type="teaching"} - -# crwdns19062:0crwdne19062:0 - -crwdns9390:0crwdne9390:0 crwdns9391:0crwdne9391:0 crwdns9392:0crwdne9392:0 - -*BlockTag: crwdns9393:0crwdne9393:0* - -{panel end} - -*BlockTag: crwdns19063:0crwdne19063:0* - -{panel type="math"} - -# crwdns19064:0crwdne19064:0 - -crwdns9395:0crwdne9395:0 crwdns9396:0crwdne9396:0 crwdns9397:0crwdne9397:0 crwdns9398:0crwdne9398:0 crwdns9399:0crwdne9399:0 crwdns9400:0crwdne9400:0 - -*BlockTag: crwdns9401:0crwdne9401:0* - -{panel end} - -*BlockTag: crwdns19065:0crwdne19065:0* - -{panel type="teaching"} - -# crwdns19066:0crwdne19066:0 - -crwdns9403:0crwdne9403:0 crwdns9404:0crwdne9404:0 crwdns9405:0crwdne9405:0 crwdns9406:0crwdne9406:0 - -*BlockTag: crwdns9407:0crwdne9407:0* - -{panel end} - -## crwdns9408:0crwdne9408:0 - -- crwdns9409:0crwdne9409:0 -- crwdns9410:0crwdne9410:0 -- crwdns9411:0crwdne9411:0 -- crwdns9412:0crwdne9412:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md deleted file mode 100644 index fd8a4fe7b..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md +++ /dev/null @@ -1,165 +0,0 @@ -*BlockTag: crwdns19150:0crwdne19150:0* - -{panel type="ct-algorithm"} - -# crwdns19151:0crwdne19151:0 - -crwdns9414:0crwdne9414:0 crwdns9415:0crwdne9415:0 - -crwdns9416:0crwdne9416:0 - -- crwdns9417:0crwdne9417:0 -- crwdns9418:0crwdne9418:0 - - crwdns9419:0crwdne9419:0 - - crwdns9420:0crwdne9420:0 - - crwdns9421:0crwdne9421:0 - - crwdns9422:0crwdne9422:0 - - crwdns9423:0crwdne9423:0 - -crwdns9424:0crwdne9424:0 crwdns9425:0crwdne9425:0 - -#### crwdns9426:0crwdne9426:0 - -crwdns9427:0crwdne9427:0 crwdns9428:0crwdne9428:0 - -*BlockTag: crwdns9429:0crwdne9429:0* - -{panel end} - -*BlockTag: crwdns19152:0crwdne19152:0* - -{panel type="ct-abstraction"} - -# crwdns19153:0crwdne19153:0 - -crwdns9431:0crwdne9431:0 crwdns9432:0crwdne9432:0 - -crwdns9433:0crwdne9433:0 - -crwdns9434:0crwdne9434:0 crwdns9435:0crwdne9435:0 - -crwdns9436:0crwdne9436:0 crwdns9437:0crwdne9437:0 crwdns9438:0crwdne9438:0 crwdns9439:0crwdne9439:0 crwdns9440:0crwdne9440:0 - -crwdns9441:0crwdne9441:0 crwdns9442:0crwdne9442:0 crwdns9443:0crwdne9443:0 crwdns9444:0crwdne9444:0 crwdns9445:0crwdne9445:0 - -#### crwdns9446:0crwdne9446:0 - -crwdns9447:0crwdne9447:0 crwdns9448:0crwdne9448:0 - -*BlockTag: crwdns9449:0crwdne9449:0* - -{panel end} - -*BlockTag: crwdns19154:0crwdne19154:0* - -{panel type="ct-decomposition"} - -# crwdns19155:0crwdne19155:0 - -crwdns9451:0crwdne9451:0 crwdns9452:0crwdne9452:0 - -#### crwdns9453:0crwdne9453:0 - -crwdns9454:0crwdne9454:0 crwdns9455:0crwdne9455:0 - -*BlockTag: crwdns9456:0crwdne9456:0* - -{panel end} - -*BlockTag: crwdns19156:0crwdne19156:0* - -{panel type="ct-pattern"} - -# crwdns19157:0crwdne19157:0 - -crwdns9458:0crwdne9458:0 - -crwdns9459:0crwdne9459:0 crwdns9460:0crwdne9460:0 - -crwdns9461:0crwdne9461:0 crwdns9462:0crwdne9462:0 crwdns9463:0crwdne9463:0 - -*BlockTag: crwdns19158:0crwdne19158:0* - -{panel type="math"} - -# crwdns19159:0crwdne19159:0 - -crwdns9465:0crwdne9465:0 - -*BlockTag: crwdns9466:0crwdne9466:0* - -{panel end} - -crwdns9467:0crwdne9467:0 crwdns9468:0crwdne9468:0 crwdns9469:0crwdne9469:0 - -*BlockTag: crwdns9470:0crwdne9470:0* - -{image file-path="img/topics/col_binary_counting_pattern.png" alt="Binary counting pattern"} - -crwdns9471:0crwdne9471:0 - -crwdns9472:0crwdne9472:0 crwdns9473:0crwdne9473:0 crwdns9474:0crwdne9474:0 - -crwdns9475:0crwdne9475:0 - -crwdns9476:0crwdne9476:0 - -- crwdns9477:0crwdne9477:0 -- crwdns9478:0crwdne9478:0 -- crwdns9479:0crwdne9479:0 - -#### crwdns9480:0crwdne9480:0 - -crwdns9481:0crwdne9481:0 crwdns9482:0crwdne9482:0 - -crwdns9483:0crwdne9483:0 - -*BlockTag: crwdns9484:0crwdne9484:0* - -{panel end} - -*BlockTag: crwdns19160:0crwdne19160:0* - -{panel type="ct-logic"} - -# crwdns19161:0crwdne19161:0 - -crwdns9486:0crwdne9486:0 crwdns9487:0crwdne9487:0 crwdns9488:0crwdne9488:0 crwdns9489:0crwdne9489:0 - -crwdns9490:0crwdne9490:0 crwdns9491:0crwdne9491:0 - -#### crwdns9492:0crwdne9492:0 - -crwdns9493:0crwdne9493:0 crwdns9494:0crwdne9494:0 - -crwdns9495:0crwdne9495:0 - -*BlockTag: crwdns9496:0crwdne9496:0* - -{panel end} - -*BlockTag: crwdns19162:0crwdne19162:0* - -{panel type="ct-evaluation"} - -# crwdns19163:0crwdne19163:0 - -crwdns9498:0crwdne9498:0 - -#### crwdns9499:0crwdne9499:0 - -crwdns9500:0crwdne9500:0 - -crwdns9501:0crwdne9501:0 - -crwdns9502:0crwdne9502:0 - -crwdns9503:0crwdne9503:0 - -crwdns9504:0crwdne9504:0 - -crwdns9505:0crwdne9505:0 - -*BlockTag: crwdns9506:0crwdne9506:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md deleted file mode 100644 index c2b3a90d2..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-ct-links.md +++ /dev/null @@ -1,155 +0,0 @@ -*BlockTag: crwdns19107:0crwdne19107:0* - -{panel type="ct-algorithm"} - -# crwdns19108:0crwdne19108:0 - -crwdns9508:0crwdne9508:0 crwdns9509:0crwdne9509:0 - -crwdns9510:0crwdne9510:0 - -- crwdns9511:0crwdne9511:0 - -- crwdns9512:0crwdne9512:0 - - - crwdns9513:0crwdne9513:0 - - - crwdns9514:0crwdne9514:0 - - - crwdns9515:0crwdne9515:0 - - - crwdns9516:0crwdne9516:0 - - - crwdns9517:0crwdne9517:0 - -#### crwdns9518:0crwdne9518:0 - -crwdns9519:0crwdne9519:0 crwdns9520:0crwdne9520:0 - -*BlockTag: crwdns9521:0crwdne9521:0* - -{panel end} - -*BlockTag: crwdns19109:0crwdne19109:0* - -{panel type="ct-abstraction"} - -# crwdns19110:0crwdne19110:0 - -crwdns9523:0crwdne9523:0 crwdns9524:0crwdne9524:0 - -crwdns9525:0crwdne9525:0 crwdns9526:0crwdne9526:0 - -crwdns9527:0crwdne9527:0 - -crwdns9528:0crwdne9528:0 - -crwdns9529:0crwdne9529:0 crwdns9530:0crwdne9530:0 crwdns9531:0crwdne9531:0 crwdns9532:0crwdne9532:0 crwdns9533:0crwdne9533:0 - -#### crwdns9534:0crwdne9534:0 - -crwdns9535:0crwdne9535:0 crwdns9536:0crwdne9536:0 - -*BlockTag: crwdns9537:0crwdne9537:0* - -{panel end} - -*BlockTag: crwdns19111:0crwdne19111:0* - -{panel type="ct-decomposition"} - -# crwdns19112:0crwdne19112:0 - -crwdns9539:0crwdne9539:0 crwdns9540:0crwdne9540:0 - -#### crwdns9541:0crwdne9541:0 - -crwdns9542:0crwdne9542:0 crwdns9543:0crwdne9543:0 - -*BlockTag: crwdns9544:0crwdne9544:0* - -{panel end} - -*BlockTag: crwdns19113:0crwdne19113:0* - -{panel type="ct-pattern"} - -# crwdns19114:0crwdne19114:0 - -crwdns9546:0crwdne9546:0 crwdns9547:0crwdne9547:0 - -crwdns9548:0crwdne9548:0 crwdns9549:0crwdne9549:0 - -crwdns9550:0crwdne9550:0 crwdns9551:0crwdne9551:0 crwdns9552:0crwdne9552:0 - -*BlockTag: crwdns19115:0crwdne19115:0* - -{panel type="math"} - -# crwdns19116:0crwdne19116:0 - -crwdns9554:0crwdne9554:0 - -*BlockTag: crwdns9555:0crwdne9555:0* - -{panel end} - -crwdns9556:0crwdne9556:0 crwdns9557:0crwdne9557:0 - -*BlockTag: crwdns9558:0crwdne9558:0* - -{image file-path="img/topics/col_binary_counting_pattern.png" alt="Binary counting pattern"} - -crwdns9559:0crwdne9559:0 - -crwdns9560:0crwdne9560:0 crwdns9561:0crwdne9561:0 crwdns9562:0crwdne9562:0 - -crwdns9563:0crwdne9563:0 - -#### crwdns9564:0crwdne9564:0 - -crwdns9565:0crwdne9565:0 - -*BlockTag: crwdns9566:0crwdne9566:0* - -{panel end} - -*BlockTag: crwdns19117:0crwdne19117:0* - -{panel type="ct-logic"} - -# crwdns19118:0crwdne19118:0 - -crwdns9568:0crwdne9568:0 crwdns9569:0crwdne9569:0 crwdns9570:0crwdne9570:0 crwdns9571:0crwdne9571:0 - -crwdns9572:0crwdne9572:0 crwdns9573:0crwdne9573:0 - -#### crwdns9574:0crwdne9574:0 - -crwdns9575:0crwdne9575:0 crwdns9576:0crwdne9576:0 crwdns9577:0crwdne9577:0 - -*BlockTag: crwdns9578:0crwdne9578:0* - -{panel end} - -*BlockTag: crwdns19119:0crwdne19119:0* - -{panel type="ct-evaluation"} - -# crwdns19120:0crwdne19120:0 - -crwdns9580:0crwdne9580:0 - -#### crwdns9581:0crwdne9581:0 - -crwdns9582:0crwdne9582:0 - -crwdns9583:0crwdne9583:0 - -crwdns9584:0crwdne9584:0 - -crwdns9585:0crwdne9585:0 - -*BlockTag: crwdns9586:0crwdne9586:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml deleted file mode 100644 index 0d6535812..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -binary-cards: - description: crwdns8205:0crwdne8205:0 -binary-windows: - description: crwdns8206:0crwdne8206:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md deleted file mode 100644 index 9c6027f8c..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-junior.md +++ /dev/null @@ -1,255 +0,0 @@ -# crwdns9587:0crwdne9587:0 - -## crwdns20163:0crwdne20163:0 - -- crwdns9595:0crwdne9595:0 - -crwdns20164:0crwdne20164:0 - -## crwdns20165:0crwdne20165:0 - -*BlockTag: crwdns20166:0crwdne20166:0* - -{panel type="video"} - -# crwdns20167:0crwdne20167:0 - -*BlockTag: crwdns20168:0crwdne20168:0* - -{video url="https://vimeo.com/437725275"} - -*BlockTag: crwdns20169:0crwdne20169:0* - -{panel end} - -*BlockTag: crwdns20170:0crwdne20170:0* - -{panel type="general"} - -# crwdns20171:0crwdne20171:0 - -crwdns20172:0crwdne20172:0 crwdns20173:0crwdne20173:0 crwdns20174:0crwdne20174:0 crwdns20175:0crwdne20175:0 crwdns20176:0crwdne20176:0 - -*BlockTag: crwdns20177:0crwdne20177:0* - -{panel end} - -*BlockTag: crwdns20178:0crwdne20178:0* - -{panel type="general"} - -# crwdns20179:0crwdne20179:0 - -crwdns20180:0crwdne20180:0 crwdns20181:0crwdne20181:0 - -*BlockTag: crwdns9739:0crwdne9739:0* - -{panel end} - -crwdns20182:0crwdne20182:0 crwdns20183:0crwdne20183:0 crwdns20184:0crwdne20184:0 crwdns20185:0crwdne20185:0 - -crwdns20186:0crwdne20186:0 - -1. crwdns9607:0crwdne9607:0 - -2. crwdns9608:0crwdne9608:0 crwdns9609:0crwdne9609:0 crwdns9610:0crwdne9610:0 crwdns9611:0crwdne9611:0 crwdns9612:0crwdne9612:0 - - *BlockTag: crwdns9613:0crwdne9613:0* - - {image file-path="img/topics/col_binary_4_kids_2_cards.png" alt="2 kids holding binary cards"} - -3. crwdns9614:0crwdne9614:0 - - *BlockTag: crwdns19081:0crwdne19081:0* - - {panel type="teaching"} - - # crwdns19082:0crwdne19082:0 - - crwdns9616:0crwdne9616:0 crwdns9617:0crwdne9617:0 crwdns9618:0crwdne9618:0 - - *BlockTag: crwdns9619:0crwdne9619:0* - - {panel end} - -4. crwdns9620:0crwdne9620:0 crwdns9621:0crwdne9621:0 crwdns9622:0crwdne9622:0 - - *BlockTag: crwdns9623:0crwdne9623:0* - - {image file-path="img/topics/col_binary_4_kids_3_cards.png" alt="3 kids holding binary cards"} - - *BlockTag: crwdns19083:0crwdne19083:0* - - {panel type="teaching"} - - # crwdns19084:0crwdne19084:0 - - crwdns9625:0crwdne9625:0 - - *BlockTag: crwdns9626:0crwdne9626:0* - - {panel end} - -5. crwdns9627:0crwdne9627:0 - - *BlockTag: crwdns19085:0crwdne19085:0* - - {panel type="teaching"} - - # crwdns19086:0crwdne19086:0 - - crwdns9629:0crwdne9629:0 crwdns9630:0crwdne9630:0 crwdns9631:0crwdne9631:0 crwdns9632:0crwdne9632:0 - - crwdns9633:0crwdne9633:0 - - *BlockTag: crwdns9634:0crwdne9634:0* - - {panel end} - -6. crwdns9635:0crwdne9635:0 - - *BlockTag: crwdns19087:0crwdne19087:0* - - {panel type="teaching"} - - # crwdns19088:0crwdne19088:0 - - crwdns9637:0crwdne9637:0 crwdns9638:0crwdne9638:0 crwdns9639:0crwdne9639:0 crwdns9640:0crwdne9640:0 crwdns9641:0crwdne9641:0 crwdns9642:0crwdne9642:0 crwdns9643:0crwdne9643:0 - - crwdns9644:0crwdne9644:0 - - *BlockTag: crwdns9645:0crwdne9645:0* - - {panel end} - -## crwdns20187:0crwdne20187:0 - -1. crwdns9647:0crwdne9647:0 crwdns9648:0crwdne9648:0 crwdns9649:0crwdne9649:0 crwdns9650:0crwdne9650:0 crwdns9651:0crwdne9651:0 crwdns9652:0crwdne9652:0 crwdns9653:0crwdne9653:0 crwdns9654:0crwdne9654:0 crwdns9655:0crwdne9655:0 crwdns9656:0crwdne9656:0 crwdns9657:0crwdne9657:0 crwdns9658:0crwdne9658:0 crwdns9659:0crwdne9659:0 crwdns9660:0crwdne9660:0 crwdns9661:0crwdne9661:0 crwdns9662:0crwdne9662:0 crwdns9663:0crwdne9663:0 crwdns9664:0crwdne9664:0 - - crwdns9665:0crwdne9665:0 - - *BlockTag: crwdns9666:0crwdne9666:0* - - {image file-path="img/topics/binary_cards_equals_three.png" alt="Diagram showing that 2 binary cards make the number 3"} - - *BlockTag: crwdns19089:0crwdne19089:0* - - {panel type="math"} - - # crwdns19090:0crwdne19090:0 - - crwdns9668:0crwdne9668:0 crwdns9669:0crwdne9669:0 crwdns9670:0crwdne9670:0 - - crwdns9671:0crwdne9671:0 crwdns9672:0crwdne9672:0 crwdns9673:0crwdne9673:0 crwdns9674:0crwdne9674:0 crwdns9675:0crwdne9675:0 - - crwdns9676:0crwdne9676:0 - - crwdns9677:0crwdne9677:0 - - crwdns9678:0crwdne9678:0 - - crwdns9679:0crwdne9679:0 crwdns9680:0crwdne9680:0 crwdns9681:0crwdne9681:0 crwdns9682:0crwdne9682:0 crwdns9683:0crwdne9683:0 - - crwdns9684:0crwdne9684:0 crwdns9685:0crwdne9685:0 crwdns9686:0crwdne9686:0 - - *BlockTag: crwdns9687:0crwdne9687:0* - - {panel end} - -2. crwdns9688:0crwdne9688:0 - -3. crwdns9689:0crwdne9689:0 crwdns9690:0crwdne9690:0 crwdns9691:0crwdne9691:0 - - crwdns9692:0crwdne9692:0 crwdns9693:0crwdne9693:0 crwdns9694:0crwdne9694:0 - - *BlockTag: crwdns9695:0crwdne9695:0* - - {image file-path="img/topics/lightbulb_series_4_bulbs_4.png" alt="4 lightbulbs switched on"} - - crwdns9696:0crwdne9696:0 - - *BlockTag: crwdns9697:0crwdne9697:0* - - {image file-path="img/topics/lightbulb_series_4_bulbs_3.png" alt="3 lightbulbs switched on"} - - crwdns9698:0crwdne9698:0 - - *BlockTag: crwdns9699:0crwdne9699:0* - - {image file-path="img/topics/lightbulb_series_4_bulbs_2.png" alt="2 lightbulbs switched on"} - - crwdns9700:0crwdne9700:0 - - crwdns9701:0crwdne9701:0 - - *BlockTag: crwdns9702:0crwdne9702:0* - - {image file-path="img/topics/lightbulb_series_4_bulbs_2.png" alt="2 lightbulbs switched on"} - -## crwdns20188:0crwdne20188:0 - -- crwdns9704:0crwdne9704:0 -- crwdns9705:0crwdne9705:0 -- crwdns9706:0crwdne9706:0 - -1. crwdns9707:0crwdne9707:0 crwdns9708:0crwdne9708:0 crwdns9709:0crwdne9709:0 - -2. crwdns9710:0crwdne9710:0 - - crwdns9711:0crwdne9711:0 - -3. crwdns9712:0crwdne9712:0 - -4. crwdns9713:0crwdne9713:0 - -5. crwdns9714:0crwdne9714:0 - - crwdns9715:0crwdne9715:0 crwdns9716:0crwdne9716:0 crwdns9717:0crwdne9717:0 - -6. crwdns9718:0crwdne9718:0 crwdns9719:0crwdne9719:0 crwdns9720:0crwdne9720:0 crwdns9721:0crwdne9721:0 crwdns9722:0crwdne9722:0 - -7. crwdns9723:0crwdne9723:0 - - crwdns9724:0crwdne9724:0 - - crwdns9725:0crwdne9725:0 - - crwdns9726:0crwdne9726:0 - - crwdns9727:0crwdne9727:0 - - crwdns9728:0crwdne9728:0 - - crwdns9729:0crwdne9729:0 crwdns9730:0crwdne9730:0 crwdns9731:0crwdne9731:0 - - crwdns9732:0crwdne9732:0 - - crwdns9733:0crwdne9733:0 - - crwdns9734:0crwdne9734:0 - -*BlockTag: crwdns20189:0crwdne20189:0* - -{panel type="teaching"} - -# crwdns20190:0crwdne20190:0 - -crwdns20191:0crwdne20191:0 crwdns20192:0crwdne20192:0 crwdns20193:0crwdne20193:0 - -*BlockTag: crwdns20194:0crwdne20194:0* - -{panel end} - -## crwdns20195:0crwdne20195:0 - -- crwdns9741:0crwdne9741:0 - - - crwdns9742:0crwdne9742:0 crwdns9743:0crwdne9743:0 crwdns9744:0crwdne9744:0 - -- crwdns9745:0crwdne9745:0 - - - crwdns9746:0crwdne9746:0 - -- crwdns9747:0crwdne9747:0 - - - crwdns9748:0crwdne9748:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml deleted file mode 100644 index 6aa24ee7a..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -binary-cards: - description: crwdns8207:0crwdne8207:0 -binary-cards-small: - description: crwdns8208:0crwdne8208:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work.md deleted file mode 100644 index e84ec1732..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/how-binary-digits-work.md +++ /dev/null @@ -1,254 +0,0 @@ -# crwdns9749:0crwdne9749:0 - -## crwdns20196:0crwdne20196:0 - -- crwdns9754:0crwdne9754:0 crwdns9755:0crwdne9755:0 -- crwdns9756:0crwdne9756:0 -- crwdns9757:0crwdne9757:0 crwdns9758:0crwdne9758:0 - -## crwdns20197:0crwdne20197:0 - -*BlockTag: crwdns20198:0crwdne20198:0* - -{panel type="video"} - -# crwdns20199:0crwdne20199:0 - -*BlockTag: crwdns20200:0crwdne20200:0* - -{video url="https://vimeo.com/437725275"} - -*BlockTag: crwdns20201:0crwdne20201:0* - -{panel end} - -*BlockTag: crwdns20202:0crwdne20202:0* - -{panel type="general"} - -# crwdns20203:0crwdne20203:0 - -crwdns20204:0crwdne20204:0 crwdns20205:0crwdne20205:0 - -*BlockTag: crwdns20206:0crwdne20206:0* - -{panel end} - -*BlockTag: crwdns20207:0crwdne20207:0* - -{panel type="general"} - -# crwdns20208:0crwdne20208:0 - -crwdns20209:0crwdne20209:0 - -*BlockTag: crwdns20210:0crwdne20210:0* - -{panel end} - -1. crwdns9763:0crwdne9763:0 - -2. crwdns9764:0crwdne9764:0 crwdns9765:0crwdne9765:0 crwdns9766:0crwdne9766:0 crwdns9767:0crwdne9767:0 crwdns9768:0crwdne9768:0 - - *BlockTag: crwdns9769:0crwdne9769:0* - - {image file-path="img/topics/col_binary_2cards.png" alt="2 kids holding binary cards"} - -3. crwdns9770:0crwdne9770:0 - - *BlockTag: crwdns19095:0crwdne19095:0* - - {panel type="teaching"} - - # crwdns19096:0crwdne19096:0 - - crwdns9772:0crwdne9772:0 crwdns9773:0crwdne9773:0 - - *BlockTag: crwdns9774:0crwdne9774:0* - - {panel end} - -4. crwdns9775:0crwdne9775:0 - - *BlockTag: crwdns9776:0crwdne9776:0* - - {image file-path="img/topics/col_binary_3cards.png" alt="3 kids holding binary cards"} - - *BlockTag: crwdns19097:0crwdne19097:0* - - {panel type="teaching"} - - # crwdns19098:0crwdne19098:0 - - crwdns9778:0crwdne9778:0 crwdns9779:0crwdne9779:0 - - *BlockTag: crwdns9780:0crwdne9780:0* - - {panel end} - -5. crwdns9781:0crwdne9781:0 - - *BlockTag: crwdns19099:0crwdne19099:0* - - {panel type="teaching"} - - # crwdns19100:0crwdne19100:0 - - crwdns9783:0crwdne9783:0 crwdns9784:0crwdne9784:0 - - *BlockTag: crwdns9785:0crwdne9785:0* - - {panel end} - -6. crwdns9786:0crwdne9786:0 - - *BlockTag: crwdns9787:0crwdne9787:0* - - {image file-path="img/topics/col_binary_5cards.png" alt="5 kids holding binary cards"} - -7. crwdns9788:0crwdne9788:0 crwdns9789:0crwdne9789:0 crwdns9790:0crwdne9790:0 - -8. crwdns9791:0crwdne9791:0 - - *BlockTag: crwdns19101:0crwdne19101:0* - - {panel type="teaching"} - - # crwdns19102:0crwdne19102:0 - - crwdns9793:0crwdne9793:0 crwdns9794:0crwdne9794:0 crwdns9795:0crwdne9795:0 crwdns9796:0crwdne9796:0 crwdns9797:0crwdne9797:0 - - crwdns9798:0crwdne9798:0 - - *BlockTag: crwdns9799:0crwdne9799:0* - - {panel end} - -## crwdns20211:0crwdne20211:0 - -1. crwdns9801:0crwdne9801:0 crwdns9802:0crwdne9802:0 crwdns9803:0crwdne9803:0 crwdns9804:0crwdne9804:0 - - *BlockTag: crwdns9805:0crwdne9805:0* - - {image file-path="img/topics/binary-cards-total-9.png" alt="Diagram showing that 2 binary cards make the number 9"} - - *BlockTag: crwdns19103:0crwdne19103:0* - - {panel type="math"} - - # crwdns19104:0crwdne19104:0 - - crwdns9807:0crwdne9807:0 crwdns9808:0crwdne9808:0 crwdns9809:0crwdne9809:0 crwdns9810:0crwdne9810:0 crwdns9811:0crwdne9811:0 - - crwdns9812:0crwdne9812:0 - - *crwdns9813:0crwdne9813:0* - - crwdns9814:0crwdne9814:0 - - crwdns9815:0crwdne9815:0 - - crwdns9816:0crwdne9816:0 crwdns9817:0crwdne9817:0 crwdns9818:0crwdne9818:0 crwdns9819:0crwdne9819:0 crwdns9820:0crwdne9820:0 - - *BlockTag: crwdns9821:0crwdne9821:0* - - {panel end} - -2. crwdns9822:0crwdne9822:0 - -3. crwdns9823:0crwdne9823:0 - - crwdns9824:0crwdne9824:0 - - *BlockTag: crwdns9825:0crwdne9825:0* - - {image file-path="img/topics/lightbulb_series_1.png" alt="5 lightbulbs switched on"} - - crwdns9826:0crwdne9826:0 - - crwdns9827:0crwdne9827:0 - - *BlockTag: crwdns9828:0crwdne9828:0* - - {image file-path="img/topics/lightbulb_series_2.png" alt="4 lightbulbs switched on"} - - crwdns9829:0crwdne9829:0 - - crwdns9830:0crwdne9830:0 - - *BlockTag: crwdns9831:0crwdne9831:0* - - {image file-path="img/topics/lightbulb_series_3.png" alt="3 lightbulbs switched on"} - - crwdns9832:0crwdne9832:0 - - crwdns9833:0crwdne9833:0 - - *BlockTag: crwdns9834:0crwdne9834:0* - - {image file-path="img/topics/lightbulb_series_4.png" alt="2 lightbulbs switched on"} - -## crwdns20212:0crwdne20212:0 - -- crwdns9836:0crwdne9836:0 -- crwdns9837:0crwdne9837:0 -- crwdns9838:0crwdne9838:0 - -1. crwdns9839:0crwdne9839:0 crwdns9840:0crwdne9840:0 crwdns9841:0crwdne9841:0 - -2. crwdns9842:0crwdne9842:0 - - crwdns9843:0crwdne9843:0 - -3. crwdns9844:0crwdne9844:0 - -4. crwdns9845:0crwdne9845:0 - -5. crwdns9846:0crwdne9846:0 - - crwdns9847:0crwdne9847:0 - -6. crwdns9848:0crwdne9848:0 crwdns9849:0crwdne9849:0 crwdns9850:0crwdne9850:0 crwdns9851:0crwdne9851:0 crwdns9852:0crwdne9852:0 - -7. crwdns9853:0crwdne9853:0 - - crwdns9854:0crwdne9854:0 - - crwdns9855:0crwdne9855:0 - - crwdns9856:0crwdne9856:0 - - crwdns9857:0crwdne9857:0 - - crwdns9858:0crwdne9858:0 - - crwdns9859:0crwdne9859:0 crwdns9860:0crwdne9860:0 crwdns9861:0crwdne9861:0 - - crwdns9862:0crwdne9862:0 - - crwdns9863:0crwdne9863:0 - - crwdns9864:0crwdne9864:0 - -*BlockTag: crwdns20213:0crwdne20213:0* - -{panel type="teaching"} - -# crwdns20214:0crwdne20214:0 - -crwdns20215:0crwdne20215:0 crwdns20216:0crwdne20216:0 crwdns20217:0crwdne20217:0 - -*BlockTag: crwdns20218:0crwdne20218:0* - -{panel end} - -## crwdns20219:0crwdne20219:0 - -- crwdns9871:0crwdne9871:0 crwdns9872:0crwdne9872:0 crwdns9873:0crwdne9873:0 crwdns9874:0crwdne9874:0 crwdns9875:0crwdne9875:0 crwdns9876:0crwdne9876:0 -- crwdns9877:0crwdne9877:0 - - - crwdns9878:0crwdne9878:0 - -- crwdns9879:0crwdne9879:0 crwdns9880:0crwdne9880:0 crwdns9881:0crwdne9881:0 - -- crwdns9882:0crwdne9882:0 crwdns9883:0crwdne9883:0 crwdns9884:0crwdne9884:0 crwdns9885:0crwdne9885:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md deleted file mode 100644 index 5b6fba739..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-ct-links.md +++ /dev/null @@ -1,83 +0,0 @@ -*BlockTag: crwdns19121:0crwdne19121:0* - -{panel type="ct-algorithm"} - -# crwdns19122:0crwdne19122:0 - -#### crwdns9887:0crwdne9887:0 - -crwdns9888:0crwdne9888:0 - -*BlockTag: crwdns9889:0crwdne9889:0* - -{panel end} - -*BlockTag: crwdns19123:0crwdne19123:0* - -{panel type="ct-abstraction"} - -# crwdns19124:0crwdne19124:0 - -#### crwdns9891:0crwdne9891:0 - -crwdns9892:0crwdne9892:0 crwdns9893:0crwdne9893:0 - -*BlockTag: crwdns9894:0crwdne9894:0* - -{panel end} - -*BlockTag: crwdns19125:0crwdne19125:0* - -{panel type="ct-decomposition"} - -# crwdns19126:0crwdne19126:0 - -#### crwdns9896:0crwdne9896:0 - -crwdns9897:0crwdne9897:0 - -*BlockTag: crwdns9898:0crwdne9898:0* - -{panel end} - -*BlockTag: crwdns19127:0crwdne19127:0* - -{panel type="ct-pattern"} - -# crwdns19128:0crwdne19128:0 - -#### crwdns9900:0crwdne9900:0 - -crwdns9901:0crwdne9901:0 - -*BlockTag: crwdns9902:0crwdne9902:0* - -{panel end} - -*BlockTag: crwdns19129:0crwdne19129:0* - -{panel type="ct-logic"} - -# crwdns19130:0crwdne19130:0 - -#### crwdns9904:0crwdne9904:0 - -crwdns9905:0crwdne9905:0 - -*BlockTag: crwdns9906:0crwdne9906:0* - -{panel end} - -*BlockTag: crwdns19131:0crwdne19131:0* - -{panel type="ct-evaluation"} - -# crwdns19132:0crwdne19132:0 - -#### crwdns9908:0crwdne9908:0 - -crwdns9909:0crwdne9909:0 - -*BlockTag: crwdns9910:0crwdne9910:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md deleted file mode 100644 index c083c545e..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-ct-links.md +++ /dev/null @@ -1,87 +0,0 @@ -crwdns9911:0crwdne9911:0 - -crwdns9912:0crwdne9912:0 - -*BlockTag: crwdns19176:0crwdne19176:0* - -{panel type="ct-algorithm"} - -# crwdns19177:0crwdne19177:0 - -#### crwdns9914:0crwdne9914:0 - -crwdns9915:0crwdne9915:0 - -*BlockTag: crwdns9916:0crwdne9916:0* - -{panel end} - -*BlockTag: crwdns19178:0crwdne19178:0* - -{panel type="ct-abstraction"} - -# crwdns19179:0crwdne19179:0 - -#### crwdns9918:0crwdne9918:0 - -crwdns9919:0crwdne9919:0 crwdns9920:0crwdne9920:0 - -*BlockTag: crwdns9921:0crwdne9921:0* - -{panel end} - -*BlockTag: crwdns19180:0crwdne19180:0* - -{panel type="ct-decomposition"} - -# crwdns19181:0crwdne19181:0 - -#### crwdns9923:0crwdne9923:0 - -crwdns9924:0crwdne9924:0 - -*BlockTag: crwdns9925:0crwdne9925:0* - -{panel end} - -*BlockTag: crwdns19182:0crwdne19182:0* - -{panel type="ct-pattern"} - -# crwdns19183:0crwdne19183:0 - -#### crwdns9927:0crwdne9927:0 - -crwdns9928:0crwdne9928:0 - -*BlockTag: crwdns9929:0crwdne9929:0* - -{panel end} - -*BlockTag: crwdns19184:0crwdne19184:0* - -{panel type="ct-evaluation"} - -# crwdns19185:0crwdne19185:0 - -#### crwdns9931:0crwdne9931:0 - -crwdns9932:0crwdne9932:0 - -*BlockTag: crwdns9933:0crwdne9933:0* - -{panel end} - -*BlockTag: crwdns19186:0crwdne19186:0* - -{panel type="ct-logic"} - -# crwdns19187:0crwdne19187:0 - -#### crwdns9935:0crwdne9935:0 - -crwdns9936:0crwdne9936:0 - -*BlockTag: crwdns9937:0crwdne9937:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml deleted file mode 100644 index 302083d6d..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -binary-cards: - description: crwdns8209:0crwdne8209:0 -binary-cards-small: - description: crwdns8210:0crwdne8210:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md deleted file mode 100644 index 164e17238..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-junior.md +++ /dev/null @@ -1,85 +0,0 @@ -# crwdns9938:0crwdne9938:0 - -## crwdns9939:0crwdne9939:0 - -- crwdns9940:0crwdne9940:0 - -## crwdns9941:0crwdne9941:0 - -*BlockTag: crwdns19053:0crwdne19053:0* - -{panel type="general"} - -# crwdns19054:0crwdne19054:0 - -crwdns9943:0crwdne9943:0 - -*BlockTag: crwdns9944:0crwdne9944:0* - -{panel end} - -crwdns9945:0crwdne9945:0 - -crwdns20138:0crwdne20138:0 - -crwdns20139:0crwdne20139:0 - -crwdns20140:0crwdne20140:0 - -- crwdns9950:0crwdne9950:0 -- crwdns9951:0crwdne9951:0 - -## crwdns9952:0crwdne9952:0 - -crwdns20141:0crwdne20141:0 - -crwdns20142:0crwdne20142:0 crwdns20143:0crwdne20143:0 crwdns20144:0crwdne20144:0 crwdns20145:0crwdne20145:0 - -crwdns20146:0crwdne20146:0 - -crwdns20147:0crwdne20147:0 - -crwdns20148:0crwdne20148:0 - -- crwdns9961:0crwdne9961:0 -- crwdns9962:0crwdne9962:0 -- crwdns9963:0crwdne9963:0 -- crwdns9964:0crwdne9964:0 - -crwdns20149:0crwdne20149:0 - -crwdns20150:0crwdne20150:0 crwdns20151:0crwdne20151:0 crwdns20152:0crwdne20152:0 crwdns20153:0crwdne20153:0 - -*BlockTag: crwdns20154:0crwdne20154:0* - -{panel type="teachering"} - -# crwdns19056:0crwdne19056:0 - -1. crwdns9971:0crwdne9971:0 - - *crwdns9972:0crwdne9972:0* - - crwdns9973:0crwdne9973:0 - - *crwdns9974:0crwdne9974:0* - -2. crwdns9975:0crwdne9975:0 crwdns9976:0crwdne9976:0 - -*BlockTag: crwdns20155:0crwdne20155:0* - -{panel end} - -## crwdns9978:0crwdne9978:0 - -crwdns20156:0crwdne20156:0 - -1. crwdns9980:0crwdne9980:0 - -2. crwdns9981:0crwdne9981:0 - -## crwdns9982:0crwdne9982:0 - -- crwdns9983:0crwdne9983:0 - -- crwdns9984:0crwdne9984:0 crwdns9985:0crwdne9985:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml deleted file mode 100644 index 2fa20d062..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -binary-cards: - description: crwdns8211:0crwdne8211:0 -binary-cards-small: - description: crwdns8212:0crwdne8212:0 diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems.md deleted file mode 100644 index b29b332f5..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/lessons/reinforcing-sequencing-in-binary-number-systems.md +++ /dev/null @@ -1,125 +0,0 @@ -# crwdns9986:0crwdne9986:0 - -## crwdns9987:0crwdne9987:0 - -- crwdns9988:0crwdne9988:0 - -## crwdns9989:0crwdne9989:0 - -*BlockTag: crwdns19144:0crwdne19144:0* - -{panel type="general"} - -# crwdns19145:0crwdne19145:0 - -crwdns9991:0crwdne9991:0 - -- crwdns9992:0crwdne9992:0 -- crwdns9993:0crwdne9993:0 -- crwdns9994:0crwdne9994:0 -- crwdns9995:0crwdne9995:0 - -crwdns9996:0crwdne9996:0 - -*BlockTag: crwdns9997:0crwdne9997:0* - -{panel end} - -crwdns9998:0crwdne9998:0 - -## crwdns9999:0crwdne9999:0 - -crwdns10000:0crwdne10000:0 - -- crwdns10001:0crwdne10001:0 -- crwdns10002:0crwdne10002:0 - -crwdns10003:0crwdne10003:0 crwdns10004:0crwdne10004:0 - -crwdns10005:0crwdne10005:0 - -crwdns10006:0crwdne10006:0 - -crwdns10007:0crwdne10007:0 - -1. crwdns10008:0crwdne10008:0 - -2. crwdns10009:0crwdne10009:0 - -*BlockTag: crwdns19146:0crwdne19146:0* - -{panel type="teaching"} - -# crwdns19147:0crwdne19147:0 - -1. crwdns10011:0crwdne10011:0 - - *crwdns10012:0crwdne10012:0* - - crwdns10013:0crwdne10013:0 - - crwdns10014:0crwdne10014:0 - -2. crwdns10015:0crwdne10015:0 - - *crwdns10016:0crwdne10016:0* - - *crwdns10017:0crwdne10017:0* - - crwdns10018:0crwdne10018:0 - -3. crwdns10019:0crwdne10019:0 crwdns10020:0crwdne10020:0 crwdns10021:0crwdne10021:0 - -*BlockTag: crwdns10022:0crwdne10022:0* - -{panel end} - -*BlockTag: crwdns19148:0crwdne19148:0* - -{panel type="general"} - -# crwdns19149:0crwdne19149:0 - -crwdns10024:0crwdne10024:0 - -**crwdns10025:0crwdne10025:0** - -*BlockTag: crwdns10026:0crwdne10026:0* - -{video url="https://youtu.be/-B0CnXv6pzo"} - -**crwdns10027:0crwdne10027:0** - -*BlockTag: crwdns10028:0crwdne10028:0* - -{video url="https://youtu.be/0sQtZhAYUbU"} - -**crwdns10029:0crwdne10029:0** - -*BlockTag: crwdns10030:0crwdne10030:0* - -{video url="https://youtu.be/KNC1CgmVOus"} - -**crwdns10031:0crwdne10031:0** - -*BlockTag: crwdns10032:0crwdne10032:0* - -{video url="https://youtu.be/9CzELd9DFwc"} - -*BlockTag: crwdns10033:0crwdne10033:0* - -{panel end} - -## crwdns10034:0crwdne10034:0 - -crwdns10035:0crwdne10035:0 - -1. crwdns10036:0crwdne10036:0 - -2. crwdns10037:0crwdne10037:0 - -## crwdns10038:0crwdne10038:0 - -- crwdns10039:0crwdne10039:0 -- crwdns10040:0crwdne10040:0 -- crwdns10041:0crwdne10041:0 crwdns10042:0crwdne10042:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/unit-plan-ct-links.md deleted file mode 100644 index e5a07abe7..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/unit-plan-ct-links.md +++ /dev/null @@ -1,71 +0,0 @@ -*BlockTag: crwdns19041:0crwdne19041:0* - -{panel type="ct-algorithm"} - -# crwdns19042:0crwdne19042:0 - -crwdns9070:0crwdne9070:0 crwdns9071:0crwdne9071:0 crwdns9072:0crwdne9072:0 - -*BlockTag: crwdns9073:0crwdne9073:0* - -{panel end} - -*BlockTag: crwdns19043:0crwdne19043:0* - -{panel type="ct-abstraction"} - -# crwdns19044:0crwdne19044:0 - -crwdns9075:0crwdne9075:0 crwdns9076:0crwdne9076:0 - -*BlockTag: crwdns9077:0crwdne9077:0* - -{panel end} - -*BlockTag: crwdns19045:0crwdne19045:0* - -{panel type="ct-decomposition"} - -# crwdns19046:0crwdne19046:0 - -crwdns9079:0crwdne9079:0 crwdns9080:0crwdne9080:0 - -*BlockTag: crwdns9081:0crwdne9081:0* - -{panel end} - -*BlockTag: crwdns19047:0crwdne19047:0* - -{panel type="ct-pattern"} - -# crwdns19048:0crwdne19048:0 - -crwdns9083:0crwdne9083:0 - -*BlockTag: crwdns9084:0crwdne9084:0* - -{panel end} - -*BlockTag: crwdns19049:0crwdne19049:0* - -{panel type="ct-logic"} - -# crwdns19050:0crwdne19050:0 - -crwdns9086:0crwdne9086:0 crwdns9087:0crwdne9087:0 crwdns9088:0crwdne9088:0 crwdns9089:0crwdne9089:0 - -*BlockTag: crwdns9090:0crwdne9090:0* - -{panel end} - -*BlockTag: crwdns19051:0crwdne19051:0* - -{panel type="ct-evaluation"} - -# crwdns19052:0crwdne19052:0 - -crwdns9092:0crwdne9092:0 - -*BlockTag: crwdns9093:0crwdne9093:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/unit-plan.md b/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/unit-plan.md deleted file mode 100644 index 7cf4fc341..000000000 --- a/csunplugged/topics/content/xx_LR/binary-numbers/unit-plan/unit-plan.md +++ /dev/null @@ -1,86 +0,0 @@ -# crwdns9094:0crwdne9094:0 - -crwdns18285:0crwdne18285:0 crwdns18286:0crwdne18286:0 crwdns18287:0crwdne18287:0 - -*BlockTag: crwdns20130:0crwdne20130:0* - -{panel type="video"} - -# crwdns19038:0crwdne19038:0 - -*BlockTag: crwdns20131:0crwdne20131:0* - -{video url="https://vimeo.com/437725275"} - -*BlockTag: crwdns20132:0crwdne20132:0* - -{panel end} - -crwdns20133:0crwdne20133:0 - -crwdns20134:0crwdne20134:0 crwdns20135:0crwdne20135:0 crwdns20136:0crwdne20136:0 - -## crwdns18295:0crwdne18295:0 - -crwdns18296:0crwdne18296:0 crwdns18297:0crwdne18297:0 crwdns18298:0crwdne18298:0 - -crwdns18299:0{glossary-link end}crwdne18299:0 crwdns18300:0crwdne18300:0 - -## crwdns18301:0crwdne18301:0 - -### crwdns9113:0crwdne9113:0 - -crwdns18302:0crwdne18302:0 - -### crwdns9115:0crwdne9115:0 - -crwdns18303:0crwdne18303:0 crwdns18304:0crwdne18304:0 - -*BlockTag: crwdns18305:0crwdne18305:0* - -*BlockTag: crwdns19039:0crwdne19039:0* - -{panel type="math"} - -# crwdns19040:0crwdne19040:0 - -crwdns18307:0crwdne18307:0 - -crwdns18308:0crwdne18308:0 - -*BlockTag: crwdns18309:0crwdne18309:0* - -*BlockTag: crwdns18310:0crwdne18310:0* - -{image file-path="img/topics/binary_fingers.png"} - -*BlockTag: crwdns18311:0crwdne18311:0* - -{panel end} - -## crwdns18312:0crwdne18312:0 - -*BlockTag: crwdns20137:0crwdne20137:0* - -{image file-path="img/topics/col_binary_01.png" alignment="right"} - -- crwdns9128:0crwdne9128:0 - -- crwdns9129:0crwdne9129:0 - -- crwdns9130:0crwdne9130:0 - -- crwdns9131:0crwdne9131:0 - -- crwdns9132:0crwdne9132:0 - -- crwdns9133:0crwdne9133:0 - -- crwdns9134:0crwdne9134:0 - -## crwdns18315:0crwdne18315:0 - -- crwdns9136:0crwdne9136:0 -- crwdns9137:0crwdne9137:0 -- crwdns9138:0crwdne9138:0 -- crwdns9139:0crwdne9139:0 diff --git a/csunplugged/topics/content/xx_LR/classroom-resources.yaml b/csunplugged/topics/content/xx_LR/classroom-resources.yaml deleted file mode 100644 index b38879969..000000000 --- a/csunplugged/topics/content/xx_LR/classroom-resources.yaml +++ /dev/null @@ -1,39 +0,0 @@ ---- -pens: - description: crwdns8031:0crwdne8031:0 -paper: - description: crwdns8032:0crwdne8032:0 -number-line-0-20: - description: crwdns8033:0crwdne8033:0 -musical-instruments: - description: crwdns8034:0crwdne8034:0 -alphabet-cards: - description: crwdns8035:0crwdne8035:0 -parity-cards-set: - description: crwdns8036:0crwdne8036:0 -whiteboard: - description: crwdns8037:0crwdne8037:0 -whiteboard-pens: - description: crwdns8038:0crwdne8038:0 -product-barcodes: - description: crwdns8039:0crwdne8039:0 -payment-system: - description: crwdns8040:0crwdne8040:0 -pencils: - description: crwdns8041:0crwdne8041:0 -stopwatch: - description: crwdns8042:0crwdne8042:0 -handheld-whiteboards: - description: crwdns8043:0crwdne8043:0 -clipboards: - description: crwdns8044:0crwdne8044:0 -blocks: - description: crwdns8045:0crwdne8045:0 -hula-hoop: - description: crwdns8046:0crwdne8046:0 -counters: - description: crwdns8047:0crwdne8047:0 -chalk: - description: crwdns8048:0crwdne8048:0 -coloring-pens: - description: crwdns8049:0crwdne8049:0 diff --git a/csunplugged/topics/content/xx_LR/curriculum-areas.yaml b/csunplugged/topics/content/xx_LR/curriculum-areas.yaml deleted file mode 100644 index cf330ab0b..000000000 --- a/csunplugged/topics/content/xx_LR/curriculum-areas.yaml +++ /dev/null @@ -1,87 +0,0 @@ ---- -computational-thinking: - name: crwdns8050:0crwdne8050:0 -algorithmic-thinking: - name: crwdns8051:0crwdne8051:0 -decomposition: - name: crwdns8052:0crwdne8052:0 -abstraction: - name: crwdns8053:0crwdne8053:0 -generalising-and-patterns: - name: crwdns8054:0crwdne8054:0 -logic: - name: crwdns8055:0crwdne8055:0 -evaluation: - name: crwdns8056:0crwdne8056:0 -computer-science: - name: crwdns8057:0crwdne8057:0 -data-representation: - name: crwdns8058:0crwdne8058:0 -algorithms: - name: crwdns8059:0crwdne8059:0 -programming: - name: crwdns8060:0crwdne8060:0 -mathematics: - name: crwdns8061:0crwdne8061:0 -geometry: - name: crwdns8062:0crwdne8062:0 -measurement: - name: crwdns8063:0crwdne8063:0 -numeracy: - name: crwdns8064:0crwdne8064:0 -algebra: - name: crwdns8065:0crwdne8065:0 -statistics: - name: crwdns8066:0crwdne8066:0 -literacy: - name: crwdns8067:0crwdne8067:0 -reading: - name: crwdns8068:0crwdne8068:0 -writing: - name: crwdns8069:0crwdne8069:0 -listening: - name: crwdns8070:0crwdne8070:0 -speaking: - name: crwdns8071:0crwdne8071:0 -library: - name: crwdns8072:0crwdne8072:0 -word-study: - name: crwdns19518:0crwdne19518:0 -art: - name: crwdns8073:0crwdne8073:0 -language: - name: crwdns8074:0crwdne8074:0 -performing-arts: - name: crwdns8075:0crwdne8075:0 -music: - name: crwdns8076:0crwdne8076:0 -dance: - name: crwdns8077:0crwdne8077:0 -drama: - name: crwdns8078:0crwdne8078:0 -physical-education: - name: crwdns8079:0crwdne8079:0 -fitness: - name: crwdns8080:0crwdne8080:0 -sport: - name: crwdns8081:0crwdne8081:0 -health: - name: crwdns8082:0crwdne8082:0 -science: - name: crwdns8083:0crwdne8083:0 -biology: - name: crwdns8084:0crwdne8084:0 -physics: - name: crwdns8085:0crwdne8085:0 -astronomy: - name: crwdns8086:0crwdne8086:0 -chemistry: - name: crwdns8087:0crwdne8087:0 -geology: - name: crwdns8088:0crwdne8088:0 -social-studies: - name: crwdns8089:0crwdne8089:0 -history: - name: crwdns8090:0crwdne8090:0 -geography: - name: crwdns19519:0crwdne19519:0 diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md deleted file mode 100644 index a8a0c763e..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/biographies-and-error-control-history.md +++ /dev/null @@ -1,33 +0,0 @@ -# crwdns10049:0crwdne10049:0 - -crwdns10050:0crwdne10050:0 - -crwdns10051:0crwdne10051:0 - -crwdns10052:0crwdne10052:0 - -crwdns10053:0crwdne10053:0 - -- crwdns10054:0crwdne10054:0 -- crwdns10055:0crwdne10055:0 -- crwdns10056:0crwdne10056:0 -- crwdns10057:0crwdne10057:0 - -*BlockTag: crwdns20223:0crwdne20223:0* - -{image file-path="img/topics/shannon-juggling.png" caption="true" alt="person juggling on unicycle" alignment="right"} - -crwdns19189:0crwdne19189:0 - -*BlockTag: crwdns19190:0crwdne19190:0* - -{image end} - -crwdns19191:0crwdne19191:0 crwdns19192:0crwdne19192:0 crwdns19193:0crwdne19193:0 crwdns19194:0crwdne19194:0 - -crwdns19195:0crwdne19195:0 - -- crwdns10064:0crwdne10064:0 -- crwdns10065:0crwdne10065:0 -- crwdns10066:0crwdne10066:0 -- crwdns10067:0crwdne10067:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/instructional-writing.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/instructional-writing.md deleted file mode 100644 index 7650a1bc5..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/instructional-writing.md +++ /dev/null @@ -1,4 +0,0 @@ -# crwdns10068:0crwdne10068:0 - -- crwdns10069:0crwdne10069:0 -- crwdns10070:0crwdne10070:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/quick-card-flip-magic.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/quick-card-flip-magic.md deleted file mode 100644 index 504e55761..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/quick-card-flip-magic.md +++ /dev/null @@ -1,39 +0,0 @@ -# crwdns10071:0crwdne10071:0 - -*BlockTag: crwdns10072:0crwdne10072:0* - -{image file-path="img/topics/kids-parity-trick.jpg"} - -*crwdns10073:0crwdne10073:0* - -### crwdns10074:0crwdne10074:0 - -crwdns10075:0crwdne10075:0 - -### crwdns10076:0crwdne10076:0 - -crwdns10077:0crwdne10077:0 - -### crwdns10078:0crwdne10078:0 - -1. crwdns10079:0crwdne10079:0 crwdns10080:0crwdne10080:0 crwdns10081:0crwdne10081:0 - -2. crwdns10082:0crwdne10082:0 - -3. crwdns10083:0crwdne10083:0 - -4. crwdns10084:0crwdne10084:0 - -5. crwdns10085:0crwdne10085:0 - -6. crwdns10086:0crwdne10086:0 - -7. crwdns10087:0crwdne10087:0 - -8. crwdns10088:0crwdne10088:0 - -9. crwdns10089:0crwdne10089:0 - -10. crwdns10090:0crwdne10090:0 - -11. crwdns10091:0crwdne10091:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/what-if.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/what-if.md deleted file mode 100644 index c5639a6cc..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/what-if.md +++ /dev/null @@ -1,11 +0,0 @@ -# crwdns10092:0crwdne10092:0 - -*BlockTag: crwdns10093:0crwdne10093:0* - -{image file-path="img/topics/gobbly-gook-computer.png" alt="computer with strange symbols instead of plain text"} - -crwdns10094:0crwdne10094:0 crwdns10095:0crwdne10095:0 crwdns10096:0crwdne10096:0 - -crwdns10097:0crwdne10097:0 - -crwdns10098:0crwdne10098:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/word-study-activity.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/word-study-activity.md deleted file mode 100644 index 54cf81d18..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/curriculum-integrations/word-study-activity.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns10099:0crwdne10099:0 - -*BlockTag: crwdns10100:0crwdne10100:0* - -{image file-path="img/topics/par-pair.png" alt="golf bag with golf sticks"} - -- crwdns10101:0crwdne10101:0 -- crwdns10102:0crwdne10102:0 -- crwdns10103:0crwdne10103:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/error-detection-and-correction.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/error-detection-and-correction.md deleted file mode 100644 index 8b979e0f9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/error-detection-and-correction.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns10043:0crwdne10043:0 - -crwdns10044:0crwdne10044:0 crwdns10045:0crwdne10045:0 crwdns10046:0crwdne10046:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/other-resources.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/other-resources.md deleted file mode 100644 index 3e285e4c5..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/other-resources.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns10047:0crwdne10047:0 - -crwdns10048:0crwdne10048:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/calculate-credit-card-last-digit.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/calculate-credit-card-last-digit.md deleted file mode 100644 index f538ccf65..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/calculate-credit-card-last-digit.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns10104:0crwdne10104:0 - -## crwdns10105:0crwdne10105:0 - -crwdns10106:0crwdne10106:0 - -## crwdns10107:0crwdne10107:0 - -crwdns10108:0crwdne10108:0 - -*crwdns10109:0crwdne10109:0* - -| crwdns10110:0crwdne10110:0 | crwdns10111:0crwdne10111:0 | -| -------------------------- | -------------------------- | -| crwdns10112:0crwdne10112:0 | crwdns10113:0crwdne10113:0 | -| crwdns10114:0crwdne10114:0 | crwdns10115:0crwdne10115:0 | -| crwdns10116:0crwdne10116:0 | crwdns10117:0crwdne10117:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-expected.md deleted file mode 100644 index 8b0ea8ba4..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns10118:0crwdne10118:0 - -*BlockTag: crwdns10119:0crwdne10119:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148477813/?autostart=false"} - -*BlockTag: crwdns19216:0crwdne19216:0* - -{panel type="help"} - -# crwdns19217:0crwdne19217:0 - -<pre><code class="scratch:split:random">crwdns10121:0crwdne10121:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10122:0[10]crwdne10122:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10123:0[1]crwdnd10123:0[0]crwdnd10123:0[0]crwdnd10123:0[0]crwdnd10123:0[2]crwdne10123:0 -</code></pre> - -*BlockTag: crwdns10124:0crwdne10124:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-hints.md deleted file mode 100644 index 823581e22..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns10125:0crwdne10125:0 crwdns10126:0crwdne10126:0 - -- crwdns10127:0crwdne10127:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-solution.md deleted file mode 100644 index 2c7a51cc7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-credit-card-last-digit/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10128:0[1]crwdnd10128:0[0]crwdnd10128:0[0]crwdnd10128:0[0]crwdnd10128:0[10]crwdnd10128:0[2]crwdne10128:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/calculate-isbn-10-last-digit.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/calculate-isbn-10-last-digit.md deleted file mode 100644 index 6231a8c57..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/calculate-isbn-10-last-digit.md +++ /dev/null @@ -1,16 +0,0 @@ -# crwdns10129:0crwdne10129:0 - -## crwdns10130:0crwdne10130:0 - -crwdns10131:0crwdne10131:0 - -## crwdns10132:0crwdne10132:0 - -crwdns10133:0crwdne10133:0 - -| crwdns10134:0crwdne10134:0 | crwdns10135:0crwdne10135:0 | -| -------------------------- | -------------------------- | -| crwdns10136:0crwdne10136:0 | crwdns10137:0crwdne10137:0 | -| crwdns10138:0crwdne10138:0 | crwdns10139:0crwdne10139:0 | -| crwdns10140:0crwdne10140:0 | crwdns10141:0crwdne10141:0 | -| crwdns10142:0crwdne10142:0 | crwdns10143:0crwdne10143:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-expected.md deleted file mode 100644 index 5654ad1d4..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10144:0crwdne10144:0 - -*BlockTag: crwdns10145:0crwdne10145:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148477907/?autostart=false"} - -*BlockTag: crwdns19238:0crwdne19238:0* - -{panel type="help"} - -# crwdns19239:0crwdne19239:0 - -<pre><code class="scratch:split:random">crwdns10147:0crwdne10147:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10148:0crwdne10148:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10149:0[1]crwdnd10149:0[10]crwdnd10149:0[0]crwdnd10149:0[0]crwdnd10149:0[0]crwdne10149:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10150:0[10]crwdne10150:0 -</code></pre> - -*BlockTag: crwdns10151:0crwdne10151:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-hints.md deleted file mode 100644 index 07504d801..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-hints.md +++ /dev/null @@ -1,19 +0,0 @@ -- crwdns10152:0crwdne10152:0 - -- crwdns10153:0crwdne10153:0 - - crwdns10154:0crwdne10154:0 - - crwdns10155:0crwdne10155:0 - - crwdns10156:0crwdne10156:0 - - crwdns10157:0crwdne10157:0 - - crwdns10158:0crwdne10158:0 - - crwdns10159:0crwdne10159:0 - - crwdns10160:0crwdne10160:0 - - crwdns10161:0crwdne10161:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-solution.md deleted file mode 100644 index 8f4dcfb0b..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/calculate-isbn-10-last-digit/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10162:0[1]crwdnd10162:0[10]crwdnd10162:0[0]crwdnd10162:0[0]crwdnd10162:0[0]crwdnd10162:0[10]crwdne10162:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/check-odd-even-using-mod.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/check-odd-even-using-mod.md deleted file mode 100644 index 942ad746e..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/check-odd-even-using-mod.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10163:0crwdne10163:0 - -## crwdns10164:0crwdne10164:0 - -crwdns10165:0crwdne10165:0 - -## crwdns10166:0crwdne10166:0 - -crwdns10167:0crwdne10167:0 - -| crwdns10168:0crwdne10168:0 | crwdns10169:0crwdne10169:0 | -| -------------------------- | -------------------------- | -| crwdns10170:0crwdne10170:0 | crwdns10171:0crwdne10171:0 | -| crwdns10172:0crwdne10172:0 | crwdns10173:0crwdne10173:0 | -| crwdns10174:0crwdne10174:0 | crwdns10175:0crwdne10175:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-expected.md deleted file mode 100644 index 42482abc1..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-expected.md +++ /dev/null @@ -1,21 +0,0 @@ -crwdns10176:0crwdne10176:0 - -*BlockTag: crwdns10177:0crwdne10177:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426036/?autostart=false"} - -*BlockTag: crwdns19214:0crwdne19214:0* - -{panel type="help"} - -# crwdns19215:0crwdne19215:0 - -<pre><code class="scratch:split:random">crwdns10179:0[0]crwdne10179:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10180:0crwdne10180:0 -</code></pre> - -*BlockTag: crwdns10181:0crwdne10181:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-hints.md deleted file mode 100644 index e293bbfe6..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10182:0crwdne10182:0 crwdns10183:0crwdne10183:0 crwdns10184:0crwdne10184:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-solution.md deleted file mode 100644 index aff644a4f..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-mod/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10185:0[0]crwdne10185:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/check-odd-even-using-subtraction.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/check-odd-even-using-subtraction.md deleted file mode 100644 index 13ddda303..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/check-odd-even-using-subtraction.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10186:0crwdne10186:0 - -## crwdns10187:0crwdne10187:0 - -crwdns10188:0crwdne10188:0 crwdns10189:0crwdne10189:0 crwdns10190:0crwdne10190:0 - -## crwdns10191:0crwdne10191:0 - -crwdns10192:0crwdne10192:0 - -| crwdns10193:0crwdne10193:0 | crwdns10194:0crwdne10194:0 | -| -------------------------- | -------------------------- | -| crwdns10195:0crwdne10195:0 | crwdns10196:0crwdne10196:0 | -| crwdns10197:0crwdne10197:0 | crwdns10198:0crwdne10198:0 | -| crwdns10199:0crwdne10199:0 | crwdns10200:0crwdne10200:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-expected.md deleted file mode 100644 index f58d775d7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10201:0crwdne10201:0 - -*BlockTag: crwdns10202:0crwdne10202:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426073/?autostart=false"} - -*BlockTag: crwdns19242:0crwdne19242:0* - -{panel type="help"} - -# crwdns19243:0crwdne19243:0 - -<pre><code class="scratch:split:random">crwdns10204:0crwdne10204:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10205:0[0]crwdnd10205:0[0]crwdnd10205:0[1]crwdnd10205:0[0]crwdnd10205:0[1]crwdne10205:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10206:0crwdne10206:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10207:0[0]crwdne10207:0 -</code></pre> - -*BlockTag: crwdns10208:0crwdne10208:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-hints.md deleted file mode 100644 index ceec67018..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns10209:0crwdne10209:0 -- crwdns10210:0crwdne10210:0 -- crwdns10211:0crwdne10211:0 crwdns10212:0crwdne10212:0 crwdns10213:0crwdne10213:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-solution.md deleted file mode 100644 index e70afd11f..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-odd-even-using-subtraction/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10214:0[0]crwdnd10214:0[0]crwdnd10214:0[0]crwdnd10214:0[1]crwdnd10214:0[0]crwdnd10214:0[1]crwdne10214:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/check-valid-credit-card.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/check-valid-credit-card.md deleted file mode 100644 index 6b67ad4e9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/check-valid-credit-card.md +++ /dev/null @@ -1,20 +0,0 @@ -# crwdns10215:0crwdne10215:0 - -## crwdns10216:0crwdne10216:0 - -crwdns10217:0crwdne10217:0 - -## crwdns10218:0crwdne10218:0 - -crwdns10219:0crwdne10219:0 - -*crwdns10220:0crwdne10220:0* - -| crwdns10221:0crwdne10221:0 | crwdns10222:0crwdne10222:0 | -| -------------------------- | -------------------------- | -| crwdns10223:0crwdne10223:0 | crwdns10224:0crwdne10224:0 | -| crwdns10225:0crwdne10225:0 | crwdns10226:0crwdne10226:0 | -| crwdns10227:0crwdne10227:0 | crwdns10228:0crwdne10228:0 | -| crwdns10229:0crwdne10229:0 | crwdns10230:0crwdne10230:0 | -| crwdns10231:0crwdne10231:0 | crwdns10232:0crwdne10232:0 | -| crwdns10233:0crwdne10233:0 | crwdns10234:0crwdne10234:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-expected.md deleted file mode 100644 index 1dc856bbb..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10235:0crwdne10235:0 - -*BlockTag: crwdns10236:0crwdne10236:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148477751/?autostart=false"} - -*BlockTag: crwdns19236:0crwdne19236:0* - -{panel type="help"} - -# crwdns19237:0crwdne19237:0 - -<pre><code class="scratch:split:random">crwdns10238:0crwdne10238:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10239:0[10]crwdnd10239:0[0]crwdne10239:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10240:0crwdne10240:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10241:0[1]crwdnd10241:0[0]crwdnd10241:0[0]crwdnd10241:0[0]crwdne10241:0 -</code></pre> - -*BlockTag: crwdns10242:0crwdne10242:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-hints.md deleted file mode 100644 index 6fbc63630..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns10243:0crwdne10243:0 crwdns10244:0crwdne10244:0 - -- crwdns10245:0crwdne10245:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-solution.md deleted file mode 100644 index 21b54f9f0..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-credit-card/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10246:0[1]crwdnd10246:0[0]crwdnd10246:0[0]crwdnd10246:0[0]crwdnd10246:0[10]crwdnd10246:0[0]crwdne10246:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/check-valid-isbn-10.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/check-valid-isbn-10.md deleted file mode 100644 index 9dc35fb57..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/check-valid-isbn-10.md +++ /dev/null @@ -1,20 +0,0 @@ -# crwdns10247:0crwdne10247:0 - -## crwdns10248:0crwdne10248:0 - -crwdns10249:0crwdne10249:0 crwdns10250:0crwdne10250:0 - -## crwdns10251:0crwdne10251:0 - -crwdns10252:0crwdne10252:0 - -| crwdns10253:0crwdne10253:0 | crwdns10254:0crwdne10254:0 | -| -------------------------- | -------------------------- | -| crwdns10255:0crwdne10255:0 | crwdns10256:0crwdne10256:0 | -| crwdns10257:0crwdne10257:0 | crwdns10258:0crwdne10258:0 | -| crwdns10259:0crwdne10259:0 | crwdns10260:0crwdne10260:0 | -| crwdns10261:0crwdne10261:0 | crwdns10262:0crwdne10262:0 | -| crwdns10263:0crwdne10263:0 | crwdns10264:0crwdne10264:0 | -| crwdns10265:0crwdne10265:0 | crwdns10266:0crwdne10266:0 | -| crwdns10267:0crwdne10267:0 | crwdns10268:0crwdne10268:0 | -| crwdns10269:0crwdne10269:0 | crwdns10270:0crwdne10270:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-expected.md deleted file mode 100644 index bbfb52428..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10271:0crwdne10271:0 - -*BlockTag: crwdns10272:0crwdne10272:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148477875/?autostart=false"} - -*BlockTag: crwdns19226:0crwdne19226:0* - -{panel type="help"} - -# crwdns19227:0crwdne19227:0 - -<pre><code class="scratch:split:random">crwdns10274:0crwdne10274:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10275:0crwdne10275:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10276:0[1]crwdnd10276:0[10]crwdnd10276:0[0]crwdne10276:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10277:0[0]crwdnd10277:0[10]crwdnd10277:0[X]crwdne10277:0 -</code></pre> - -*BlockTag: crwdns10278:0crwdne10278:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-hints.md deleted file mode 100644 index 8c910ee61..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-hints.md +++ /dev/null @@ -1,11 +0,0 @@ -- crwdns10279:0crwdne10279:0 - -- crwdns10280:0crwdne10280:0 - - crwdns10281:0crwdne10281:0 - - crwdns10282:0crwdne10282:0 - - crwdns10283:0crwdne10283:0 - - crwdns10284:0crwdne10284:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-solution.md deleted file mode 100644 index da9240117..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/check-valid-isbn-10/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10285:0[1]crwdnd10285:0[10]crwdnd10285:0[0]crwdnd10285:0[10]crwdnd10285:0[X]crwdnd10285:0[0]crwdne10285:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/count-black-squares-one-colour-input.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/count-black-squares-one-colour-input.md deleted file mode 100644 index 35fb0ed6c..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/count-black-squares-one-colour-input.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10286:0crwdne10286:0 - -## crwdns10287:0crwdne10287:0 - -crwdns10288:0crwdne10288:0 - -## crwdns10289:0crwdne10289:0 - -crwdns10290:0crwdne10290:0 - -| crwdns10291:0crwdne10291:0 | crwdns10292:0crwdne10292:0 | -| -------------------------- | -------------------------- | -| crwdns10293:0crwdne10293:0 | crwdns10294:0crwdne10294:0 | -| crwdns10295:0crwdne10295:0 | crwdns10296:0crwdne10296:0 | -| crwdns10297:0crwdne10297:0 | crwdns10298:0crwdne10298:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-expected.md deleted file mode 100644 index e6155aad9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns10299:0crwdne10299:0 - -*BlockTag: crwdns10300:0crwdne10300:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148425996/?autostart=false"} - -*BlockTag: crwdns19210:0crwdne19210:0* - -{panel type="help"} - -# crwdns19211:0crwdne19211:0 - -<pre><code class="scratch:split:random">crwdns10302:0crwdne10302:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10303:0[0]crwdne10303:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10304:0[B]crwdne10304:0 -</code></pre> - -*BlockTag: crwdns10305:0crwdne10305:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-hints.md deleted file mode 100644 index b53103e69..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns10306:0crwdne10306:0 crwdns10307:0crwdne10307:0 crwdns10308:0crwdne10308:0 -- crwdns10309:0crwdne10309:0 -- crwdns10310:0crwdne10310:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-solution.md deleted file mode 100644 index 1f5d5671c..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-colour-input/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10311:0[0]crwdnd10311:0[B]crwdne10311:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/count-black-squares-one-line-input.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/count-black-squares-one-line-input.md deleted file mode 100644 index 69fb6050e..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/count-black-squares-one-line-input.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10312:0crwdne10312:0 - -## crwdns10313:0crwdne10313:0 - -crwdns10314:0crwdne10314:0 - -## crwdns10315:0crwdne10315:0 - -crwdns10316:0crwdne10316:0 - -| crwdns10317:0crwdne10317:0 | crwdns10318:0crwdne10318:0 | -| -------------------------- | -------------------------- | -| crwdns10319:0crwdne10319:0 | crwdns10320:0crwdne10320:0 | -| crwdns10321:0crwdne10321:0 | crwdns10322:0crwdne10322:0 | -| crwdns10323:0crwdne10323:0 | crwdns10324:0crwdne10324:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-expected.md deleted file mode 100644 index c2ec757b9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10325:0crwdne10325:0 - -*BlockTag: crwdns10326:0crwdne10326:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426017/?autostart=false"} - -*BlockTag: crwdns19240:0crwdne19240:0* - -{panel type="help"} - -# crwdns19241:0crwdne19241:0 - -<pre><code class="scratch:split:random">crwdns10328:0crwdne10328:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10329:0crwdne10329:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10330:0[B]crwdne10330:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10331:0[0]crwdnd10331:0[1]crwdne10331:0 -</code></pre> - -*BlockTag: crwdns10332:0crwdne10332:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-hints.md deleted file mode 100644 index f8b01890e..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-hints.md +++ /dev/null @@ -1,7 +0,0 @@ -- crwdns10333:0crwdne10333:0 crwdns10334:0crwdne10334:0 crwdns10335:0crwdne10335:0 crwdns10336:0crwdne10336:0 - -- crwdns10337:0[world]crwdne10337:0 crwdns10338:0[world]crwdne10338:0 - -- crwdns10339:0crwdne10339:0 - -- crwdns10340:0[world]crwdne10340:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-solution.md deleted file mode 100644 index 4e38d4bc0..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/count-black-squares-one-line-input/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10341:0[0]crwdnd10341:0[1]crwdnd10341:0[B]crwdne10341:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/detect-parity-error-in-any-rows-after-input.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/detect-parity-error-in-any-rows-after-input.md deleted file mode 100644 index 42686f686..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/detect-parity-error-in-any-rows-after-input.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns10380:0crwdne10380:0 - -## crwdns10381:0crwdne10381:0 - -crwdns10382:0crwdne10382:0 crwdns10383:0crwdne10383:0 crwdns10384:0crwdne10384:0 - -## crwdns10385:0crwdne10385:0 - -crwdns10386:0crwdne10386:0 - -| crwdns10387:0crwdne10387:0 | crwdns10388:0crwdne10388:0 | -| ----------------------------------------------------- | -------------------------- | -| crwdns10389:0crwdne10389:0 crwdns10390:0crwdne10390:0 | crwdns10391:0crwdne10391:0 | -| crwdns10392:0crwdne10392:0 crwdns10393:0crwdne10393:0 | crwdns10394:0crwdne10394:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-expected.md deleted file mode 100644 index 01c3cc86a..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10395:0crwdne10395:0 - -*BlockTag: crwdns10396:0crwdne10396:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426175/?autostart=false"} - -*BlockTag: crwdns19218:0crwdne19218:0* - -{panel type="help"} - -# crwdns19219:0crwdne19219:0 - -<pre><code class="scratch:split:random">crwdns10398:0crwdne10398:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10399:0[0]crwdnd10399:0[1]crwdnd10399:0[1]crwdnd10399:0[1]crwdnd10399:0[0]crwdne10399:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10400:0crwdne10400:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10401:0[1]crwdnd10401:0[B]crwdne10401:0 -</code></pre> - -*BlockTag: crwdns10402:0crwdne10402:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-hints.md deleted file mode 100644 index a575fd71f..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-hints.md +++ /dev/null @@ -1,19 +0,0 @@ -- crwdns10403:0crwdne10403:0 crwdns10404:0crwdne10404:0 crwdns10405:0crwdne10405:0 - -- crwdns10406:0crwdne10406:0 - -- crwdns10407:0crwdne10407:0 - -- crwdns10408:0crwdne10408:0 - -- crwdns10409:0crwdne10409:0 - -- crwdns10410:0crwdne10410:0 crwdns10411:0crwdne10411:0 crwdns10412:0crwdne10412:0 - -- crwdns10413:0[world]crwdne10413:0 crwdns10414:0[world]crwdne10414:0 - -- crwdns10415:0crwdne10415:0 crwdns10416:0crwdne10416:0 - -- crwdns10417:0[world]crwdne10417:0 - -- crwdns10418:0crwdne10418:0 crwdns10419:0crwdne10419:0 crwdns10420:0crwdne10420:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-solution.md deleted file mode 100644 index a49841092..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-after-input/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10421:0[0]crwdnd10421:0[1]crwdnd10421:0[1]crwdnd10421:0[1]crwdnd10421:0[B]crwdnd10421:0[1]crwdnd10421:0[0]crwdne10421:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/detect-parity-error-in-any-rows-or-columns.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/detect-parity-error-in-any-rows-or-columns.md deleted file mode 100644 index 93868b200..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/detect-parity-error-in-any-rows-or-columns.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns10422:0crwdne10422:0 - -## crwdns10423:0crwdne10423:0 - -crwdns10424:0crwdne10424:0 crwdns10425:0crwdne10425:0 crwdns10426:0crwdne10426:0 - -## crwdns10427:0crwdne10427:0 - -crwdns10428:0crwdne10428:0 - -| crwdns10429:0crwdne10429:0 | crwdns10430:0crwdne10430:0 | -| ----------------------------------------------------- | -------------------------- | -| crwdns10431:0crwdne10431:0 crwdns10432:0crwdne10432:0 | crwdns10433:0crwdne10433:0 | -| crwdns10434:0crwdne10434:0 crwdns10435:0crwdne10435:0 | crwdns10436:0crwdne10436:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/extra-challenge.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/extra-challenge.md deleted file mode 100644 index 8f0b0d33a..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns10437:0crwdne10437:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-expected.md deleted file mode 100644 index 8da6ba9fe..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-expected.md +++ /dev/null @@ -1,28 +0,0 @@ -crwdns10438:0crwdne10438:0 - -*BlockTag: crwdns10439:0crwdne10439:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426200/?autostart=false"} - -*BlockTag: crwdns19208:0crwdne19208:0* - -{panel type="help"} - -# crwdns19209:0crwdne19209:0 - -<pre><code class="scratch:split:random">crwdns10441:0crwdne10441:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10442:0[0]crwdnd10442:0[1]crwdnd10442:0[1]crwdnd10442:0[0]crwdnd10442:0[1]crwdnd10442:0[1]crwdnd10442:0[0]crwdnd10442:0[0]crwdne10442:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10443:0crwdne10443:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10444:0[B]crwdnd10444:0[1]crwdnd10444:0[B]crwdnd10444:0[1]crwdne10444:0 - -</code></pre> - -*BlockTag: crwdns10445:0crwdne10445:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-hints.md deleted file mode 100644 index 585bad7ca..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-hints.md +++ /dev/null @@ -1,23 +0,0 @@ -- crwdns10446:0crwdne10446:0 crwdns10447:0crwdne10447:0 crwdns10448:0crwdne10448:0 - -- crwdns10449:0crwdne10449:0 crwdns10450:0crwdne10450:0 crwdns10451:0crwdne10451:0 crwdns10452:0crwdne10452:0 - -- crwdns10453:0crwdne10453:0 - -- crwdns10454:0crwdne10454:0 - -- crwdns10455:0crwdne10455:0 - -- crwdns10456:0crwdne10456:0 - -- crwdns10457:0crwdne10457:0 - -- crwdns10458:0crwdne10458:0 crwdns10459:0crwdne10459:0 crwdns10460:0crwdne10460:0 - -- crwdns10461:0[world]crwdne10461:0 crwdns10462:0[world]crwdne10462:0 - -- crwdns10463:0crwdne10463:0 crwdns10464:0crwdne10464:0 - -- crwdns10465:0[world]crwdne10465:0 - -- crwdns10466:0crwdne10466:0 crwdns10467:0crwdne10467:0 crwdns10468:0crwdne10468:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-solution.md deleted file mode 100644 index d3026a902..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows-or-columns/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10469:0[1]crwdnd10469:0[0]crwdnd10469:0[0]crwdnd10469:0[0]crwdnd10469:0[1]crwdnd10469:0[B]crwdnd10469:0[1]crwdnd10469:0[1]crwdnd10469:0[0]crwdnd10469:0[1]crwdnd10469:0[B]crwdnd10469:0[1]crwdne10469:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/detect-parity-error-in-any-rows.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/detect-parity-error-in-any-rows.md deleted file mode 100644 index 888856e4d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/detect-parity-error-in-any-rows.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10342:0crwdne10342:0 - -## crwdns10343:0crwdne10343:0 - -crwdns10344:0crwdne10344:0 - -## crwdns10345:0crwdne10345:0 - -crwdns10346:0crwdne10346:0 - -| crwdns10347:0crwdne10347:0 | crwdns10348:0crwdne10348:0 | -| -------------------------- | -------------------------- | -| crwdns10349:0crwdne10349:0 | crwdns10350:0crwdne10350:0 | -| crwdns10351:0crwdne10351:0 | crwdns10352:0crwdne10352:0 | -| crwdns10353:0crwdne10353:0 | crwdns10354:0crwdne10354:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-expected.md deleted file mode 100644 index 4d395cefb..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns10355:0crwdne10355:0 - -*BlockTag: crwdns10356:0crwdne10356:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426139/?autostart=false"} - -*BlockTag: crwdns19198:0crwdne19198:0* - -{panel type="help"} - -# crwdns19199:0crwdne19199:0 - -<pre><code class="scratch:split:random">crwdns10358:0crwdne10358:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10359:0crwdne10359:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10360:0[0]crwdnd10360:0[1]crwdnd10360:0[1]crwdnd10360:0[0]crwdne10360:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10361:0crwdne10361:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10362:0[B]crwdnd10362:0[0]crwdne10362:0 -</code></pre> - -*BlockTag: crwdns10363:0crwdne10363:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-hints.md deleted file mode 100644 index 2e460efc8..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns10364:0crwdne10364:0 crwdns10365:0crwdne10365:0 crwdns10366:0crwdne10366:0 crwdns10367:0crwdne10367:0 crwdns10368:0crwdne10368:0 crwdns10369:0crwdne10369:0 crwdns10370:0crwdne10370:0 - -- crwdns10371:0[world]crwdne10371:0 crwdns10372:0[world]crwdne10372:0 - -- crwdns10373:0crwdne10373:0 crwdns10374:0crwdne10374:0 - -- crwdns10375:0[world]crwdne10375:0 - -- crwdns10376:0crwdne10376:0 crwdns10377:0crwdne10377:0 crwdns10378:0crwdne10378:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-solution.md deleted file mode 100644 index cfb4c4ff9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-any-rows/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10379:0[0]crwdnd10379:0[1]crwdnd10379:0[1]crwdnd10379:0[B]crwdnd10379:0[0]crwdnd10379:0[0]crwdne10379:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/detect-parity-error-in-row.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/detect-parity-error-in-row.md deleted file mode 100644 index d9375c684..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/detect-parity-error-in-row.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10470:0crwdne10470:0 - -## crwdns10471:0crwdne10471:0 - -crwdns10472:0crwdne10472:0 - -## crwdns10473:0crwdne10473:0 - -crwdns10474:0crwdne10474:0 - -| crwdns10475:0crwdne10475:0 | crwdns10476:0crwdne10476:0 | -| -------------------------- | -------------------------- | -| crwdns10477:0crwdne10477:0 | crwdns10478:0crwdne10478:0 | -| crwdns10479:0crwdne10479:0 | crwdns10480:0crwdne10480:0 | -| crwdns10481:0crwdne10481:0 | crwdns10482:0crwdne10482:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-expected.md deleted file mode 100644 index 4fdd33c4d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns10483:0crwdne10483:0 - -*BlockTag: crwdns10484:0crwdne10484:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426097/?autostart=false"} - -*BlockTag: crwdns19244:0crwdne19244:0* - -{panel type="help"} - -# crwdns19245:0crwdne19245:0 - -<pre><code class="scratch:split:random">crwdns10486:0crwdne10486:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10487:0[B]crwdnd10487:0[0]crwdne10487:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10488:0crwdne10488:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10489:0crwdne10489:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10490:0[0]crwdnd10490:0[1]crwdne10490:0 -</code></pre> - -*BlockTag: crwdns10491:0crwdne10491:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-hints.md deleted file mode 100644 index 3ab6e0497..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-hints.md +++ /dev/null @@ -1,7 +0,0 @@ -- crwdns10492:0[world]crwdne10492:0 crwdns10493:0[world]crwdne10493:0 - -- crwdns10494:0crwdne10494:0 crwdns10495:0crwdne10495:0 - -- crwdns10496:0[world]crwdne10496:0 - -- crwdns10497:0crwdne10497:0 crwdns10498:0crwdne10498:0 crwdns10499:0crwdne10499:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-solution.md deleted file mode 100644 index 3bbe5766b..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-row/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10500:0[0]crwdnd10500:0[1]crwdnd10500:0[B]crwdnd10500:0[0]crwdne10500:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/detect-parity-error-in-six-rows.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/detect-parity-error-in-six-rows.md deleted file mode 100644 index 1dd3cdcba..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/detect-parity-error-in-six-rows.md +++ /dev/null @@ -1,18 +0,0 @@ -# crwdns10501:0crwdne10501:0 - -## crwdns10502:0crwdne10502:0 - -crwdns10503:0crwdne10503:0 - -## crwdns10504:0crwdne10504:0 - -crwdns10505:0crwdne10505:0 - -| crwdns10506:0crwdne10506:0 | crwdns10507:0crwdne10507:0 | -| -------------------------- | -------------------------- | -| crwdns10508:0crwdne10508:0 | crwdns10509:0crwdne10509:0 | -| crwdns10510:0crwdne10510:0 | crwdns10511:0crwdne10511:0 | -| crwdns10512:0crwdne10512:0 | crwdns10513:0crwdne10513:0 | -| crwdns10514:0crwdne10514:0 | crwdns10515:0crwdne10515:0 | -| crwdns10516:0crwdne10516:0 | crwdns10517:0crwdne10517:0 | -| crwdns10518:0crwdne10518:0 | crwdns10519:0crwdne10519:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-expected.md deleted file mode 100644 index 648d21920..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10520:0crwdne10520:0 - -*BlockTag: crwdns10521:0crwdne10521:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426115/?autostart=false"} - -*BlockTag: crwdns19206:0crwdne19206:0* - -{panel type="help"} - -# crwdns19207:0crwdne19207:0 - -<pre><code class="scratch:split:random">crwdns10523:0crwdne10523:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10524:0[B]crwdnd10524:0[0]crwdne10524:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10525:0crwdne10525:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10526:0[0]crwdnd10526:0[1]crwdnd10526:0[0]crwdnd10526:0[1]crwdne10526:0 -</code></pre> - -*BlockTag: crwdns10527:0crwdne10527:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-hints.md deleted file mode 100644 index 24e079c56..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-hints.md +++ /dev/null @@ -1,9 +0,0 @@ -- crwdns10528:0crwdne10528:0 crwdns10529:0crwdne10529:0 crwdns10530:0crwdne10530:0 crwdns10531:0crwdne10531:0 crwdns10532:0crwdne10532:0 crwdns10533:0crwdne10533:0 - -- crwdns10534:0[world]crwdne10534:0 crwdns10535:0[world]crwdne10535:0 - -- crwdns10536:0crwdne10536:0 crwdns10537:0crwdne10537:0 - -- crwdns10538:0[world]crwdne10538:0 - -- crwdns10539:0crwdne10539:0 crwdns10540:0crwdne10540:0 crwdns10541:0crwdne10541:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-solution.md deleted file mode 100644 index 1697f4adf..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/detect-parity-error-in-six-rows/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10542:0[0]crwdnd10542:0[1]crwdnd10542:0[1]crwdnd10542:0[B]crwdnd10542:0[0]crwdnd10542:0[0]crwdne10542:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/product-code-12-last-digit-one-at-a-time.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/product-code-12-last-digit-one-at-a-time.md deleted file mode 100644 index d85c44f2b..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/product-code-12-last-digit-one-at-a-time.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10543:0crwdne10543:0 - -## crwdns10544:0crwdne10544:0 - -crwdns10545:0crwdne10545:0 - -## crwdns10546:0crwdne10546:0 - -crwdns10547:0crwdne10547:0 - -| crwdns10548:0crwdne10548:0 | crwdns10549:0crwdne10549:0 | -| -------------------------- | -------------------------- | -| crwdns10550:0crwdne10550:0 | crwdns10551:0crwdne10551:0 | -| crwdns10552:0crwdne10552:0 | crwdns10553:0crwdne10553:0 | -| crwdns10554:0crwdne10554:0 | crwdns10555:0crwdne10555:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-expected.md deleted file mode 100644 index a3bf7da8d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns10556:0crwdne10556:0 - -*BlockTag: crwdns10557:0crwdne10557:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148477095/?autostart=false"} - -*BlockTag: crwdns19212:0crwdne19212:0* - -{panel type="help"} - -# crwdns19213:0crwdne19213:0 - -<pre><code class="scratch:split:random">crwdns10559:0crwdne10559:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10560:0crwdne10560:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10561:0[0]crwdnd10561:0[0]crwdnd10561:0[1]crwdnd10561:0[0]crwdne10561:0 -</code></pre> - -*BlockTag: crwdns10562:0crwdne10562:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-hints.md deleted file mode 100644 index f85290b77..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10563:0crwdne10563:0 crwdns10564:0crwdne10564:0 crwdns10565:0crwdne10565:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-solution.md deleted file mode 100644 index 18fb6cdc2..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-at-a-time/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10566:0[0]crwdnd10566:0[0]crwdnd10566:0[1]crwdnd10566:0[0]crwdne10566:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/product-code-12-last-digit-one-line.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/product-code-12-last-digit-one-line.md deleted file mode 100644 index f2cf9f4c7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/product-code-12-last-digit-one-line.md +++ /dev/null @@ -1,16 +0,0 @@ -# crwdns10567:0crwdne10567:0 - -## crwdns10568:0crwdne10568:0 - -crwdns10569:0crwdne10569:0 crwdns10570:0crwdne10570:0 - -## crwdns10571:0crwdne10571:0 - -crwdns10572:0crwdne10572:0 - -| crwdns10573:0crwdne10573:0 | crwdns10574:0crwdne10574:0 | -| -------------------------- | -------------------------- | -| crwdns10575:0crwdne10575:0 | crwdns10576:0crwdne10576:0 | -| crwdns10577:0crwdne10577:0 | crwdns10578:0crwdne10578:0 | -| crwdns10579:0crwdne10579:0 | crwdns10580:0crwdne10580:0 | -| crwdns10581:0crwdne10581:0 | crwdns10582:0crwdne10582:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-expected.md deleted file mode 100644 index e85d27761..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10583:0crwdne10583:0 - -*BlockTag: crwdns10584:0crwdne10584:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148477141/?autostart=false"} - -*BlockTag: crwdns19234:0crwdne19234:0* - -{panel type="help"} - -# crwdns19235:0crwdne19235:0 - -<pre><code class="scratch:split:random">crwdns10586:0crwdne10586:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10587:0crwdne10587:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10588:0[11]crwdne10588:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10589:0[1]crwdnd10589:0[0]crwdnd10589:0[0]crwdnd10589:0[0]crwdnd10589:0[0]crwdne10589:0 -</code></pre> - -*BlockTag: crwdns10590:0crwdne10590:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-hints.md deleted file mode 100644 index 9803bbe67..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns10591:0crwdne10591:0 crwdns10592:0crwdne10592:0 crwdns10593:0crwdne10593:0 - -- crwdns10594:0crwdne10594:0 crwdns10595:0[18392819202910]crwdne10595:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-solution.md deleted file mode 100644 index 408cbd68d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-last-digit-one-line/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10596:0[1]crwdnd10596:0[0]crwdnd10596:0[0]crwdnd10596:0[0]crwdnd10596:0[0]crwdnd10596:0[11]crwdne10596:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/product-code-12-multiple-10-one-at-a-time.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/product-code-12-multiple-10-one-at-a-time.md deleted file mode 100644 index 8a333baa8..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/product-code-12-multiple-10-one-at-a-time.md +++ /dev/null @@ -1,29 +0,0 @@ -# crwdns10597:0crwdne10597:0 - -## crwdns10598:0crwdne10598:0 - -crwdns10599:0crwdne10599:0 crwdns10600:0crwdne10600:0 - -## crwdns10601:0crwdne10601:0 - -crwdns10602:0crwdne10602:0 - -*BlockTag: crwdns19220:0crwdne19220:0* - -{panel type="general"} - -# crwdns19221:0crwdne19221:0 - -**crwdns10604:0crwdne10604:0** - - crwdns10605:0crwdne10605:0 - - -**crwdns10606:0crwdne10606:0** - - crwdns10607:0crwdne10607:0 - - -*BlockTag: crwdns10608:0crwdne10608:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-expected.md deleted file mode 100644 index 82beaa3d7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10609:0crwdne10609:0 - -*BlockTag: crwdns10610:0crwdne10610:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476891/?autostart=false"} - -*BlockTag: crwdns19222:0crwdne19222:0* - -{panel type="help"} - -# crwdns19223:0crwdne19223:0 - -<pre><code class="scratch:split:random">crwdns10612:0crwdne10612:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10613:0crwdne10613:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10614:0crwdne10614:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10615:0[0]crwdnd10615:0[0]crwdnd10615:0[1]crwdne10615:0 -</code></pre> - -*BlockTag: crwdns10616:0crwdne10616:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-hints.md deleted file mode 100644 index af3e217b7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10617:0crwdne10617:0 crwdns10618:0crwdne10618:0 crwdns10619:0crwdne10619:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-solution.md deleted file mode 100644 index 29965e90c..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-at-a-time/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10620:0[0]crwdnd10620:0[0]crwdnd10620:0[1]crwdne10620:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/product-code-12-multiple-10-one-line.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/product-code-12-multiple-10-one-line.md deleted file mode 100644 index 7683ce55f..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/product-code-12-multiple-10-one-line.md +++ /dev/null @@ -1,18 +0,0 @@ -# crwdns10621:0crwdne10621:0 - -## crwdns10622:0crwdne10622:0 - -crwdns10623:0crwdne10623:0 crwdns10624:0crwdne10624:0 crwdns10625:0crwdne10625:0 - -## crwdns10626:0crwdne10626:0 - -crwdns10627:0crwdne10627:0 - -| crwdns10628:0crwdne10628:0 | crwdns10629:0crwdne10629:0 | -| -------------------------- | -------------------------- | -| crwdns10630:0crwdne10630:0 | crwdns10631:0crwdne10631:0 | -| crwdns10632:0crwdne10632:0 | crwdns10633:0crwdne10633:0 | -| crwdns10634:0crwdne10634:0 | crwdns10635:0crwdne10635:0 | -| crwdns10636:0crwdne10636:0 | crwdns10637:0crwdne10637:0 | -| crwdns10638:0crwdne10638:0 | crwdns10639:0crwdne10639:0 | -| crwdns10640:0crwdne10640:0 | crwdns10641:0crwdne10641:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-expected.md deleted file mode 100644 index 8d7150264..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10642:0crwdne10642:0 - -*BlockTag: crwdns10643:0crwdne10643:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476927/?autostart=false"} - -*BlockTag: crwdns19224:0crwdne19224:0* - -{panel type="help"} - -# crwdns19225:0crwdne19225:0 - -<pre><code class="scratch:split:random">crwdns10645:0crwdne10645:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10646:0[1]crwdnd10646:0[0]crwdnd10646:0[0]crwdnd10646:0[0]crwdne10646:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10647:0crwdne10647:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10648:0[12]crwdnd10648:0[0]crwdne10648:0 -</code></pre> - -*BlockTag: crwdns10649:0crwdne10649:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-hints.md deleted file mode 100644 index 3f5ceefe3..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-hints.md +++ /dev/null @@ -1,5 +0,0 @@ -- crwdns10650:0crwdne10650:0 - -- crwdns10651:0crwdne10651:0 crwdns10652:0[18392819202910]crwdne10652:0 - -- crwdns10653:0crwdne10653:0 crwdns10654:0crwdne10654:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-solution.md deleted file mode 100644 index a7b30b886..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-multiple-10-one-line/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10655:0[1]crwdnd10655:0[0]crwdnd10655:0[0]crwdnd10655:0[0]crwdnd10655:0[12]crwdnd10655:0[0]crwdne10655:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/product-code-12-weighted-sum-one-at-a-time.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/product-code-12-weighted-sum-one-at-a-time.md deleted file mode 100644 index 8ee257971..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/product-code-12-weighted-sum-one-at-a-time.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns10656:0crwdne10656:0 - -## crwdns10657:0crwdne10657:0 - -crwdns10658:0crwdne10658:0 crwdns10659:0crwdne10659:0 - -## crwdns10660:0crwdne10660:0 - -crwdns10661:0crwdne10661:0 - -| crwdns10662:0crwdne10662:0 | crwdns10663:0crwdne10663:0 | -| -------------------------- | -------------------------- | -| crwdns10664:0crwdne10664:0 | crwdns10665:0crwdne10665:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-expected.md deleted file mode 100644 index 0b6a79ca7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns10666:0crwdne10666:0 - -*BlockTag: crwdns10667:0crwdne10667:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476857/?autostart=false"} - -*BlockTag: crwdns19200:0crwdne19200:0* - -{panel type="help"} - -# crwdns19201:0crwdne19201:0 - -<pre><code class="scratch:split:random">crwdns10669:0crwdne10669:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10670:0crwdne10670:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10671:0[0]crwdne10671:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10672:0crwdne10672:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10673:0[0]crwdnd10673:0[0]crwdnd10673:0[1]crwdne10673:0 -</code></pre> - -*BlockTag: crwdns10674:0crwdne10674:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-hints.md deleted file mode 100644 index 3912a813d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10675:0crwdne10675:0 crwdns10676:0crwdne10676:0 crwdns10677:0crwdne10677:0 crwdns10678:0crwdne10678:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-solution.md deleted file mode 100644 index 3d40ed193..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-12-weighted-sum-one-at-a-time/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10679:0[0]crwdnd10679:0[0]crwdnd10679:0[1]crwdnd10679:0[0]crwdne10679:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/product-code-13-last-digit-one-at-a-time.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/product-code-13-last-digit-one-at-a-time.md deleted file mode 100644 index d08ef6828..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/product-code-13-last-digit-one-at-a-time.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns10680:0crwdne10680:0 - -## crwdns10681:0crwdne10681:0 - -crwdns10682:0crwdne10682:0 - -## crwdns10683:0crwdne10683:0 - -crwdns10684:0crwdne10684:0 - -| crwdns10685:0crwdne10685:0 | crwdns10686:0crwdne10686:0 | -| -------------------------- | -------------------------- | -| crwdns10687:0crwdne10687:0 | crwdns10688:0crwdne10688:0 | -| crwdns10689:0crwdne10689:0 | crwdns10690:0crwdne10690:0 | -| crwdns10691:0crwdne10691:0 | crwdns10692:0crwdne10692:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-expected.md deleted file mode 100644 index 0ae2fd944..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-expected.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns10693:0crwdne10693:0 - -*BlockTag: crwdns10694:0crwdne10694:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476646/?autostart=false"} - -*BlockTag: crwdns19230:0crwdne19230:0* - -{panel type="help"} - -# crwdns19231:0crwdne19231:0 - -<pre><code class="scratch:split:random">crwdns10696:0crwdne10696:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10697:0crwdne10697:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10698:0[0]crwdnd10698:0[0]crwdnd10698:0[1]crwdnd10698:0[0]crwdne10698:0 -</code></pre> - -*BlockTag: crwdns10699:0crwdne10699:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-hints.md deleted file mode 100644 index e8527dee6..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10700:0crwdne10700:0 crwdns10701:0crwdne10701:0 crwdns10702:0crwdne10702:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-solution.md deleted file mode 100644 index c741076ab..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-at-a-time/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10703:0[0]crwdnd10703:0[0]crwdnd10703:0[1]crwdnd10703:0[0]crwdne10703:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/product-code-13-last-digit-one-line.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/product-code-13-last-digit-one-line.md deleted file mode 100644 index 5d95e16e4..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/product-code-13-last-digit-one-line.md +++ /dev/null @@ -1,16 +0,0 @@ -# crwdns10704:0crwdne10704:0 - -## crwdns10705:0crwdne10705:0 - -crwdns10706:0crwdne10706:0 crwdns10707:0crwdne10707:0 - -## crwdns10708:0crwdne10708:0 - -crwdns10709:0crwdne10709:0 - -| crwdns10710:0crwdne10710:0 | crwdns10711:0crwdne10711:0 | -| -------------------------- | -------------------------- | -| crwdns10712:0crwdne10712:0 | crwdns10713:0crwdne10713:0 | -| crwdns10714:0crwdne10714:0 | crwdns10715:0crwdne10715:0 | -| crwdns10716:0crwdne10716:0 | crwdns10717:0crwdne10717:0 | -| crwdns10718:0crwdne10718:0 | crwdns10719:0crwdne10719:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-expected.md deleted file mode 100644 index 6f675948d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10720:0crwdne10720:0 - -*BlockTag: crwdns10721:0crwdne10721:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476672/?autostart=false"} - -*BlockTag: crwdns19196:0crwdne19196:0* - -{panel type="help"} - -# crwdns19197:0crwdne19197:0 - -<pre><code class="scratch:split:random">crwdns10723:0crwdne10723:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10724:0[12]crwdne10724:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10725:0crwdne10725:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10726:0[1]crwdnd10726:0[0]crwdnd10726:0[0]crwdnd10726:0[0]crwdnd10726:0[0]crwdne10726:0 -</code></pre> - -*BlockTag: crwdns10727:0crwdne10727:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-hints.md deleted file mode 100644 index 6e1112278..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns10728:0crwdne10728:0 crwdns10729:0crwdne10729:0 crwdns10730:0crwdne10730:0 - -- crwdns10731:0crwdne10731:0 crwdns10732:0[18392819202910]crwdne10732:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-solution.md deleted file mode 100644 index 40a45e468..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-last-digit-one-line/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10733:0[1]crwdnd10733:0[0]crwdnd10733:0[0]crwdnd10733:0[0]crwdnd10733:0[0]crwdnd10733:0[12]crwdne10733:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/product-code-13-multiple-10-one-at-a-time.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/product-code-13-multiple-10-one-at-a-time.md deleted file mode 100644 index 8a6e58d3b..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/product-code-13-multiple-10-one-at-a-time.md +++ /dev/null @@ -1,29 +0,0 @@ -# crwdns10734:0crwdne10734:0 - -## crwdns10735:0crwdne10735:0 - -crwdns10736:0crwdne10736:0 crwdns10737:0crwdne10737:0 - -## crwdns10738:0crwdne10738:0 - -crwdns10739:0crwdne10739:0 - -*BlockTag: crwdns19202:0crwdne19202:0* - -{panel type="general"} - -# crwdns19203:0crwdne19203:0 - -**crwdns10741:0crwdne10741:0** - - crwdns10742:0crwdne10742:0 - - -**crwdns10743:0crwdne10743:0** - - crwdns10744:0crwdne10744:0 - - -*BlockTag: crwdns10745:0crwdne10745:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-expected.md deleted file mode 100644 index 09f144dd7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns10746:0crwdne10746:0 - -*BlockTag: crwdns10747:0crwdne10747:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476573/?autostart=false"} - -*BlockTag: crwdns19204:0crwdne19204:0* - -{panel type="help"} - -# crwdns19205:0crwdne19205:0 - -<pre><code class="scratch:split:random">crwdns10749:0crwdne10749:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10750:0crwdne10750:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10751:0crwdne10751:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10752:0[0]crwdne10752:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10753:0[0]crwdnd10753:0[0]crwdnd10753:0[1]crwdne10753:0 -</code></pre> - -*BlockTag: crwdns10754:0crwdne10754:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-hints.md deleted file mode 100644 index 31f0e7adc..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10755:0crwdne10755:0 crwdns10756:0crwdne10756:0 crwdns10757:0crwdne10757:0 crwdns10758:0crwdne10758:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-solution.md deleted file mode 100644 index 495906032..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-at-a-time/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10759:0[0]crwdnd10759:0[0]crwdnd10759:0[1]crwdnd10759:0[0]crwdne10759:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/product-code-13-multiple-10-one-line.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/product-code-13-multiple-10-one-line.md deleted file mode 100644 index a498538a7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/product-code-13-multiple-10-one-line.md +++ /dev/null @@ -1,18 +0,0 @@ -# crwdns10760:0crwdne10760:0 - -## crwdns10761:0crwdne10761:0 - -crwdns10762:0crwdne10762:0 crwdns10763:0crwdne10763:0 crwdns10764:0crwdne10764:0 - -## crwdns10765:0crwdne10765:0 - -crwdns10766:0crwdne10766:0 - -| crwdns10767:0crwdne10767:0 | crwdns10768:0crwdne10768:0 | -| -------------------------- | -------------------------- | -| crwdns10769:0crwdne10769:0 | crwdns10770:0crwdne10770:0 | -| crwdns10771:0crwdne10771:0 | crwdns10772:0crwdne10772:0 | -| crwdns10773:0crwdne10773:0 | crwdns10774:0crwdne10774:0 | -| crwdns10775:0crwdne10775:0 | crwdns10776:0crwdne10776:0 | -| crwdns10777:0crwdne10777:0 | crwdns10778:0crwdne10778:0 | -| crwdns10779:0crwdne10779:0 | crwdns10780:0crwdne10780:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-expected.md deleted file mode 100644 index 724b157f4..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10781:0crwdne10781:0 - -*BlockTag: crwdns10782:0crwdne10782:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476604/?autostart=false"} - -*BlockTag: crwdns19228:0crwdne19228:0* - -{panel type="help"} - -# crwdns19229:0crwdne19229:0 - -<pre><code class="scratch:split:random">crwdns10784:0crwdne10784:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10785:0crwdne10785:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10786:0[0]crwdnd10786:0[13]crwdne10786:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10787:0[1]crwdnd10787:0[0]crwdnd10787:0[0]crwdnd10787:0[0]crwdne10787:0 -</code></pre> - -*BlockTag: crwdns10788:0crwdne10788:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-hints.md deleted file mode 100644 index 71363434d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-hints.md +++ /dev/null @@ -1,5 +0,0 @@ -- crwdns10789:0crwdne10789:0 - -- crwdns10790:0crwdne10790:0 crwdns10791:0[18392819202910]crwdne10791:0 - -- crwdns10792:0crwdne10792:0 crwdns10793:0crwdne10793:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-solution.md deleted file mode 100644 index 4f7ef6532..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-multiple-10-one-line/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10794:0[1]crwdnd10794:0[0]crwdnd10794:0[0]crwdnd10794:0[0]crwdnd10794:0[13]crwdnd10794:0[0]crwdne10794:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/product-code-13-weighted-sum-one-at-a-time.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/product-code-13-weighted-sum-one-at-a-time.md deleted file mode 100644 index 170ac3daa..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/product-code-13-weighted-sum-one-at-a-time.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns10795:0crwdne10795:0 - -## crwdns10796:0crwdne10796:0 - -crwdns10797:0crwdne10797:0 crwdns10798:0crwdne10798:0 - -## crwdns10799:0crwdne10799:0 - -crwdns10800:0crwdne10800:0 - -| crwdns10801:0crwdne10801:0 | crwdns10802:0crwdne10802:0 | -| -------------------------- | -------------------------- | -| crwdns10803:0crwdne10803:0 | crwdns10804:0crwdne10804:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-expected.md deleted file mode 100644 index 1c23e4fd9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10805:0crwdne10805:0 - -*BlockTag: crwdns10806:0crwdne10806:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476545/?autostart=false"} - -*BlockTag: crwdns19246:0crwdne19246:0* - -{panel type="help"} - -# crwdns19247:0crwdne19247:0 - -<pre><code class="scratch:split:random">crwdns10808:0crwdne10808:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10809:0crwdne10809:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10810:0crwdne10810:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10811:0[0]crwdnd10811:0[0]crwdnd10811:0[1]crwdne10811:0 -</code></pre> - -*BlockTag: crwdns10812:0crwdne10812:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-hints.md deleted file mode 100644 index b1097a632..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns10813:0crwdne10813:0 crwdns10814:0crwdne10814:0 crwdns10815:0crwdne10815:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-solution.md deleted file mode 100644 index 8efc86b15..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-13-weighted-sum-one-at-a-time/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10816:0[0]crwdnd10816:0[0]crwdnd10816:0[1]crwdne10816:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/product-code-check-valid-any-length.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/product-code-check-valid-any-length.md deleted file mode 100644 index e71ec0218..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/product-code-check-valid-any-length.md +++ /dev/null @@ -1,20 +0,0 @@ -# crwdns10817:0crwdne10817:0 - -## crwdns10818:0crwdne10818:0 - -crwdns10819:0crwdne10819:0 crwdns10820:0crwdne10820:0 crwdns10821:0crwdne10821:0 crwdns10822:0crwdne10822:0 - -crwdns10823:0crwdne10823:0 crwdns10824:0crwdne10824:0 crwdns10825:0crwdne10825:0 crwdns10826:0crwdne10826:0 crwdns10827:0crwdne10827:0 crwdns10828:0crwdne10828:0 crwdns10829:0crwdne10829:0 - -## crwdns10830:0crwdne10830:0 - -crwdns10831:0crwdne10831:0 - -| crwdns10832:0crwdne10832:0 | crwdns10833:0crwdne10833:0 | -| -------------------------- | -------------------------- | -| crwdns10834:0crwdne10834:0 | crwdns10835:0crwdne10835:0 | -| crwdns10836:0crwdne10836:0 | crwdns10837:0crwdne10837:0 | -| crwdns10838:0crwdne10838:0 | crwdns10839:0crwdne10839:0 | -| crwdns10840:0crwdne10840:0 | crwdns10841:0crwdne10841:0 | -| crwdns10842:0crwdne10842:0 | crwdns10843:0crwdne10843:0 | -| crwdns10844:0crwdne10844:0 | crwdns10845:0crwdne10845:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-expected.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-expected.md deleted file mode 100644 index 69c2b4032..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns10846:0crwdne10846:0 - -*BlockTag: crwdns10847:0crwdne10847:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148476969/?autostart=false"} - -*BlockTag: crwdns19232:0crwdne19232:0* - -{panel type="help"} - -# crwdns19233:0crwdne19233:0 - -<pre><code class="scratch:split:random">crwdns10849:0crwdne10849:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10850:0[0]crwdnd10850:0[0]crwdnd10850:0[0]crwdnd10850:0[0]crwdne10850:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10851:0[1]crwdnd10851:0[0]crwdne10851:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns10852:0crwdne10852:0 -</code></pre> - -*BlockTag: crwdns10853:0crwdne10853:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-hints.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-hints.md deleted file mode 100644 index b6d9b33c2..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-hints.md +++ /dev/null @@ -1,7 +0,0 @@ -- crwdns10854:0crwdne10854:0 crwdns10855:0crwdne10855:0 crwdns10856:0crwdne10856:0 - -- crwdns10857:0crwdne10857:0 - -- crwdns10858:0crwdne10858:0 crwdns10859:0[18392819202910]crwdne10859:0 - -- crwdns10860:0crwdne10860:0 crwdns10861:0crwdne10861:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-solution.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-solution.md deleted file mode 100644 index e022f6ea7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/programming-challenges/product-code-check-valid-any-length/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns10862:0[0]crwdnd10862:0[0]crwdnd10862:0[0]crwdnd10862:0[0]crwdnd10862:0[1]crwdnd10862:0[0]crwdne10862:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md deleted file mode 100644 index 48bf83c49..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-ct-links.md +++ /dev/null @@ -1,101 +0,0 @@ -*BlockTag: crwdns19381:0crwdne19381:0* - -{panel type="ct-algorithm"} - -# crwdns19382:0crwdne19382:0 - -crwdns10976:0crwdne10976:0 crwdns10977:0crwdne10977:0 - -#### crwdns10978:0crwdne10978:0 - -crwdns10979:0crwdne10979:0 - -*BlockTag: crwdns10980:0crwdne10980:0* - -{panel end} - -*BlockTag: crwdns19383:0crwdne19383:0* - -{panel type="ct-abstraction"} - -# crwdns19384:0crwdne19384:0 - -crwdns10982:0crwdne10982:0 crwdns10983:0crwdne10983:0 crwdns10984:0crwdne10984:0 - -#### crwdns10985:0crwdne10985:0 - -crwdns10986:0crwdne10986:0 - -*BlockTag: crwdns10987:0crwdne10987:0* - -{panel end} - -*BlockTag: crwdns19385:0crwdne19385:0* - -{panel type="ct-decomposition"} - -# crwdns19386:0crwdne19386:0 - -crwdns10989:0crwdne10989:0 crwdns10990:0crwdne10990:0 crwdns10991:0crwdne10991:0 crwdns10992:0crwdne10992:0 crwdns10993:0crwdne10993:0 crwdns10994:0crwdne10994:0 - -#### crwdns10995:0crwdne10995:0 - -crwdns10996:0crwdne10996:0 - -*BlockTag: crwdns10997:0crwdne10997:0* - -{panel end} - -*BlockTag: crwdns19387:0crwdne19387:0* - -{panel type="ct-pattern"} - -# crwdns19388:0crwdne19388:0 - -crwdns10999:0crwdne10999:0 crwdns11000:0crwdne11000:0 - -#### crwdns11001:0crwdne11001:0 - -crwdns11002:0crwdne11002:0 - -*BlockTag: crwdns11003:0crwdne11003:0* - -{panel end} - -*BlockTag: crwdns19389:0crwdne19389:0* - -{panel type="ct-evaluation"} - -# crwdns19390:0crwdne19390:0 - -crwdns11005:0crwdne11005:0 crwdns11006:0crwdne11006:0 crwdns11007:0crwdne11007:0 crwdns11008:0crwdne11008:0 crwdns11009:0crwdne11009:0 - -#### crwdns11010:0crwdne11010:0 - -crwdns11011:0crwdne11011:0 - -crwdns11012:0crwdne11012:0 - -*BlockTag: crwdns11013:0crwdne11013:0* - -{panel end} - -*BlockTag: crwdns19391:0crwdne19391:0* - -{panel type="ct-logic"} - -# crwdns19392:0crwdne19392:0 - -crwdns11015:0crwdne11015:0 - -crwdns11016:0crwdne11016:0 - -#### crwdns11017:0crwdne11017:0 - -crwdns11018:0crwdne11018:0 - -crwdns11019:0crwdne11019:0 - -*BlockTag: crwdns11020:0crwdne11020:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md deleted file mode 100644 index f0d32dd6d..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-ct-links.md +++ /dev/null @@ -1,99 +0,0 @@ -*BlockTag: crwdns19369:0crwdne19369:0* - -{panel type="ct-algorithm"} - -# crwdns19370:0crwdne19370:0 - -crwdns11022:0crwdne11022:0 crwdns11023:0crwdne11023:0 - -#### crwdns11024:0crwdne11024:0 - -crwdns11025:0crwdne11025:0 - -*BlockTag: crwdns11026:0crwdne11026:0* - -{panel end} - -*BlockTag: crwdns19371:0crwdne19371:0* - -{panel type="ct-abstraction"} - -# crwdns19372:0crwdne19372:0 - -crwdns11028:0crwdne11028:0 crwdns11029:0crwdne11029:0 crwdns11030:0crwdne11030:0 - -#### crwdns11031:0crwdne11031:0 - -crwdns11032:0crwdne11032:0 - -*BlockTag: crwdns11033:0crwdne11033:0* - -{panel end} - -*BlockTag: crwdns19373:0crwdne19373:0* - -{panel type="ct-decomposition"} - -# crwdns19374:0crwdne19374:0 - -crwdns11035:0crwdne11035:0 crwdns11036:0crwdne11036:0 crwdns11037:0crwdne11037:0 crwdns11038:0crwdne11038:0 crwdns11039:0crwdne11039:0 crwdns11040:0crwdne11040:0 - -#### crwdns11041:0crwdne11041:0 - -crwdns11042:0crwdne11042:0 - -*BlockTag: crwdns11043:0crwdne11043:0* - -{panel end} - -*BlockTag: crwdns19375:0crwdne19375:0* - -{panel type="ct-pattern"} - -# crwdns19376:0crwdne19376:0 - -crwdns11045:0crwdne11045:0 - -#### crwdns11046:0crwdne11046:0 - -crwdns11047:0crwdne11047:0 - -*BlockTag: crwdns11048:0crwdne11048:0* - -{panel end} - -*BlockTag: crwdns19377:0crwdne19377:0* - -{panel type="ct-evaluation"} - -# crwdns19378:0crwdne19378:0 - -crwdns11050:0crwdne11050:0 crwdns11051:0crwdne11051:0 crwdns11052:0crwdne11052:0 crwdns11053:0crwdne11053:0 crwdns11054:0crwdne11054:0 - -#### crwdns11055:0crwdne11055:0 - -crwdns11056:0crwdne11056:0 crwdns11057:0crwdne11057:0 crwdns11058:0crwdne11058:0 - -*BlockTag: crwdns11059:0crwdne11059:0* - -{panel end} - -*BlockTag: crwdns19379:0crwdne19379:0* - -{panel type="ct-logic"} - -# crwdns19380:0crwdne19380:0 - -crwdns11061:0crwdne11061:0 - -crwdns11062:0crwdne11062:0 - -#### crwdns11063:0crwdne11063:0 - -crwdns11064:0crwdne11064:0 - -crwdns11065:0crwdne11065:0 - -*BlockTag: crwdns11066:0crwdne11066:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml deleted file mode 100644 index 864faf2c7..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -parity-cards: - description: crwdns8213:0crwdne8213:0 diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md deleted file mode 100644 index da2ee59dd..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-junior.md +++ /dev/null @@ -1,232 +0,0 @@ -# crwdns20292:0crwdne20292:0 - -## crwdns11083:0crwdne11083:0 - -- crwdns20293:0crwdne20293:0 -- crwdns20294:0crwdne20294:0 - -### crwdns11086:0crwdne11086:0 - -crwdns20295:0crwdne20295:0 - -*BlockTag: crwdns20296:0crwdne20296:0* - -{image file-path="img/topics/school-test-error.png" alt="A school test shows every question marked correct but the overall score is 0%."} - -crwdns20297:0crwdne20297:0 crwdns20298:0crwdne20298:0 crwdns20299:0crwdne20299:0 crwdns20300:0crwdne20300:0 - -## crwdns11093:0crwdne11093:0 - -*BlockTag: crwdns20301:0crwdne20301:0* - -{panel type="video"} - -# crwdns19265:0crwdne19265:0 - -crwdns20302:0crwdne20302:0 - -*BlockTag: crwdns20303:0crwdne20303:0* - -{video url="https://vimeo.com/437726658"} - -*BlockTag: crwdns20304:0crwdne20304:0* - -{panel end} - -*BlockTag: crwdns20305:0crwdne20305:0* - -{panel type="general"} - -# crwdns19267:0crwdne19267:0 - -crwdns20306:0crwdne20306:0 - -*BlockTag: crwdns20307:0crwdne20307:0* - -{image file-path="img/topics/parity-cards.png" alt="A pile of square cards with black on one side and white on the other side." alignment="right"} - -- crwdns20308:0crwdne20308:0 crwdns20309:0crwdne20309:0 crwdns20310:0crwdne20310:0 crwdns20311:0crwdne20311:0 - -- crwdns20312:0crwdne20312:0 - -- crwdns20313:0crwdne20313:0 - -crwdns20314:0crwdne20314:0 - -*BlockTag: crwdns20315:0crwdne20315:0* - -{panel end} - -1. crwdns11094:0crwdne11094:0 - -2. crwdns11095:0crwdne11095:0 - -3. crwdns11096:0crwdne11096:0 crwdns11097:0crwdne11097:0 crwdns11098:0crwdne11098:0 crwdns11099:0crwdne11099:0 - -*BlockTag: crwdns19268:0crwdne19268:0* - -{panel type="teaching"} - -# crwdns19269:0crwdne19269:0 - -crwdns11101:0crwdne11101:0 crwdns11102:0crwdne11102:0 - -*BlockTag: crwdns11103:0crwdne11103:0* - -{panel end} - -1. crwdns11104:0crwdne11104:0 - -*BlockTag: crwdns19270:0crwdne19270:0* - -{panel type="teaching"} - -# crwdns19271:0crwdne19271:0 - -crwdns11106:0crwdne11106:0 crwdns11107:0crwdne11107:0 crwdns11108:0crwdne11108:0 - -crwdns11109:0crwdne11109:0 - -crwdns11110:0crwdne11110:0 - -*BlockTag: crwdns11111:0crwdne11111:0* - -{panel end} - -*BlockTag: crwdns19272:0crwdne19272:0* - -{image file-path="img/topics/parity-cards-6x6-grid-step-1.png" alt="5 rows of 5 parity cards in a random arrangement." caption="true"} - -crwdns19273:0crwdne19273:0 - -*BlockTag: crwdns19274:0crwdne19274:0* - -{image end} - -### crwdns11113:0crwdne11113:0 - -*BlockTag: crwdns20316:0crwdne20316:0* - -{image file-path="img/topics/parity-cards.gif"} - -crwdns20317:0crwdne20317:0 - -*BlockTag: crwdns20318:0crwdne20318:0* - -{panel type="teaching"} - -# crwdns19310:0crwdne19310:0 - -crwdns20319:0crwdne20319:0 - -*BlockTag: crwdns20320:0crwdne20320:0* - -{panel end} - -## crwdns11129:0crwdne11129:0 - -crwdns20321:0crwdne20321:0 - -crwdns20322:0crwdne20322:0 - -*BlockTag: crwdns20323:0crwdne20323:0* - -{panel type="teaching"} - -# crwdns19315:0crwdne19315:0 - -crwdns20324:0crwdne20324:0 crwdns20325:0crwdne20325:0 crwdns20326:0crwdne20326:0 - -*BlockTag: crwdns20327:0crwdne20327:0* - -{panel end} - -crwdns20328:0crwdne20328:0 crwdns20329:0crwdne20329:0 crwdns20330:0crwdne20330:0 crwdns20331:0crwdne20331:0 - -crwdns20332:0crwdne20332:0 - -*BlockTag: crwdns20333:0crwdne20333:0* - -{image file-path="img/topics/parity-wizard.png" alt="A wizard holding a magic one with parity cards on it." alignment="right"} - -crwdns20334:0crwdne20334:0 - -crwdns20335:0crwdne20335:0 crwdns20336:0crwdne20336:0 - -- crwdns11146:0crwdne11146:0 -- crwdns11147:0crwdne11147:0 -- crwdns11148:0crwdne11148:0 -- crwdns11149:0crwdne11149:0 -- crwdns11150:0crwdne11150:0 - -crwdns20337:0crwdne20337:0 - -crwdns20338:0crwdne20338:0 - -- crwdns11153:0crwdne11153:0 -- crwdns11154:0crwdne11154:0 - -crwdns20339:0crwdne20339:0 - -*BlockTag: crwdns20340:0crwdne20340:0* - -{panel type="teaching"} - -# crwdns19333:0crwdne19333:0 - -crwdns20341:0crwdne20341:0 - -*BlockTag: crwdns20342:0crwdne20342:0* - -{panel end} - -crwdns20343:0crwdne20343:0 crwdns20344:0crwdne20344:0 crwdns20345:0crwdne20345:0 - -crwdns20346:0crwdne20346:0 crwdns20347:0crwdne20347:0 crwdns20348:0crwdne20348:0 crwdns20349:0crwdne20349:0 - -crwdns20350:0crwdne20350:0 crwdns20351:0crwdne20351:0 - -crwdns20352:0crwdne20352:0 crwdns20353:0crwdne20353:0 crwdns20354:0crwdne20354:0 crwdns20355:0crwdne20355:0 - -crwdns20356:0crwdne20356:0 - -*BlockTag: crwdns20357:0crwdne20357:0* - -{panel type="teaching"} - -# crwdns19351:0crwdne19351:0 - -crwdns20358:0crwdne20358:0 - -*BlockTag: crwdns20359:0crwdne20359:0* - -{panel end} - -*BlockTag: crwdns20360:0crwdne20360:0* - -{panel type="math"} - -# crwdns19355:0crwdne19355:0 - -crwdns20361:0crwdne20361:0 - -crwdns20362:0crwdne20362:0 - -*BlockTag: crwdns20363:0crwdne20363:0* - -{panel end} - -## crwdns11180:0crwdne11180:0 - -- crwdns11181:0crwdne11181:0 crwdns11182:0crwdne11182:0 crwdns11183:0crwdne11183:0 crwdns11184:0crwdne11184:0 -- crwdns11185:0crwdne11185:0 -- crwdns11186:0crwdne11186:0 -- crwdns11187:0crwdne11187:0 - -## crwdns11188:0crwdne11188:0 - -crwdns20364:0crwdne20364:0 crwdns20365:0crwdne20365:0 crwdns20366:0crwdne20366:0 - -crwdns20367:0crwdne20367:0 crwdns20368:0crwdne20368:0 crwdns20369:0crwdne20369:0 - -crwdns20370:0crwdne20370:0 crwdns20371:0crwdne20371:0 crwdns20372:0crwdne20372:0 crwdns20373:0crwdne20373:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml deleted file mode 100644 index 52eb0acb5..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -parity-cards: - description: crwdns8214:0crwdne8214:0 diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic.md deleted file mode 100644 index 952c4e0cb..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/parity-magic.md +++ /dev/null @@ -1,207 +0,0 @@ -# crwdns11199:0crwdne11199:0 - -## crwdns11215:0crwdne11215:0 - -- crwdns20374:0crwdne20374:0 -- crwdns20375:0crwdne20375:0 crwdns20376:0crwdne20376:0 -- crwdns20377:0crwdne20377:0 - -### crwdns11220:0crwdne11220:0 - -crwdns20378:0crwdne20378:0 - -*BlockTag: crwdns20379:0crwdne20379:0* - -{image file-path="img/topics/school-test-error.png" alt="A school test shows every question marked correct but the overall score is 0%."} - -crwdns20380:0crwdne20380:0 crwdns20381:0crwdne20381:0 crwdns20382:0crwdne20382:0 crwdns20383:0crwdne20383:0 - -## crwdns11227:0crwdne11227:0 - -*BlockTag: crwdns20384:0crwdne20384:0* - -{panel type="video"} - -# crwdns19394:0crwdne19394:0 - -*BlockTag: crwdns20385:0crwdne20385:0* - -{video url="https://vimeo.com/437726658"} - -*BlockTag: crwdns20386:0crwdne20386:0* - -{panel end} - -*BlockTag: crwdns20387:0crwdne20387:0* - -{panel type="general"} - -# crwdns19396:0crwdne19396:0 - -*BlockTag: crwdns20388:0crwdne20388:0* - -{image file-path="img/topics/parity-cards.png" alt="A pile of square cards with black on one side and white on the other side."} - -crwdns20389:0crwdne20389:0 - -- crwdns20390:0crwdne20390:0 crwdns20391:0crwdne20391:0 crwdns20392:0crwdne20392:0 crwdns20393:0crwdne20393:0 -- crwdns20394:0crwdne20394:0 -- crwdns20395:0crwdne20395:0 - -crwdns20396:0crwdne20396:0 - -*BlockTag: crwdns20397:0crwdne20397:0* - -{panel end} - -1. crwdns11228:0crwdne11228:0 - -2. crwdns11229:0crwdne11229:0 - -3. crwdns11230:0crwdne11230:0 crwdns11231:0crwdne11231:0 crwdns11232:0crwdne11232:0 - -4. crwdns11233:0crwdne11233:0 crwdns11234:0crwdne11234:0 - -5. crwdns11235:0crwdne11235:0 - -*BlockTag: crwdns20398:0crwdne20398:0* - -{panel type="teaching"} - -# crwdns19398:0crwdne19398:0 - -crwdns20399:0crwdne20399:0 crwdns20400:0crwdne20400:0 crwdns20401:0crwdne20401:0 - -crwdns20402:0crwdne20402:0 - -crwdns20403:0crwdne20403:0 - -*BlockTag: crwdns20404:0crwdne20404:0* - -{panel end} - -*BlockTag: crwdns20405:0crwdne20405:0* - -{image file-path="img/topics/parity-cards-6x6-grid-step-1.png" alt="5 rows of 5 parity cards in a random arrangement." caption="true"} - -crwdns20406:0crwdne20406:0 - -*BlockTag: crwdns20407:0crwdne20407:0* - -{image end} - -### crwdns11244:0crwdne11244:0 - -*BlockTag: crwdns20408:0crwdne20408:0* - -{image file-path="img/topics/parity-cards.gif"} - -crwdns20409:0crwdne20409:0 - -*BlockTag: crwdns20410:0crwdne20410:0* - -{panel type="teaching"} - -# crwdns19437:0crwdne19437:0 - -crwdns20411:0crwdne20411:0 - -*BlockTag: crwdns20412:0crwdne20412:0* - -{panel end} - -## crwdns11260:0crwdne11260:0 - -crwdns20413:0crwdne20413:0 - -crwdns20414:0crwdne20414:0 - -*BlockTag: crwdns20415:0crwdne20415:0* - -{panel type="teaching"} - -# crwdns19443:0crwdne19443:0 - -crwdns20416:0crwdne20416:0 crwdns20417:0crwdne20417:0 crwdns20418:0crwdne20418:0 - -*BlockTag: crwdns20419:0crwdne20419:0* - -{panel end} - -crwdns20420:0crwdne20420:0 crwdns20421:0crwdne20421:0 crwdns20422:0crwdne20422:0 crwdns20423:0crwdne20423:0 - -crwdns20424:0crwdne20424:0 - -*BlockTag: crwdns20425:0crwdne20425:0* - -{image file-path="img/topics/parity-wizard.png" alt="A wizard holding a magic one with parity cards on it." alignment="right"} - -crwdns20426:0crwdne20426:0 - -crwdns20427:0crwdne20427:0 crwdns20428:0crwdne20428:0 - -- crwdns11277:0crwdne11277:0 -- crwdns11278:0crwdne11278:0 -- crwdns11279:0crwdne11279:0 -- crwdns11280:0crwdne11280:0 -- crwdns11281:0crwdne11281:0 - -crwdns20429:0crwdne20429:0 - -crwdns20430:0crwdne20430:0 - -- crwdns11284:0crwdne11284:0 -- crwdns11285:0crwdne11285:0 - -crwdns20431:0crwdne20431:0 - -crwdns20432:0crwdne20432:0 crwdns20433:0crwdne20433:0 crwdns20434:0crwdne20434:0 - -crwdns20435:0crwdne20435:0 crwdns20436:0crwdne20436:0 crwdns20437:0crwdne20437:0 crwdns20438:0crwdne20438:0 - -crwdns20439:0crwdne20439:0 crwdns20440:0crwdne20440:0 - -crwdns20441:0crwdne20441:0 crwdns20442:0crwdne20442:0 crwdns20443:0crwdne20443:0 crwdns20444:0crwdne20444:0 crwdns20445:0crwdne20445:0 - -crwdns20446:0crwdne20446:0 - -*BlockTag: crwdns20447:0crwdne20447:0* - -{panel type="teaching"} - -# crwdns19476:0crwdne19476:0 - -crwdns20448:0crwdne20448:0 - -*BlockTag: crwdns20449:0crwdne20449:0* - -{panel end} - -*BlockTag: crwdns20450:0crwdne20450:0* - -{panel type="math"} - -# crwdns19480:0crwdne19480:0 - -crwdns20451:0crwdne20451:0 - -crwdns20452:0crwdne20452:0 - -*BlockTag: crwdns20453:0crwdne20453:0* - -{panel end} - -## crwdns11309:0crwdne11309:0 - -- crwdns11310:0crwdne11310:0 crwdns11311:0crwdne11311:0 crwdns11312:0crwdne11312:0 crwdns11313:0crwdne11313:0 -- crwdns11314:0crwdne11314:0 -- crwdns11315:0crwdne11315:0 -- crwdns11316:0crwdne11316:0 - -## crwdns11317:0crwdne11317:0 - -crwdns20454:0crwdne20454:0 crwdns20455:0crwdne20455:0 crwdns20456:0crwdne20456:0 - -crwdns20457:0crwdne20457:0 crwdns20458:0crwdne20458:0 crwdns20459:0crwdne20459:0 crwdns20460:0crwdne20460:0 - -crwdns20461:0crwdne20461:0 crwdns20462:0crwdne20462:0 crwdns20463:0crwdne20463:0 crwdns20464:0crwdne20464:0 crwdns20465:0crwdne20465:0 crwdns20466:0crwdne20466:0 crwdns20467:0crwdne20467:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-ct-links.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-ct-links.md deleted file mode 100644 index 475ca4ee1..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-ct-links.md +++ /dev/null @@ -1,103 +0,0 @@ -*BlockTag: crwdns19498:0crwdne19498:0* - -{panel type="ct-algorithm"} - -# crwdns19499:0crwdne19499:0 - -crwdns11333:0crwdne11333:0 crwdns11334:0crwdne11334:0 crwdns11335:0crwdne11335:0 - -#### crwdns11336:0crwdne11336:0 - -crwdns11337:0crwdne11337:0 crwdns11338:0crwdne11338:0 - -*BlockTag: crwdns11339:0crwdne11339:0* - -{panel end} - -*BlockTag: crwdns19500:0crwdne19500:0* - -{panel type="ct-abstraction"} - -# crwdns19501:0crwdne19501:0 - -crwdns11341:0crwdne11341:0 crwdns11342:0crwdne11342:0 - -crwdns11343:0crwdne11343:0 - -#### crwdns11344:0crwdne11344:0 - -crwdns11345:0crwdne11345:0 - -*BlockTag: crwdns11346:0crwdne11346:0* - -{panel end} - -*BlockTag: crwdns19502:0crwdne19502:0* - -{panel type="ct-decomposition"} - -# crwdns19503:0crwdne19503:0 - -crwdns11348:0crwdne11348:0 crwdns11349:0crwdne11349:0 crwdns11350:0crwdne11350:0 - -#### crwdns11351:0crwdne11351:0 - -crwdns11352:0crwdne11352:0 crwdns11353:0crwdne11353:0 - -*BlockTag: crwdns11354:0crwdne11354:0* - -{panel end} - -*BlockTag: crwdns19504:0crwdne19504:0* - -{panel type="ct-pattern"} - -# crwdns19505:0crwdne19505:0 - -crwdns11356:0crwdne11356:0 crwdns11357:0crwdne11357:0 crwdns11358:0crwdne11358:0 - -#### crwdns11359:0crwdne11359:0 - -crwdns11360:0crwdne11360:0 crwdns11361:0crwdne11361:0 crwdns11362:0crwdne11362:0 - -*BlockTag: crwdns11363:0crwdne11363:0* - -{panel end} - -*BlockTag: crwdns19506:0crwdne19506:0* - -{panel type="ct-evaluation"} - -# crwdns19507:0crwdne19507:0 - -crwdns11365:0crwdne11365:0 crwdns11366:0crwdne11366:0 crwdns11367:0crwdne11367:0 crwdns11368:0crwdne11368:0 crwdns11369:0crwdne11369:0 crwdns11370:0crwdne11370:0 crwdns11371:0crwdne11371:0 - -crwdns11372:0crwdne11372:0 - -#### crwdns11373:0crwdne11373:0 - -crwdns11374:0crwdne11374:0 crwdns11375:0crwdne11375:0 crwdns11376:0crwdne11376:0 crwdns11377:0crwdne11377:0 - -*BlockTag: crwdns11378:0crwdne11378:0* - -{panel end} - -*BlockTag: crwdns19508:0crwdne19508:0* - -{panel type="ct-logic"} - -# crwdns19509:0crwdne19509:0 - -crwdns11380:0crwdne11380:0 - -crwdns11381:0crwdne11381:0 - -#### crwdns11382:0crwdne11382:0 - -crwdns11383:0crwdne11383:0 - -crwdns11384:0crwdne11384:0 - -*BlockTag: crwdns11385:0crwdne11385:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-programming.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-programming.md deleted file mode 100644 index e6c9f4b0b..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-programming.md +++ /dev/null @@ -1,3 +0,0 @@ -crwdns11386:0crwdne11386:0 crwdns11387:0crwdne11387:0 crwdns11388:0crwdne11388:0 - -crwdns11389:0crwdne11389:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-resource-descriptions.yaml deleted file mode 100644 index ad8b163a9..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -barcode-checksum-poster: - description: crwdns8215:0crwdne8215:0 diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits.md deleted file mode 100644 index 315545a9e..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/lessons/product-code-check-digits.md +++ /dev/null @@ -1,212 +0,0 @@ -# crwdns11390:0crwdne11390:0 - -## crwdns11398:0crwdne11398:0 - -crwdns20468:0crwdne20468:0 - -## crwdns11400:0crwdne11400:0 - -- crwdns11401:0crwdne11401:0 - -## crwdns11402:0crwdne11402:0 - -*BlockTag: crwdns20469:0crwdne20469:0* - -{panel type="video"} - -# crwdns20470:0crwdne20470:0 - -crwdns20471:0crwdne20471:0 - -*BlockTag: crwdns20472:0crwdne20472:0* - -{video url="https://vimeo.com/437724764"} - -*BlockTag: crwdns20473:0crwdne20473:0* - -{panel end} - -*BlockTag: crwdns20474:0crwdne20474:0* - -{panel type="general"} - -# crwdns20475:0crwdne20475:0 - -crwdns20476:0crwdne20476:0 - -*BlockTag: crwdns20477:0crwdne20477:0* - -{panel end} - -*BlockTag: crwdns20478:0crwdne20478:0* - -{image file-path="img/topics/error-correction-paint-tin.png" alt="A black paint tin with paint across the name and barcode." alignment="right"} - -crwdns11404:0crwdne11404:0 crwdns11405:0crwdne11405:0 - -crwdns11406:0crwdne11406:0 - -## crwdns11407:0crwdne11407:0 - -### crwdns11408:0crwdne11408:0 - -crwdns11409:0crwdne11409:0 crwdns11410:0crwdne11410:0 - -*BlockTag: crwdns11411:0crwdne11411:0* - -{image file-path="img/topics/barcode-13.jpg"} - -crwdns11412:0crwdne11412:0 - -*BlockTag: crwdns11413:0crwdne11413:0* - -{image file-path="img/topics/barcode-13-step-1.png"} - -crwdns11414:0crwdne11414:0 - -*BlockTag: crwdns11415:0crwdne11415:0* - -{image file-path="img/topics/barcode-13-step-2.png"} - -crwdns11416:0crwdne11416:0 - -crwdns11417:0crwdne11417:0 crwdns11418:0crwdne11418:0 crwdns11419:0crwdne11419:0 - -*BlockTag: crwdns11420:0crwdne11420:0* - -{image file-path="img/topics/barcode-13-step-3.png"} - -crwdns11421:0crwdne11421:0 - -*BlockTag: crwdns11422:0crwdne11422:0* - -{image file-path="img/topics/barcode-13-step-4.png"} - -crwdns11423:0crwdne11423:0 crwdns11424:0crwdne11424:0 - -*BlockTag: crwdns11425:0crwdne11425:0* - -{image file-path="img/topics/barcode-13-step-5.png"} - -crwdns11426:0crwdne11426:0 - -*BlockTag: crwdns11427:0crwdne11427:0* - -{image file-path="img/topics/barcode-13-step-6.png"} - -crwdns11428:0crwdne11428:0 crwdns11429:0crwdne11429:0 crwdns11430:0crwdne11430:0 crwdns11431:0crwdne11431:0 crwdns11432:0crwdne11432:0 - -*BlockTag: crwdns11433:0crwdne11433:0* - -{image file-path="img/topics/barcode-13-step-7.png"} - -crwdns11434:0crwdne11434:0 crwdns11435:0crwdne11435:0 crwdns11436:0crwdne11436:0 - -*BlockTag: crwdns19514:0crwdne19514:0* - -{panel type="teaching"} - -# crwdns19515:0crwdne19515:0 - -crwdns11438:0crwdne11438:0 crwdns11439:0crwdne11439:0 - -*BlockTag: crwdns11440:0crwdne11440:0* - -{panel end} - -### crwdns11441:0crwdne11441:0 - -crwdns11442:0crwdne11442:0 crwdns11443:0crwdne11443:0 - -*BlockTag: crwdns11444:0crwdne11444:0* - -{image file-path="img/topics/barcode-12.jpg"} - -crwdns11445:0crwdne11445:0 - -*BlockTag: crwdns11446:0crwdne11446:0* - -{image file-path="img/topics/barcode-12-step-1.png"} - -crwdns11447:0crwdne11447:0 - -*BlockTag: crwdns11448:0crwdne11448:0* - -{image file-path="img/topics/barcode-12-step-2.png"} - -crwdns11449:0crwdne11449:0 - -crwdns11450:0crwdne11450:0 crwdns11451:0crwdne11451:0 crwdns11452:0crwdne11452:0 - -*BlockTag: crwdns11453:0crwdne11453:0* - -{image file-path="img/topics/barcode-12-step-3.png"} - -crwdns11454:0crwdne11454:0 - -*BlockTag: crwdns11455:0crwdne11455:0* - -{image file-path="img/topics/barcode-12-step-4.png"} - -crwdns11456:0crwdne11456:0 crwdns11457:0crwdne11457:0 - -*BlockTag: crwdns11458:0crwdne11458:0* - -{image file-path="img/topics/barcode-12-step-5.png"} - -crwdns11459:0crwdne11459:0 - -*BlockTag: crwdns11460:0crwdne11460:0* - -{image file-path="img/topics/barcode-12-step-6.png"} - -crwdns11461:0crwdne11461:0 crwdns11462:0crwdne11462:0 crwdns11463:0crwdne11463:0 crwdns11464:0crwdne11464:0 crwdns11465:0crwdne11465:0 - -*BlockTag: crwdns11466:0crwdne11466:0* - -{image file-path="img/topics/barcode-12-step-7.png"} - -crwdns11467:0crwdne11467:0 crwdns11468:0crwdne11468:0 crwdns11469:0crwdne11469:0 - -*BlockTag: crwdns19516:0crwdne19516:0* - -{panel type="teaching"} - -# crwdns19517:0crwdne19517:0 - -crwdns11471:0crwdne11471:0 crwdns11472:0crwdne11472:0 - -*BlockTag: crwdns11473:0crwdne11473:0* - -{panel end} - -## crwdns11474:0crwdne11474:0 - -crwdns11475:0crwdne11475:0 crwdns11476:0crwdne11476:0 - -crwdns11477:0crwdne11477:0 crwdns11478:0crwdne11478:0 crwdns11479:0crwdne11479:0 - -crwdns11480:0crwdne11480:0 crwdns11481:0crwdne11481:0 - -crwdns11482:0crwdne11482:0 - -crwdns11483:0crwdne11483:0 - -crwdns11484:0crwdne11484:0 - -crwdns11485:0crwdne11485:0 crwdns11486:0crwdne11486:0 crwdns11487:0crwdne11487:0 crwdns11488:0crwdne11488:0 crwdns11489:0crwdne11489:0 crwdns11490:0crwdne11490:0 - -crwdns11491:0crwdne11491:0 - -## crwdns11492:0crwdne11492:0 - -crwdns11493:0crwdne11493:0 crwdns11494:0crwdne11494:0 crwdns11495:0crwdne11495:0 - -crwdns11496:0crwdne11496:0 - -crwdns11497:0crwdne11497:0 - -- crwdns11498:0crwdne11498:0 -- crwdns11499:0crwdne11499:0 -- crwdns11500:0crwdne11500:0 -- crwdns11501:0crwdne11501:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/unit-plan-ct-links.md deleted file mode 100644 index fb53bcd38..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/unit-plan-ct-links.md +++ /dev/null @@ -1,71 +0,0 @@ -*BlockTag: crwdns19252:0crwdne19252:0* - -{panel type="ct-algorithm"} - -# crwdns19253:0crwdne19253:0 - -crwdns10864:0crwdne10864:0 crwdns10865:0crwdne10865:0 crwdns10866:0crwdne10866:0 - -*BlockTag: crwdns10867:0crwdne10867:0* - -{panel end} - -*BlockTag: crwdns19254:0crwdne19254:0* - -{panel type="ct-abstraction"} - -# crwdns19255:0crwdne19255:0 - -crwdns10869:0crwdne10869:0 crwdns10870:0crwdne10870:0 crwdns10871:0crwdne10871:0 crwdns10872:0crwdne10872:0 crwdns10873:0crwdne10873:0 - -*BlockTag: crwdns10874:0crwdne10874:0* - -{panel end} - -*BlockTag: crwdns19256:0crwdne19256:0* - -{panel type="ct-decomposition"} - -# crwdns19257:0crwdne19257:0 - -crwdns10876:0crwdne10876:0 crwdns10877:0crwdne10877:0 crwdns10878:0crwdne10878:0 - -*BlockTag: crwdns10879:0crwdne10879:0* - -{panel end} - -*BlockTag: crwdns19258:0crwdne19258:0* - -{panel type="ct-pattern"} - -# crwdns19259:0crwdne19259:0 - -crwdns10881:0crwdne10881:0 crwdns10882:0crwdne10882:0 crwdns10883:0crwdne10883:0 - -*BlockTag: crwdns10884:0crwdne10884:0* - -{panel end} - -*BlockTag: crwdns19260:0crwdne19260:0* - -{panel type="ct-evaluation"} - -# crwdns19261:0crwdne19261:0 - -crwdns10886:0crwdne10886:0 crwdns10887:0crwdne10887:0 crwdns10888:0crwdne10888:0 crwdns10889:0crwdne10889:0 crwdns10890:0crwdne10890:0 - -*BlockTag: crwdns10891:0crwdne10891:0* - -{panel end} - -*BlockTag: crwdns19262:0crwdne19262:0* - -{panel type="ct-logic"} - -# crwdns19263:0crwdne19263:0 - -crwdns10893:0crwdne10893:0 crwdns10894:0crwdne10894:0 crwdns10895:0crwdne10895:0 crwdns10896:0crwdne10896:0 - -*BlockTag: crwdns10897:0crwdne10897:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/unit-plan.md b/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/unit-plan.md deleted file mode 100644 index d7aea5be1..000000000 --- a/csunplugged/topics/content/xx_LR/error-detection-and-correction/unit-plan/unit-plan.md +++ /dev/null @@ -1,109 +0,0 @@ -# crwdns10898:0crwdne10898:0 - -*BlockTag: crwdns20224:0crwdne20224:0* - -{panel type="video"} - -# crwdns19249:0crwdne19249:0 - -*BlockTag: crwdns20225:0crwdne20225:0* - -{video url="https://vimeo.com/437726658"} - -*BlockTag: crwdns20226:0crwdne20226:0* - -{video url="https://vimeo.com/437724764"} - -*BlockTag: crwdns20227:0crwdne20227:0* - -{panel end} - -crwdns20228:0crwdne20228:0 crwdns20229:0crwdne20229:0 crwdns20230:0crwdne20230:0 crwdns20231:0crwdne20231:0 crwdns20232:0crwdne20232:0 crwdns20233:0crwdne20233:0 crwdns20234:0crwdne20234:0 - -*BlockTag: crwdns20235:0crwdne20235:0* - -{image file-path="img/topics/parity-trick-example.png" alt="A student is surprised another student can detect the changed card in the Parity Trick."} - -crwdns20236:0crwdne20236:0 crwdns20237:0crwdne20237:0 crwdns20238:0crwdne20238:0 crwdns20239:0crwdne20239:0 - -*BlockTag: crwdns20240:0crwdne20240:0* - -{image file-path="img/topics/mug-with-barcode.png" alignment="right"} - -crwdns20241:0crwdne20241:0 crwdns20242:0crwdne20242:0 - -crwdns20243:0crwdne20243:0 crwdns20244:0crwdne20244:0 - -*BlockTag: crwdns20245:0crwdne20245:0* - -{panel type="video"} - -# crwdns20246:0crwdne20246:0 - -crwdns20247:0crwdne20247:0 - -*BlockTag: crwdns20248:0crwdne20248:0* - -{video url="https://vimeo.com/437726658"} - -*BlockTag: crwdns20249:0crwdne20249:0* - -{panel end} - -## crwdns18337:0crwdne18337:0 - -crwdns20250:0crwdne20250:0 crwdns20251:0crwdne20251:0 crwdns20252:0crwdne20252:0 - -## crwdns18338:0crwdne18338:0 - -crwdns20253:0crwdne20253:0 - -crwdns20254:0crwdne20254:0 - -crwdns20255:0crwdne20255:0 - -*BlockTag: crwdns20256:0crwdne20256:0* - -crwdns20257:0crwdne20257:0 crwdns20258:0crwdne20258:0 crwdns20259:0crwdne20259:0 crwdns20260:0crwdne20260:0 crwdns20261:0crwdne20261:0 - -crwdns20262:0crwdne20262:0 crwdns20263:0crwdne20263:0 - -*BlockTag: crwdns20264:0crwdne20264:0* - -{panel type="math"} - -# crwdns20265:0crwdne20265:0 - -- crwdns10938:0crwdne10938:0 -- crwdns10939:0crwdne10939:0 crwdns10940:0crwdne10940:0 -- crwdns10941:0crwdne10941:0 -- crwdns10942:0crwdne10942:0 - -*BlockTag: crwdns20266:0crwdne20266:0* - -{panel end} - -## crwdns18339:0crwdne18339:0 - -*BlockTag: crwdns20267:0crwdne20267:0* - -{image file-path="img/topics/arrest-mugshot-for-typo.png"} - -crwdns20268:0crwdne20268:0 crwdns20269:0crwdne20269:0 crwdns20270:0crwdne20270:0 crwdns20271:0crwdne20271:0 crwdns20272:0crwdne20272:0 - -*BlockTag: crwdns20273:0crwdne20273:0* - -{image file-path="img/topics/cd-with-marks.png" alignment="right"} - -crwdns20274:0crwdne20274:0 crwdns20275:0crwdne20275:0 crwdns20276:0crwdne20276:0 crwdns20277:0crwdne20277:0 crwdns20278:0crwdne20278:0 crwdns20279:0crwdne20279:0 crwdns20280:0crwdne20280:0 - -crwdns20281:0crwdne20281:0 crwdns20282:0crwdne20282:0 crwdns20283:0crwdne20283:0 crwdns20284:0crwdne20284:0 - -crwdns20285:0crwdne20285:0 crwdns20286:0crwdne20286:0 crwdns20287:0crwdne20287:0 crwdns20288:0crwdne20288:0 crwdns20289:0crwdne20289:0 crwdns20290:0crwdne20290:0 crwdns20291:0crwdne20291:0 - -## crwdns18340:0crwdne18340:0 - -- crwdns10971:0crwdne10971:0 -- crwdns10972:0crwdne10972:0 -- crwdns10973:0crwdne10973:0 -- crwdns10974:0crwdne10974:0 diff --git a/csunplugged/topics/content/xx_LR/glossary/algorithm.md b/csunplugged/topics/content/xx_LR/glossary/algorithm.md deleted file mode 100644 index 1a1794c94..000000000 --- a/csunplugged/topics/content/xx_LR/glossary/algorithm.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns11502:0crwdne11502:0 - -crwdns11503:0crwdne11503:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/glossary/pixel.md b/csunplugged/topics/content/xx_LR/glossary/pixel.md deleted file mode 100644 index 599810878..000000000 --- a/csunplugged/topics/content/xx_LR/glossary/pixel.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns11504:0crwdne11504:0 - -crwdns11505:0crwdne11505:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/finding-shapes.md b/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/finding-shapes.md deleted file mode 100644 index 242f2885a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/finding-shapes.md +++ /dev/null @@ -1,29 +0,0 @@ -# crwdns15980:0crwdne15980:0 - -crwdns15981:0crwdne15981:0 - -## crwdns15982:0crwdne15982:0 - -crwdns15983:0crwdne15983:0 - -*BlockTag: crwdns15984:0crwdne15984:0* - -{image file-path="img/topics/kidbots-geometry-plane-1.png" alt="Grid with the plane in (0,1)"} - -crwdns15985:0crwdne15985:0 - -*BlockTag: crwdns15986:0crwdne15986:0* - -{image file-path="img/topics/kidbots-geometry-plane-4.gif"} - -## crwdns15987:0crwdne15987:0 - -crwdns15988:0crwdne15988:0 - -*BlockTag: crwdns15989:0crwdne15989:0* - -{image file-path="img/topics/kidbots-geometry-plane-5.png"} - -## crwdns15990:0crwdne15990:0 - -crwdns15991:0crwdne15991:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/move-to-a-number.md b/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/move-to-a-number.md deleted file mode 100644 index 5212b4e43..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/move-to-a-number.md +++ /dev/null @@ -1,31 +0,0 @@ -# crwdns16019:0crwdne16019:0 - -crwdns16020:0crwdne16020:0 - -## crwdns16021:0crwdne16021:0 - -crwdns16022:0crwdne16022:0 - -- crwdns16023:0crwdne16023:0 -- crwdns16024:0crwdne16024:0 -- crwdns16025:0crwdne16025:0 - -*BlockTag: crwdns16026:0crwdne16026:0* - -{image file-path="img/topics/kidbots-numeracy-plane-1.png" alt="8 x 8 grid with various objects across the grid including, ladybugs, different numbers, a plane, and squares with different numbers of dots."} - -crwdns16027:0crwdne16027:0 - -- crwdns16028:0crwdne16028:0 -- crwdns16029:0crwdne16029:0 -- crwdns16030:0crwdne16030:0 - -crwdns16031:0crwdne16031:0 crwdns16032:0crwdne16032:0 - -### crwdns16033:0crwdne16033:0 - -crwdns16034:0crwdne16034:0 - -## crwdns16035:0crwdne16035:0 - -crwdns16036:0crwdne16036:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/moving-in-a-shape.md b/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/moving-in-a-shape.md deleted file mode 100644 index 65689fd54..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/moving-in-a-shape.md +++ /dev/null @@ -1,29 +0,0 @@ -# crwdns15963:0crwdne15963:0 - -crwdns15964:0crwdne15964:0 - -## crwdns15965:0crwdne15965:0 - -- crwdns15966:0crwdne15966:0 -- crwdns15967:0crwdne15967:0 - -## crwdns15968:0crwdne15968:0 - -crwdns15969:0crwdne15969:0 - -- crwdns15970:0crwdne15970:0 -- crwdns15971:0crwdne15971:0 - -*BlockTag: crwdns15972:0crwdne15972:0* - -{image file-path="img/topics/geo-parrot-square.png" alt="Parrot in grid"} - -## crwdns15973:0crwdne15973:0 - -crwdns15974:0crwdne15974:0 crwdns15975:0crwdne15975:0 crwdns15976:0crwdne15976:0 - -crwdns15977:0crwdne15977:0 - -## crwdns15978:0crwdne15978:0 - -crwdns15979:0crwdne15979:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/storytelling.md b/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/storytelling.md deleted file mode 100644 index 2da28c002..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/curriculum-integrations/storytelling.md +++ /dev/null @@ -1,57 +0,0 @@ -# crwdns15992:0crwdne15992:0 - -crwdns15993:0crwdne15993:0 - -## crwdns15994:0crwdne15994:0 - -- crwdns15995:0crwdne15995:0 -- crwdns15996:0crwdne15996:0 - -## crwdns15997:0crwdne15997:0 - -crwdns15998:0crwdne15998:0 - -crwdns15999:0crwdne15999:0 - -*BlockTag: crwdns16000:0crwdne16000:0* - -{image file-path="img/topics/kidbots-little-red-riding-hood-alternative-story.png" alt="An 8 by 8 grid with the following objects in different squares: A well, Grandma's house, Little Red Riding Hood, and a wolf."} - -crwdns16001:0crwdne16001:0 - -- crwdns16002:0crwdne16002:0 -- crwdns16003:0crwdne16003:0 -- crwdns16004:0crwdne16004:0 -- crwdns16005:0crwdne16005:0 - -crwdns16006:0crwdne16006:0 crwdns16007:0crwdne16007:0 crwdns16008:0crwdne16008:0 - -*BlockTag: crwdns18441:0crwdne18441:0* - -{panel type="teaching"} - -# crwdns18442:0crwdne18442:0 - -crwdns16010:0crwdne16010:0 crwdns16011:0crwdne16011:0 - -*BlockTag: crwdns16012:0crwdne16012:0* - -{panel end} - -crwdns16013:0crwdne16013:0 - -## crwdns16014:0crwdne16014:0 - -crwdns16015:0crwdne16015:0 - -*BlockTag: crwdns18443:0crwdne18443:0* - -{panel type="teaching"} - -# crwdns18444:0crwdne18444:0 - -crwdns16017:0crwdne16017:0 - -*BlockTag: crwdns16018:0crwdne16018:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/kidbots.md b/csunplugged/topics/content/xx_LR/kidbots/kidbots.md deleted file mode 100644 index 60c277b1e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/kidbots.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns15959:0crwdne15959:0 - -crwdns15960:0crwdne15960:0 crwdns15961:0crwdne15961:0 crwdns15962:0crwdne15962:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/add-in-parts-1-digit-number.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/add-in-parts-1-digit-number.md deleted file mode 100644 index fe9fc3816..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/add-in-parts-1-digit-number.md +++ /dev/null @@ -1,28 +0,0 @@ -# crwdns17090:0crwdne17090:0 - -## crwdns17091:0crwdne17091:0 - -crwdns17092:0crwdne17092:0 crwdns17093:0crwdne17093:0 crwdns17094:0crwdne17094:0 - -## crwdns17095:0crwdne17095:0 - -crwdns17096:0crwdne17096:0 - -<table> - <tr> - <th>crwdns17097:0crwdne17097:0</th> - <th>crwdns17098:0crwdne17098:0</th> - </tr> - <tr> - <td>crwdns17099:0crwdne17099:0</td> - <td>crwdns17100:0crwdne17100:0</td> - </tr> - <tr> - <td>crwdns17101:0crwdne17101:0</td> - <td>crwdns17102:0crwdne17102:0</td> - </tr> - <tr> - <td>crwdns17103:0crwdne17103:0</td> - <td>crwdns17104:0crwdne17104:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-expected.md deleted file mode 100644 index f406d19a9..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17109:0crwdne17109:0 - -*BlockTag: crwdns17110:0crwdne17110:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149427587/?autostart=false"} - -*BlockTag: crwdns18531:0crwdne18531:0* - -{panel type="help"} - -# crwdns18532:0crwdne18532:0 - -<pre><code class="scratch:split:random">crwdns17112:0crwdne17112:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17113:0crwdne17113:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17114:0crwdne17114:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17115:0crwdne17115:0 crwdns17116:0crwdne17116:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17117:0[10]crwdne17117:0 -</code></pre> - -*BlockTag: crwdns17118:0crwdne17118:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-hints.md deleted file mode 100644 index d65b9359e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns17105:0crwdne17105:0 -- crwdns17106:0crwdne17106:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-solution.md deleted file mode 100644 index fb9060dc3..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-1-digit-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17107:0crwdne17107:0 crwdns17108:0[10]crwdne17108:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/add-in-parts-2-digit-number.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/add-in-parts-2-digit-number.md deleted file mode 100644 index a4502ea50..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/add-in-parts-2-digit-number.md +++ /dev/null @@ -1,28 +0,0 @@ -# crwdns17332:0crwdne17332:0 - -## crwdns17333:0crwdne17333:0 - -crwdns17334:0crwdne17334:0 crwdns17335:0crwdne17335:0 crwdns17336:0crwdne17336:0 - -## crwdns17337:0crwdne17337:0 - -crwdns17338:0crwdne17338:0 - -<table> - <tr> - <th>crwdns17339:0crwdne17339:0</th> - <th>crwdns17340:0crwdne17340:0</th> - </tr> - <tr> - <td>crwdns17341:0crwdne17341:0</td> - <td>crwdns17342:0crwdne17342:0</td> - </tr> - <tr> - <td>crwdns17343:0crwdne17343:0</td> - <td>crwdns17344:0crwdne17344:0</td> - </tr> - <tr> - <td>crwdns17345:0crwdne17345:0</td> - <td>crwdns17346:0crwdne17346:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-expected.md deleted file mode 100644 index ee572bee9..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17349:0crwdne17349:0 - -*BlockTag: crwdns17350:0crwdne17350:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149512041/?autostart=false"} - -*BlockTag: crwdns18551:0crwdne18551:0* - -{panel type="help"} - -# crwdns18552:0crwdne18552:0 - -<pre><code class="scratch:split:random">crwdns17352:0crwdne17352:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17353:0crwdne17353:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17354:0crwdne17354:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17355:0crwdne17355:0 crwdns17356:0crwdne17356:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17357:0[10]crwdne17357:0 -</code></pre> - -*BlockTag: crwdns17358:0crwdne17358:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-hints.md deleted file mode 100644 index 5c1c8f03c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns17328:0crwdne17328:0 -- crwdns17329:0crwdne17329:0 -- crwdns17330:0crwdne17330:0 crwdns17331:0crwdne17331:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-solution.md deleted file mode 100644 index be36b36d5..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-2-digit-number/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17347:0crwdne17347:0 crwdns17348:0[10]crwdne17348:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/add-in-parts-quiz.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/add-in-parts-quiz.md deleted file mode 100644 index d8662d66d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/add-in-parts-quiz.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16939:0crwdne16939:0 - -## crwdns16940:0crwdne16940:0 - -crwdns16941:0crwdne16941:0 crwdns16942:0crwdne16942:0 crwdns16943:0crwdne16943:0 - -## crwdns16944:0crwdne16944:0 - -crwdns16945:0crwdne16945:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/scratch-expected.md deleted file mode 100644 index f3afed424..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/scratch-expected.md +++ /dev/null @@ -1,5 +0,0 @@ -crwdns16947:0crwdne16947:0 - -*BlockTag: crwdns16948:0crwdne16948:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149427673/?autostart=false"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/scratch-solution.md deleted file mode 100644 index 0290030bf..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/add-in-parts-quiz/scratch-solution.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16946:0crwdne16946:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/calculate-exponents.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/calculate-exponents.md deleted file mode 100644 index ae985e15d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/calculate-exponents.md +++ /dev/null @@ -1,26 +0,0 @@ -# crwdns16916:0crwdne16916:0 - -## crwdns16917:0crwdne16917:0 - -crwdns16918:0crwdne16918:0 crwdns16919:0crwdne16919:0 - -crwdns16920:0crwdne16920:0 - -## crwdns16921:0crwdne16921:0 - -crwdns16922:0crwdne16922:0 - -<table> - <tr> - <th>crwdns16923:0crwdne16923:0</th> - <th>crwdns16924:0crwdne16924:0</th> - </tr> - <tr> - <td>crwdns16925:0crwdne16925:0</td> - <td>crwdns16926:0crwdne16926:0</td> - </tr> - <tr> - <td>crwdns16927:0crwdne16927:0</td> - <td>crwdns16928:0crwdne16928:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/extra-challenge.md deleted file mode 100644 index 947c16995..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/extra-challenge.md +++ /dev/null @@ -1,3 +0,0 @@ -crwdns16908:0{-2}crwdnd16908:0{1}crwdnd16908:0{2}crwdnd16908:0{1}crwdnd16908:0{64}crwdne16908:0 - -crwdns16909:0crwdne16909:0 crwdns16910:0crwdne16910:0 crwdns16911:0crwdne16911:0 crwdns16912:0crwdne16912:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-expected.md deleted file mode 100644 index b9b51ab5a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16930:0crwdne16930:0 - -*BlockTag: crwdns16931:0crwdne16931:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149428305/?autostart=false"} - -*BlockTag: crwdns18513:0crwdne18513:0* - -{panel type="help"} - -# crwdns18514:0crwdne18514:0 - -<pre><code class="scratch:split:random">crwdns16933:0crwdne16933:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16934:0[1]crwdne16934:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16935:0crwdne16935:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16936:0crwdne16936:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16937:0crwdne16937:0 -</code></pre> - -*BlockTag: crwdns16938:0crwdne16938:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-hints.md deleted file mode 100644 index eb5493460..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns16913:0crwdne16913:0 -- crwdns16914:0crwdne16914:0 -- crwdns16915:0crwdne16915:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-solution.md deleted file mode 100644 index 3a91b922d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-exponents/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16929:0[1]crwdne16929:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/calculate-inside-angles-of-regular-polygons.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/calculate-inside-angles-of-regular-polygons.md deleted file mode 100644 index a6c9890e6..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/calculate-inside-angles-of-regular-polygons.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16813:0crwdne16813:0 - -## crwdns16814:0crwdne16814:0 - -crwdns16815:0crwdne16815:0 crwdns16816:0crwdne16816:0 - -## crwdns16817:0crwdne16817:0 - -crwdns16818:0crwdne16818:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-expected.md deleted file mode 100644 index 142e362ab..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-expected.md +++ /dev/null @@ -1,36 +0,0 @@ -crwdns16820:0crwdne16820:0 - -*BlockTag: crwdns16821:0crwdne16821:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152498752/?autostart=false"} - -*BlockTag: crwdns18503:0crwdne18503:0* - -{panel type="help"} - -# crwdns18504:0crwdne18504:0 - -<pre><code class="scratch:split:random">crwdns16823:0crwdne16823:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16824:0crwdne16824:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16825:0crwdne16825:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16826:0crwdne16826:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16827:0crwdne16827:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16828:0crwdne16828:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16829:0crwdne16829:0 -</code></pre> - -*BlockTag: crwdns16830:0crwdne16830:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-hints.md deleted file mode 100644 index eea79473c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16810:0crwdne16810:0 -- crwdns16811:0crwdne16811:0 crwdns16812:0crwdne16812:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-solution.md deleted file mode 100644 index 299a981c2..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/calculate-inside-angles-of-regular-polygons/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16819:0crwdne16819:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/catch-the-mouse-random.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/catch-the-mouse-random.md deleted file mode 100644 index 8ac7e6de6..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/catch-the-mouse-random.md +++ /dev/null @@ -1,23 +0,0 @@ -# crwdns16099:0crwdne16099:0 - -## crwdns16100:0crwdne16100:0 - -crwdns16101:0crwdne16101:0 - -crwdns16102:0crwdne16102:0 crwdns16103:0crwdne16103:0 - -- `crwdns16104:0crwdne16104:0` -- `crwdns16105:0crwdne16105:0` -- `crwdns16106:0crwdne16106:0` - -crwdns16107:0crwdne16107:0 - -- crwdns16108:0crwdne16108:0 -- crwdns16109:0crwdne16109:0 -- crwdns16110:0crwdne16110:0 - -## crwdns16111:0crwdne16111:0 - -crwdns16112:0crwdne16112:0 - -crwdns16113:0crwdne16113:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-expected.md deleted file mode 100644 index a63562021..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-expected.md +++ /dev/null @@ -1,12 +0,0 @@ -*BlockTag: crwdns18449:0crwdne18449:0* - -{panel type="help"} - -# crwdns18450:0crwdne18450:0 - -<pre><code class="scratch:split:random">crwdns16116:0crwdne16116:0 -</code></pre> - -*BlockTag: crwdns16117:0crwdne16117:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-hints.md deleted file mode 100644 index d5c0fda9e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-hints.md +++ /dev/null @@ -1,6 +0,0 @@ -- crwdns16091:0crwdne16091:0 crwdns16092:0crwdne16092:0 -- crwdns16093:0crwdne16093:0 -- crwdns16094:0crwdne16094:0 -- crwdns16095:0crwdne16095:0 -- crwdns16096:0crwdne16096:0 crwdns16097:0crwdne16097:0 -- crwdns16098:0crwdne16098:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-solution.md deleted file mode 100644 index 59ef77c8f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse-random/scratch-solution.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16114:0crwdne16114:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/catch-the-mouse.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/catch-the-mouse.md deleted file mode 100644 index fa5ad2812..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/catch-the-mouse.md +++ /dev/null @@ -1,21 +0,0 @@ -# crwdns17367:0crwdne17367:0 - -## crwdns17368:0crwdne17368:0 - -crwdns17369:0crwdne17369:0 - -crwdns17370:0crwdne17370:0 crwdns17371:0crwdne17371:0 - -- `crwdns17372:0crwdne17372:0` -- `crwdns17373:0crwdne17373:0` -- `crwdns17374:0crwdne17374:0` - -crwdns17375:0crwdne17375:0 - -- crwdns17376:0crwdne17376:0 -- crwdns17377:0crwdne17377:0 -- crwdns17378:0crwdne17378:0 - -## crwdns17379:0crwdne17379:0 - -crwdns17380:0crwdne17380:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-expected.md deleted file mode 100644 index ba13a3667..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-expected.md +++ /dev/null @@ -1,18 +0,0 @@ -crwdns17389:0crwdne17389:0 - -*BlockTag: crwdns17390:0crwdne17390:0* - -{iframe link="https://scratch.mit.edu/projects/embed/164769349/?autostart=false"} - -*BlockTag: crwdns18553:0crwdne18553:0* - -{panel type="help"} - -# crwdns18554:0crwdne18554:0 - -<pre><code class="scratch:split:random">crwdns17392:0crwdne17392:0 -</code></pre> - -*BlockTag: crwdns17393:0crwdne17393:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-hints.md deleted file mode 100644 index 36bf675ff..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-hints.md +++ /dev/null @@ -1,6 +0,0 @@ -- crwdns17359:0crwdne17359:0 crwdns17360:0crwdne17360:0 -- crwdns17361:0crwdne17361:0 -- crwdns17362:0crwdne17362:0 -- crwdns17363:0crwdne17363:0 -- crwdns17364:0crwdne17364:0 crwdns17365:0crwdne17365:0 -- crwdns17366:0crwdne17366:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-solution.md deleted file mode 100644 index f30186a02..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/catch-the-mouse/scratch-solution.md +++ /dev/null @@ -1,23 +0,0 @@ -crwdns17381:0crwdne17381:0 - -```scratch -crwdns17382:0crwdne17382:0 -``` - -crwdns17383:0crwdne17383:0 - -```scratch -crwdns17384:0crwdne17384:0 -``` - -crwdns17385:0crwdne17385:0 - -```scratch -crwdns17386:0crwdne17386:0 -``` - -crwdns17387:0crwdne17387:0 - -```scratch -crwdns17388:0crwdne17388:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/check-if-divisor-series.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/check-if-divisor-series.md deleted file mode 100644 index 9c1271fde..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/check-if-divisor-series.md +++ /dev/null @@ -1,20 +0,0 @@ -# crwdns17051:0crwdne17051:0 - -## crwdns17052:0crwdne17052:0 - -crwdns17053:0crwdne17053:0 crwdns17054:0crwdne17054:0 - -## crwdns17055:0crwdne17055:0 - -crwdns17056:0crwdne17056:0 - -<table> - <tr> - <th>crwdns17057:0crwdne17057:0</th> - <th>crwdns17058:0crwdne17058:0</th> - </tr> - <tr> - <td>crwdns17059:0crwdne17059:0</td> - <td><br>crwdns17060:0crwdne17060:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-expected.md deleted file mode 100644 index 230474ac0..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17063:0crwdne17063:0 - -*BlockTag: crwdns17064:0crwdne17064:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149428874/?autostart=false"} - -*BlockTag: crwdns18527:0crwdne18527:0* - -{panel type="help"} - -# crwdns18528:0crwdne18528:0 - -<pre><code class="scratch:split:random">crwdns17066:0crwdne17066:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17067:0crwdne17067:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17068:0crwdne17068:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17069:0crwdne17069:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17070:0[0]crwdne17070:0 -</code></pre> - -*BlockTag: crwdns17071:0crwdne17071:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-hints.md deleted file mode 100644 index 0f90850fd..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns17061:0crwdne17061:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-solution.md deleted file mode 100644 index 525ac5107..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor-series/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17062:0[0]crwdne17062:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/check-if-divisor.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/check-if-divisor.md deleted file mode 100644 index 9108eb916..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/check-if-divisor.md +++ /dev/null @@ -1,24 +0,0 @@ -# crwdns16431:0crwdne16431:0 - -## crwdns16432:0crwdne16432:0 - -crwdns16433:0crwdne16433:0 - -## crwdns16434:0crwdne16434:0 - -crwdns16435:0crwdne16435:0 - -<table> - <tr> - <th>crwdns16436:0crwdne16436:0</th> - <th>crwdns16437:0crwdne16437:0</th> - </tr> - <tr> - <td>crwdns16438:0crwdne16438:0</td> - <td>crwdns16439:0crwdne16439:0</td> - </tr> - <tr> - <td>crwdns16440:0crwdne16440:0</td> - <td>crwdns16441:0crwdne16441:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-expected.md deleted file mode 100644 index 025c890c8..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16443:0crwdne16443:0 - -*BlockTag: crwdns16444:0crwdne16444:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149428777/?autostart=false"} - -*BlockTag: crwdns18471:0crwdne18471:0* - -{panel type="help"} - -# crwdns18472:0crwdne18472:0 - -<pre><code class="scratch:split:random">crwdns16446:0crwdne16446:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16447:0crwdne16447:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16448:0crwdne16448:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16449:0crwdne16449:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16450:0[0]crwdne16450:0 -</code></pre> - -*BlockTag: crwdns16451:0crwdne16451:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-hints.md deleted file mode 100644 index ba1725f44..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns16430:0crwdne16430:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-solution.md deleted file mode 100644 index d20342af2..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-if-divisor/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16442:0[0]crwdne16442:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/check-prime.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/check-prime.md deleted file mode 100644 index c81768d4c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/check-prime.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns16073:0crwdne16073:0 - -## crwdns16074:0crwdne16074:0 - -crwdns16075:0crwdne16075:0 crwdns16076:0crwdne16076:0 - -## crwdns16077:0crwdne16077:0 - -crwdns16078:0crwdne16078:0 - -| crwdns16079:0crwdne16079:0 | crwdns16080:0crwdne16080:0 | -| -------------------------- | -------------------------- | -| crwdns16081:0crwdne16081:0 | crwdns16082:0crwdne16082:0 | -| crwdns16083:0crwdne16083:0 | crwdns16084:0crwdne16084:0 | -| crwdns16085:0crwdne16085:0 | crwdns16086:0crwdne16086:0 | -| crwdns16087:0crwdne16087:0 | crwdns16088:0crwdne16088:0 | -| crwdns16089:0crwdne16089:0 | crwdns16090:0crwdne16090:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-expected.md deleted file mode 100644 index 02fffd616..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-expected.md +++ /dev/null @@ -1,55 +0,0 @@ -crwdns16057:0crwdne16057:0 - -*BlockTag: crwdns16058:0crwdne16058:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149429557/?autostart=false"} - -*BlockTag: crwdns18445:0crwdne18445:0* - -{panel type="help"} - -# crwdns18446:0crwdne18446:0 - -<pre><code class="scratch:split:random">crwdns16060:0crwdne16060:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16061:0[2]crwdne16061:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16062:0crwdne16062:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16063:0crwdne16063:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16064:0[0]crwdnd16064:0[1]crwdnd16064:0[1]crwdne16064:0 -</code></pre> - -*BlockTag: crwdns16065:0crwdne16065:0* - -{panel end} - -*BlockTag: crwdns18447:0crwdne18447:0* - -{panel type="help"} - -# crwdns18448:0crwdne18448:0 - -<pre><code class="scratch:split:random">crwdns16067:0crwdne16067:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16068:0[true]crwdnd16068:0[2]crwdnd16068:0[false]crwdne16068:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16069:0crwdne16069:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16070:0crwdne16070:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16071:0[true]crwdnd16071:0[0]crwdnd16071:0[false]crwdnd16071:0[1]crwdnd16071:0[1]crwdne16071:0 -</code></pre> - -*BlockTag: crwdns16072:0crwdne16072:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-hints.md deleted file mode 100644 index b1c0ae88b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-hints.md +++ /dev/null @@ -1,20 +0,0 @@ -crwdns16037:0crwdne16037:0 - -crwdns16038:0crwdne16038:0 - -1. crwdns16039:0crwdne16039:0 -2. crwdns16040:0crwdne16040:0 -3. crwdns16041:0crwdne16041:0 -4. crwdns16042:0crwdne16042:0 -5. crwdns16043:0crwdne16043:0 -6. crwdns16044:0crwdne16044:0 -7. crwdns16045:0crwdne16045:0 - -crwdns16046:0crwdne16046:0 - -1. crwdns16047:0crwdne16047:0 -2. crwdns16048:0crwdne16048:0 -3. crwdns16049:0crwdne16049:0 -4. crwdns16050:0crwdne16050:0 -5. crwdns16051:0crwdne16051:0 -6. crwdns16052:0crwdne16052:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-solution.md deleted file mode 100644 index 751fe4687..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/check-prime/scratch-solution.md +++ /dev/null @@ -1,11 +0,0 @@ -**crwdns16053:0crwdne16053:0** - -```scratch -crwdns16054:0[2]crwdnd16054:0[1]crwdnd16054:0[1]crwdnd16054:0[0]crwdne16054:0 -``` - -**crwdns16055:0crwdne16055:0** - -```scratch -crwdns16056:0[true]crwdnd16056:0[2]crwdnd16056:0[1]crwdnd16056:0[1]crwdnd16056:0[false]crwdnd16056:0[0]crwdnd16056:0[false]crwdnd16056:0[true]crwdne16056:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/design-bee-bot.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/design-bee-bot.md deleted file mode 100644 index b105532ef..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/design-bee-bot.md +++ /dev/null @@ -1,27 +0,0 @@ -# crwdns16173:0crwdne16173:0 - -## crwdns16174:0crwdne16174:0 - -*BlockTag: crwdns18455:0crwdne18455:0* - -{panel type="general"} - -# crwdns18456:0crwdne18456:0 - -crwdns16176:0crwdne16176:0 crwdns16177:0crwdne16177:0 crwdns16178:0crwdne16178:0 - -*BlockTag: crwdns16179:0crwdne16179:0* - -{panel end} - -crwdns16180:0crwdne16180:0 crwdns16181:0crwdne16181:0 - -crwdns16182:0crwdne16182:0 - -crwdns16183:0crwdne16183:0 - -## crwdns16184:0crwdne16184:0 - -crwdns16185:0crwdne16185:0 - -crwdns16186:0crwdne16186:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-expected.md deleted file mode 100644 index f7c44c4f8..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-expected.md +++ /dev/null @@ -1,51 +0,0 @@ -crwdns16262:0crwdne16262:0 - -*BlockTag: crwdns16263:0crwdne16263:0* - -{iframe link="https://scratch.mit.edu/projects/embed/158364683/?autostart=false"} - -*BlockTag: crwdns18457:0crwdne18457:0* - -{panel type="help"} - -# crwdns18458:0crwdne18458:0 - -crwdns16265:0crwdne16265:0 - -<pre><code class="scratch:split:random">crwdns16266:0crwdne16266:0 -</code></pre> - -crwdns16267:0crwdne16267:0 - -<pre><code class="scratch:split:random">crwdns16268:0[forward]crwdnd16268:0[backward]crwdne16268:0 -</code></pre> - -crwdns16269:0crwdne16269:0 - -<pre><code class="scratch:split:random">crwdns16270:0[0]crwdnd16270:0[1]crwdne16270:0 -</code></pre> - -crwdns16271:0crwdne16271:0 - -<pre><code class="scratch:split:random">crwdns16272:0[forward]crwdnd16272:0[backward]crwdnd16272:0[pause]crwdne16272:0 -</code></pre> - -crwdns16273:0crwdne16273:0 - -<pre><code class="scratch:split:random">crwdns16274:0crwdne16274:0 crwdns16275:0crwdne16275:0 crwdns16276:0crwdne16276:0 crwdns16277:0crwdne16277:0 crwdns16278:0crwdne16278:0 -</code></pre> - -crwdns16279:0crwdne16279:0 - -<pre><code class="scratch:split:random">crwdns16280:0crwdne16280:0 - -</code></pre> - -crwdns16281:0crwdne16281:0 - -<pre><code class="scratch:split:random">crwdns16282:0crwdne16282:0 -</code></pre> - -*BlockTag: crwdns16283:0crwdne16283:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-hints.md deleted file mode 100644 index 2d2696031..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-hints.md +++ /dev/null @@ -1,47 +0,0 @@ -crwdns16187:0crwdne16187:0 - -crwdns16188:0crwdne16188:0 - -- crwdns16189:0crwdne16189:0 - - crwdns16190:0crwdne16190:0 - - crwdns16191:0crwdne16191:0 - - crwdns16192:0crwdne16192:0 -- crwdns16193:0crwdne16193:0 - - crwdns16194:0crwdne16194:0 crwdns16195:0crwdne16195:0 - -crwdns16196:0crwdne16196:0 - -- crwdns16197:0crwdne16197:0 -- crwdns16198:0crwdne16198:0 -- crwdns16199:0crwdne16199:0 -- crwdns16200:0crwdne16200:0 -- crwdns16201:0crwdne16201:0 -- crwdns16202:0crwdne16202:0 -- crwdns16203:0crwdne16203:0 -- crwdns16204:0crwdne16204:0 -- crwdns16205:0crwdne16205:0 - - - crwdns16206:0crwdne16206:0 - - crwdns16207:0crwdne16207:0 - - crwdns16208:0crwdne16208:0 - - crwdns16209:0crwdne16209:0 - - crwdns16210:0crwdne16210:0 - - crwdns16211:0crwdne16211:0 - - crwdns16212:0crwdne16212:0 - - crwdns16213:0crwdne16213:0 - - crwdns16214:0crwdne16214:0 - - crwdns16215:0crwdne16215:0 - - crwdns16216:0crwdne16216:0 - - crwdns16217:0crwdne16217:0 - - crwdns16218:0crwdne16218:0 - - crwdns16219:0crwdne16219:0 - - crwdns16220:0crwdne16220:0 - - crwdns16221:0crwdne16221:0 - - crwdns16222:0crwdne16222:0 - - - crwdns16223:0crwdne16223:0 - - crwdns16224:0crwdne16224:0 - - crwdns16225:0crwdne16225:0 crwdns16226:0crwdne16226:0 crwdns16227:0crwdne16227:0 - - crwdns16228:0crwdne16228:0 - - crwdns16229:0crwdne16229:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-solution.md deleted file mode 100644 index 74c772e71..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/design-bee-bot/scratch-solution.md +++ /dev/null @@ -1,77 +0,0 @@ -**crwdns16230:0crwdne16230:0** - -crwdns16231:0crwdne16231:0 - -```scratch -crwdns16232:0[forward]crwdne16232:0 -``` - -crwdns16233:0crwdne16233:0 - -```scratch -crwdns16234:0[backward]crwdne16234:0 -``` - -crwdns16235:0crwdne16235:0 - -```scratch -crwdns16236:0crwdne16236:0 -``` - -crwdns16237:0crwdne16237:0 - -```scratch -crwdns16238:0crwdne16238:0 -``` - -crwdns16239:0crwdne16239:0 - -```scratch -crwdns16240:0crwdne16240:0 -``` - -crwdns16241:0crwdne16241:0 - -```scratch -crwdns16242:0crwdne16242:0 -``` - -crwdns16243:0crwdne16243:0 - -```scratch -crwdns16244:0crwdne16244:0 -``` - -crwdns16245:0crwdne16245:0 - -```scratch -crwdns16246:0[pause]crwdne16246:0 -``` - -crwdns16247:0crwdne16247:0 - -```scratch -crwdns16248:0crwdne16248:0 -``` - -**crwdns16249:0crwdne16249:0** - -crwdns16250:0crwdne16250:0 - -```scratch -crwdns16251:0crwdne16251:0 -``` - -crwdns16252:0crwdne16252:0 - -```scratch -crwdns16253:0[0]crwdnd16253:0[1]crwdnd16253:0[forward]crwdne16253:0 crwdns16254:0crwdne16254:0 crwdns16255:0[backward]crwdne16255:0 crwdns16256:0crwdne16256:0 crwdns16257:0[pause]crwdne16257:0 crwdns16258:0crwdne16258:0 crwdns16259:0crwdne16259:0 -``` - -```scratch -crwdns16260:0crwdne16260:0 -``` - -```scratch -crwdns16261:0crwdne16261:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/draw-360-sided-polygon.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/draw-360-sided-polygon.md deleted file mode 100644 index 986a7fe82..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/draw-360-sided-polygon.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns17035:0crwdne17035:0 - -## crwdns17036:0crwdne17036:0 - -crwdns17037:0crwdne17037:0 crwdns17038:0crwdne17038:0 crwdns17039:0crwdne17039:0 - -## crwdns17040:0crwdne17040:0 - -crwdns17041:0crwdne17041:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/scratch-expected.md deleted file mode 100644 index abcf47223..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns17043:0crwdne17043:0 - -*BlockTag: crwdns17044:0crwdne17044:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152909804/?autostart=false"} - -*BlockTag: crwdns18525:0crwdne18525:0* - -{panel type="help"} - -# crwdns18526:0crwdne18526:0 - -<pre><code class="scratch:split:random">crwdns17046:0crwdne17046:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17047:0crwdne17047:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17048:0crwdne17048:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17049:0crwdne17049:0 -</code></pre> - -*BlockTag: crwdns17050:0crwdne17050:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/scratch-solution.md deleted file mode 100644 index 218d21353..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-360-sided-polygon/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17042:0crwdne17042:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/draw-5-pointed-star.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/draw-5-pointed-star.md deleted file mode 100644 index 81f375724..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/draw-5-pointed-star.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns16652:0crwdne16652:0 - -## crwdns16653:0crwdne16653:0 - -crwdns16654:0crwdne16654:0 - -*BlockTag: crwdns16655:0crwdne16655:0* - -{image file-path="img/topics/programming-challenges/5-pointed-star.png"} - -## crwdns16656:0crwdne16656:0 - -crwdns16657:0crwdne16657:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-expected.md deleted file mode 100644 index e0559e22c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16660:0crwdne16660:0 - -*BlockTag: crwdns16661:0crwdne16661:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152977806/?autostart=false"} - -*BlockTag: crwdns18489:0crwdne18489:0* - -{panel type="help"} - -# crwdns18490:0crwdne18490:0 - -<pre><code class="scratch:split:random">crwdns16663:0crwdne16663:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16664:0crwdne16664:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16665:0crwdne16665:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16666:0crwdne16666:0 -</code></pre> - -*BlockTag: crwdns16667:0crwdne16667:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-hints.md deleted file mode 100644 index b8cd2535b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns16658:0crwdne16658:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-solution.md deleted file mode 100644 index 76d64aec9..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-5-pointed-star/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16659:0crwdne16659:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/draw-circle-with-radius-100.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/draw-circle-with-radius-100.md deleted file mode 100644 index fde007f0f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/draw-circle-with-radius-100.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns17394:0crwdne17394:0 - -## crwdns17395:0crwdne17395:0 - -crwdns17396:0crwdne17396:0 crwdns17397:0crwdne17397:0 - -## crwdns17398:0crwdne17398:0 - -crwdns17399:0crwdne17399:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/extra-challenge.md deleted file mode 100644 index 469237893..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/extra-challenge.md +++ /dev/null @@ -1,17 +0,0 @@ -crwdns17400:0crwdne17400:0 crwdns17401:0crwdne17401:0 - -crwdns17402:0crwdne17402:0 - -crwdns17403:0crwdne17403:0 - -*BlockTag: crwdns17404:0crwdne17404:0* - -{image file-path="img/topics/programming-challenges/circle_red.png"} - -crwdns17405:0crwdne17405:0 - -crwdns17406:0{2}crwdnd17406:0{2}crwdnd17406:0{2}crwdne17406:0 crwdns17407:0crwdne17407:0 - -crwdns17408:0{2}crwdnd17408:0{2}crwdnd17408:0{2}crwdnd17408:0{2}crwdnd17408:0{2}crwdne17408:0 - -crwdns17409:0crwdne17409:0 crwdns17410:0crwdne17410:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-expected.md deleted file mode 100644 index 229e86104..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17416:0crwdne17416:0 - -*BlockTag: crwdns17417:0crwdne17417:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152451264/?autostart=false"} - -*BlockTag: crwdns18555:0crwdne18555:0* - -{panel type="help"} - -# crwdns18556:0crwdne18556:0 - -<pre><code class="scratch:split:random">crwdns17419:0crwdne17419:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17420:0crwdne17420:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17421:0[3.1415]crwdnd17421:0[100]crwdne17421:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17422:0crwdne17422:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17423:0crwdne17423:0 -</code></pre> - -*BlockTag: crwdns17424:0crwdne17424:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-hints.md deleted file mode 100644 index a582c3770..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns17411:0crwdne17411:0 -- crwdns17412:0crwdne17412:0 -- crwdns17413:0crwdne17413:0 crwdns17414:0crwdne17414:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-solution.md deleted file mode 100644 index 85c9307b1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-circle-with-radius-100/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17415:0[3.1415]crwdnd17415:0[100]crwdne17415:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/draw-cube.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/draw-cube.md deleted file mode 100644 index 64b4ba278..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/draw-cube.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns17227:0crwdne17227:0 - -## crwdns17228:0crwdne17228:0 - -crwdns17229:0crwdne17229:0 - -*BlockTag: crwdns17230:0crwdne17230:0* - -{image file-path="img/topics/programming-challenges/geometry-orthographic-cube.png"} - -*BlockTag: crwdns17231:0crwdne17231:0* - -{image file-path="img/topics/programming-challenges/geometry-isometric-cube.png"} - -## crwdns17232:0crwdne17232:0 - -crwdns17233:0crwdne17233:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/extra-challenge.md deleted file mode 100644 index 028f4ad33..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns17206:0crwdne17206:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-expected.md deleted file mode 100644 index f60e6f0cf..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-expected.md +++ /dev/null @@ -1,53 +0,0 @@ -crwdns17212:0crwdne17212:0 - -*BlockTag: crwdns17213:0crwdne17213:0* - -{iframe link="https://scratch.mit.edu/projects/embed/153727746/?autostart=false"} - -*BlockTag: crwdns17214:0crwdne17214:0* - -{iframe link="https://scratch.mit.edu/projects/embed/154359131/?autostart=false"} - -*BlockTag: crwdns18541:0crwdne18541:0* - -{panel type="help"} - -# crwdns18542:0crwdne18542:0 - -<pre><code class="scratch:split:random">crwdns17216:0crwdne17216:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17217:0crwdne17217:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17218:0crwdne17218:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17219:0crwdne17219:0 -</code></pre> - -*BlockTag: crwdns17220:0crwdne17220:0* - -{panel end} - -*BlockTag: crwdns18543:0crwdne18543:0* - -{panel type="help"} - -# crwdns18544:0crwdne18544:0 - -<pre><code class="scratch:split:random">crwdns17222:0crwdne17222:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17223:0crwdne17223:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17224:0crwdne17224:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17225:0crwdne17225:0 -</code></pre> - -*BlockTag: crwdns17226:0crwdne17226:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-hints.md deleted file mode 100644 index a9b16c52d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns17207:0crwdne17207:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-solution.md deleted file mode 100644 index 169b87169..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-cube/scratch-solution.md +++ /dev/null @@ -1,11 +0,0 @@ -**crwdns17208:0crwdne17208:0** - -```scratch -crwdns17209:0crwdne17209:0 -``` - -**crwdns17210:0crwdne17210:0** - -```scratch -crwdns17211:0crwdne17211:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/draw-different-types-of-angles.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/draw-different-types-of-angles.md deleted file mode 100644 index 6e69883ff..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/draw-different-types-of-angles.md +++ /dev/null @@ -1,18 +0,0 @@ -# crwdns16610:0crwdne16610:0 - -## crwdns16611:0crwdne16611:0 - -crwdns16612:0crwdne16612:0 crwdns16613:0crwdne16613:0 - -## crwdns16614:0crwdne16614:0 - -crwdns16615:0crwdne16615:0 - -| crwdns16616:0crwdne16616:0 | crwdns16617:0crwdne16617:0 | -| -------------------------- | -------------------------- | -| crwdns16618:0crwdne16618:0 | crwdns16619:0crwdne16619:0 | -| crwdns16620:0crwdne16620:0 | crwdns16621:0crwdne16621:0 | -| crwdns16622:0crwdne16622:0 | crwdns16623:0crwdne16623:0 | -| crwdns16624:0crwdne16624:0 | crwdns16625:0crwdne16625:0 | -| crwdns16626:0crwdne16626:0 | crwdns16627:0crwdne16627:0 | -| crwdns16628:0crwdne16628:0 | crwdns16629:0crwdne16629:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-expected.md deleted file mode 100644 index 2475d920f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-expected.md +++ /dev/null @@ -1,61 +0,0 @@ -crwdns16634:0crwdne16634:0 - -*BlockTag: crwdns16635:0crwdne16635:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152883319/?autostart=false"} - -*BlockTag: crwdns18485:0crwdne18485:0* - -{panel type="help"} - -# crwdns18486:0crwdne18486:0 - -<pre><code class="scratch:split:random">crwdns16637:0crwdne16637:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16638:0crwdne16638:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16639:0crwdne16639:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16640:0crwdne16640:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16641:0crwdne16641:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16642:0[0]crwdnd16642:0[90]crwdnd16642:0[90]crwdnd16642:0[90]crwdnd16642:0[180]crwdnd16642:0[180]crwdnd16642:0[180]crwdne16642:0 -</code></pre> - -*BlockTag: crwdns16643:0crwdne16643:0* - -{panel end} - -*BlockTag: crwdns18487:0crwdne18487:0* - -{panel type="help"} - -# crwdns18488:0crwdne18488:0 - -<pre><code class="scratch:split:random">crwdns16645:0crwdne16645:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16646:0crwdne16646:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16647:0crwdne16647:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16648:0crwdne16648:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16649:0crwdne16649:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16650:0[90]crwdnd16650:0[180]crwdnd16650:0[90]crwdnd16650:0[180]crwdne16650:0 -</code></pre> - -*BlockTag: crwdns16651:0crwdne16651:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-hints.md deleted file mode 100644 index 7f95db0d6..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-hints.md +++ /dev/null @@ -1,16 +0,0 @@ -crwdns16598:0crwdne16598:0 - -- crwdns16599:0crwdne16599:0 -- crwdns16600:0crwdne16600:0 -- crwdns16601:0crwdne16601:0 -- crwdns16602:0crwdne16602:0 -- crwdns16603:0crwdne16603:0 - -crwdns16604:0crwdne16604:0 - -- crwdns16605:0crwdne16605:0 crwdns16606:0crwdne16606:0 - -- crwdns16607:0crwdne16607:0 crwdns16608:0crwdne16608:0 - - <pre><code class="scratch:">crwdns16609:0[angle]crwdnd16609:0[180]crwdnd16609:0[angle]crwdnd16609:0[90]crwdnd16609:0[angle]crwdnd16609:0[90]crwdnd16609:0[angle]crwdnd16609:0[180]crwdne16609:0 -</code></pre> \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-solution.md deleted file mode 100644 index cc8b4ae4c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-angles/scratch-solution.md +++ /dev/null @@ -1,11 +0,0 @@ -**crwdns16630:0crwdne16630:0** - -```scratch -crwdns16631:0[0]crwdnd16631:0[90]crwdnd16631:0[90]crwdnd16631:0[90]crwdnd16631:0[180]crwdnd16631:0[180]crwdnd16631:0[180]crwdne16631:0 -``` - -**crwdns16632:0crwdne16632:0** - -```scratch -crwdns16633:0[180]crwdnd16633:0[90]crwdnd16633:0[90]crwdnd16633:0[180]crwdne16633:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/draw-different-types-of-triangles.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/draw-different-types-of-triangles.md deleted file mode 100644 index 35ca78c2f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/draw-different-types-of-triangles.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns16124:0crwdne16124:0 - -## crwdns16125:0crwdne16125:0 - -crwdns16126:0crwdne16126:0 crwdns16127:0crwdne16127:0 - -## crwdns16128:0crwdne16128:0 - -crwdns16129:0crwdne16129:0 - -| crwdns16130:0crwdne16130:0 | crwdns16131:0crwdne16131:0 | -| -------------------------- | -------------------------- | -| crwdns16132:0crwdne16132:0 | crwdns16133:0crwdne16133:0 | -| crwdns16134:0crwdne16134:0 | crwdns16135:0crwdne16135:0 | -| crwdns16136:0crwdne16136:0 | crwdns16137:0crwdne16137:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/extra-challenge.md deleted file mode 100644 index 937c9eb20..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16118:0crwdne16118:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-expected.md deleted file mode 100644 index fea8f9b25..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-expected.md +++ /dev/null @@ -1,33 +0,0 @@ -crwdns16139:0crwdne16139:0 - -*BlockTag: crwdns16140:0crwdne16140:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152883486/?autostart=false"} - -*BlockTag: crwdns18451:0crwdne18451:0* - -{panel type="help"} - -# crwdns18452:0crwdne18452:0 - -<pre><code class="scratch:split:random">crwdns16142:0crwdne16142:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16143:0crwdne16143:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16144:0crwdne16144:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16145:0crwdne16145:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16146:0crwdne16146:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16147:0[90]crwdnd16147:0[90]crwdnd16147:0[90]crwdne16147:0 -</code></pre> - -*BlockTag: crwdns16148:0crwdne16148:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-hints.md deleted file mode 100644 index 91de4b2b3..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-hints.md +++ /dev/null @@ -1,5 +0,0 @@ -- crwdns16119:0crwdne16119:0 -- crwdns16120:0crwdne16120:0 -- crwdns16121:0crwdne16121:0 -- crwdns16122:0crwdne16122:0 -- crwdns16123:0crwdne16123:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-solution.md deleted file mode 100644 index 8930d2904..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-different-types-of-triangles/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16138:0[90]crwdnd16138:0[90]crwdnd16138:0[90]crwdne16138:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/draw-pentagon-with-loop.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/draw-pentagon-with-loop.md deleted file mode 100644 index 77350a2ef..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/draw-pentagon-with-loop.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16872:0crwdne16872:0 - -## crwdns16873:0crwdne16873:0 - -crwdns16874:0crwdne16874:0 - -## crwdns16875:0crwdne16875:0 - -crwdns16876:0crwdne16876:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/extra-challenge.md deleted file mode 100644 index 21100aeb2..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16877:0crwdne16877:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-expected.md deleted file mode 100644 index f8b7fe7f2..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16882:0crwdne16882:0 - -*BlockTag: crwdns16883:0crwdne16883:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152447879/?autostart=false"} - -*BlockTag: crwdns18509:0crwdne18509:0* - -{panel type="help"} - -# crwdns18510:0crwdne18510:0 - -<pre><code class="scratch:split:random">crwdns16885:0crwdne16885:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16886:0crwdne16886:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16887:0crwdne16887:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16888:0crwdne16888:0 -</code></pre> - -*BlockTag: crwdns16889:0crwdne16889:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-hints.md deleted file mode 100644 index 84e6092fa..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16878:0crwdne16878:0 -- crwdns16879:0crwdne16879:0 crwdns16880:0crwdne16880:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-solution.md deleted file mode 100644 index dd75c5fb5..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-with-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16881:0crwdne16881:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/draw-pentagon-without-loop.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/draw-pentagon-without-loop.md deleted file mode 100644 index 0afef171e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/draw-pentagon-without-loop.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16733:0crwdne16733:0 - -## crwdns16734:0crwdne16734:0 - -crwdns16735:0crwdne16735:0 - -## crwdns16736:0crwdne16736:0 - -crwdns16737:0crwdne16737:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-expected.md deleted file mode 100644 index df950e1d8..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16742:0crwdne16742:0 - -*BlockTag: crwdns16743:0crwdne16743:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152447785/?autostart=false"} - -*BlockTag: crwdns18497:0crwdne18497:0* - -{panel type="help"} - -# crwdns18498:0crwdne18498:0 - -<pre><code class="scratch:split:random">crwdns16745:0crwdne16745:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16746:0crwdne16746:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16747:0crwdne16747:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16748:0crwdne16748:0 -</code></pre> - -*BlockTag: crwdns16749:0crwdne16749:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-hints.md deleted file mode 100644 index 5634ded6e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16738:0crwdne16738:0 -- crwdns16739:0crwdne16739:0 crwdns16740:0crwdne16740:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-solution.md deleted file mode 100644 index c8380f0fb..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-pentagon-without-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16741:0crwdne16741:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/draw-regular-polygons.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/draw-regular-polygons.md deleted file mode 100644 index 2273524bf..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/draw-regular-polygons.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16855:0crwdne16855:0 - -## crwdns16856:0crwdne16856:0 - -crwdns16857:0crwdne16857:0 - -## crwdns16858:0crwdne16858:0 - -crwdns16859:0crwdne16859:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/extra-challenge.md deleted file mode 100644 index c469be8d8..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16849:0crwdne16849:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-expected.md deleted file mode 100644 index cb9d5da78..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-expected.md +++ /dev/null @@ -1,36 +0,0 @@ -crwdns16861:0crwdne16861:0 - -*BlockTag: crwdns16862:0crwdne16862:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152496450/?autostart=false"} - -*BlockTag: crwdns18507:0crwdne18507:0* - -{panel type="help"} - -# crwdns18508:0crwdne18508:0 - -<pre><code class="scratch:split:random">crwdns16864:0crwdne16864:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16865:0crwdne16865:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16866:0crwdne16866:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16867:0crwdne16867:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16868:0crwdne16868:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16869:0crwdne16869:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16870:0crwdne16870:0 -</code></pre> - -*BlockTag: crwdns16871:0crwdne16871:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-hints.md deleted file mode 100644 index c5a1b0295..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns16850:0crwdne16850:0 -- crwdns16851:0crwdne16851:0 crwdns16852:0crwdne16852:0 -- crwdns16853:0crwdne16853:0 crwdns16854:0crwdne16854:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-solution.md deleted file mode 100644 index f9bc4d39d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-regular-polygons/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16860:0crwdne16860:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/draw-rhombus.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/draw-rhombus.md deleted file mode 100644 index bd5b8867e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/draw-rhombus.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns16284:0crwdne16284:0 - -## crwdns16285:0crwdne16285:0 - -crwdns16286:0crwdne16286:0 - -## crwdns16287:0crwdne16287:0 - -crwdns16288:0crwdne16288:0 - -| crwdns16289:0crwdne16289:0 | crwdns16290:0crwdne16290:0 | -| -------------------------- | -------------------------- | -| crwdns16291:0crwdne16291:0 | crwdns16292:0crwdne16292:0 | -| crwdns16293:0crwdne16293:0 | crwdns16294:0crwdne16294:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/extra-challenge.md deleted file mode 100644 index 753218653..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/extra-challenge.md +++ /dev/null @@ -1,9 +0,0 @@ -crwdns16295:0crwdne16295:0 crwdns16296:0crwdne16296:0 crwdns16297:0crwdne16297:0 - -*BlockTag: crwdns16298:0crwdne16298:0* - -{image file-path="img/topics/programming-challenges/geometry-house.png"} - -*BlockTag: crwdns16299:0crwdne16299:0* - -{image file-path="img/topics/programming-challenges/geometry-boat.png"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-expected.md deleted file mode 100644 index fcf17e2ed..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16305:0crwdne16305:0 - -*BlockTag: crwdns16306:0crwdne16306:0* - -{iframe link="https://scratch.mit.edu/projects/embed/153725030/?autostart=false"} - -*BlockTag: crwdns18459:0crwdne18459:0* - -{panel type="help"} - -# crwdns18460:0crwdne18460:0 - -<pre><code class="scratch:split:random">crwdns16308:0crwdne16308:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16309:0crwdne16309:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16310:0crwdne16310:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16311:0crwdne16311:0 -</code></pre> - -*BlockTag: crwdns16312:0crwdne16312:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-hints.md deleted file mode 100644 index 95b595ed4..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-hints.md +++ /dev/null @@ -1,4 +0,0 @@ -- crwdns16300:0crwdne16300:0 -- crwdns16301:0crwdne16301:0 -- crwdns16302:0crwdne16302:0 -- crwdns16303:0crwdne16303:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-solution.md deleted file mode 100644 index 04c53f1db..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-rhombus/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16304:0crwdne16304:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/draw-square-with-loop.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/draw-square-with-loop.md deleted file mode 100644 index 90e986989..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/draw-square-with-loop.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16894:0crwdne16894:0 - -## crwdns16895:0crwdne16895:0 - -crwdns16896:0crwdne16896:0 - -## crwdns16897:0crwdne16897:0 - -crwdns16898:0crwdne16898:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/extra-challenge.md deleted file mode 100644 index b38bd49fc..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16890:0crwdne16890:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-expected.md deleted file mode 100644 index b5ff70f14..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16900:0crwdne16900:0 - -*BlockTag: crwdns16901:0crwdne16901:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152445283/?autostart=false"} - -*BlockTag: crwdns18511:0crwdne18511:0* - -{panel type="help"} - -# crwdns18512:0crwdne18512:0 - -<pre><code class="scratch:split:random">crwdns16903:0crwdne16903:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16904:0crwdne16904:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16905:0crwdne16905:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16906:0crwdne16906:0 -</code></pre> - -*BlockTag: crwdns16907:0crwdne16907:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-hints.md deleted file mode 100644 index e60913d96..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns16891:0crwdne16891:0 - -- crwdns16892:0crwdne16892:0 crwdns16893:0crwdne16893:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-solution.md deleted file mode 100644 index 0225f83f5..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-with-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16899:0crwdne16899:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/draw-square-without-loop.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/draw-square-without-loop.md deleted file mode 100644 index e1a49a547..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/draw-square-without-loop.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns17137:0crwdne17137:0 - -## crwdns17138:0crwdne17138:0 - -crwdns17139:0crwdne17139:0 - -## crwdns17140:0crwdne17140:0 - -crwdns17141:0crwdne17141:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-expected.md deleted file mode 100644 index a1a962a55..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns17146:0crwdne17146:0 - -*BlockTag: crwdns17147:0crwdne17147:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152445214/?autostart=false"} - -*BlockTag: crwdns18535:0crwdne18535:0* - -{panel type="help"} - -# crwdns18536:0crwdne18536:0 - -<pre><code class="scratch:split:random">crwdns17149:0crwdne17149:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17150:0crwdne17150:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17151:0crwdne17151:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17152:0crwdne17152:0 -</code></pre> - -*BlockTag: crwdns17153:0crwdne17153:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-hints.md deleted file mode 100644 index 8aae46579..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns17142:0crwdne17142:0 - -- crwdns17143:0crwdne17143:0 crwdns17144:0crwdne17144:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-solution.md deleted file mode 100644 index ea0a1dfe4..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-square-without-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17145:0crwdne17145:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/draw-star-with-odd-points.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/draw-star-with-odd-points.md deleted file mode 100644 index bd71afa0f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/draw-star-with-odd-points.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns16515:0crwdne16515:0 - -## crwdns16516:0crwdne16516:0 - -crwdns16517:0crwdne16517:0 - -## crwdns16518:0crwdne16518:0 - -crwdns16519:0crwdne16519:0 - -| crwdns16520:0crwdne16520:0 | crwdns16521:0crwdne16521:0 | -| -------------------------- | -------------------------- | -| crwdns16522:0crwdne16522:0 | crwdns16523:0crwdne16523:0 | -| crwdns16524:0crwdne16524:0 | crwdns16525:0crwdne16525:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-expected.md deleted file mode 100644 index 88307e44a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16529:0crwdne16529:0 - -*BlockTag: crwdns16530:0crwdne16530:0* - -{iframe link="https://scratch.mit.edu/projects/embed/153925156/?autostart=false"} - -*BlockTag: crwdns18477:0crwdne18477:0* - -{panel type="help"} - -# crwdns18478:0crwdne18478:0 - -<pre><code class="scratch:split:random">crwdns16532:0crwdne16532:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16533:0crwdne16533:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16534:0crwdne16534:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16535:0crwdne16535:0 -</code></pre> - -*BlockTag: crwdns16536:0crwdne16536:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-hints.md deleted file mode 100644 index 838c65f25..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16526:0crwdne16526:0 -- crwdns16527:0crwdne16527:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-solution.md deleted file mode 100644 index 8da640d11..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-with-odd-points/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16528:0crwdne16528:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/draw-star-without-crossing-lines.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/draw-star-without-crossing-lines.md deleted file mode 100644 index 1c000c53b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/draw-star-without-crossing-lines.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns16993:0crwdne16993:0 - -## crwdns16994:0crwdne16994:0 - -crwdns16995:0crwdne16995:0 - -*BlockTag: crwdns16996:0crwdne16996:0* - -{image file-path="img/topics/programming-challenges/star-without-crossing-lines.png"} - -## crwdns16997:0crwdne16997:0 - -crwdns16998:0crwdne16998:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-expected.md deleted file mode 100644 index 1e9326e75..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns17002:0crwdne17002:0 - -*BlockTag: crwdns17003:0crwdne17003:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152929980/?autostart=false"} - -*BlockTag: crwdns18521:0crwdne18521:0* - -{panel type="help"} - -# crwdns18522:0crwdne18522:0 - -<pre><code class="scratch:split:random">crwdns17005:0crwdne17005:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17006:0crwdne17006:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17007:0crwdne17007:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17008:0crwdne17008:0 -</code></pre> - -*BlockTag: crwdns17009:0crwdne17009:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-hints.md deleted file mode 100644 index b193d3a0a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16999:0crwdne16999:0 -- crwdns17000:0crwdne17000:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-solution.md deleted file mode 100644 index 5734d266f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star-without-crossing-lines/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17001:0crwdne17001:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/draw-star.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/draw-star.md deleted file mode 100644 index 2dfe3b5b6..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/draw-star.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns16949:0crwdne16949:0 - -## crwdns16950:0crwdne16950:0 - -crwdns16951:0crwdne16951:0 - -*BlockTag: crwdns16952:0crwdne16952:0* - -{image file-path="img/topics/programming-challenges/6-pointed-star.png"} - -## crwdns16953:0crwdne16953:0 - -crwdns16954:0crwdne16954:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-expected.md deleted file mode 100644 index 6ff950251..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-expected.md +++ /dev/null @@ -1,75 +0,0 @@ -crwdns16972:0crwdne16972:0 - -*BlockTag: crwdns16973:0crwdne16973:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152939066/?autostart=false"} - -*BlockTag: crwdns18515:0crwdne18515:0* - -{panel type="help"} - -# crwdns18516:0crwdne18516:0 - -<pre><code class="scratch:split:random">crwdns16975:0crwdne16975:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16976:0crwdne16976:0 - -</code></pre> - -<pre><code class="scratch:split:random">crwdns16977:0crwdne16977:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16978:0crwdne16978:0 -</code></pre> - -*BlockTag: crwdns16979:0crwdne16979:0* - -{panel end} - -*BlockTag: crwdns18517:0crwdne18517:0* - -{panel type="help"} - -# crwdns18518:0crwdne18518:0 - -<pre><code class="scratch:split:random">crwdns16981:0crwdne16981:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16982:0crwdne16982:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16983:0crwdne16983:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16984:0crwdne16984:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16985:0crwdne16985:0 -</code></pre> - -*BlockTag: crwdns16986:0crwdne16986:0* - -{panel end} - -*BlockTag: crwdns18519:0crwdne18519:0* - -{panel type="help"} - -# crwdns18520:0crwdne18520:0 - -<pre><code class="scratch:split:random">crwdns16988:0crwdne16988:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16989:0crwdne16989:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16990:0crwdne16990:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16991:0crwdne16991:0 -</code></pre> - -*BlockTag: crwdns16992:0crwdne16992:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-hints.md deleted file mode 100644 index 0186aaa26..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-hints.md +++ /dev/null @@ -1,24 +0,0 @@ -crwdns16955:0crwdne16955:0 - -- crwdns16956:0crwdne16956:0 - - *BlockTag: crwdns16957:0crwdne16957:0* - - {image file-path="img/topics/programming-challenges/geometry-challenge-7.4-solution-1.png"} - -- crwdns16958:0crwdne16958:0 - - 1. crwdns16959:0crwdne16959:0 - 2. crwdns16960:0crwdne16960:0 - 3. crwdns16961:0crwdne16961:0 - 4. crwdns16962:0crwdne16962:0 - - *BlockTag: crwdns16963:0crwdne16963:0* - - {image file-path="img/topics/programming-challenges/geometry-challenge-7.4-solution-2.png"} - -- crwdns16964:0crwdne16964:0 - - *BlockTag: crwdns16965:0crwdne16965:0* - - {image file-path="img/topics/programming-challenges/geometry-challenge-7.4-solution-3.png"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-solution.md deleted file mode 100644 index fbc49b0c7..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-star/scratch-solution.md +++ /dev/null @@ -1,17 +0,0 @@ -**crwdns16966:0crwdne16966:0** - -```scratch -crwdns16967:0crwdne16967:0 -``` - -**crwdns16968:0crwdne16968:0** - -```scratch -crwdns16969:0crwdne16969:0 -``` - -**crwdns16970:0crwdne16970:0** - -```scratch -crwdns16971:0crwdne16971:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/draw-triangle-with-loop.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/draw-triangle-with-loop.md deleted file mode 100644 index 76d326cab..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/draw-triangle-with-loop.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16313:0crwdne16313:0 - -## crwdns16314:0crwdne16314:0 - -crwdns16315:0crwdne16315:0 - -## crwdns16316:0crwdne16316:0 - -crwdns16317:0crwdne16317:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/extra-challenge.md deleted file mode 100644 index f8b0fee5b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16318:0crwdne16318:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-expected.md deleted file mode 100644 index 49d75c04f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16323:0crwdne16323:0 - -*BlockTag: crwdns16324:0crwdne16324:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152445649/?autostart=false"} - -*BlockTag: crwdns18461:0crwdne18461:0* - -{panel type="help"} - -# crwdns18462:0crwdne18462:0 - -<pre><code class="scratch:split:random">crwdns16326:0crwdne16326:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16327:0crwdne16327:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16328:0crwdne16328:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16329:0crwdne16329:0 -</code></pre> - -*BlockTag: crwdns16330:0crwdne16330:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-hints.md deleted file mode 100644 index eca959ab0..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16319:0crwdne16319:0 -- crwdns16320:0crwdne16320:0 crwdns16321:0crwdne16321:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-solution.md deleted file mode 100644 index 2a0dfcd62..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-with-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16322:0crwdne16322:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/draw-triangle-without-loop.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/draw-triangle-without-loop.md deleted file mode 100644 index 8794db4dc..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/draw-triangle-without-loop.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16413:0crwdne16413:0 - -## crwdns16414:0crwdne16414:0 - -crwdns16415:0crwdne16415:0 - -## crwdns16416:0crwdne16416:0 - -crwdns16417:0crwdne16417:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-expected.md deleted file mode 100644 index c7154a093..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16422:0crwdne16422:0 - -*BlockTag: crwdns16423:0crwdne16423:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152445553/?autostart=false"} - -*BlockTag: crwdns18469:0crwdne18469:0* - -{panel type="help"} - -# crwdns18470:0crwdne18470:0 - -<pre><code class="scratch:split:random">crwdns16425:0crwdne16425:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16426:0crwdne16426:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16427:0crwdne16427:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16428:0crwdne16428:0 -</code></pre> - -*BlockTag: crwdns16429:0crwdne16429:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-hints.md deleted file mode 100644 index 7dabca51a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16418:0crwdne16418:0 -- crwdns16419:0crwdne16419:0 crwdns16420:0crwdne16420:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-solution.md deleted file mode 100644 index 6df868bb1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/draw-triangle-without-loop/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16421:0crwdne16421:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/find-factors.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/find-factors.md deleted file mode 100644 index 5e228095e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/find-factors.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns17283:0crwdne17283:0 - -## crwdns17284:0crwdne17284:0 - -crwdns17285:0crwdne17285:0 crwdns17286:0crwdne17286:0 crwdns17287:0crwdne17287:0 - -## crwdns17288:0crwdne17288:0 - -crwdns17289:0crwdne17289:0 - -| crwdns17290:0crwdne17290:0 | crwdns17291:0crwdne17291:0 | -| -------------------------- | -------------------------- | -| crwdns17292:0crwdne17292:0 | crwdns17293:0crwdne17293:0 | -| crwdns17294:0crwdne17294:0 | crwdns17295:0crwdne17295:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-expected.md deleted file mode 100644 index 60f30802f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-expected.md +++ /dev/null @@ -1,55 +0,0 @@ -crwdns17312:0crwdne17312:0 - -*BlockTag: crwdns17313:0crwdne17313:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149429011/?autostart=false"} - -*BlockTag: crwdns18547:0crwdne18547:0* - -{panel type="help"} - -# crwdns18548:0crwdne18548:0 - -<pre><code class="scratch:split:random">crwdns17315:0crwdne17315:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17316:0crwdne17316:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17317:0[1]crwdne17317:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17318:0crwdne17318:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17319:0[0]crwdne17319:0 -</code></pre> - -*BlockTag: crwdns17320:0crwdne17320:0* - -{panel end} - -*BlockTag: crwdns18549:0crwdne18549:0* - -{panel type="help"} - -# crwdns18550:0crwdne18550:0 - -<pre><code class="scratch:split:random">crwdns17322:0crwdne17322:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17323:0crwdne17323:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17324:0crwdne17324:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17325:0crwdne17325:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17326:0[0]crwdnd17326:0[0]crwdne17326:0 -</code></pre> - -*BlockTag: crwdns17327:0crwdne17327:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-hints.md deleted file mode 100644 index c4f0690af..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-hints.md +++ /dev/null @@ -1,17 +0,0 @@ -crwdns17296:0crwdne17296:0 - -crwdns17297:0crwdne17297:0 - -crwdns17298:0crwdne17298:0 - -1. crwdns17299:0crwdne17299:0 -2. crwdns17300:0crwdne17300:0 -3. crwdns17301:0crwdne17301:0 -4. crwdns17302:0crwdne17302:0 - -crwdns17303:0crwdne17303:0 - -1. crwdns17304:0crwdne17304:0 -2. crwdns17305:0crwdne17305:0 -3. crwdns17306:0crwdne17306:0 -4. crwdns17307:0crwdne17307:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-solution.md deleted file mode 100644 index 1fe2cb57b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-factors/scratch-solution.md +++ /dev/null @@ -1,11 +0,0 @@ -**crwdns17308:0crwdne17308:0** - -```scratch -crwdns17309:0[1]crwdnd17309:0[0]crwdne17309:0 -``` - -**crwdns17310:0crwdne17310:0** - -```scratch -crwdns17311:0[0]crwdnd17311:0[0]crwdne17311:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/find-prime-factors.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/find-prime-factors.md deleted file mode 100644 index 8f454ae59..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/find-prime-factors.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns16149:0crwdne16149:0 - -## crwdns16150:0crwdne16150:0 - -crwdns16151:0crwdne16151:0 - -## crwdns16152:0crwdne16152:0 - -crwdns16153:0crwdne16153:0 - -| crwdns16154:0crwdne16154:0 | crwdns16155:0crwdne16155:0 | -| -------------------------- | -------------------------- | -| crwdns16156:0crwdne16156:0 | crwdns16157:0crwdne16157:0 | -| crwdns16158:0crwdne16158:0 | crwdns16159:0crwdne16159:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-expected.md deleted file mode 100644 index 19d7b7caf..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-expected.md +++ /dev/null @@ -1,33 +0,0 @@ -crwdns16163:0crwdne16163:0 - -*BlockTag: crwdns16164:0crwdne16164:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149429841/?autostart=false"} - -*BlockTag: crwdns18453:0crwdne18453:0* - -{panel type="help"} - -# crwdns18454:0crwdne18454:0 - -<pre><code class="scratch:split:random">crwdns16166:0crwdne16166:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16167:0[2]crwdnd16167:0[true]crwdnd16167:0[false]crwdne16167:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16168:0crwdne16168:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16169:0crwdne16169:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16170:0[0]crwdnd16170:0[1]crwdnd16170:0[0]crwdnd16170:0[true]crwdnd16170:0[0]crwdnd16170:0[false]crwdne16170:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16171:0crwdne16171:0 -</code></pre> - -*BlockTag: crwdns16172:0crwdne16172:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-hints.md deleted file mode 100644 index c59fc56d8..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns20014:0crwdne20014:0 crwdns16161:0crwdne16161:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-solution.md deleted file mode 100644 index 7a52ae96c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/find-prime-factors/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16162:0[0]crwdnd16162:0[0]crwdnd16162:0[2]crwdnd16162:0[true]crwdnd16162:0[1]crwdnd16162:0[false]crwdnd16162:0[0]crwdnd16162:0[false]crwdnd16162:0[true]crwdne16162:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/flip-coins.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/flip-coins.md deleted file mode 100644 index 5e30a9795..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/flip-coins.md +++ /dev/null @@ -1,28 +0,0 @@ -# crwdns17010:0crwdne17010:0 - -## crwdns17011:0crwdne17011:0 - -crwdns17012:0crwdne17012:0 - -## crwdns17013:0crwdne17013:0 - -crwdns17014:0crwdne17014:0 - -<table> - <tr> - <th>crwdns17015:0crwdne17015:0</th> - <th>crwdns17016:0crwdne17016:0</th> - </tr> - <tr> - <td>crwdns17017:0crwdne17017:0</td> - <td>crwdns17018:0crwdne17018:0</td> - </tr> - <tr> - <td>crwdns17019:0crwdne17019:0</td> - <td>crwdns17020:0crwdne17020:0</td> - </tr> - <tr> - <td>crwdns17021:0crwdne17021:0</td> - <td>crwdns17022:0crwdne17022:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-expected.md deleted file mode 100644 index b4320ebe1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17026:0crwdne17026:0 - -*BlockTag: crwdns17027:0crwdne17027:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149429925/?autostart=false"} - -*BlockTag: crwdns18523:0crwdne18523:0* - -{panel type="help"} - -# crwdns18524:0crwdne18524:0 - -<pre><code class="scratch:split:random">crwdns17029:0crwdne17029:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17030:0[0]crwdnd17030:0[0]crwdnd17030:0[0]crwdne17030:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17031:0crwdne17031:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17032:0crwdne17032:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17033:0[1]crwdne17033:0 -</code></pre> - -*BlockTag: crwdns17034:0crwdne17034:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-hints.md deleted file mode 100644 index 26ba8e274..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns17023:0crwdne17023:0 -- crwdns17024:0crwdne17024:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-solution.md deleted file mode 100644 index b90f3ae9d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/flip-coins/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17025:0[0]crwdnd17025:0[0]crwdnd17025:0[0]crwdnd17025:0[1]crwdne17025:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/generate-primes.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/generate-primes.md deleted file mode 100644 index 92a3f68e9..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/generate-primes.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns16712:0crwdne16712:0 - -## crwdns16713:0crwdne16713:0 - -crwdns16714:0crwdne16714:0 - -## crwdns16715:0crwdne16715:0 - -crwdns16716:0crwdne16716:0 - -| crwdns16717:0crwdne16717:0 | crwdns16718:0crwdne16718:0 | -| -------------------------- | -------------------------- | -| crwdns16719:0crwdne16719:0 | crwdns16720:0crwdne16720:0 | -| crwdns16721:0crwdne16721:0 | crwdns16722:0crwdne16722:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-expected.md deleted file mode 100644 index bad15d882..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16724:0crwdne16724:0 - -*BlockTag: crwdns16725:0crwdne16725:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149429772/?autostart=false"} - -*BlockTag: crwdns18495:0crwdne18495:0* - -{panel type="help"} - -# crwdns18496:0crwdne18496:0 - -<pre><code class="scratch:split:random">crwdns16727:0crwdne16727:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16728:0[2]crwdnd16728:0[true]crwdnd16728:0[2]crwdnd16728:0[false]crwdne16728:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16729:0crwdne16729:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16730:0crwdne16730:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16731:0[0]crwdnd16731:0[true]crwdnd16731:0[false]crwdne16731:0 -</code></pre> - -*BlockTag: crwdns16732:0crwdne16732:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-hints.md deleted file mode 100644 index 6c1630998..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns16709:0crwdne16709:0 crwdns16710:0crwdne16710:0 crwdns16711:0crwdne16711:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-solution.md deleted file mode 100644 index 3bfe19e6f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/generate-primes/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16723:0[2]crwdnd16723:0[true]crwdnd16723:0[2]crwdnd16723:0[false]crwdnd16723:0[0]crwdnd16723:0[false]crwdnd16723:0[true]crwdne16723:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/go-up-1-10-100-numbers.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/go-up-1-10-100-numbers.md deleted file mode 100644 index 12234c798..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/go-up-1-10-100-numbers.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16671:0crwdne16671:0 - -## crwdns16672:0crwdne16672:0 - -crwdns16673:0crwdne16673:0 crwdns16674:0crwdne16674:0 crwdns16675:0crwdne16675:0 - -## crwdns16676:0crwdne16676:0 - -crwdns16677:0crwdne16677:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-expected.md deleted file mode 100644 index 58b47b1f7..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16680:0crwdne16680:0 - -*BlockTag: crwdns16681:0crwdne16681:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149428180/?autostart=false"} - -*BlockTag: crwdns18491:0crwdne18491:0* - -{panel type="help"} - -# crwdns18492:0crwdne18492:0 - -<pre><code class="scratch:split:random">crwdns16683:0crwdne16683:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16684:0crwdne16684:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16685:0crwdne16685:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16686:0crwdne16686:0 crwdns16687:0crwdne16687:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16688:0[1]crwdne16688:0 -</code></pre> - -*BlockTag: crwdns16689:0crwdne16689:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-hints.md deleted file mode 100644 index 5bdbfde58..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-hints.md +++ /dev/null @@ -1,7 +0,0 @@ -- crwdns16668:0crwdne16668:0 - - *BlockTag: crwdns16669:0crwdne16669:0* - - {image file-path="img/topics/programming-challenges/numeracy-go-up-list.png"} - -- crwdns16670:0crwdne16670:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-solution.md deleted file mode 100644 index acecb0183..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-1-10-100-numbers/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16678:0[1]crwdne16678:0 crwdns16679:0crwdne16679:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/extra-challenge.md deleted file mode 100644 index f8527b99b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/extra-challenge.md +++ /dev/null @@ -1,3 +0,0 @@ -crwdns16384:0crwdne16384:0 crwdns16385:0crwdne16385:0 crwdns16386:0crwdne16386:0 crwdns16387:0crwdne16387:0 - -crwdns16388:0crwdne16388:0 crwdns16389:0crwdne16389:0 crwdns16390:0crwdne16390:0 crwdns16391:0crwdne16391:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/go-up-10-numbers.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/go-up-10-numbers.md deleted file mode 100644 index df04aadc5..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/go-up-10-numbers.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns16392:0crwdne16392:0 - -## crwdns16393:0crwdne16393:0 - -crwdns16394:0crwdne16394:0 crwdns16395:0crwdne16395:0 crwdns16396:0crwdne16396:0 - -## crwdns16397:0crwdne16397:0 - -crwdns16398:0crwdne16398:0 - -| crwdns16399:0crwdne16399:0 | crwdns16400:0crwdne16400:0 | -| -------------------------- | -------------------------- | -| crwdns16401:0crwdne16401:0 | crwdns16402:0crwdne16402:0 | -| crwdns16403:0crwdne16403:0 | crwdns16404:0crwdne16404:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/scratch-expected.md deleted file mode 100644 index 05ddefd6e..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/scratch-expected.md +++ /dev/null @@ -1,18 +0,0 @@ -crwdns16407:0crwdne16407:0 - -*BlockTag: crwdns16408:0crwdne16408:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149427886/?autostart=false"} - -*BlockTag: crwdns18467:0crwdne18467:0* - -{panel type="help"} - -# crwdns18468:0crwdne18468:0 - -<pre><code class="scratch:split:random">crwdns16410:0crwdne16410:0 crwdns16411:0[.]crwdne16411:0 -</code></pre> - -*BlockTag: crwdns16412:0crwdne16412:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/scratch-solution.md deleted file mode 100644 index fd5c309e9..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/go-up-10-numbers/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16405:0crwdne16405:0 crwdns16406:0[.]crwdne16406:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/modify-bee-bot.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/modify-bee-bot.md deleted file mode 100644 index de7cb21f5..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/modify-bee-bot.md +++ /dev/null @@ -1,11 +0,0 @@ -# crwdns17234:0crwdne17234:0 - -## crwdns17235:0crwdne17235:0 - -crwdns17236:0crwdne17236:0 crwdns17237:0crwdne17237:0 - -## crwdns17238:0crwdne17238:0 - -crwdns17239:0crwdne17239:0 - -crwdns17240:0crwdne17240:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/scratch-expected.md deleted file mode 100644 index 5810efffa..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17273:0crwdne17273:0 - -*BlockTag: crwdns17274:0crwdne17274:0* - -{iframe link="https://scratch.mit.edu/projects/embed/164789645/?autostart=false"} - -*BlockTag: crwdns18545:0crwdne18545:0* - -{panel type="help"} - -# crwdns18546:0crwdne18546:0 - -crwdns17276:0crwdne17276:0 - -<pre><code class="scratch:split:random">crwdns17277:0[spin]crwdne17277:0 -</code></pre> - -crwdns17278:0crwdne17278:0 - -<pre><code class="scratch:split:random">crwdns17279:0[spin]crwdne17279:0 -</code></pre> - -crwdns17280:0crwdne17280:0 - -<pre><code class="scratch:split:random">crwdns17281:0crwdne17281:0 -</code></pre> - -*BlockTag: crwdns17282:0crwdne17282:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/scratch-solution.md deleted file mode 100644 index 833dd0dca..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modify-bee-bot/scratch-solution.md +++ /dev/null @@ -1,77 +0,0 @@ -**crwdns17241:0crwdne17241:0** - -crwdns17242:0crwdne17242:0 - -```scratch -crwdns17243:0[forward]crwdne17243:0 -``` - -crwdns17244:0crwdne17244:0 - -```scratch -crwdns17245:0[backward]crwdne17245:0 -``` - -crwdns17246:0crwdne17246:0 - -```scratch -crwdns17247:0crwdne17247:0 -``` - -crwdns17248:0crwdne17248:0 - -```scratch -crwdns17249:0crwdne17249:0 -``` - -crwdns17250:0crwdne17250:0 - -```scratch -crwdns17251:0crwdne17251:0 -``` - -crwdns17252:0crwdne17252:0 - -```scratch -crwdns17253:0crwdne17253:0 -``` - -crwdns17254:0crwdne17254:0 - -```scratch -crwdns17255:0crwdne17255:0 -``` - -crwdns17256:0crwdne17256:0 - -```scratch -crwdns17257:0[spin]crwdne17257:0 -``` - -crwdns17258:0crwdne17258:0 - -```scratch -crwdns17259:0crwdne17259:0 -``` - -**crwdns17260:0crwdne17260:0** - -crwdns17261:0crwdne17261:0 - -```scratch -crwdns17262:0crwdne17262:0 -``` - -crwdns17263:0crwdne17263:0 - -```scratch -crwdns17264:0[0]crwdnd17264:0[1]crwdnd17264:0[forward]crwdne17264:0 crwdns17265:0crwdne17265:0 crwdns17266:0[backward]crwdne17266:0 crwdns17267:0crwdne17267:0 crwdns17268:0[spin]crwdne17268:0 crwdns17269:0crwdne17269:0 crwdns17270:0crwdne17270:0 -``` - -```scratch -crwdns17271:0crwdne17271:0 -``` - -```scratch -crwdns17272:0crwdne17272:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/modulo-add-hours-12-hour-clock-without-mod.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/modulo-add-hours-12-hour-clock-without-mod.md deleted file mode 100644 index 2837fc6f5..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/modulo-add-hours-12-hour-clock-without-mod.md +++ /dev/null @@ -1,32 +0,0 @@ -# crwdns16485:0crwdne16485:0 - -## crwdns16486:0crwdne16486:0 - -crwdns16487:0crwdne16487:0 crwdns16488:0crwdne16488:0 - -## crwdns16489:0crwdne16489:0 - -crwdns16490:0crwdne16490:0 - -<table> - <tr> - <th>crwdns16491:0crwdne16491:0</th> - <th>crwdns16492:0crwdne16492:0</th> - </tr> - <tr> - <td>crwdns16493:0crwdne16493:0</td> - <td>crwdns16494:0crwdne16494:0</td> - </tr> - <tr> - <td>crwdns16495:0crwdne16495:0</td> - <td>crwdns16496:0crwdne16496:0</td> - </tr> - <tr> - <td>crwdns16497:0crwdne16497:0</td> - <td>crwdns16498:0crwdne16498:0</td> - </tr> - <tr> - <td>crwdns16499:0crwdne16499:0</td> - <td>crwdns16500:0crwdne16500:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-expected.md deleted file mode 100644 index b712c1a13..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16506:0crwdne16506:0 - -*BlockTag: crwdns16507:0crwdne16507:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165945729/?autostart=false"} - -*BlockTag: crwdns18475:0crwdne18475:0* - -{panel type="help"} - -# crwdns18476:0crwdne18476:0 - -<pre><code class="scratch:split:random">crwdns16509:0crwdne16509:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16510:0crwdne16510:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16511:0crwdne16511:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16512:0crwdne16512:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16513:0[12]crwdnd16513:0[12]crwdne16513:0 -</code></pre> - -*BlockTag: crwdns16514:0crwdne16514:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-hints.md deleted file mode 100644 index 1c3516a75..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns16501:0crwdne16501:0 crwdns16502:0crwdne16502:0 crwdns16503:0crwdne16503:0 crwdns16504:0crwdne16504:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-solution.md deleted file mode 100644 index 28dcffdec..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock-without-mod/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16505:0[12]crwdnd16505:0[12]crwdne16505:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/modulo-add-hours-12-hour-clock.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/modulo-add-hours-12-hour-clock.md deleted file mode 100644 index 052a16407..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/modulo-add-hours-12-hour-clock.md +++ /dev/null @@ -1,32 +0,0 @@ -# crwdns17176:0crwdne17176:0 - -## crwdns17177:0crwdne17177:0 - -crwdns17178:0crwdne17178:0 crwdns17179:0crwdne17179:0 crwdns17180:0crwdne17180:0 - -## crwdns17181:0crwdne17181:0 - -crwdns17182:0crwdne17182:0 - -<table> - <tr> - <th>crwdns17183:0crwdne17183:0</th> - <th>crwdns17184:0crwdne17184:0</th> - </tr> - <tr> - <td>crwdns17185:0crwdne17185:0</td> - <td>crwdns17186:0crwdne17186:0</td> - </tr> - <tr> - <td>crwdns17187:0crwdne17187:0</td> - <td>crwdns17188:0crwdne17188:0</td> - </tr> - <tr> - <td>crwdns17189:0crwdne17189:0</td> - <td>crwdns17190:0crwdne17190:0</td> - </tr> - <tr> - <td>crwdns17191:0crwdne17191:0</td> - <td>crwdns17192:0crwdne17192:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-expected.md deleted file mode 100644 index 1255eab3b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17197:0crwdne17197:0 - -*BlockTag: crwdns17198:0crwdne17198:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165593878/?autostart=false"} - -*BlockTag: crwdns18539:0crwdne18539:0* - -{panel type="help"} - -# crwdns18540:0crwdne18540:0 - -<pre><code class="scratch:split:random">crwdns17200:0crwdne17200:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17201:0crwdne17201:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17202:0crwdne17202:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17203:0crwdne17203:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17204:0[0]crwdne17204:0 -</code></pre> - -*BlockTag: crwdns17205:0crwdne17205:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-hints.md deleted file mode 100644 index 90813e45c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns17193:0crwdne17193:0 crwdns17194:0crwdne17194:0 crwdns17195:0crwdne17195:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-solution.md deleted file mode 100644 index 719ff204c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-12-hour-clock/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17196:0[0]crwdne17196:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/extra-challenge.md deleted file mode 100644 index f6074a4be..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16331:0crwdne16331:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/modulo-add-hours-24-hour-clock.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/modulo-add-hours-24-hour-clock.md deleted file mode 100644 index 9c1c54263..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/modulo-add-hours-24-hour-clock.md +++ /dev/null @@ -1,40 +0,0 @@ -# crwdns16335:0crwdne16335:0 - -## crwdns16336:0crwdne16336:0 - -crwdns16337:0crwdne16337:0 - -## crwdns16338:0crwdne16338:0 - -crwdns16339:0crwdne16339:0 - -<table> - <tr> - <th>crwdns16340:0crwdne16340:0</th> - <th>crwdns16341:0crwdne16341:0</th> - </tr> - <tr> - <td>crwdns16342:0crwdne16342:0</td> - <td>crwdns16343:0crwdne16343:0</td> - </tr> - <tr> - <td>crwdns16344:0crwdne16344:0</td> - <td>crwdns16345:0crwdne16345:0</td> - </tr> - <tr> - <td>crwdns16346:0crwdne16346:0</td> - <td>crwdns16347:0crwdne16347:0</td> - </tr> - <tr> - <td>crwdns16348:0crwdne16348:0</td> - <td>crwdns16349:0crwdne16349:0</td> - </tr> - <tr> - <td>crwdns16350:0crwdne16350:0</td> - <td>crwdns16351:0crwdne16351:0</td> - </tr> - <tr> - <td>crwdns16352:0crwdne16352:0</td> - <td>crwdns16353:0crwdne16353:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-expected.md deleted file mode 100644 index 693e3570f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16355:0crwdne16355:0 - -*BlockTag: crwdns16356:0crwdne16356:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165919715/?autostart=false"} - -*BlockTag: crwdns18463:0crwdne18463:0* - -{panel type="help"} - -# crwdns18464:0crwdne18464:0 - -<pre><code class="scratch:split:random">crwdns16358:0crwdne16358:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16359:0crwdne16359:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16360:0crwdne16360:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16361:0crwdne16361:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16362:0[0]crwdne16362:0 -</code></pre> - -*BlockTag: crwdns16363:0crwdne16363:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-hints.md deleted file mode 100644 index 09801c631..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns16332:0crwdne16332:0 crwdns16333:0crwdne16333:0 crwdns16334:0crwdne16334:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-solution.md deleted file mode 100644 index 4964da13a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-hours-24-hour-clock/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16354:0[0]crwdne16354:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/modulo-add-months.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/modulo-add-months.md deleted file mode 100644 index b21f7d4e1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/modulo-add-months.md +++ /dev/null @@ -1,36 +0,0 @@ -# crwdns16452:0crwdne16452:0 - -## crwdns16453:0crwdne16453:0 - -crwdns16454:0crwdne16454:0 - -## crwdns16455:0crwdne16455:0 - -crwdns16456:0crwdne16456:0 - -<table> - <tr> - <th>crwdns16457:0crwdne16457:0</th> - <th>crwdns16458:0crwdne16458:0</th> - </tr> - <tr> - <td>crwdns16459:0crwdne16459:0</td> - <td>crwdns16460:0crwdne16460:0</td> - </tr> - <tr> - <td>crwdns16461:0crwdne16461:0</td> - <td>crwdns16462:0crwdne16462:0</td> - </tr> - <tr> - <td>crwdns16463:0crwdne16463:0</td> - <td>crwdns16464:0crwdne16464:0</td> - </tr> - <tr> - <td>crwdns16465:0crwdne16465:0</td> - <td>crwdns16466:0crwdne16466:0</td> - </tr> - <tr> - <td>crwdns16467:0crwdne16467:0</td> - <td>crwdns16468:0crwdne16468:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-expected.md deleted file mode 100644 index 4f02eefee..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16475:0crwdne16475:0 - -*BlockTag: crwdns16476:0crwdne16476:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165598015/?autostart=false"} - -*BlockTag: crwdns18473:0crwdne18473:0* - -{panel type="help"} - -# crwdns18474:0crwdne18474:0 - -<pre><code class="scratch:split:random">crwdns16478:0crwdne16478:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16479:0[0]crwdne16479:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16480:0crwdne16480:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16481:0crwdne16481:0 crwdns16482:0[.]crwdne16482:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16483:0[0]crwdne16483:0 -</code></pre> - -*BlockTag: crwdns16484:0crwdne16484:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-hints.md deleted file mode 100644 index a74c8f40b..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-hints.md +++ /dev/null @@ -1,3 +0,0 @@ -- crwdns16469:0crwdne16469:0 crwdns16470:0crwdne16470:0 -- crwdns16471:0crwdne16471:0 -- crwdns16472:0crwdne16472:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-solution.md deleted file mode 100644 index 063630121..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-months/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16473:0[0]crwdnd16473:0[0]crwdne16473:0 crwdns16474:0[.]crwdne16474:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/modulo-add-video-timings.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/modulo-add-video-timings.md deleted file mode 100644 index e6cd14668..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/modulo-add-video-timings.md +++ /dev/null @@ -1,28 +0,0 @@ -# crwdns16571:0crwdne16571:0 - -## crwdns16572:0crwdne16572:0 - -crwdns16573:0crwdne16573:0 crwdns16574:0crwdne16574:0 crwdns16575:0crwdne16575:0 crwdns16576:0crwdne16576:0 - -## crwdns16577:0crwdne16577:0 - -crwdns16578:0crwdne16578:0 - -<table> - <tr> - <th>crwdns16579:0crwdne16579:0</th> - <th>crwdns16580:0crwdne16580:0</th> - </tr> - <tr> - <td>crwdns16581:0crwdne16581:0</td> - <td><br>crwdns16582:0crwdne16582:0</td> - </tr> - <tr> - <td>crwdns16583:0crwdne16583:0</td> - <td><br>crwdns16584:0crwdne16584:0</td> - </tr> - <tr> - <td>crwdns16585:0crwdne16585:0</td> - <td><br>crwdns16586:0crwdne16586:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-expected.md deleted file mode 100644 index 6943b2e3d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16590:0crwdne16590:0 - -*BlockTag: crwdns16591:0crwdne16591:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165605502/?autostart=false"} - -*BlockTag: crwdns18483:0crwdne18483:0* - -{panel type="help"} - -# crwdns18484:0crwdne18484:0 - -<pre><code class="scratch:split:random">crwdns16593:0crwdne16593:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdnd16594:0[0]crwdne16594:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16595:0crwdne16595:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16596:0[59]crwdnd16596:0[59]crwdne16596:0 -</code></pre> - -*BlockTag: crwdns16597:0crwdne16597:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-hints.md deleted file mode 100644 index a121e62a2..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16587:0crwdne16587:0 -- crwdns16588:0crwdne16588:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-solution.md deleted file mode 100644 index 7bb90443c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-add-video-timings/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[0]crwdnd16589:0[59]crwdnd16589:0[59]crwdne16589:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/modulo-check-divisor.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/modulo-check-divisor.md deleted file mode 100644 index 29a882f5d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/modulo-check-divisor.md +++ /dev/null @@ -1,24 +0,0 @@ -# crwdns17154:0crwdne17154:0 - -## crwdns17155:0crwdne17155:0 - -crwdns17156:0crwdne17156:0 - -## crwdns17157:0crwdne17157:0 - -crwdns17158:0crwdne17158:0 - -<table> - <tr> - <th>crwdns17159:0crwdne17159:0</th> - <th>crwdns17160:0crwdne17160:0</th> - </tr> - <tr> - <td>crwdns17161:0crwdne17161:0</td> - <td>crwdns17162:0crwdne17162:0</td> - </tr> - <tr> - <td>crwdns17163:0crwdne17163:0</td> - <td>crwdns17164:0crwdne17164:0</td> - </tr> -</table> diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-expected.md deleted file mode 100644 index 6bdd28636..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns17167:0crwdne17167:0 - -*BlockTag: crwdns17168:0crwdne17168:0* - -{iframe link="https://scratch.mit.edu/projects/embed/149428777/?autostart=false"} - -*BlockTag: crwdns18537:0crwdne18537:0* - -{panel type="help"} - -# crwdns18538:0crwdne18538:0 - -<pre><code class="scratch:split:random">crwdns17170:0crwdne17170:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17171:0crwdne17171:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17172:0crwdne17172:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17173:0crwdne17173:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17174:0[0]crwdne17174:0 -</code></pre> - -*BlockTag: crwdns17175:0crwdne17175:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-hints.md deleted file mode 100644 index 65158448d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns17165:0crwdne17165:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-solution.md deleted file mode 100644 index 834a814a8..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-divisor/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17166:0[0]crwdne17166:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/modulo-check-leap-year.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/modulo-check-leap-year.md deleted file mode 100644 index 14e014d61..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/modulo-check-leap-year.md +++ /dev/null @@ -1,25 +0,0 @@ -# crwdns16776:0crwdne16776:0 - -## crwdns16777:0crwdne16777:0 - -crwdns16778:0crwdne16778:0 - -crwdns16779:0crwdne16779:0 - -1. crwdns16780:0crwdne16780:0 -2. crwdns16781:0crwdne16781:0 -3. crwdns16782:0crwdne16782:0 -4. crwdns16783:0crwdne16783:0 - -## crwdns16784:0crwdne16784:0 - -crwdns16785:0crwdne16785:0 - -| crwdns16786:0crwdne16786:0 | crwdns16787:0crwdne16787:0 | -| -------------------------- | -------------------------- | -| crwdns16788:0crwdne16788:0 | crwdns16789:0crwdne16789:0 | -| crwdns16790:0crwdne16790:0 | crwdns16791:0crwdne16791:0 | -| crwdns16792:0crwdne16792:0 | crwdns16793:0crwdne16793:0 | -| crwdns16794:0crwdne16794:0 | crwdns16795:0crwdne16795:0 | -| crwdns16796:0crwdne16796:0 | crwdns16797:0crwdne16797:0 | -| crwdns16798:0crwdne16798:0 | crwdns16799:0crwdne16799:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/scratch-expected.md deleted file mode 100644 index 94ed06a50..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16801:0crwdne16801:0 - -*BlockTag: crwdns16802:0crwdne16802:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165754830/?autostart=false"} - -*BlockTag: crwdns18501:0crwdne18501:0* - -{panel type="help"} - -# crwdns18502:0crwdne18502:0 - -<pre><code class="scratch:split:random">crwdns16804:0crwdne16804:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16805:0crwdne16805:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16806:0crwdne16806:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16807:0crwdne16807:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16808:0[0]crwdnd16808:0[0]crwdnd16808:0[0]crwdne16808:0 -</code></pre> - -*BlockTag: crwdns16809:0crwdne16809:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/scratch-solution.md deleted file mode 100644 index b157787a1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-check-leap-year/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16800:0[0]crwdnd16800:0[0]crwdnd16800:0[0]crwdne16800:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/modulo-display-midi-note.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/modulo-display-midi-note.md deleted file mode 100644 index 19138e371..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/modulo-display-midi-note.md +++ /dev/null @@ -1,17 +0,0 @@ -# crwdns16753:0crwdne16753:0 - -## crwdns16754:0crwdne16754:0 - -crwdns16755:0crwdne16755:0 - -## crwdns16756:0crwdne16756:0 - -crwdns16757:0crwdne16757:0 - -| crwdns16758:0crwdne16758:0 | crwdns16759:0crwdne16759:0 | -| -------------------------- | -------------------------- | -| crwdns16760:0crwdne16760:0 | crwdns16761:0crwdne16761:0 | -| crwdns16762:0crwdne16762:0 | crwdns16763:0crwdne16763:0 | -| crwdns16764:0crwdne16764:0 | crwdns16765:0crwdne16765:0 | -| crwdns16766:0crwdne16766:0 | crwdns16767:0crwdne16767:0 | -| crwdns16768:0crwdne16768:0 | crwdns16769:0crwdne16769:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-expected.md deleted file mode 100644 index 4c7e9aa22..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-expected.md +++ /dev/null @@ -1,18 +0,0 @@ -crwdns16771:0crwdne16771:0 - -*BlockTag: crwdns16772:0crwdne16772:0* - -{iframe link="https://scratch.mit.edu/projects/embed/165595531/?autostart=false"} - -*BlockTag: crwdns18499:0crwdne18499:0* - -{panel type="help"} - -# crwdns18500:0crwdne18500:0 - -<pre><code class="scratch:split:random">crwdns16774:0crwdne16774:0 -</code></pre> - -*BlockTag: crwdns16775:0crwdne16775:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-hints.md deleted file mode 100644 index 5059825cc..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16750:0crwdne16750:0 -- crwdns16751:0crwdne16751:0 crwdns16752:0crwdne16752:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-solution.md deleted file mode 100644 index 7250ee587..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-display-midi-note/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16770:0crwdne16770:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/modulo-even-odd-numbers.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/modulo-even-odd-numbers.md deleted file mode 100644 index 563456c7d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/modulo-even-odd-numbers.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns17428:0crwdne17428:0 - -## crwdns17429:0crwdne17429:0 - -crwdns17430:0crwdne17430:0 - -## crwdns17431:0crwdne17431:0 - -crwdns17432:0crwdne17432:0 - -| crwdns17433:0crwdne17433:0 | crwdns17434:0crwdne17434:0 | -| -------------------------- | -------------------------- | -| crwdns17435:0crwdne17435:0 | crwdns17436:0crwdne17436:0 | -| crwdns17437:0crwdne17437:0 | crwdns17438:0crwdne17438:0 | -| crwdns17439:0crwdne17439:0 | crwdns17440:0crwdne17440:0 | \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-expected.md deleted file mode 100644 index d7d3e0750..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-expected.md +++ /dev/null @@ -1,18 +0,0 @@ -crwdns17442:0crwdne17442:0 - -*BlockTag: crwdns17443:0crwdne17443:0* - -{iframe link="https://scratch.mit.edu/projects/embed/148426036/?autostart=false"} - -*BlockTag: crwdns18557:0crwdne18557:0* - -{panel type="help"} - -# crwdns18558:0crwdne18558:0 - -<pre><code class="scratch:split:random">crwdns17445:0[0]crwdne17445:0 -</code></pre> - -*BlockTag: crwdns17446:0crwdne17446:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-hints.md deleted file mode 100644 index 50a1f5da1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-hints.md +++ /dev/null @@ -1 +0,0 @@ -- crwdns17425:0crwdne17425:0 crwdns17426:0crwdne17426:0 crwdns17427:0crwdne17427:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-solution.md deleted file mode 100644 index f5af2bb46..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/modulo-even-odd-numbers/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17441:0[0]crwdne17441:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/program-bee-bot.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/program-bee-bot.md deleted file mode 100644 index 1fb858bda..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/program-bee-bot.md +++ /dev/null @@ -1,15 +0,0 @@ -# crwdns17447:0crwdne17447:0 - -## crwdns17448:0crwdne17448:0 - -crwdns17449:0crwdne17449:0 - -crwdns17450:0crwdne17450:0 - -crwdns17451:0crwdne17451:0 - -## crwdns17452:0crwdne17452:0 - -crwdns17453:0crwdne17453:0 - -crwdns17454:0crwdne17454:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/scratch-expected.md deleted file mode 100644 index d7ba08e22..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/scratch-expected.md +++ /dev/null @@ -1 +0,0 @@ -crwdns17456:0crwdne17456:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/scratch-solution.md deleted file mode 100644 index 9bcdd3c74..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/program-bee-bot/scratch-solution.md +++ /dev/null @@ -1 +0,0 @@ -crwdns17455:0crwdne17455:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/reflection.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/reflection.md deleted file mode 100644 index 69013b4bb..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/reflection.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns16537:0crwdne16537:0 - -## crwdns16538:0crwdne16538:0 - -crwdns16539:0crwdne16539:0 - -*BlockTag: crwdns16540:0crwdne16540:0* - -{image file-path="img/topics/programming-challenges/geometry-reflection.png"} - -## crwdns16541:0crwdne16541:0 - -crwdns16542:0crwdne16542:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-expected.md deleted file mode 100644 index 68b54763c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-expected.md +++ /dev/null @@ -1,52 +0,0 @@ -crwdns16556:0crwdne16556:0 - -*BlockTag: crwdns16557:0crwdne16557:0* - -{iframe link="https://scratch.mit.edu/projects/embed/153740678/?autostart=false"} - -*BlockTag: crwdns18479:0crwdne18479:0* - -{panel type="help"} - -# crwdns18480:0crwdne18480:0 - -<pre><code class="scratch:split:random">crwdns16559:0crwdne16559:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16560:0crwdne16560:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16561:0crwdne16561:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16562:0crwdne16562:0 -</code></pre> - -*BlockTag: crwdns16563:0crwdne16563:0* - -{panel end} - -*BlockTag: crwdns18481:0crwdne18481:0* - -{panel type="help"} - -# crwdns18482:0crwdne18482:0 - -<pre><code class="scratch:split:random">crwdns16565:0crwdne16565:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16566:0crwdne16566:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16567:0crwdne16567:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16568:0[90]crwdne16568:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16569:0crwdne16569:0 -</code></pre> - -*BlockTag: crwdns16570:0crwdne16570:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-hints.md deleted file mode 100644 index 3e95a9906..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-hints.md +++ /dev/null @@ -1,5 +0,0 @@ -crwdns16543:0crwdne16543:0 - -- crwdns16544:0crwdne16544:0 - -- crwdns16545:0crwdne16545:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-solution.md deleted file mode 100644 index 29d5f9870..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/reflection/scratch-solution.md +++ /dev/null @@ -1,27 +0,0 @@ -**crwdns16546:0crwdne16546:0** - -crwdns16547:0crwdne16547:0 - -```scratch -crwdns16548:0crwdne16548:0 -``` - -crwdns16549:0crwdne16549:0 - -```scratch -crwdns16550:0crwdne16550:0 -``` - -**crwdns16551:0crwdne16551:0** - -crwdns16552:0crwdne16552:0 - -```scratch -crwdns16553:0[90]crwdne16553:0 -``` - -crwdns16554:0crwdne16554:0 - -```scratch -crwdns16555:0crwdne16555:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/extra-challenge.md deleted file mode 100644 index 146690020..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16696:0crwdne16696:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/rotation-of-a-circle.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/rotation-of-a-circle.md deleted file mode 100644 index 26260a4c3..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/rotation-of-a-circle.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16690:0crwdne16690:0 - -## crwdns16691:0crwdne16691:0 - -crwdns16692:0crwdne16692:0 crwdns16693:0crwdne16693:0 - -## crwdns16694:0crwdne16694:0 - -crwdns16695:0crwdne16695:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-expected.md deleted file mode 100644 index 6ea10591d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16700:0crwdne16700:0 - -*BlockTag: crwdns16701:0crwdne16701:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152452637/?autostart=false"} - -*BlockTag: crwdns18493:0crwdne18493:0* - -{panel type="help"} - -# crwdns18494:0crwdne18494:0 - -<pre><code class="scratch:split:random">crwdns16703:0crwdne16703:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16704:0crwdne16704:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16705:0[3.1415]crwdnd16705:0[100]crwdne16705:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16706:0crwdne16706:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16707:0crwdne16707:0 -</code></pre> - -*BlockTag: crwdns16708:0crwdne16708:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-hints.md deleted file mode 100644 index f609895a4..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16697:0crwdne16697:0 -- crwdns16698:0crwdne16698:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-solution.md deleted file mode 100644 index 5914d7df0..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-circle/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16699:0[3.1415]crwdnd16699:0[50]crwdne16699:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/extra-challenge.md deleted file mode 100644 index bd36dcbae..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns17125:0crwdne17125:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/rotation-of-a-pentagon.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/rotation-of-a-pentagon.md deleted file mode 100644 index 4b2169f4f..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/rotation-of-a-pentagon.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns17119:0crwdne17119:0 - -## crwdns17120:0crwdne17120:0 - -crwdns17121:0crwdne17121:0 crwdns17122:0crwdne17122:0 - -## crwdns17123:0crwdne17123:0 - -crwdns17124:0crwdne17124:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-expected.md deleted file mode 100644 index 31761c495..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns17129:0crwdne17129:0 - -*BlockTag: crwdns17130:0crwdne17130:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152447963/?autostart=false"} - -*BlockTag: crwdns18533:0crwdne18533:0* - -{panel type="help"} - -# crwdns18534:0crwdne18534:0 - -<pre><code class="scratch:split:random">crwdns17132:0crwdne17132:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17133:0crwdne17133:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17134:0crwdne17134:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17135:0crwdne17135:0 -</code></pre> - -*BlockTag: crwdns17136:0crwdne17136:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-hints.md deleted file mode 100644 index e7efafd34..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns17126:0crwdne17126:0 -- crwdns17127:0crwdne17127:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-solution.md deleted file mode 100644 index 9e35f10d1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-pentagon/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17128:0crwdne17128:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/extra-challenge.md deleted file mode 100644 index ef450c506..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns16837:0crwdne16837:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/rotation-of-a-square.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/rotation-of-a-square.md deleted file mode 100644 index 7861514c4..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/rotation-of-a-square.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns16831:0crwdne16831:0 - -## crwdns16832:0crwdne16832:0 - -crwdns16833:0crwdne16833:0 crwdns16834:0crwdne16834:0 - -## crwdns16835:0crwdne16835:0 - -crwdns16836:0crwdne16836:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-expected.md deleted file mode 100644 index 331bc09da..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns16841:0crwdne16841:0 - -*BlockTag: crwdns16842:0crwdne16842:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152445346/?autostart=false"} - -*BlockTag: crwdns18505:0crwdne18505:0* - -{panel type="help"} - -# crwdns18506:0crwdne18506:0 - -<pre><code class="scratch:split:random">crwdns16844:0crwdne16844:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16845:0crwdne16845:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16846:0crwdne16846:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16847:0crwdne16847:0 -</code></pre> - -*BlockTag: crwdns16848:0crwdne16848:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-hints.md deleted file mode 100644 index ba4bdf8ae..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns16838:0crwdne16838:0 -- crwdns16839:0crwdne16839:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-solution.md deleted file mode 100644 index 4aac7591a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-square/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16840:0crwdne16840:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/extra-challenge.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/extra-challenge.md deleted file mode 100644 index dd8a2c022..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/extra-challenge.md +++ /dev/null @@ -1 +0,0 @@ -crwdns17072:0crwdne17072:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/rotation-of-a-triangle.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/rotation-of-a-triangle.md deleted file mode 100644 index 445e2120c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/rotation-of-a-triangle.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns17075:0crwdne17075:0 - -## crwdns17076:0crwdne17076:0 - -crwdns17077:0crwdne17077:0 crwdns17078:0crwdne17078:0 - -## crwdns17079:0crwdne17079:0 - -crwdns17080:0crwdne17080:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-expected.md deleted file mode 100644 index fb7179f8a..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-expected.md +++ /dev/null @@ -1,27 +0,0 @@ -crwdns17082:0crwdne17082:0 - -*BlockTag: crwdns17083:0crwdne17083:0* - -{iframe link="https://scratch.mit.edu/projects/embed/152445796/?autostart=false"} - -*BlockTag: crwdns18529:0crwdne18529:0* - -{panel type="help"} - -# crwdns18530:0crwdne18530:0 - -<pre><code class="scratch:split:random">crwdns17085:0crwdne17085:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17086:0crwdne17086:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17087:0crwdne17087:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns17088:0crwdne17088:0 -</code></pre> - -*BlockTag: crwdns17089:0crwdne17089:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-hints.md deleted file mode 100644 index 33632922d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-hints.md +++ /dev/null @@ -1,2 +0,0 @@ -- crwdns17073:0crwdne17073:0 -- crwdns17074:0crwdne17074:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-solution.md deleted file mode 100644 index 03afab144..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/rotation-of-a-triangle/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns17081:0crwdne17081:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-expected.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-expected.md deleted file mode 100644 index 186d0a64d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-expected.md +++ /dev/null @@ -1,30 +0,0 @@ -crwdns16375:0crwdne16375:0 - -*BlockTag: crwdns16376:0crwdne16376:0* - -{iframe link="https://scratch.mit.edu/projects/embed/154360503/?autostart=false"} - -*BlockTag: crwdns18465:0crwdne18465:0* - -{panel type="help"} - -# crwdns18466:0crwdne18466:0 - -<pre><code class="scratch:split:random">crwdns16378:0crwdne16378:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16379:0[50]crwdne16379:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16380:0crwdne16380:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16381:0crwdne16381:0 -</code></pre> - -<pre><code class="scratch:split:random">crwdns16382:0crwdne16382:0 -</code></pre> - -*BlockTag: crwdns16383:0crwdne16383:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-hints.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-hints.md deleted file mode 100644 index 59e8e2db4..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-hints.md +++ /dev/null @@ -1,6 +0,0 @@ -- crwdns16370:0crwdne16370:0 -- crwdns16371:0crwdne16371:0 crwdns16372:0{2}crwdnd16372:0{2}crwdnd16372:0{2}crwdne16372:0 - - *BlockTag: crwdns16373:0crwdne16373:0* - - {image file-path="img/topics/programming-challenges/geometry-diagonal-cube.png"} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-solution.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-solution.md deleted file mode 100644 index c7f21cf4d..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/scratch-solution.md +++ /dev/null @@ -1,3 +0,0 @@ -```scratch -crwdns16374:0[50]crwdne16374:0 -``` \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/translation.md b/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/translation.md deleted file mode 100644 index 210e21b44..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/programming-challenges/translation/translation.md +++ /dev/null @@ -1,13 +0,0 @@ -# crwdns16364:0crwdne16364:0 - -## crwdns16365:0crwdne16365:0 - -crwdns16366:0crwdne16366:0 - -*BlockTag: crwdns16367:0crwdne16367:0* - -{image file-path="img/topics/programming-challenges/geometry-translating-cube.png"} - -## crwdns16368:0crwdne16368:0 - -crwdns16369:0crwdne16369:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md deleted file mode 100644 index 1df4f0d47..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged-ct-links.md +++ /dev/null @@ -1,99 +0,0 @@ -crwdns18133:0crwdne18133:0 - -*BlockTag: crwdns18879:0crwdne18879:0* - -{panel type="ct-algorithm"} - -# crwdns18880:0crwdne18880:0 - -crwdns18135:0crwdne18135:0 crwdns18136:0crwdne18136:0 - -#### crwdns18137:0crwdne18137:0 - -crwdns18138:0crwdne18138:0 - -*BlockTag: crwdns18139:0crwdne18139:0* - -{panel end} - -*BlockTag: crwdns18881:0crwdne18881:0* - -{panel type="ct-abstraction"} - -# crwdns18882:0crwdne18882:0 - -crwdns18141:0crwdne18141:0 - -crwdns20485:0crwdne20485:0 - -#### crwdns18142:0crwdne18142:0 - -crwdns20486:0crwdne20486:0 - -*BlockTag: crwdns20487:0crwdne20487:0* - -{panel end} - -*BlockTag: crwdns20488:0crwdne20488:0* - -{panel type="ct-decomposition"} - -# crwdns18884:0crwdne18884:0 - -crwdns20489:0crwdne20489:0 - -#### crwdns18147:0crwdne18147:0 - -crwdns20490:0crwdne20490:0 - -*BlockTag: crwdns20491:0crwdne20491:0* - -{panel end} - -*BlockTag: crwdns20492:0crwdne20492:0* - -{panel type="ct-pattern"} - -# crwdns18886:0crwdne18886:0 - -crwdns20493:0crwdne20493:0 crwdns20494:0crwdne20494:0 - -#### crwdns18153:0crwdne18153:0 - -crwdns20495:0crwdne20495:0 - -*BlockTag: crwdns20496:0crwdne20496:0* - -{panel end} - -*BlockTag: crwdns20497:0crwdne20497:0* - -{panel type="ct-evaluation"} - -# crwdns18888:0crwdne18888:0 - -crwdns20498:0crwdne20498:0 crwdns20499:0crwdne20499:0 crwdns20500:0crwdne20500:0 - -#### crwdns18160:0crwdne18160:0 - -crwdns20501:0crwdne20501:0 crwdns20502:0crwdne20502:0 - -*BlockTag: crwdns20503:0crwdne20503:0* - -{panel end} - -*BlockTag: crwdns20504:0crwdne20504:0* - -{panel type="ct-logic"} - -# crwdns18890:0crwdne18890:0 - -crwdns20505:0crwdne20505:0 crwdns20506:0crwdne20506:0 crwdns20507:0crwdne20507:0 - -#### crwdns18168:0crwdne18168:0 - -crwdns20508:0crwdne20508:0 crwdns20509:0crwdne20509:0 crwdns20510:0crwdne20510:0 - -*BlockTag: crwdns20511:0crwdne20511:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml deleted file mode 100644 index 1ad9bc254..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -job-badges: - description: crwdns15921:0crwdne15921:0 diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged.md deleted file mode 100644 index 4784f375c..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/fitness-unplugged.md +++ /dev/null @@ -1,104 +0,0 @@ -# crwdns18074:0crwdne18074:0 - -*BlockTag: crwdns18075:0crwdne18075:0* - -{image file-path="img/topics/exercise.png" alt="Cartoon kids exercising"} - -## crwdns18076:0crwdne18076:0 - -crwdns18077:0crwdne18077:0 - -## crwdns18078:0crwdne18078:0 - -*BlockTag: crwdns18877:0crwdne18877:0* - -{panel type="general"} - -# crwdns18878:0crwdne18878:0 - -crwdns18080:0crwdne18080:0 - -*BlockTag: crwdns18081:0crwdne18081:0* - -{panel end} - -crwdns18082:0crwdne18082:0 - -## crwdns18083:0crwdne18083:0 - -1. crwdns18084:0crwdne18084:0 - - *BlockTag: crwdns20015:0crwdne20015:0* - - {image file-path="img/topics/exercise-2.png" alt="Cartoon kids exercising" alignment="right"} - - crwdns18086:0crwdne18086:0 - - - crwdns18087:0crwdne18087:0 - - crwdns18088:0crwdne18088:0 - - crwdns18089:0crwdne18089:0 - - crwdns18090:0crwdne18090:0 - -2. crwdns18091:0crwdne18091:0 - - - crwdns18092:0crwdne18092:0 - - crwdns18093:0crwdne18093:0 - - crwdns18094:0crwdne18094:0 - - - crwdns18095:0crwdne18095:0 - - crwdns18096:0crwdne18096:0 - - crwdns18097:0crwdne18097:0 - -3. crwdns18098:0crwdne18098:0 crwdns18099:0crwdne18099:0 - -4. crwdns18100:0crwdne18100:0 - -5. crwdns18101:0crwdne18101:0 - -6. crwdns18102:0crwdne18102:0 crwdns18103:0crwdne18103:0 - -7. crwdns18104:0crwdne18104:0 - - *BlockTag: crwdns18105:0crwdne18105:0* - - {image file-path="img/topics/whiteboards-and-hula-hoop.png" alt="6 whiteboards arranged around and in hula hoop"} - -8. crwdns18106:0crwdne18106:0 - - *BlockTag: crwdns18107:0crwdne18107:0* - - {image file-path="img/topics/whiteboards-and-hula-hoop-2.png" alt="6 whiteboards arranged around and in hula hoop"} - -9. crwdns18108:0crwdne18108:0 - - *BlockTag: crwdns18109:0crwdne18109:0* - - {image file-path="img/topics/whiteboards-and-hula-hoop-3.png" alt="6 whiteboards arranged around and in hula hoop"} - -10. crwdns18110:0crwdne18110:0 crwdns18111:0crwdne18111:0 crwdns18112:0crwdne18112:0 - - *BlockTag: crwdns18113:0crwdne18113:0* - - {image file-path="img/topics/whiteboards-and-hula-hoop-4.png" alt="6 whiteboards arranged around and in hula hoop"} - -11. crwdns18114:0crwdne18114:0 crwdns18115:0crwdne18115:0 crwdns18116:0crwdne18116:0 - -12. crwdns18117:0crwdne18117:0 - - *BlockTag: crwdns18118:0crwdne18118:0* - - {image file-path="img/topics/whiteboards-and-hula-hoop-5.png" alt="6 whiteboards arranged around and in hula hoop"} - -13. crwdns18119:0crwdne18119:0 crwdns18120:0crwdne18120:0 crwdns18121:0crwdne18121:0 crwdns18122:0crwdne18122:0 - -14. crwdns18123:0crwdne18123:0 - -## crwdns18124:0crwdne18124:0 - -crwdns18125:0crwdne18125:0 crwdns18126:0crwdne18126:0 crwdns18127:0crwdne18127:0 crwdns18128:0crwdne18128:0 - -## crwdns18129:0crwdne18129:0 - -- crwdns18130:0crwdne18130:0 -- crwdns18131:0crwdne18131:0 -- crwdns18132:0crwdne18132:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-ct-links.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-ct-links.md deleted file mode 100644 index f4e125efd..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-ct-links.md +++ /dev/null @@ -1,3 +0,0 @@ -crwdns18069:0crwdne18069:0 crwdns18070:0crwdne18070:0 - -crwdns18071:0crwdne18071:0 crwdns18072:0crwdne18072:0 crwdns18073:0crwdne18073:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-programming.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-programming.md deleted file mode 100644 index 2bf07d3be..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-programming.md +++ /dev/null @@ -1 +0,0 @@ -crwdns18016:0crwdne18016:0 crwdns18017:0crwdne18017:0 crwdns18018:0crwdne18018:0 crwdns18019:0crwdne18019:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-resource-descriptions.yaml deleted file mode 100644 index c34eb2867..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo-resource-descriptions.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -modulo-clock: - description: crwdns15922:0crwdne15922:0 -train-stations: - description: crwdns15923:0crwdne15923:0 -piano-keys: - description: crwdns15924:0crwdne15924:0 diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo.md deleted file mode 100644 index 05fb3dbd1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/modulo.md +++ /dev/null @@ -1,170 +0,0 @@ -# crwdns17573:0crwdne17573:0 - -*BlockTag: crwdns18587:0crwdne18587:0* - -{panel type="general"} - -# crwdns18588:0crwdne18588:0 - -crwdns17575:0crwdne17575:0 crwdns17576:0crwdne17576:0 crwdns17577:0crwdne17577:0 - -*BlockTag: crwdns17578:0crwdne17578:0* - -{panel end} - -## crwdns17579:0crwdne17579:0 - -- crwdns17580:0crwdne17580:0 -- crwdns17581:0crwdne17581:0 -- crwdns17582:0crwdne17582:0 - -### crwdns17583:0crwdne17583:0 - -- crwdns17584:0crwdne17584:0 -- crwdns17585:0crwdne17585:0 -- crwdns17586:0crwdne17586:0 - -## crwdns17587:0crwdne17587:0 - -crwdns17588:0crwdne17588:0 - -*BlockTag: crwdns17589:0crwdne17589:0* - -{image file-path="img/topics/modulo-10-clock.png" alt="A clock face with the numbers 0 to 9 around inside."} - -crwdns17590:0crwdne17590:0 - -## crwdns17591:0crwdne17591:0 - -crwdns17592:0crwdne17592:0 crwdns17593:0crwdne17593:0 crwdns17594:0crwdne17594:0 - -crwdns17595:0crwdne17595:0 - -crwdns17596:0crwdne17596:0 crwdns17597:0crwdne17597:0 crwdns17598:0crwdne17598:0 crwdns17599:0crwdne17599:0 crwdns17600:0crwdne17600:0 crwdns17601:0crwdne17601:0 - -crwdns17602:0crwdne17602:0 - -- crwdns17603:0crwdne17603:0 -- crwdns17604:0crwdne17604:0 -- crwdns17605:0crwdne17605:0 - -crwdns17606:0crwdne17606:0 crwdns17607:0crwdne17607:0 - -crwdns17608:0crwdne17608:0 - -crwdns17609:0crwdne17609:0 - -crwdns17610:0crwdne17610:0 crwdns17611:0crwdne17611:0 - -crwdns17612:0crwdne17612:0 - -crwdns17613:0crwdne17613:0 - -### crwdns17614:0crwdne17614:0 - -crwdns17615:0crwdne17615:0 crwdns17616:0crwdne17616:0 crwdns17617:0crwdne17617:0 - -*BlockTag: crwdns17618:0crwdne17618:0* - -{image file-path="img/topics/modulo-train-stations-tracks-circular.png" alt="A circle of 10 train stations connected by train tracks."} - -### crwdns17619:0crwdne17619:0 - -crwdns17620:0crwdne17620:0 crwdns17621:0crwdne17621:0 crwdns17622:0crwdne17622:0 - -crwdns17623:0crwdne17623:0 - -crwdns17624:0crwdne17624:0 - -crwdns17625:0crwdne17625:0 - -crwdns17626:0crwdne17626:0 - -crwdns17627:0crwdne17627:0 - -### crwdns17628:0crwdne17628:0 - -crwdns17629:0crwdne17629:0 - -crwdns17630:0crwdne17630:0 - -crwdns17631:0crwdne17631:0 - -crwdns17632:0crwdne17632:0 - -crwdns17633:0crwdne17633:0 crwdns17634:0crwdne17634:0 crwdns17635:0crwdne17635:0 - -crwdns17636:0crwdne17636:0 crwdns17637:0crwdne17637:0 - -crwdns17638:0crwdne17638:0 - -crwdns17639:0crwdne17639:0 crwdns17640:0crwdne17640:0 crwdns17641:0crwdne17641:0 crwdns17642:0crwdne17642:0 - -crwdns17643:0crwdne17643:0 - -crwdns17644:0crwdne17644:0 crwdns17645:0crwdne17645:0 - -crwdns17646:0crwdne17646:0 crwdns17647:0crwdne17647:0 crwdns17648:0crwdne17648:0 crwdns17649:0crwdne17649:0 crwdns17650:0crwdne17650:0 - -crwdns17651:0crwdne17651:0 - -*BlockTag: crwdns17652:0crwdne17652:0* - -{image file-path="img/topics/modulo-2-clock.png" alt="A clock face with the number 0 at the top (12 o'clock position) and number 1 at the bottom (6 o'clock position)."} - -crwdns17653:0crwdne17653:0 - -crwdns17654:0crwdne17654:0 - -crwdns17655:0crwdne17655:0 crwdns17656:0crwdne17656:0 crwdns17657:0crwdne17657:0 crwdns17658:0crwdne17658:0 crwdns17659:0crwdne17659:0 crwdns17660:0crwdne17660:0 crwdns17661:0crwdne17661:0 - -### crwdns17662:0crwdne17662:0 - -crwdns17663:0crwdne17663:0 crwdns17664:0crwdne17664:0 crwdns17665:0crwdne17665:0 - -crwdns17666:0crwdne17666:0 crwdns17667:0crwdne17667:0 crwdns17668:0crwdne17668:0 crwdns17669:0crwdne17669:0 - -crwdns17670:0crwdne17670:0 - -crwdns17671:0crwdne17671:0 - -crwdns17672:0crwdne17672:0 crwdns17673:0crwdne17673:0 crwdns17674:0crwdne17674:0 - -crwdns17675:0crwdne17675:0 crwdns17676:0crwdne17676:0 - -## crwdns17677:0crwdne17677:0 - -crwdns17678:0crwdne17678:0 - -crwdns17679:0crwdne17679:0 - -<pre><code class="scratch:split">crwdns17680:0crwdne17680:0 -</code></pre> - -crwdns17681:0crwdne17681:0 crwdns17682:0crwdne17682:0 crwdns17683:0crwdne17683:0 - -crwdns17684:0crwdne17684:0 crwdns17685:0crwdne17685:0 crwdns17686:0%12crwdne17686:0 crwdns17687:0crwdne17687:0 crwdns17688:0crwdne17688:0 crwdns17689:0crwdne17689:0 crwdns17690:0crwdne17690:0 - -### crwdns17691:0crwdne17691:0 - -crwdns17692:0crwdne17692:0 - -*BlockTag: crwdns17693:0crwdne17693:0* - -{image file-path="img/topics/modulo-keyboard.png" alt="A keyboard with keys labelled A to G, with the D keys highlighted."} - -crwdns17694:0crwdne17694:0 crwdns17695:0crwdne17695:0 - -crwdns17696:0crwdne17696:0 - -crwdns17697:0crwdne17697:0 crwdns17698:0crwdne17698:0 crwdns17699:0crwdne17699:0 crwdns17700:0crwdne17700:0 crwdns17701:0crwdne17701:0 - -### crwdns17702:0crwdne17702:0 - -crwdns17703:0crwdne17703:0 crwdns17704:0crwdne17704:0 crwdns17705:0crwdne17705:0 crwdns17706:0crwdne17706:0 - -### crwdns17707:0crwdne17707:0 - -- crwdns17708:0crwdne17708:0 -- crwdns17709:0crwdne17709:0 -- crwdns17710:0crwdne17710:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission-ct-links.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission-ct-links.md deleted file mode 100644 index 902b5c367..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission-ct-links.md +++ /dev/null @@ -1,99 +0,0 @@ -*BlockTag: crwdns18865:0crwdne18865:0* - -{panel type="ct-algorithm"} - -# crwdns18866:0crwdne18866:0 - -crwdns18021:0crwdne18021:0 crwdns18022:0crwdne18022:0 crwdns18023:0crwdne18023:0 - -#### crwdns18024:0crwdne18024:0 - -crwdns18025:0crwdne18025:0 - -*BlockTag: crwdns18026:0crwdne18026:0* - -{panel end} - -*BlockTag: crwdns18867:0crwdne18867:0* - -{panel type="ct-abstraction"} - -# crwdns18868:0crwdne18868:0 - -crwdns18028:0crwdne18028:0 crwdns18029:0crwdne18029:0 crwdns18030:0crwdne18030:0 - -#### crwdns18031:0crwdne18031:0 - -crwdns18032:0crwdne18032:0 - -*BlockTag: crwdns18033:0crwdne18033:0* - -{panel end} - -*BlockTag: crwdns18869:0crwdne18869:0* - -{panel type="ct-decomposition"} - -# crwdns18870:0crwdne18870:0 - -crwdns18035:0crwdne18035:0 crwdns18036:0crwdne18036:0 crwdns18037:0crwdne18037:0 - -crwdns18038:0crwdne18038:0 crwdns18039:0crwdne18039:0 - -#### crwdns18040:0crwdne18040:0 - -crwdns18041:0crwdne18041:0 - -*BlockTag: crwdns18042:0crwdne18042:0* - -{panel end} - -*BlockTag: crwdns18871:0crwdne18871:0* - -{panel type="ct-pattern"} - -# crwdns18872:0crwdne18872:0 - -crwdns18044:0crwdne18044:0 crwdns18045:0crwdne18045:0 crwdns18046:0crwdne18046:0 - -#### crwdns18047:0crwdne18047:0 - -crwdns18048:0crwdne18048:0 - -*BlockTag: crwdns18049:0crwdne18049:0* - -{panel end} - -*BlockTag: crwdns18873:0crwdne18873:0* - -{panel type="ct-evaluation"} - -# crwdns18874:0crwdne18874:0 - -crwdns18051:0crwdne18051:0 crwdns18052:0crwdne18052:0 - -crwdns18053:0crwdne18053:0 crwdns18054:0crwdne18054:0 - -#### crwdns18055:0crwdne18055:0 - -crwdns18056:0crwdne18056:0 crwdns18057:0crwdne18057:0 crwdns18058:0crwdne18058:0 - -*BlockTag: crwdns18059:0crwdne18059:0* - -{panel end} - -*BlockTag: crwdns18875:0crwdne18875:0* - -{panel type="ct-logic"} - -# crwdns18876:0crwdne18876:0 - -crwdns18061:0crwdne18061:0 crwdns18062:0crwdne18062:0 crwdns18063:0crwdne18063:0 - -#### crwdns18064:0crwdne18064:0 - -crwdns18065:0crwdne18065:0 crwdns18066:0crwdne18066:0 crwdns18067:0crwdne18067:0 - -*BlockTag: crwdns18068:0crwdne18068:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml deleted file mode 100644 index 70dd94837..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission-resource-descriptions.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -arrows: - description: crwdns15925:0crwdne15925:0 -left-right-cards: - description: crwdns15926:0crwdne15926:0 -job-badges: - description: crwdns15927:0crwdne15927:0 -grid: - description: crwdns15928:0crwdne15928:0 diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission.md deleted file mode 100644 index 39e4bccf1..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/rescue-mission.md +++ /dev/null @@ -1,265 +0,0 @@ -# crwdns17711:0crwdne17711:0 - -*BlockTag: crwdns18589:0crwdne18589:0* - -{image file-path="img/topics/unplugged-programming-icon.png" alt="Students standing around a large checkerboard grid." caption="true"} - -crwdns18590:0crwdne18590:0 - -*BlockTag: crwdns18591:0crwdne18591:0* - -{image end} - -## crwdns17714:0crwdne17714:0 - -crwdns18592:0crwdne18592:0 - -## crwdns17716:0crwdne17716:0 - -crwdns18593:0crwdne18593:0 - -- crwdns17718:0crwdne17718:0 -- crwdns17719:0crwdne17719:0 -- crwdns17720:0crwdne17720:0 -- crwdns17721:0crwdne17721:0 - -crwdns18594:0crwdne18594:0 - -crwdns18595:0crwdne18595:0 - -crwdns18596:0crwdne18596:0 - -crwdns18597:0crwdne18597:0 - -## crwdns17726:0crwdne17726:0 - -crwdns18598:0crwdne18598:0 crwdns18599:0crwdne18599:0 - -crwdns18600:0crwdne18600:0 - -crwdns18601:0crwdne18601:0 - -crwdns18602:0crwdne18602:0 - -crwdns18603:0crwdne18603:0 - -*BlockTag: crwdns18604:0crwdne18604:0* - -{panel type="teaching"} - -# crwdns18605:0crwdne18605:0 - -crwdns18606:0crwdne18606:0 crwdns18607:0crwdne18607:0 - -*BlockTag: crwdns18608:0crwdne18608:0* - -{panel end} - -crwdns18609:0crwdne18609:0 - -crwdns18610:0crwdne18610:0 - -crwdns18611:0crwdne18611:0 crwdns18612:0crwdne18612:0 crwdns18613:0crwdne18613:0 - -*BlockTag: crwdns18614:0crwdne18614:0* - -{panel type="teaching"} - -# crwdns18615:0crwdne18615:0 - -crwdns18616:0crwdne18616:0 crwdns18617:0crwdne18617:0 crwdns18618:0crwdne18618:0 - -*BlockTag: crwdns18619:0crwdne18619:0* - -{panel end} - -crwdns18620:0crwdne18620:0 - -crwdns18621:0crwdne18621:0 crwdns18622:0crwdne18622:0 crwdns18623:0crwdne18623:0 - -*BlockTag: crwdns18624:0crwdne18624:0* - -{panel type="teaching"} - -# crwdns18625:0crwdne18625:0 - -crwdns18626:0crwdne18626:0 crwdns18627:0crwdne18627:0 crwdns18628:0crwdne18628:0 - -*BlockTag: crwdns18629:0crwdne18629:0* - -{panel end} - -crwdns18630:0crwdne18630:0 - -crwdns18631:0crwdne18631:0 - -*BlockTag: crwdns18632:0crwdne18632:0* - -{image file-path="img/topics/kidbots-little-red-riding-hood-2.gif"} - -*BlockTag: crwdns18633:0crwdne18633:0* - -{panel type="teaching"} - -# crwdns18634:0crwdne18634:0 - -crwdns18635:0crwdne18635:0 crwdns18636:0crwdne18636:0 - -*BlockTag: crwdns18637:0crwdne18637:0* - -{panel end} - -crwdns18638:0crwdne18638:0 - -*crwdns18639:0crwdne18639:0 crwdns18640:0crwdne18640:0* - -crwdns18641:0crwdne18641:0 - -*BlockTag: crwdns18642:0crwdne18642:0* - -{image file-path="img/topics/kidbots-little-red-riding-hood-3.gif"} - -crwdns18643:0crwdne18643:0 crwdns18644:0crwdne18644:0 - -crwdns18645:0crwdne18645:0 crwdns18646:0crwdne18646:0 crwdns18647:0crwdne18647:0 crwdns18648:0crwdne18648:0 - -crwdns18649:0crwdne18649:0 - -- crwdns17775:0crwdne17775:0 -- crwdns17776:0crwdne17776:0 -- crwdns17777:0crwdne17777:0 -- crwdns17778:0crwdne17778:0 -- crwdns17779:0crwdne17779:0 - -*BlockTag: crwdns18650:0crwdne18650:0* - -{panel type="teaching"} - -# crwdns18651:0crwdne18651:0 - -crwdns18652:0crwdne18652:0 - -*BlockTag: crwdns18653:0crwdne18653:0* - -{panel end} - -crwdns18654:0crwdne18654:0 crwdns18655:0crwdne18655:0 crwdns18656:0crwdne18656:0 crwdns18657:0crwdne18657:0 - -*BlockTag: crwdns18658:0crwdne18658:0* - -{panel type="teaching"} - -# crwdns18659:0crwdne18659:0 - -crwdns18660:0crwdne18660:0 crwdns18661:0crwdne18661:0 crwdns18662:0crwdne18662:0 crwdns18663:0crwdne18663:0 crwdns18664:0crwdne18664:0 crwdns18665:0crwdne18665:0 crwdns18666:0crwdne18666:0 crwdns18667:0crwdne18667:0 crwdns18668:0crwdne18668:0 crwdns18669:0crwdne18669:0 crwdns18670:0crwdne18670:0 - -*BlockTag: crwdns18671:0crwdne18671:0* - -{panel end} - -crwdns18672:0crwdne18672:0 - -*BlockTag: crwdns18673:0crwdne18673:0* - -{image file-path="img/topics/kidbots-little-red-riding-hood-4.gif"} - -crwdns18674:0crwdne18674:0 - -*BlockTag: crwdns18675:0crwdne18675:0* - -{panel type="teaching"} - -# crwdns18676:0crwdne18676:0 - -crwdns18677:0crwdne18677:0 - -*BlockTag: crwdns18678:0crwdne18678:0* - -{panel end} - -crwdns18679:0crwdne18679:0 crwdns18680:0crwdne18680:0 crwdns18681:0crwdne18681:0 - -*BlockTag: crwdns18682:0crwdne18682:0* - -{panel type="teaching"} - -# crwdns18683:0crwdne18683:0 - -crwdns18684:0crwdne18684:0 crwdns18685:0crwdne18685:0 crwdns18686:0crwdne18686:0 crwdns18687:0crwdne18687:0 crwdns18688:0crwdne18688:0 crwdns18689:0crwdne18689:0 crwdns18690:0crwdne18690:0 - -*BlockTag: crwdns18691:0crwdne18691:0* - -{panel end} - -*BlockTag: crwdns18692:0crwdne18692:0* - -{panel type="teaching"} - -# crwdns18693:0crwdne18693:0 - -crwdns18694:0crwdne18694:0 - -crwdns18695:0crwdne18695:0 crwdns18696:0crwdne18696:0 crwdns18697:0crwdne18697:0 - -*BlockTag: crwdns18698:0crwdne18698:0* - -{panel end} - -crwdns18699:0crwdne18699:0 - -1. crwdns17825:0crwdne17825:0 -2. crwdns17826:0crwdne17826:0 -3. crwdns17827:0crwdne17827:0 -4. crwdns17828:0crwdne17828:0 crwdns17829:0crwdne17829:0 crwdns17830:0crwdne17830:0 crwdns17831:0crwdne17831:0 crwdns17832:0crwdne17832:0 -5. crwdns17833:0crwdne17833:0 -6. crwdns17834:0crwdne17834:0 - -*BlockTag: crwdns18700:0crwdne18700:0* - -{panel type="teaching"} - -# crwdns18701:0crwdne18701:0 - -crwdns18702:0crwdne18702:0 crwdns18703:0crwdne18703:0 - -*BlockTag: crwdns18704:0crwdne18704:0* - -{panel end} - -### crwdns17839:0crwdne17839:0 - -crwdns18705:0crwdne18705:0 - -*BlockTag: crwdns18706:0crwdne18706:0* - -{image file-path="img/topics/kidbots-little-red-riding-hood-barriers.png" alt="A grid with various cells containing wolf, well, etc."} - -### crwdns17842:0crwdne17842:0 - -crwdns18707:0crwdne18707:0 crwdns18708:0crwdne18708:0 crwdns18709:0crwdne18709:0 - -crwdns18710:0crwdne18710:0 - -*BlockTag: crwdns18711:0crwdne18711:0* - -{panel type="teaching"} - -# crwdns18712:0crwdne18712:0 - -crwdns18713:0crwdne18713:0 - -crwdns18714:0crwdne18714:0 crwdns18715:0crwdne18715:0 crwdns18716:0crwdne18716:0 - -*BlockTag: crwdns18717:0crwdne18717:0* - -{panel end} - -## crwdns17853:0crwdne17853:0 - -crwdns18718:0crwdne18718:0 crwdns18719:0crwdne18719:0 crwdns18720:0crwdne18720:0 crwdns18721:0crwdne18721:0 crwdns18722:0crwdne18722:0 crwdns18723:0crwdne18723:0 - -crwdns18724:0crwdne18724:0 - -## crwdns17861:0crwdne17861:0 - -crwdns18725:0crwdne18725:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-ct-links.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-ct-links.md deleted file mode 100644 index 3c5b74d32..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-ct-links.md +++ /dev/null @@ -1,99 +0,0 @@ -*BlockTag: crwdns18575:0crwdne18575:0* - -{panel type="ct-algorithm"} - -# crwdns18576:0crwdne18576:0 - -crwdns17525:0crwdne17525:0 crwdns17526:0crwdne17526:0 crwdns17527:0crwdne17527:0 - -#### crwdns17528:0crwdne17528:0 - -crwdns17529:0crwdne17529:0 - -*BlockTag: crwdns17530:0crwdne17530:0* - -{panel end} - -*BlockTag: crwdns18577:0crwdne18577:0* - -{panel type="ct-abstraction"} - -# crwdns18578:0crwdne18578:0 - -crwdns17532:0crwdne17532:0 crwdns17533:0crwdne17533:0 crwdns17534:0crwdne17534:0 - -#### crwdns17535:0crwdne17535:0 - -crwdns17536:0crwdne17536:0 - -*BlockTag: crwdns17537:0crwdne17537:0* - -{panel end} - -*BlockTag: crwdns18579:0crwdne18579:0* - -{panel type="ct-decomposition"} - -# crwdns18580:0crwdne18580:0 - -crwdns17539:0crwdne17539:0 crwdns17540:0crwdne17540:0 crwdns17541:0crwdne17541:0 - -crwdns17542:0crwdne17542:0 crwdns17543:0crwdne17543:0 - -#### crwdns17544:0crwdne17544:0 - -crwdns17545:0crwdne17545:0 - -*BlockTag: crwdns17546:0crwdne17546:0* - -{panel end} - -*BlockTag: crwdns18581:0crwdne18581:0* - -{panel type="ct-pattern"} - -# crwdns18582:0crwdne18582:0 - -crwdns17548:0crwdne17548:0 crwdns17549:0crwdne17549:0 crwdns17550:0crwdne17550:0 - -#### crwdns17551:0crwdne17551:0 - -crwdns17552:0crwdne17552:0 - -*BlockTag: crwdns17553:0crwdne17553:0* - -{panel end} - -*BlockTag: crwdns18583:0crwdne18583:0* - -{panel type="ct-evaluation"} - -# crwdns18584:0crwdne18584:0 - -crwdns17555:0crwdne17555:0 crwdns17556:0crwdne17556:0 - -crwdns17557:0crwdne17557:0 crwdns17558:0crwdne17558:0 - -#### crwdns17559:0crwdne17559:0 - -crwdns17560:0crwdne17560:0 crwdns17561:0crwdne17561:0 crwdns17562:0crwdne17562:0 - -*BlockTag: crwdns17563:0crwdne17563:0* - -{panel end} - -*BlockTag: crwdns18585:0crwdne18585:0* - -{panel type="ct-logic"} - -# crwdns18586:0crwdne18586:0 - -crwdns17565:0crwdne17565:0 crwdns17566:0crwdne17566:0 crwdns17567:0crwdne17567:0 - -#### crwdns17568:0crwdne17568:0 - -crwdns17569:0crwdne17569:0 crwdns17570:0crwdne17570:0 crwdns17571:0crwdne17571:0 - -*BlockTag: crwdns17572:0crwdne17572:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml deleted file mode 100644 index 4fcddc558..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars-resource-descriptions.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -arrows: - description: crwdns15929:0crwdne15929:0 -left-right-cards: - description: crwdns15930:0crwdne15930:0 -job-badges: - description: crwdns15931:0crwdne15931:0 -grid: - description: crwdns15932:0crwdne15932:0 diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars.md deleted file mode 100644 index 92b3b0f86..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/lessons/sending-a-rocket-to-mars.md +++ /dev/null @@ -1,264 +0,0 @@ -# crwdns17863:0crwdne17863:0 - -*BlockTag: crwdns18726:0crwdne18726:0* - -{image file-path="img/topics/unplugged-programming-icon.png" alt="Students standing around a large checkerboard grid." caption="true"} - -crwdns18727:0crwdne18727:0 - -*BlockTag: crwdns18728:0crwdne18728:0* - -{image end} - -## crwdns17866:0crwdne17866:0 - -crwdns18729:0crwdne18729:0 - -## crwdns17868:0crwdne17868:0 - -crwdns18730:0crwdne18730:0 - -- crwdns17870:0crwdne17870:0 -- crwdns17871:0crwdne17871:0 -- crwdns17872:0crwdne17872:0 -- crwdns17873:0crwdne17873:0 - -crwdns18731:0crwdne18731:0 - -crwdns18732:0crwdne18732:0 - -crwdns18733:0crwdne18733:0 - -crwdns18734:0crwdne18734:0 - -## crwdns17878:0crwdne17878:0 - -*BlockTag: crwdns18735:0crwdne18735:0* - -{image file-path="img/topics/kidbots-rocket-1.png" alt="8 x 8 grid with a rocket ship at position (1,5) and Mars at position (4,3). Positions are counted from the top left corner."} - -crwdns18736:0crwdne18736:0 - -crwdns18737:0crwdne18737:0 - -crwdns18738:0crwdne18738:0 - -crwdns18739:0crwdne18739:0 - -*BlockTag: crwdns18740:0crwdne18740:0* - -{panel type="teaching"} - -# crwdns18741:0crwdne18741:0 - -crwdns18742:0crwdne18742:0 crwdns18743:0crwdne18743:0 - -*BlockTag: crwdns18744:0crwdne18744:0* - -{panel end} - -crwdns18745:0crwdne18745:0 - -crwdns18746:0crwdne18746:0 - -crwdns18747:0crwdne18747:0 crwdns18748:0crwdne18748:0 crwdns18749:0crwdne18749:0 - -*BlockTag: crwdns18750:0crwdne18750:0* - -{panel type="teaching"} - -# crwdns18751:0crwdne18751:0 - -crwdns18752:0crwdne18752:0 crwdns18753:0crwdne18753:0 crwdns18754:0crwdne18754:0 - -*BlockTag: crwdns18755:0crwdne18755:0* - -{panel end} - -crwdns18756:0crwdne18756:0 - -crwdns18757:0crwdne18757:0 crwdns18758:0crwdne18758:0 crwdns18759:0crwdne18759:0 - -*BlockTag: crwdns18760:0crwdne18760:0* - -{panel type="teaching"} - -# crwdns18761:0crwdne18761:0 - -crwdns18762:0crwdne18762:0 crwdns18763:0crwdne18763:0 crwdns18764:0crwdne18764:0 - -*BlockTag: crwdns18765:0crwdne18765:0* - -{panel end} - -crwdns18766:0crwdne18766:0 - -crwdns18767:0crwdne18767:0 - -**crwdns18768:0crwdne18768:0** - -crwdns18769:0crwdne18769:0 crwdns18770:0crwdne18770:0 - -*BlockTag: crwdns18771:0crwdne18771:0* - -{panel type="teaching"} - -# crwdns18772:0crwdne18772:0 - -crwdns18773:0crwdne18773:0 crwdns18774:0crwdne18774:0 - -*BlockTag: crwdns18775:0crwdne18775:0* - -{panel end} - -crwdns18776:0crwdne18776:0 crwdns18777:0crwdne18777:0 - -crwdns18778:0crwdne18778:0 - -crwdns18779:0crwdne18779:0 - -**crwdns18780:0crwdne18780:0** - -*BlockTag: crwdns18781:0crwdne18781:0* - -{image file-path="img/topics/kidbots-rocket-3.gif" alt="This animation builds upon the previous grid image. The cell two above the rocket ship contains two turn right arrows."} - -crwdns18782:0crwdne18782:0 crwdns18783:0crwdne18783:0 - -crwdns18784:0crwdne18784:0 crwdns18785:0crwdne18785:0 crwdns18786:0crwdne18786:0 crwdns18787:0crwdne18787:0 - -crwdns18788:0crwdne18788:0 - -1. crwdns17929:0crwdne17929:0 -2. crwdns17930:0crwdne17930:0 -3. crwdns17931:0crwdne17931:0 -4. crwdns17932:0crwdne17932:0 - -*BlockTag: crwdns18789:0crwdne18789:0* - -{panel type="teaching"} - -# crwdns18790:0crwdne18790:0 - -crwdns18791:0crwdne18791:0 crwdns18792:0crwdne18792:0 - -*BlockTag: crwdns18793:0crwdne18793:0* - -{panel end} - -crwdns18794:0crwdne18794:0 crwdns18795:0crwdne18795:0 crwdns18796:0crwdne18796:0 crwdns18797:0crwdne18797:0 - -*BlockTag: crwdns18798:0crwdne18798:0* - -{panel type="teaching"} - -# crwdns18799:0crwdne18799:0 - -crwdns18800:0crwdne18800:0 crwdns18801:0crwdne18801:0 crwdns18802:0crwdne18802:0 crwdns18803:0crwdne18803:0 crwdns18804:0crwdne18804:0 crwdns18805:0crwdne18805:0 crwdns18806:0crwdne18806:0 crwdns18807:0crwdne18807:0 crwdns18808:0crwdne18808:0 crwdns18809:0crwdne18809:0 - -*BlockTag: crwdns18810:0crwdne18810:0* - -{panel end} - -crwdns18811:0crwdne18811:0 - -crwdns18812:0crwdne18812:0 crwdns18813:0crwdne18813:0 crwdns18814:0crwdne18814:0 crwdns18815:0crwdne18815:0 - -crwdns18816:0crwdne18816:0 - -*BlockTag: crwdns18817:0crwdne18817:0* - -{panel type="teaching"} - -# crwdns18818:0crwdne18818:0 - -crwdns18819:0crwdne18819:0 - -*BlockTag: crwdns18820:0crwdne18820:0* - -{panel end} - -crwdns18821:0crwdne18821:0 crwdns18822:0crwdne18822:0 crwdns18823:0crwdne18823:0 - -*BlockTag: crwdns18824:0crwdne18824:0* - -{panel type="teaching"} - -# crwdns18825:0crwdne18825:0 - -crwdns18826:0crwdne18826:0 crwdns18827:0crwdne18827:0 crwdns18828:0crwdne18828:0 crwdns18829:0crwdne18829:0 crwdns18830:0crwdne18830:0 crwdns18831:0crwdne18831:0 - -*BlockTag: crwdns18832:0crwdne18832:0* - -{panel end} - -*BlockTag: crwdns18833:0crwdne18833:0* - -{panel type="teaching"} - -# crwdns18834:0crwdne18834:0 - -crwdns18835:0crwdne18835:0 - -crwdns18836:0crwdne18836:0 crwdns18837:0crwdne18837:0 crwdns18838:0crwdne18838:0 - -*BlockTag: crwdns18839:0crwdne18839:0* - -{panel end} - -crwdns18840:0crwdne18840:0 - -1. crwdns17980:0crwdne17980:0 -2. crwdns17981:0crwdne17981:0 -3. crwdns17982:0crwdne17982:0 -4. crwdns17983:0crwdne17983:0 crwdns17984:0crwdne17984:0 crwdns17985:0crwdne17985:0 crwdns17986:0crwdne17986:0 crwdns17987:0crwdne17987:0 -5. crwdns17988:0crwdne17988:0 -6. crwdns17989:0crwdne17989:0 - -*BlockTag: crwdns18841:0crwdne18841:0* - -{panel type="teaching"} - -# crwdns18842:0crwdne18842:0 - -crwdns18843:0crwdne18843:0 crwdns18844:0crwdne18844:0 - -*BlockTag: crwdns18845:0crwdne18845:0* - -{panel end} - -### crwdns17994:0crwdne17994:0 - -crwdns18846:0crwdne18846:0 - -*BlockTag: crwdns18847:0crwdne18847:0* - -{image file-path="img/topics/kidbots-rocket-barriers.png" alt="A grid with various cells containing planets, comets, space junk, etc."} - -### crwdns17997:0crwdne17997:0 - -crwdns18848:0crwdne18848:0 crwdns18849:0crwdne18849:0 - -crwdns18850:0crwdne18850:0 - -*BlockTag: crwdns18851:0crwdne18851:0* - -{panel type="teaching"} - -# crwdns18852:0crwdne18852:0 - -crwdns18853:0crwdne18853:0 - -crwdns18854:0crwdne18854:0 crwdns18855:0crwdne18855:0 crwdns18856:0crwdne18856:0 - -*BlockTag: crwdns18857:0crwdne18857:0* - -{panel end} - -## crwdns18007:0crwdne18007:0 - -crwdns18858:0crwdne18858:0 crwdns18859:0crwdne18859:0 crwdns18860:0crwdne18860:0 crwdns18861:0crwdne18861:0 crwdns18862:0crwdne18862:0 crwdns18863:0crwdne18863:0 - -## crwdns18014:0crwdne18014:0 - -crwdns18864:0crwdne18864:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/unit-plan-ct-links.md deleted file mode 100644 index 6f6d64cae..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/unit-plan-ct-links.md +++ /dev/null @@ -1,79 +0,0 @@ -*BlockTag: crwdns18563:0crwdne18563:0* - -{panel type="ct-algorithm"} - -# crwdns18564:0crwdne18564:0 - -crwdns17492:0crwdne17492:0 crwdns17493:0crwdne17493:0 - -*BlockTag: crwdns17494:0crwdne17494:0* - -{panel end} - -*BlockTag: crwdns18565:0crwdne18565:0* - -{panel type="ct-abstraction"} - -# crwdns18566:0crwdne18566:0 - -crwdns17496:0crwdne17496:0 crwdns17497:0crwdne17497:0 crwdns17498:0crwdne17498:0 - -crwdns17499:0crwdne17499:0 - -crwdns17500:0crwdne17500:0 - -*BlockTag: crwdns17501:0crwdne17501:0* - -{panel end} - -*BlockTag: crwdns18567:0crwdne18567:0* - -{panel type="ct-decomposition"} - -# crwdns18568:0crwdne18568:0 - -crwdns17503:0crwdne17503:0 crwdns17504:0crwdne17504:0 - -*BlockTag: crwdns17505:0crwdne17505:0* - -{panel end} - -*BlockTag: crwdns18569:0crwdne18569:0* - -{panel type="ct-pattern"} - -# crwdns18570:0crwdne18570:0 - -crwdns17507:0crwdne17507:0 crwdns17508:0crwdne17508:0 - -*BlockTag: crwdns17509:0crwdne17509:0* - -{panel end} - -*BlockTag: crwdns18571:0crwdne18571:0* - -{panel type="ct-evaluation"} - -# crwdns18572:0crwdne18572:0 - -crwdns17511:0crwdne17511:0 crwdns17512:0crwdne17512:0 - -crwdns17513:0crwdne17513:0 crwdns17514:0crwdne17514:0 - -crwdns17515:0crwdne17515:0 crwdns17516:0crwdne17516:0 - -*BlockTag: crwdns17517:0crwdne17517:0* - -{panel end} - -*BlockTag: crwdns18573:0crwdne18573:0* - -{panel type="ct-logic"} - -# crwdns18574:0crwdne18574:0 - -crwdns17519:0crwdne17519:0 crwdns17520:0crwdne17520:0 crwdns17521:0crwdne17521:0 crwdns17522:0crwdne17522:0 - -*BlockTag: crwdns17523:0crwdne17523:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/unit-plan.md b/csunplugged/topics/content/xx_LR/kidbots/unit-plan/unit-plan.md deleted file mode 100644 index d58c57a64..000000000 --- a/csunplugged/topics/content/xx_LR/kidbots/unit-plan/unit-plan.md +++ /dev/null @@ -1,65 +0,0 @@ -# crwdns17457:0crwdne17457:0 - -*BlockTag: crwdns18559:0crwdne18559:0* - -{panel type="video"} - -# crwdns18560:0crwdne18560:0 - -crwdns18252:0crwdne18252:0 - -*BlockTag: crwdns18253:0crwdne18253:0* - -{panel end} - -*BlockTag: crwdns18254:0crwdne18254:0* - -{image file-path="img/topics/teamwork.png" alt="Cartoon kids working together"} - -crwdns18255:0crwdne18255:0 crwdns18256:0crwdne18256:0 - -crwdns18257:0crwdne18257:0 crwdns18258:0crwdne18258:0 crwdns18259:0crwdne18259:0 crwdns18260:0crwdne18260:0 crwdns18261:0crwdne18261:0 crwdns18262:0crwdne18262:0 - -crwdns18263:0crwdne18263:0 - -## crwdns18264:0crwdne18264:0 - -crwdns18265:0crwdne18265:0 crwdns18266:0crwdne18266:0 - -crwdns18267:0crwdne18267:0 crwdns18268:0crwdne18268:0 - -*BlockTag: crwdns18269:0crwdne18269:0* - -{image file-path="img/topics/program.png" alt="Cartoon kid showing scratch program to computer"} - -*BlockTag: crwdns18561:0crwdne18561:0* - -{panel type="math"} - -# crwdns18562:0crwdne18562:0 - -crwdns18271:0crwdne18271:0 crwdns18272:0crwdne18272:0 - -*BlockTag: crwdns18273:0crwdne18273:0* - -{panel end} - -## crwdns18274:0crwdne18274:0 - -*BlockTag: crwdns18275:0crwdne18275:0* - -{image file-path="img/topics/careers.png" alt="Cartoon director, doctor and chef"} - -crwdns18276:0crwdne18276:0 crwdns18277:0crwdne18277:0 - -crwdns18278:0crwdne18278:0 - -## crwdns18279:0crwdne18279:0 - -- crwdns17487:0crwdne17487:0 - -- crwdns17488:0crwdne17488:0 - -- crwdns17489:0crwdne17489:0 - -- crwdns17490:0crwdne17490:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/learning-outcomes.yaml b/csunplugged/topics/content/xx_LR/learning-outcomes.yaml deleted file mode 100644 index f3ae3b9ba..000000000 --- a/csunplugged/topics/content/xx_LR/learning-outcomes.yaml +++ /dev/null @@ -1,205 +0,0 @@ ---- -binary-convert-decimal: - text: crwdns8092:0crwdne8092:0 -binary-justify-zeros-and-ones: - text: crwdns8093:0crwdne8093:0 -binary-argue-zeros-and-ones-stored: - text: crwdns8094:0crwdne8094:0 -binary-explain-different-states: - text: crwdns8095:0crwdne8095:0 -binary-explain-logic-one-bit: - text: crwdns8096:0crwdne8096:0 -binary-explain-off-on: - text: crwdns8097:0crwdne8097:0 -binary-predict-bit-value: - text: crwdns8098:0crwdne8098:0 -binary-explain-doubling: - text: crwdns8099:0crwdne8099:0 -binary-recognise-alphabet-bits: - text: crwdns8100:0crwdne8100:0 -binary-create-message-converting: - text: crwdns8101:0crwdne8101:0 -binary-interpret-message-binary: - text: crwdns8102:0crwdne8102:0 -binary-explain-codes-alphabets: - text: crwdns8103:0crwdne8103:0 -binary-make-play-instructions-binary: - text: crwdns8104:0crwdne8104:0 -binary-identify-opposite-pairs: - text: crwdns8105:0crwdne8105:0 -binary-match-letters-numbers: - text: crwdns8106:0crwdne8106:0 -binary-count-highest-number: - text: crwdns8107:0crwdne8107:0 -drama-create-video-binary: - text: crwdns8108:0crwdne8108:0 -speaking-clear-instructions-binary-cards: - text: crwdns8110:0crwdne8110:0 -error-describe-steps-to-find-card: - text: crwdns8111:0crwdne8111:0 -error-explain-each-card-bit: - text: crwdns8112:0crwdne8112:0 -error-explain-chose-parity-card: - text: crwdns8113:0crwdne8113:0 -error-explain-steps-product-code-checksum: - text: crwdns19560:0crwdne19560:0 -error-discuss-checksum-algorithm-12-13-product-code: - text: crwdns19561:0crwdne19561:0 -error-explain-checksum-algorithm: - text: crwdns8114:0crwdne8114:0 -error-follow-steps-find-card-turned-over: - text: crwdns8115:0crwdne8115:0 -error-explain-group-numbers: - text: crwdns8116:0crwdne8116:0 -error-recognise-groups-of-5: - text: crwdns8117:0crwdne8117:0 -error-demonstrate-count-to-5: - text: crwdns8118:0crwdne8118:0 -language-discuss-storing-characters: - text: crwdns8119:0crwdne8119:0 -numeracy-adding-given-number: - text: crwdns8120:0crwdne8120:0 -numeracy-identify-even-odd: - text: crwdns8121:0crwdne8121:0 -numeracy-discuss-count-zeros-ones: - text: crwdns8122:0crwdne8122:0 -numeracy-explain-squaring: - text: crwdns8123:0crwdne8123:0 -numeracy-compare-base10-base2: - text: crwdns8124:0crwdne8124:0 -numeracy-identify-larger-number: - text: crwdns8125:0crwdne8125:0 -numeracy-count-by-pointing: - text: crwdns8126:0crwdne8126:0 -numeracy-recognise-patterns: - text: crwdns8127:0crwdne8127:0 -numeracy-recognise-number-alphabet-order: - text: crwdns8128:0crwdne8128:0 -numeracy-explain-even-odd-parity-problem: - text: crwdns8129:0crwdne8129:0 -numeracy-describe-rows-columns: - text: crwdns8130:0crwdne8130:0 -numeracy-discuss-changing-one-card-state: - text: crwdns8131:0crwdne8131:0 -numeracy-explain-modulo: - text: crwdns8132:0crwdne8132:0 -numeracy-identify-modulo-everyday-life: - text: crwdns8133:0crwdne8133:0 -numeracy-recognise-numbers-represented: - text: crwdns8134:0crwdne8134:0 -numeracy-discuss-modulo-understanding-remainders: - text: crwdns8135:0crwdne8135:0 -programming-explain-sequencing: - text: crwdns8136:0crwdne8136:0 -programming-explain-output: - text: crwdns8137:0crwdne8137:0 -programming-explain-variable-name: - text: crwdns8138:0crwdne8138:0 -programming-describe-variables: - text: crwdns8139:0crwdne8139:0 -programming-describe-mathematical-operations: - text: crwdns8140:0crwdne8140:0 -programming-outline-variable-updates: - text: crwdns8141:0crwdne8141:0 -programming-describe-variable-output: - text: crwdns8142:0crwdne8142:0 -programming-describe-function: - text: crwdns8143:0crwdne8143:0 -programming-identify-loop: - text: crwdns8144:0crwdne8144:0 -programming-explain-join-concatenate: - text: crwdns8145:0crwdne8145:0 -programming-explain-asking-input-end-user: - text: crwdns8146:0crwdne8146:0 -programming-identify-if-statement: - text: crwdns8147:0crwdne8147:0 -programming-demonstrate-indexing: - text: crwdns8148:0crwdne8148:0 -programming-explain-set-and-change-statement: - text: crwdns8149:0crwdne8149:0 -programming-describe-variable-initial-value: - text: crwdns8150:0crwdne8150:0 -programming-explain-mod: - text: crwdns8151:0crwdne8151:0 -programming-explain-differences-if-else-if-statements: - text: crwdns8152:0crwdne8152:0 -programming-describe-nested-statement: - text: crwdns8153:0crwdne8153:0 -programming-identify-list-store-data: - text: crwdns8154:0crwdne8154:0 -programming-show-item-specified-position-list: - text: crwdns8155:0crwdne8155:0 -search-algorithms-identify-unsorted-lists: - text: crwdns8156:0crwdne8156:0 -search-algorithms-describe-time-size-input: - text: crwdns8157:0crwdne8157:0 -search-algorithms-explore-probability-value-random-set: - text: crwdns8158:0crwdne8158:0 -search-algorithms-explain-range-unsorted-lists: - text: crwdns8159:0crwdne8159:0 -search-algorithms-identify-sequential-binary: - text: crwdns8160:0crwdne8160:0 -search-algorithms-explain-decomposition-binary: - text: crwdns8161:0crwdne8161:0 -search-algorithms-describe-time-size-input-different: - text: crwdns8162:0crwdne8162:0 -search-algorithms-describe-compare-values: - text: crwdns8163:0crwdne8163:0 -search-algorithms-explain-unsorted-lists: - text: crwdns8164:0crwdne8164:0 -unplugged-programming-apply-addition-multiplication: - text: crwdns8165:0crwdne8165:0 -unplugged-programming-design-fitness-achievable: - text: crwdns8166:0crwdne8166:0 -unplugged-programming-construct-fitness-workout: - text: crwdns8167:0crwdne8167:0 -unplugged-programming-design-language: - text: crwdns8168:0crwdne8168:0 -unplugged-programming-give-instructions: - text: crwdns8169:0crwdne8169:0 -unplugged-programming-identify-bug-correct: - text: crwdns8170:0crwdne8170:0 -unplugged-programming-explain-exact-instructions: - text: crwdns8171:0crwdne8171:0 -unplugged-programming-follow-instructions: - text: crwdns8172:0crwdne8172:0 -unplugged-programming-identify-2D-shapes: - text: crwdns8173:0crwdne8173:0 -unplugged-programming-communicate-debugging: - text: crwdns8174:0crwdne8174:0 -unplugged-programming-actively-listen-feedback: - text: crwdns8175:0crwdne8175:0 -unplugged-programming-give-accurate-instructions-pace: - text: crwdns8176:0crwdne8176:0 -unplugged-programming-give-instructions-shape: - text: crwdns8177:0crwdne8177:0 -unplugged-programming-identify-bug-shape: - text: crwdns8178:0crwdne8178:0 -unplugged-programming-describe-draw-2D-shape: - text: crwdns8179:0crwdne8179:0 -unplugged-programming-accurately-count: - text: crwdns8180:0crwdne8180:0 -unplugged-programming-give-precise-instructions: - text: crwdns8181:0crwdne8181:0 -unplugged-programming-give-instructions-move: - text: crwdns8182:0crwdne8182:0 -unplugged-programming-explain-tell-stories: - text: crwdns8183:0crwdne8183:0 -unplugged-programming-recall-direction-words: - text: crwdns8184:0crwdne8184:0 -sorting-explain-parallel-algorithm: - text: crwdns8185:0crwdne8185:0 -sorting-use-selection-sort: - text: crwdns8186:0crwdne8186:0 -sorting-identify-number-range: - text: crwdns8187:0crwdne8187:0 -sorting-identify-number-given-range: - text: crwdns8188:0crwdne8188:0 -sorting-organise-objects-size: - text: crwdns8189:0crwdne8189:0 -sorting-recognise-sorting-method: - text: crwdns8190:0crwdne8190:0 -sorting-demonstrate-alphabet-knowledge: - text: crwdns8191:0crwdne8191:0 -sorting-comparing-musical-pitch: - text: crwdns8192:0crwdne8192:0 diff --git a/csunplugged/topics/content/xx_LR/programming-challenges-structure-difficulties.yaml b/csunplugged/topics/content/xx_LR/programming-challenges-structure-difficulties.yaml deleted file mode 100644 index acabc0a79..000000000 --- a/csunplugged/topics/content/xx_LR/programming-challenges-structure-difficulties.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -difficulty-0: - name: crwdns18193:0crwdne18193:0 -difficulty-1: - name: crwdns18194:0crwdne18194:0 -difficulty-2: - name: crwdns18195:0crwdne18195:0 -difficulty-3: - name: crwdns18196:0crwdne18196:0 diff --git a/csunplugged/topics/content/xx_LR/programming-challenges-structure-languages.yaml b/csunplugged/topics/content/xx_LR/programming-challenges-structure-languages.yaml deleted file mode 100644 index 30a92cd69..000000000 --- a/csunplugged/topics/content/xx_LR/programming-challenges-structure-languages.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -scratch: - name: crwdns8197:0crwdne8197:0 -python: - name: crwdns8198:0crwdne8198:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/biography.md b/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/biography.md deleted file mode 100644 index 94837114c..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/biography.md +++ /dev/null @@ -1,14 +0,0 @@ -# crwdns11513:0crwdne11513:0 - -crwdns11514:0crwdne11514:0 - -- crwdns11515:0crwdne11515:0 -- crwdns11516:0crwdne11516:0 - -*BlockTag: crwdns11517:0crwdne11517:0* - -{image file-path="img/topics/don-knuth.png" alt="Don Knuth stands in front of a piano."} - -- crwdns11518:0crwdne11518:0 -- crwdns11519:0crwdne11519:0 crwdns11520:0crwdne11520:0 crwdns11521:0crwdne11521:0 crwdns11522:0crwdne11522:0 -- crwdns11523:0crwdne11523:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/drama-video.md b/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/drama-video.md deleted file mode 100644 index 645fa9fa6..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/drama-video.md +++ /dev/null @@ -1,21 +0,0 @@ -# crwdns19520:0crwdne19520:0 - -*crwdns19521:0crwdne19521:0* - -## crwdns19522:0crwdne19522:0 - -crwdns19523:0crwdne19523:0 crwdns19524:0crwdne19524:0 - -crwdns19525:0crwdne19525:0 crwdns19526:0crwdne19526:0 crwdns19527:0crwdne19527:0 - -crwdns19528:0crwdne19528:0 crwdns19529:0crwdne19529:0 - -## crwdns19530:0crwdne19530:0 - -crwdns19531:0crwdne19531:0 - -### crwdns19532:0crwdne19532:0 - -crwdns19533:0crwdne19533:0 - -crwdns19534:0crwdne19534:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/music.md b/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/music.md deleted file mode 100644 index 44b21d66a..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/music.md +++ /dev/null @@ -1,5 +0,0 @@ -# crwdns19535:0crwdne19535:0 - -crwdns19536:0crwdne19536:0 crwdns19537:0crwdne19537:0 crwdns19538:0crwdne19538:0 crwdns19539:0crwdne19539:0 - -crwdns19540:0crwdne19540:0 crwdns19541:0crwdne19541:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/where-is-my-hat.md b/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/where-is-my-hat.md deleted file mode 100644 index 7bcdb1496..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/curriculum-integrations/where-is-my-hat.md +++ /dev/null @@ -1,9 +0,0 @@ -# crwdns11546:0crwdne11546:0 - -*BlockTag: crwdns11547:0crwdne11547:0* - -{image file-path="img/topics/where-is-my-hat.png" alt="A girl thinks about where her hat could be."} - -crwdns11548:0crwdne11548:0 - -crwdns11549:0crwdne11549:0 crwdns11550:0crwdne11550:0 crwdns11551:0crwdne11551:0 crwdns11552:0crwdne11552:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/searching-algorithms.md b/csunplugged/topics/content/xx_LR/searching-algorithms/searching-algorithms.md deleted file mode 100644 index 964e18c4b..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/searching-algorithms.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns11506:0crwdne11506:0 - -crwdns11507:0crwdne11507:0 crwdns11508:0crwdne11508:0 crwdns11509:0crwdne11509:0 crwdns11510:0crwdne11510:0 crwdns11511:0crwdne11511:0 crwdns11512:0crwdne11512:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-ct-links.md deleted file mode 100644 index 06728015a..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-ct-links.md +++ /dev/null @@ -1,111 +0,0 @@ -*BlockTag: crwdns18413:0crwdne18413:0* - -{panel type="ct-algorithm"} - -# crwdns18414:0crwdne18414:0 - -crwdns11688:0crwdne11688:0 crwdns11689:0crwdne11689:0 - -crwdns11690:0crwdne11690:0 crwdns11691:0crwdne11691:0 crwdns11692:0crwdne11692:0 - -#### crwdns11693:0crwdne11693:0 - -crwdns11694:0crwdne11694:0 - -*BlockTag: crwdns11695:0crwdne11695:0* - -{panel end} - -*BlockTag: crwdns18415:0crwdne18415:0* - -{panel type="ct-abstraction"} - -# crwdns18416:0crwdne18416:0 - -crwdns11697:0crwdne11697:0 - -crwdns11698:0crwdne11698:0 - -#### crwdns11699:0crwdne11699:0 - -crwdns11700:0crwdne11700:0 - -*BlockTag: crwdns11701:0crwdne11701:0* - -{panel end} - -*BlockTag: crwdns18417:0crwdne18417:0* - -{panel type="ct-decomposition"} - -# crwdns18418:0crwdne18418:0 - -*BlockTag: crwdns19786:0crwdne19786:0* - -{image file-path="img/topics/marbles.png" alt="The image shows a pile of marbles being halved again and again, until one marble remains."} - -crwdns19787:0crwdne19787:0 crwdns19788:0crwdne19788:0 - -#### crwdns11705:0crwdne11705:0 - -crwdns19789:0crwdne19789:0 - -*BlockTag: crwdns19790:0crwdne19790:0* - -{panel end} - -*BlockTag: crwdns19791:0crwdne19791:0* - -{panel type="ct-pattern"} - -# crwdns18420:0crwdne18420:0 - -crwdns19792:0crwdne19792:0 - -crwdns19793:0crwdne19793:0 crwdns19794:0crwdne19794:0 - -#### crwdns11712:0crwdne11712:0 - -crwdns19795:0crwdne19795:0 - -*BlockTag: crwdns19796:0crwdne19796:0* - -{panel end} - -*BlockTag: crwdns19797:0crwdne19797:0* - -{panel type="ct-evaluation"} - -# crwdns18422:0crwdne18422:0 - -*BlockTag: crwdns19798:0crwdne19798:0* - -{image file-path="img/topics/hand-with-marbles.png" alt="The image shows two hands, one with three marbles and the other with one marble." align="right"} - -crwdns19799:0crwdne19799:0 crwdns19800:0crwdne19800:0 crwdns19801:0crwdne19801:0 - -#### crwdns11719:0crwdne11719:0 - -crwdns19802:0crwdne19802:0 crwdns19803:0crwdne19803:0 - -*BlockTag: crwdns19804:0crwdne19804:0* - -{panel end} - -*BlockTag: crwdns19805:0crwdne19805:0* - -{panel type="ct-logic"} - -# crwdns18424:0crwdne18424:0 - -crwdns19806:0crwdne19806:0 crwdns19807:0crwdne19807:0 crwdns19808:0crwdne19808:0 crwdns19809:0crwdne19809:0 crwdns19810:0crwdne19810:0 crwdns19811:0crwdne19811:0 - -crwdns19812:0crwdne19812:0 crwdns19813:0crwdne19813:0 - -#### crwdns11732:0crwdne11732:0 - -crwdns19814:0crwdne19814:0 crwdns19815:0crwdne19815:0 - -*BlockTag: crwdns19816:0crwdne19816:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior-ct-links.md deleted file mode 100644 index cc9e2a4bb..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior-ct-links.md +++ /dev/null @@ -1,123 +0,0 @@ -*BlockTag: crwdns19817:0crwdne19817:0* - -{panel type="ct-algorithm"} - -# crwdns19818:0crwdne19818:0 - -crwdns19819:0crwdne19819:0 - -crwdns19820:0crwdne19820:0 crwdns19821:0crwdne19821:0 crwdns19822:0crwdne19822:0 - -#### crwdns19823:0crwdne19823:0 - -crwdns19824:0crwdne19824:0 - -*BlockTag: crwdns19825:0crwdne19825:0* - -{panel end} - -*BlockTag: crwdns19826:0crwdne19826:0* - -{panel type="ct-abstraction"} - -# crwdns19827:0crwdne19827:0 - -crwdns19828:0crwdne19828:0 - -crwdns19829:0crwdne19829:0 - -crwdns19830:0crwdne19830:0 - -#### crwdns19831:0crwdne19831:0 - -*BlockTag: crwdns19832:0crwdne19832:0* - -{image file-path="img/topics/digits-alpha-items.png" alt="The image shows three types of data, one is numbers, one is letters, and one is different sized circles."} - -crwdns19833:0crwdne19833:0 crwdns19834:0crwdne19834:0 - -*BlockTag: crwdns19835:0crwdne19835:0* - -{panel end} - -*BlockTag: crwdns19836:0crwdne19836:0* - -{panel type="ct-decomposition"} - -# crwdns19837:0crwdne19837:0 - -*BlockTag: crwdns19838:0crwdne19838:0* - -{image file-path="img/topics/marbles.png" alt="The image shows a pile of marbles being halved again and again, until one marble remains."} - -crwdns19839:0crwdne19839:0 crwdns19840:0crwdne19840:0 - -#### crwdns19841:0crwdne19841:0 - -crwdns19842:0crwdne19842:0 - -*BlockTag: crwdns19843:0crwdne19843:0* - -{panel end} - -*BlockTag: crwdns19844:0crwdne19844:0* - -{panel type="ct-pattern"} - -# crwdns19845:0crwdne19845:0 - -crwdns19846:0crwdne19846:0 - -crwdns19847:0crwdne19847:0 crwdns19848:0crwdne19848:0 - -#### crwdns19849:0crwdne19849:0 - -crwdns19850:0crwdne19850:0 - -*BlockTag: crwdns19851:0crwdne19851:0* - -{panel end} - -*BlockTag: crwdns19852:0crwdne19852:0* - -{panel type="ct-evaluation"} - -# crwdns19853:0crwdne19853:0 - -*BlockTag: crwdns19854:0crwdne19854:0* - -{image file-path="img/topics/hand-with-marbles.png" alt="The image shows two hands, one with three marbles and the other with one marble." align="right"} - -crwdns19855:0crwdne19855:0 crwdns19856:0crwdne19856:0 - -#### crwdns19857:0crwdne19857:0 - -crwdns19858:0crwdne19858:0 crwdns19859:0crwdne19859:0 - -*BlockTag: crwdns19860:0crwdne19860:0* - -{panel end} - -*BlockTag: crwdns19861:0crwdne19861:0* - -{panel type="ct-logic"} - -# crwdns19862:0crwdne19862:0 - -crwdns19863:0crwdne19863:0 crwdns19864:0crwdne19864:0 crwdns19865:0crwdne19865:0 - -crwdns19866:0crwdne19866:0 crwdns19867:0crwdne19867:0 crwdns19868:0crwdne19868:0 - -crwdns19869:0crwdne19869:0 - -#### crwdns19870:0crwdne19870:0 - -*BlockTag: crwdns19871:0crwdne19871:0* - -{image file-path="img/topics/numbers-middle-bright.png" alt="The image shows a five by five grid of numbers in sorted order, with the center number highlighted."} - -crwdns19872:0crwdne19872:0 crwdns19873:0crwdne19873:0 - -*BlockTag: crwdns19874:0crwdne19874:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior-resource-descriptions.yaml deleted file mode 100644 index 636c3afff..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -searching-cards: - description: crwdns19563:0crwdne19563:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior.md deleted file mode 100644 index bca21e7cf..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-junior.md +++ /dev/null @@ -1,83 +0,0 @@ -# crwdns19682:0crwdne19682:0 - -## crwdns19683:0crwdne19683:0 - -*BlockTag: crwdns19684:0crwdne19684:0* - -{image file-path="img/topics/computer-searching-number.png" alt="A computer is searching for a number."} - -crwdns20479:0crwdne20479:0 crwdns19686:0crwdne19686:0 crwdns19687:0crwdne19687:0 - -### crwdns19688:0crwdne19688:0 - -- crwdns19689:0crwdne19689:0 crwdns19690:0crwdne19690:0 - -- crwdns19691:0crwdne19691:0 - -## crwdns19692:0crwdne19692:0 - -crwdns20480:0crwdne20480:0 crwdns20481:0crwdne20481:0 crwdns20482:0crwdne20482:0 crwdns20483:0crwdne20483:0 crwdns20484:0crwdne20484:0 - -*BlockTag: crwdns19697:0crwdne19697:0* - -{panel type="teaching"} - -# crwdns19698:0crwdne19698:0 - -crwdns19699:0crwdne19699:0 crwdns19700:0crwdne19700:0 crwdns19701:0crwdne19701:0 crwdns19702:0crwdne19702:0 crwdns19703:0crwdne19703:0 - -*BlockTag: crwdns19704:0crwdne19704:0* - -{panel end} - -## crwdns19705:0crwdne19705:0 - -crwdns19706:0crwdne19706:0 - -crwdns19707:0crwdne19707:0 crwdns19708:0crwdne19708:0 - -crwdns19709:0crwdne19709:0 - -crwdns19710:0crwdne19710:0 crwdns19711:0crwdne19711:0 crwdns19712:0crwdne19712:0 crwdns19713:0crwdne19713:0 crwdns19714:0crwdne19714:0 crwdns19715:0crwdne19715:0 crwdns19716:0crwdne19716:0 - -crwdns19717:0crwdne19717:0 crwdns19718:0crwdne19718:0 crwdns19719:0crwdne19719:0 - -crwdns19720:0crwdne19720:0 - -crwdns19721:0crwdne19721:0 - -crwdns19722:0crwdne19722:0 - -crwdns19723:0crwdne19723:0 - -*BlockTag: crwdns19724:0crwdne19724:0* - -{panel type="teaching"} - -# crwdns19725:0crwdne19725:0 - -crwdns19726:0crwdne19726:0 crwdns19727:0crwdne19727:0 crwdns19728:0crwdne19728:0 crwdns19729:0crwdne19729:0 - -*BlockTag: crwdns19730:0crwdne19730:0* - -{panel end} - -## crwdns19731:0crwdne19731:0 - -crwdns19732:0crwdne19732:0 crwdns19733:0crwdne19733:0 crwdns19734:0crwdne19734:0 crwdns19735:0crwdne19735:0 - -crwdns19736:0crwdne19736:0 crwdns19737:0crwdne19737:0 crwdns19738:0crwdne19738:0 - -crwdns19739:0crwdne19739:0 crwdns19740:0crwdne19740:0 - -crwdns19741:0crwdne19741:0 crwdns19742:0crwdne19742:0 crwdns19743:0crwdne19743:0 - -## crwdns19744:0crwdne19744:0 - -crwdns19745:0crwdne19745:0 - -- crwdns19746:0crwdne19746:0 -- crwdns19747:0crwdne19747:0 -- crwdns19748:0crwdne19748:0 - - crwdns19749:0crwdne19749:0 - - crwdns19750:0crwdne19750:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-resource-descriptions.yaml deleted file mode 100644 index 834462e9d..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -searching-cards: - description: crwdns8216:0crwdne8216:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer.md deleted file mode 100644 index 1268d9d92..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/divide-and-conquer.md +++ /dev/null @@ -1,83 +0,0 @@ -# crwdns11736:0crwdne11736:0 - -## crwdns11737:0crwdne11737:0 - -crwdns11738:0crwdne11738:0 crwdns11739:0crwdne11739:0 crwdns11740:0crwdne11740:0 - -### crwdns11741:0crwdne11741:0 - -- crwdns11742:0crwdne11742:0 crwdns11743:0crwdne11743:0 - -*BlockTag: crwdns15555:0crwdne15555:0* - -{image file-path="img/topics/child_in_numbers.png" alt="A child lost in a pile of random numbers."} - -- crwdns15556:0crwdne15556:0 - -## crwdns11745:0crwdne11745:0 - -crwdns15557:0crwdne15557:0 crwdns15558:0crwdne15558:0 crwdns15559:0crwdne15559:0 crwdns15560:0crwdne15560:0 - -*BlockTag: crwdns18391:0crwdne18391:0* - -{panel type="teaching"} - -# crwdns18392:0crwdne18392:0 - -crwdns15562:0crwdne15562:0 crwdns15563:0crwdne15563:0 crwdns15564:0crwdne15564:0 crwdns15565:0crwdne15565:0 crwdns15566:0crwdne15566:0 - -*BlockTag: crwdns15567:0crwdne15567:0* - -{panel end} - -## crwdns11757:0crwdne11757:0 - -crwdns19751:0crwdne19751:0 - -crwdns19752:0crwdne19752:0 crwdns19753:0crwdne19753:0 - -crwdns19754:0crwdne19754:0 - -crwdns19755:0crwdne19755:0 crwdns19756:0crwdne19756:0 crwdns19757:0crwdne19757:0 crwdns19758:0crwdne19758:0 crwdns19759:0crwdne19759:0 crwdns19760:0crwdne19760:0 crwdns19761:0crwdne19761:0 - -crwdns19762:0crwdne19762:0 crwdns19763:0crwdne19763:0 crwdns19764:0crwdne19764:0 - -*BlockTag: crwdns19765:0crwdne19765:0* - -{image file-path="img/topics/searching_cards.gif" alt="Correct card selected."} - -crwdns19766:0crwdne19766:0 - -crwdns19767:0crwdne19767:0 - -crwdns19768:0crwdne19768:0 - -crwdns19769:0crwdne19769:0 - -*BlockTag: crwdns19770:0crwdne19770:0* - -{panel type="teaching"} - -# crwdns18394:0crwdne18394:0 - -crwdns19771:0crwdne19771:0 crwdns19772:0crwdne19772:0 crwdns19773:0crwdne19773:0 crwdns19774:0crwdne19774:0 - -*BlockTag: crwdns19775:0crwdne19775:0* - -{panel end} - -## crwdns11783:0crwdne11783:0 - -crwdns19776:0crwdne19776:0 crwdns19777:0crwdne19777:0 crwdns19778:0crwdne19778:0 crwdns19779:0crwdne19779:0 crwdns19780:0crwdne19780:0 crwdns19781:0crwdne19781:0 - -crwdns19782:0crwdne19782:0 crwdns19783:0crwdne19783:0 crwdns19784:0crwdne19784:0 - -## crwdns18342:0crwdne18342:0 - -crwdns19785:0crwdne19785:0 - -- crwdns15608:0crwdne15608:0 -- crwdns15609:0crwdne15609:0 -- crwdns15610:0crwdne15610:0 - - crwdns15611:0crwdne15611:0 - - crwdns15612:0crwdne15612:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-ct-links.md deleted file mode 100644 index f6c8da467..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-ct-links.md +++ /dev/null @@ -1,97 +0,0 @@ -*BlockTag: crwdns18429:0crwdne18429:0* - -{panel type="ct-algorithm"} - -# crwdns18430:0crwdne18430:0 - -crwdns11802:0crwdne11802:0 crwdns11803:0crwdne11803:0 - -#### crwdns11804:0crwdne11804:0 - -crwdns11805:0crwdne11805:0 crwdns11806:0crwdne11806:0 crwdns11807:0crwdne11807:0 crwdns11808:0crwdne11808:0 - -crwdns11809:0crwdne11809:0 - -*BlockTag: crwdns11810:0crwdne11810:0* - -{panel end} - -*BlockTag: crwdns18431:0crwdne18431:0* - -{panel type="ct-abstraction"} - -# crwdns18432:0crwdne18432:0 - -crwdns11812:0crwdne11812:0 crwdns11813:0crwdne11813:0 crwdns11814:0crwdne11814:0 crwdns11815:0crwdne11815:0 - -#### crwdns11816:0crwdne11816:0 - -crwdns11817:0crwdne11817:0 crwdns11818:0crwdne11818:0 - -*BlockTag: crwdns11819:0crwdne11819:0* - -{panel end} - -*BlockTag: crwdns18433:0crwdne18433:0* - -{panel type="ct-decomposition"} - -# crwdns18434:0crwdne18434:0 - -crwdns11821:0crwdne11821:0 crwdns11822:0crwdne11822:0 - -#### crwdns11823:0crwdne11823:0 - -crwdns11824:0crwdne11824:0 crwdns11825:0crwdne11825:0 - -*BlockTag: crwdns11826:0crwdne11826:0* - -{panel end} - -*BlockTag: crwdns18435:0crwdne18435:0* - -{panel type="ct-pattern"} - -# crwdns18436:0crwdne18436:0 - -crwdns11828:0crwdne11828:0 crwdns11829:0crwdne11829:0 crwdns11830:0crwdne11830:0 - -#### crwdns11831:0crwdne11831:0 - -crwdns11832:0crwdne11832:0 - -*BlockTag: crwdns11833:0crwdne11833:0* - -{panel end} - -*BlockTag: crwdns18437:0crwdne18437:0* - -{panel type="ct-evaluation"} - -# crwdns18438:0crwdne18438:0 - -crwdns11835:0crwdne11835:0 crwdns11836:0crwdne11836:0 crwdns11837:0crwdne11837:0 crwdns11838:0crwdne11838:0 - -#### crwdns11839:0crwdne11839:0 - -crwdns11840:0crwdne11840:0 - -*BlockTag: crwdns11841:0crwdne11841:0* - -{panel end} - -*BlockTag: crwdns18439:0crwdne18439:0* - -{panel type="ct-logic"} - -# crwdns18440:0crwdne18440:0 - -crwdns11843:0crwdne11843:0 crwdns11844:0crwdne11844:0 - -#### crwdns11845:0crwdne11845:0 - -crwdns11846:0crwdne11846:0 - -*BlockTag: crwdns11847:0crwdne11847:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior-ct-links.md deleted file mode 100644 index 6ef815fc3..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior-ct-links.md +++ /dev/null @@ -1,99 +0,0 @@ -*BlockTag: crwdns19630:0crwdne19630:0* - -{panel type="ct-algorithm"} - -# crwdns19631:0crwdne19631:0 - -crwdns19632:0crwdne19632:0 crwdns19633:0crwdne19633:0 - -#### crwdns19634:0crwdne19634:0 - -crwdns19635:0crwdne19635:0 crwdns19636:0crwdne19636:0 crwdns19637:0crwdne19637:0 crwdns19638:0crwdne19638:0 - -crwdns19639:0crwdne19639:0 - -*BlockTag: crwdns19640:0crwdne19640:0* - -{panel end} - -*BlockTag: crwdns19641:0crwdne19641:0* - -{panel type="ct-abstraction"} - -# crwdns19642:0crwdne19642:0 - -crwdns19643:0crwdne19643:0 crwdns19644:0crwdne19644:0 crwdns19645:0crwdne19645:0 crwdns19646:0crwdne19646:0 - -#### crwdns19647:0crwdne19647:0 - -crwdns19648:0crwdne19648:0 crwdns19649:0crwdne19649:0 - -*BlockTag: crwdns19650:0crwdne19650:0* - -{panel end} - -*BlockTag: crwdns19651:0crwdne19651:0* - -{panel type="ct-decomposition"} - -# crwdns19652:0crwdne19652:0 - -crwdns19653:0crwdne19653:0 crwdns19654:0crwdne19654:0 - -#### crwdns19655:0crwdne19655:0 - -crwdns19656:0crwdne19656:0 crwdns19657:0crwdne19657:0 - -*BlockTag: crwdns19658:0crwdne19658:0* - -{panel end} - -*BlockTag: crwdns19659:0crwdne19659:0* - -{panel type="ct-pattern"} - -# crwdns19660:0crwdne19660:0 - -crwdns19661:0crwdne19661:0 crwdns19662:0crwdne19662:0 crwdns19663:0crwdne19663:0 - -#### crwdns19664:0crwdne19664:0 - -crwdns19665:0crwdne19665:0 - -*BlockTag: crwdns19666:0crwdne19666:0* - -{panel end} - -*BlockTag: crwdns19667:0crwdne19667:0* - -{panel type="ct-evaluation"} - -# crwdns19668:0crwdne19668:0 - -crwdns19669:0crwdne19669:0 - -crwdns19670:0crwdne19670:0 crwdns19671:0crwdne19671:0 - -#### crwdns19672:0crwdne19672:0 - -crwdns19673:0crwdne19673:0 - -*BlockTag: crwdns19674:0crwdne19674:0* - -{panel end} - -*BlockTag: crwdns19675:0crwdne19675:0* - -{panel type="ct-logic"} - -# crwdns19676:0crwdne19676:0 - -crwdns19677:0crwdne19677:0 crwdns19678:0crwdne19678:0 - -#### crwdns19679:0crwdne19679:0 - -crwdns19680:0crwdne19680:0 - -*BlockTag: crwdns19681:0crwdne19681:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior-resource-descriptions.yaml deleted file mode 100644 index 6730e6f72..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -searching-cards: - description: crwdns19562:0crwdne19562:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior.md deleted file mode 100644 index bedcb0a18..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-junior.md +++ /dev/null @@ -1,101 +0,0 @@ -# crwdns19934:0crwdne19934:0 - -## crwdns19935:0crwdne19935:0 - -crwdns19936:0crwdne19936:0 crwdns19937:0crwdne19937:0 crwdns19938:0crwdne19938:0 - -*BlockTag: crwdns19939:0crwdne19939:0* - -{image file-path="img/topics/houses_randomnumbers.png" alt="Six houses numbered 16, 24, 36, 41, 48, and 56"} - -crwdns19940:0crwdne19940:0 crwdns19941:0crwdne19941:0 crwdns19942:0crwdne19942:0 - -*BlockTag: crwdns19943:0crwdne19943:0* - -{image file-path="img/topics/6_guesses.png" alt="A continuum line with marks -for 1, 2, 3, 4, 5, and 6 guesses"} - -crwdns19944:0crwdne19944:0 - -**crwdns19945:0crwdne19945:0** - -- crwdns19946:0crwdne19946:0 -- crwdns19947:0crwdne19947:0 -- crwdns19948:0crwdne19948:0 - -*BlockTag: crwdns19949:0crwdne19949:0* - -{panel type="teaching"} - -# crwdns19950:0crwdne19950:0 - -crwdns19951:0crwdne19951:0 crwdns19952:0crwdne19952:0 - -*BlockTag: crwdns19953:0crwdne19953:0* - -{panel end} - -## crwdns19954:0crwdne19954:0 - -crwdns19955:0crwdne19955:0 crwdns19956:0crwdne19956:0 crwdns19957:0crwdne19957:0 crwdns19958:0crwdne19958:0 crwdns19959:0crwdne19959:0 crwdns19960:0crwdne19960:0 - -*BlockTag: crwdns19961:0crwdne19961:0* - -{panel type="teaching"} - -# crwdns19962:0crwdne19962:0 - -crwdns19963:0crwdne19963:0 crwdns19964:0crwdne19964:0 crwdns19965:0crwdne19965:0 crwdns19966:0crwdne19966:0 - -*BlockTag: crwdns19967:0crwdne19967:0* - -{panel end} - -## crwdns19968:0crwdne19968:0 - -crwdns19969:0crwdne19969:0 - -crwdns19970:0crwdne19970:0 crwdns19971:0crwdne19971:0 crwdns19972:0crwdne19972:0 - -crwdns19973:0crwdne19973:0 - -crwdns19974:0crwdne19974:0 crwdns19975:0crwdne19975:0 crwdns19976:0crwdne19976:0 crwdns19977:0crwdne19977:0 crwdns19978:0crwdne19978:0 - -crwdns19979:0crwdne19979:0 crwdns19980:0crwdne19980:0 crwdns19981:0crwdne19981:0 crwdns19982:0crwdne19982:0 - -crwdns19983:0crwdne19983:0 crwdns19984:0crwdne19984:0 - -crwdns19985:0crwdne19985:0 - -crwdns19986:0crwdne19986:0 - -crwdns19987:0crwdne19987:0 crwdns19988:0crwdne19988:0 crwdns19989:0crwdne19989:0 - -*BlockTag: crwdns19990:0crwdne19990:0* - -{panel type="teaching"} - -# crwdns19991:0crwdne19991:0 - -crwdns19992:0crwdne19992:0 crwdns19993:0crwdne19993:0 crwdns19994:0crwdne19994:0 crwdns19995:0crwdne19995:0 - -*BlockTag: crwdns19996:0crwdne19996:0* - -{panel end} - -crwdns19997:0crwdne19997:0 crwdns19998:0crwdne19998:0 crwdns19999:0crwdne19999:0 - -## crwdns20000:0crwdne20000:0 - -crwdns20001:0crwdne20001:0 crwdns20002:0crwdne20002:0 crwdns20003:0crwdne20003:0 crwdns20004:0crwdne20004:0 crwdns20005:0crwdne20005:0 - -## crwdns20006:0crwdne20006:0 - -crwdns20007:0crwdne20007:0 crwdns20008:0crwdne20008:0 - -- crwdns20009:0crwdne20009:0 - - crwdns20010:0crwdne20010:0 - - crwdns20011:0crwdne20011:0 - - crwdns20012:0crwdne20012:0 - -crwdns20013:0crwdne20013:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-resource-descriptions.yaml deleted file mode 100644 index e7509a387..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -searching-cards: - description: crwdns8217:0crwdne8217:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses.md deleted file mode 100644 index 12c80db9b..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/how-many-guesses.md +++ /dev/null @@ -1,99 +0,0 @@ -# crwdns11848:0crwdne11848:0 - -## crwdns11849:0crwdne11849:0 - -crwdns11850:0crwdne11850:0 crwdns11851:0crwdne11851:0 crwdns11852:0crwdne11852:0 - -*BlockTag: crwdns11853:0crwdne11853:0* - -{image file-path="img/topics/houses_randomnumbers.png" alt="Six houses numbered 16, 24, 36, 41, 48, and 56"} - -crwdns11854:0crwdne11854:0 crwdns11855:0crwdne11855:0 crwdns11856:0crwdne11856:0 - -*BlockTag: crwdns11857:0crwdne11857:0* - -{image file-path="img/topics/6_guesses.png" alt="A continuum line with marks -for 1, 2, 3, 4, 5, and 6 guesses"} - -crwdns11858:0crwdne11858:0 - -**crwdns19875:0crwdne19875:0** - -- crwdns19876:0crwdne19876:0 -- crwdns19877:0crwdne19877:0 -- crwdns19878:0crwdne19878:0 - -*BlockTag: crwdns18425:0crwdne18425:0* - -{panel type="teaching"} - -# crwdns18426:0crwdne18426:0 - -crwdns19879:0crwdne19879:0 crwdns19880:0crwdne19880:0 - -*BlockTag: crwdns11871:0crwdne11871:0* - -{panel end} - -## crwdns11859:0crwdne11859:0 - -crwdns19881:0crwdne19881:0 crwdns19882:0crwdne19882:0 crwdns19883:0crwdne19883:0 crwdns19884:0crwdne19884:0 crwdns19885:0crwdne19885:0 crwdns19886:0crwdne19886:0 - -*BlockTag: crwdns19887:0crwdne19887:0* - -{panel type="teaching"} - -# crwdns18428:0crwdne18428:0 - -crwdns19888:0crwdne19888:0 crwdns19889:0crwdne19889:0 crwdns19890:0crwdne19890:0 crwdns19891:0crwdne19891:0 - -*BlockTag: crwdns19892:0crwdne19892:0* - -{panel end} - -## crwdns11872:0crwdne11872:0 - -crwdns19893:0crwdne19893:0 - -crwdns19894:0crwdne19894:0 crwdns19895:0crwdne19895:0 crwdns19896:0crwdne19896:0 - -crwdns19897:0crwdne19897:0 - -crwdns19898:0crwdne19898:0 crwdns19899:0crwdne19899:0 crwdns19900:0crwdne19900:0 crwdns19901:0crwdne19901:0 crwdns19902:0crwdne19902:0 - -crwdns19903:0crwdne19903:0 crwdns19904:0crwdne19904:0 crwdns19905:0crwdne19905:0 crwdns19906:0crwdne19906:0 - -crwdns19907:0crwdne19907:0 crwdns19908:0crwdne19908:0 - -crwdns19909:0crwdne19909:0 - -crwdns19910:0crwdne19910:0 - -crwdns19911:0crwdne19911:0 crwdns19912:0crwdne19912:0 crwdns19913:0crwdne19913:0 - -*BlockTag: crwdns19914:0crwdne19914:0* - -{panel type="teaching"} - -# crwdns19915:0crwdne19915:0 - -crwdns19916:0crwdne19916:0 crwdns19917:0crwdne19917:0 crwdns19918:0crwdne19918:0 crwdns19919:0crwdne19919:0 - -*BlockTag: crwdns19920:0crwdne19920:0* - -{panel end} - -## crwdns19921:0crwdne19921:0 - -crwdns19922:0crwdne19922:0 crwdns19923:0crwdne19923:0 crwdns19924:0crwdne19924:0 crwdns19925:0crwdne19925:0 crwdns19926:0crwdne19926:0 - -## crwdns11901:0crwdne11901:0 - -crwdns19927:0crwdne19927:0 crwdns19928:0crwdne19928:0 - -- crwdns19929:0crwdne19929:0 - - crwdns19930:0crwdne19930:0 - - crwdns19931:0crwdne19931:0 - - crwdns19932:0crwdne19932:0 - -crwdns19933:0crwdne19933:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted-ct-links.md deleted file mode 100644 index da82ae256..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted-ct-links.md +++ /dev/null @@ -1,109 +0,0 @@ -*BlockTag: crwdns18401:0crwdne18401:0* - -{panel type="ct-algorithm"} - -# crwdns18402:0crwdne18402:0 - -crwdns11910:0crwdne11910:0 crwdns11911:0crwdne11911:0 - -crwdns11912:0crwdne11912:0 - -#### crwdns11913:0crwdne11913:0 - -crwdns11914:0crwdne11914:0 - -*BlockTag: crwdns11915:0crwdne11915:0* - -{panel end} - -*BlockTag: crwdns18403:0crwdne18403:0* - -{panel type="ct-abstraction"} - -# crwdns18404:0crwdne18404:0 - -crwdns11917:0crwdne11917:0 - -crwdns11918:0crwdne11918:0 crwdns11919:0crwdne11919:0 - -#### crwdns11920:0crwdne11920:0 - -crwdns11921:0crwdne11921:0 - -*BlockTag: crwdns11922:0crwdne11922:0* - -{panel end} - -*BlockTag: crwdns18405:0crwdne18405:0* - -{panel type="ct-decomposition"} - -# crwdns18406:0crwdne18406:0 - -crwdns11924:0crwdne11924:0 - -#### crwdns11925:0crwdne11925:0 - -crwdns11926:0crwdne11926:0 - -*BlockTag: crwdns11927:0crwdne11927:0* - -{panel end} - -*BlockTag: crwdns18407:0crwdne18407:0* - -{panel type="ct-pattern"} - -# crwdns18408:0crwdne18408:0 - -crwdns11929:0crwdne11929:0 - -crwdns11930:0crwdne11930:0 crwdns11931:0crwdne11931:0 - -#### crwdns11932:0crwdne11932:0 - -crwdns11933:0crwdne11933:0 - -*BlockTag: crwdns11934:0crwdne11934:0* - -{panel end} - -*BlockTag: crwdns18409:0crwdne18409:0* - -{panel type="ct-evaluation"} - -# crwdns18410:0crwdne18410:0 - -crwdns11936:0crwdne11936:0 - -crwdns11937:0crwdne11937:0 crwdns11938:0crwdne11938:0 crwdns11939:0crwdne11939:0 - -#### crwdns11940:0crwdne11940:0 - -crwdns11941:0crwdne11941:0 - -*BlockTag: crwdns11942:0crwdne11942:0* - -{panel end} - -*BlockTag: crwdns18411:0crwdne18411:0* - -{panel type="ct-logic"} - -# crwdns18412:0crwdne18412:0 - -crwdns11944:0crwdne11944:0 crwdns11945:0crwdne11945:0 crwdns11946:0crwdne11946:0 crwdns11947:0crwdne11947:0 crwdns11948:0crwdne11948:0 crwdns11949:0crwdne11949:0 - -- crwdns11950:0crwdne11950:0 crwdns11951:0crwdne11951:0 crwdns11952:0crwdne11952:0 - -#### crwdns11953:0crwdne11953:0 - -*BlockTag: crwdns15955:0crwdne15955:0* - -{image file-path="img/topics/numbers-middle-bright.png" alt="The middle item is the important item."} - -crwdns15956:0crwdne15956:0 crwdns15957:0crwdne15957:0 - -*BlockTag: crwdns15958:0crwdne15958:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted-resource-descriptions.yaml deleted file mode 100644 index d43644d2e..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -treasure-hunt: - description: crwdns8218:0crwdne8218:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted.md deleted file mode 100644 index 3f5238fce..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-sorted.md +++ /dev/null @@ -1,65 +0,0 @@ -# crwdns11957:0crwdne11957:0 - -## crwdns11958:0crwdne11958:0 - -*BlockTag: crwdns15933:0crwdne15933:0* - -{image file-path="img/topics/binary_search_books.png" alt="A row of books in alphabetical order."} - -crwdns15934:0crwdne15934:0 - -### crwdns11960:0crwdne11960:0 - -crwdns15935:0crwdne15935:0 crwdns15936:0crwdne15936:0 - -## crwdns11963:0crwdne11963:0 - -crwdns15937:0crwdne15937:0 crwdns15938:0crwdne15938:0 crwdns15939:0crwdne15939:0 crwdns15940:0crwdne15940:0 - -crwdns15941:0crwdne15941:0 - -*BlockTag: crwdns18377:0crwdne18377:0* - -{panel type="math"} - -# crwdns18378:0crwdne18378:0 - -crwdns15943:0crwdne15943:0 crwdns15944:0crwdne15944:0 - -crwdns15945:0crwdne15945:0 - -crwdns15946:0crwdne15946:0 - -*BlockTag: crwdns15947:0crwdne15947:0* - -{panel end} - -## crwdns11975:0crwdne11975:0 - -1. crwdns11976:0crwdne11976:0 -2. crwdns11977:0crwdne11977:0 -3. crwdns11978:0crwdne11978:0 -4. crwdns11979:0crwdne11979:0 -5. crwdns11980:0crwdne11980:0 -6. crwdns11981:0crwdne11981:0 -7. crwdns11982:0crwdne11982:0 -8. crwdns11983:0crwdne11983:0 -9. crwdns11984:0crwdne11984:0 - -## crwdns11985:0crwdne11985:0 - -*BlockTag: crwdns15948:0crwdne15948:0* - -{image file-path="img/topics/marbles.png" alt="The number of marbles are halved each time."} - -crwdns15949:0crwdne15949:0 crwdns15950:0crwdne15950:0 - -crwdns15951:0crwdne15951:0 crwdns15952:0crwdne15952:0 - -## crwdns11990:0crwdne11990:0 - -*BlockTag: crwdns15953:0crwdne15953:0* - -{image file-path="img/topics/binary_search_chests.gif" alt="This animation shows binary search being used to find the chest that holds the number 64."} - -crwdns15954:0crwdne15954:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted-ct-links.md deleted file mode 100644 index 1b6fcebdc..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted-ct-links.md +++ /dev/null @@ -1,101 +0,0 @@ -*BlockTag: crwdns18379:0crwdne18379:0* - -{panel type="ct-algorithm"} - -# crwdns18380:0crwdne18380:0 - -crwdns11993:0crwdne11993:0 crwdns11994:0crwdne11994:0 - -crwdns11995:0crwdne11995:0 crwdns11996:0crwdne11996:0 - -#### crwdns11997:0crwdne11997:0 - -crwdns11998:0crwdne11998:0 crwdns11999:0crwdne11999:0 - -*BlockTag: crwdns12000:0crwdne12000:0* - -{panel end} - -*BlockTag: crwdns18381:0crwdne18381:0* - -{panel type="ct-abstraction"} - -# crwdns18382:0crwdne18382:0 - -crwdns12002:0crwdne12002:0 crwdns12003:0crwdne12003:0 crwdns12004:0crwdne12004:0 - -#### crwdns12005:0crwdne12005:0 - -crwdns12006:0crwdne12006:0 - -*BlockTag: crwdns12007:0crwdne12007:0* - -{panel end} - -*BlockTag: crwdns18383:0crwdne18383:0* - -{panel type="ct-decomposition"} - -# crwdns18384:0crwdne18384:0 - -crwdns12009:0crwdne12009:0 crwdns12010:0crwdne12010:0 - -#### crwdns12011:0crwdne12011:0 - -crwdns12012:0crwdne12012:0 - -crwdns12013:0crwdne12013:0 - -*BlockTag: crwdns12014:0crwdne12014:0* - -{panel end} - -*BlockTag: crwdns18385:0crwdne18385:0* - -{panel type="ct-pattern"} - -# crwdns18386:0crwdne18386:0 - -crwdns12016:0crwdne12016:0 crwdns12017:0crwdne12017:0 crwdns12018:0crwdne12018:0 - -#### crwdns12019:0crwdne12019:0 - -crwdns12020:0crwdne12020:0 - -*BlockTag: crwdns12021:0crwdne12021:0* - -{panel end} - -*BlockTag: crwdns18387:0crwdne18387:0* - -{panel type="ct-evaluation"} - -# crwdns18388:0crwdne18388:0 - -crwdns12023:0crwdne12023:0 crwdns12024:0crwdne12024:0 crwdns12025:0crwdne12025:0 crwdns12026:0crwdne12026:0 crwdns12027:0crwdne12027:0 crwdns12028:0crwdne12028:0 - -#### crwdns12029:0crwdne12029:0 - -crwdns12030:0crwdne12030:0 crwdns12031:0crwdne12031:0 crwdns12032:0crwdne12032:0 crwdns12033:0crwdne12033:0 - -*BlockTag: crwdns12034:0crwdne12034:0* - -{panel end} - -*BlockTag: crwdns18389:0crwdne18389:0* - -{panel type="ct-logic"} - -# crwdns18390:0crwdne18390:0 - -crwdns12036:0crwdne12036:0 crwdns12037:0crwdne12037:0 - -#### crwdns12038:0crwdne12038:0 - -crwdns12039:0crwdne12039:0 - -crwdns12040:0crwdne12040:0 crwdns12041:0crwdne12041:0 - -*BlockTag: crwdns12042:0crwdne12042:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted-resource-descriptions.yaml deleted file mode 100644 index 9e0e1825a..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted-resource-descriptions.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -treasure-hunt: - description: crwdns8219:0crwdne8219:0 diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted.md deleted file mode 100644 index d9b36416e..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/lessons/the-great-treasure-hunt-unsorted.md +++ /dev/null @@ -1,87 +0,0 @@ -# crwdns12043:0crwdne12043:0 - -## crwdns12044:0crwdne12044:0 - -*BlockTag: crwdns15613:0crwdne15613:0* - -{image file-path="img/topics/child_searches_book.png" alt="A child searches through some unsorted books on a shelf"} - -crwdns15614:0crwdne15614:0 - -### crwdns12046:0crwdne12046:0 - -*BlockTag: crwdns15615:0crwdne15615:0* - -{image file-path="img/topics/linear_search.gif" alt="This animation shows that the only way to search the unsorted list is to go through every item (whether they choose randomly or look at the first, then second, then third…) because they are still just checking and eliminating one at a time."} - -crwdns15616:0crwdne15616:0 crwdns15617:0crwdne15617:0 - -## crwdns12049:0crwdne12049:0 - -crwdns15618:0crwdne15618:0 crwdns15619:0crwdne15619:0 crwdns15620:0crwdne15620:0 crwdns15621:0crwdne15621:0 - -crwdns15622:0crwdne15622:0 - -*BlockTag: crwdns18395:0crwdne18395:0* - -{panel type="teaching"} - -# crwdns18396:0crwdne18396:0 - -crwdns15624:0crwdne15624:0 crwdns15625:0crwdne15625:0 crwdns15626:0crwdne15626:0 - -*BlockTag: crwdns15627:0crwdne15627:0* - -{panel end} - -*BlockTag: crwdns18397:0crwdne18397:0* - -{panel type="math"} - -# crwdns18398:0crwdne18398:0 - -crwdns15629:0crwdne15629:0 crwdns15630:0crwdne15630:0 crwdns15631:0crwdne15631:0 - -crwdns15632:0crwdne15632:0 - -crwdns15633:0crwdne15633:0 - -*BlockTag: crwdns15634:0crwdne15634:0* - -{panel end} - -## crwdns12067:0crwdne12067:0 - -1. crwdns12068:0crwdne12068:0 -2. crwdns12069:0crwdne12069:0 -3. crwdns12070:0crwdne12070:0 -4. crwdns12071:0crwdne12071:0 -5. crwdns12072:0crwdne12072:0 -6. crwdns12073:0crwdne12073:0 -7. crwdns12074:0crwdne12074:0 -8. crwdns12075:0crwdne12075:0 -9. crwdns12076:0crwdne12076:0 - -*BlockTag: crwdns18399:0crwdne18399:0* - -{panel type="teaching"} - -# crwdns18400:0crwdne18400:0 - -crwdns15636:0crwdne15636:0 crwdns15637:0crwdne15637:0 crwdns15638:0crwdne15638:0 - -*BlockTag: crwdns15639:0crwdne15639:0* - -{panel end} - -## crwdns12082:0crwdne12082:0 - -*BlockTag: crwdns15640:0crwdne15640:0* - -{image file-path="img/topics/linear_search_chests.gif" alt="This animation shows sequential search being used to find the chest that holds the number 38."} - -crwdns15641:0crwdne15641:0 crwdns15642:0crwdne15642:0 crwdns15643:0crwdne15643:0 - -## crwdns12086:0crwdne12086:0 - -crwdns15644:0crwdne15644:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/sequential-and-binary-search-unit-plan-ct-links.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/sequential-and-binary-search-unit-plan-ct-links.md deleted file mode 100644 index 1e0b07924..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/sequential-and-binary-search-unit-plan-ct-links.md +++ /dev/null @@ -1,96 +0,0 @@ -*BlockTag: crwdns18363:0crwdne18363:0* - -{panel type="ct-algorithm"} - -# crwdns18364:0crwdne18364:0 - -crwdns11554:0crwdne11554:0 crwdns11555:0crwdne11555:0 crwdns11556:0crwdne11556:0 crwdns11557:0crwdne11557:0 - -crwdns11558:0crwdne11558:0 crwdns11559:0crwdne11559:0 - -crwdns11560:0crwdne11560:0 - -crwdns11561:0crwdne11561:0 crwdns11562:0crwdne11562:0 crwdns11563:0crwdne11563:0 crwdns11564:0crwdne11564:0 crwdns11565:0crwdne11565:0 - -*BlockTag: crwdns11566:0crwdne11566:0* - -{panel end} - -*BlockTag: crwdns18365:0crwdne18365:0* - -{panel type="ct-abstraction"} - -# crwdns18366:0crwdne18366:0 - -crwdns11568:0crwdne11568:0 - -crwdns11569:0crwdne11569:0 crwdns11570:0crwdne11570:0 crwdns11571:0crwdne11571:0 - -*BlockTag: crwdns11572:0crwdne11572:0* - -{image file-path="img/topics/max_dog.png" alt="A dog with a nametag saying Max"} - -crwdns11573:0crwdne11573:0 crwdns11574:0crwdne11574:0 crwdns11575:0crwdne11575:0 - -*BlockTag: crwdns11576:0crwdne11576:0* - -{panel end} - -*BlockTag: crwdns18367:0crwdne18367:0* - -{panel type="ct-decomposition"} - -# crwdns18368:0crwdne18368:0 - -*BlockTag: crwdns11578:0crwdne11578:0* - -{image file-path="img/topics/apples_oranges.png" alt="Shows that apples do not equal oranges"} - -crwdns11579:0crwdne11579:0 crwdns11580:0crwdne11580:0 crwdns11581:0crwdne11581:0 crwdns11582:0crwdne11582:0 crwdns11583:0crwdne11583:0 crwdns11584:0crwdne11584:0 - -crwdns11585:0crwdne11585:0 crwdns11586:0crwdne11586:0 crwdns11587:0crwdne11587:0 crwdns11588:0crwdne11588:0 crwdns11589:0crwdne11589:0 - -*BlockTag: crwdns11590:0crwdne11590:0* - -{panel end} - -*BlockTag: crwdns18369:0crwdne18369:0* - -{panel type="ct-pattern"} - -# crwdns18370:0crwdne18370:0 - -crwdns11592:0crwdne11592:0 crwdns11593:0crwdne11593:0 crwdns11594:0crwdne11594:0 crwdns11595:0crwdne11595:0 crwdns11596:0crwdne11596:0 crwdns11597:0crwdne11597:0 - -*BlockTag: crwdns11598:0crwdne11598:0* - -{panel end} - -*BlockTag: crwdns18371:0crwdne18371:0* - -{panel type="ct-evaluation"} - -# crwdns18372:0crwdne18372:0 - -crwdns11600:0crwdne11600:0 crwdns11601:0crwdne11601:0 crwdns11602:0crwdne11602:0 crwdns11603:0crwdne11603:0 crwdns11604:0crwdne11604:0 - -*BlockTag: crwdns11605:0crwdne11605:0* - -{panel end} - -*BlockTag: crwdns18373:0crwdne18373:0* - -{panel type="ct-logic"} - -# crwdns18374:0crwdne18374:0 - -crwdns11607:0crwdne11607:0 crwdns11608:0crwdne11608:0 - -- crwdns11609:0crwdne11609:0 -- crwdns11610:0crwdne11610:0 -- crwdns11611:0crwdne11611:0 -- crwdns11612:0crwdne11612:0 - -*BlockTag: crwdns11613:0crwdne11613:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/sequential-and-binary-search-unit-plan.md b/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/sequential-and-binary-search-unit-plan.md deleted file mode 100644 index 9ef272050..000000000 --- a/csunplugged/topics/content/xx_LR/searching-algorithms/sequential-and-binary-search-unit-plan/sequential-and-binary-search-unit-plan.md +++ /dev/null @@ -1,91 +0,0 @@ -# crwdns11614:0crwdne11614:0 - -*BlockTag: crwdns19564:0crwdne19564:0* - -{comment Video 1: Sequential search: Random numbered cards with pictures on them. (using numbers from 0 - 31) - SETTING: As if it’s a maths group in a class setting} - -*BlockTag: crwdns19565:0crwdne19565:0* - -{comment Video 2: Binary search using numbered cards with pictures on them ranging from 0 - 999.} - -*BlockTag: crwdns19566:0crwdne19566:0* - -{comment Video 3: Linking the “Treasure Hunt” activities to statistics.} - -*BlockTag: crwdns19567:0crwdne19567:0* - -{image file-path="img/topics/different-sized-haystacks.png" alt="A farmer can easily find a needle in a small haystack, but can't find it in a large haystack."} - -crwdns19568:0crwdne19568:0 crwdns19569:0crwdne19569:0 crwdns19570:0crwdne19570:0 - -crwdns19571:0crwdne19571:0 crwdns19572:0crwdne19572:0 - -crwdns19573:0crwdne19573:0 crwdns19574:0crwdne19574:0 crwdns19575:0crwdne19575:0 crwdns19576:0crwdne19576:0 crwdns19577:0crwdne19577:0 - -crwdns19578:0crwdne19578:0 - -crwdns19579:0crwdne19579:0 crwdns19580:0crwdne19580:0 crwdns19581:0crwdne19581:0 - -crwdns19582:0crwdne19582:0 crwdns19583:0crwdne19583:0 - -## crwdns18247:0crwdne18247:0 - -crwdns19584:0crwdne19584:0 crwdns19585:0crwdne19585:0 - -*BlockTag: crwdns19586:0crwdne19586:0* - -{image file-path="img/topics/computer_searching.png" alt="Cartoon computer looking around with a magnifying glass"} - -crwdns19587:0crwdne19587:0 crwdns19588:0crwdne19588:0 crwdns19589:0crwdne19589:0 - -crwdns19590:0crwdne19590:0 - -## crwdns18248:0crwdne18248:0 - -crwdns19591:0crwdne19591:0 crwdns19592:0crwdne19592:0 crwdns19593:0crwdne19593:0 crwdns19594:0crwdne19594:0 - -crwdns19595:0crwdne19595:0 crwdns19596:0crwdne19596:0 crwdns19597:0crwdne19597:0 - -crwdns19598:0crwdne19598:0 crwdns19599:0crwdne19599:0 crwdns19600:0crwdne19600:0 crwdns19601:0crwdne19601:0 crwdns19602:0crwdne19602:0 crwdns19603:0crwdne19603:0 crwdns19604:0crwdne19604:0 - -crwdns19605:0crwdne19605:0 crwdns19606:0crwdne19606:0 crwdns19607:0crwdne19607:0 - -crwdns19608:0crwdne19608:0 - -*BlockTag: crwdns19609:0crwdne19609:0* - -{image file-path="img/topics/sequential_detective.gif" alt="A detective looking at words sequentially in a sentence until he finds the word 'said'"} - -crwdns19610:0crwdne19610:0 crwdns19611:0crwdne19611:0 crwdns19612:0crwdne19612:0 - -crwdns19613:0crwdne19613:0 crwdns19614:0crwdne19614:0 crwdns19615:0crwdne19615:0 crwdns19616:0crwdne19616:0 - -*BlockTag: crwdns19617:0crwdne19617:0* - -{image file-path="img/topics/binary_detective.gif" alt="A detective trying to find the word 'said' in a sentence using binary search"} - -## crwdns18249:0crwdne18249:0 - -crwdns19618:0crwdne19618:0 crwdns19619:0crwdne19619:0 crwdns19620:0crwdne19620:0 crwdns19621:0crwdne19621:0 crwdns19622:0crwdne19622:0 - -*BlockTag: crwdns19623:0crwdne19623:0* - -{panel type="math"} - -# crwdns18376:0crwdne18376:0 - -crwdns19624:0crwdne19624:0 - -*BlockTag: crwdns19625:0crwdne19625:0* - -{panel end} - -## crwdns18250:0crwdne18250:0 - -crwdns19626:0crwdne19626:0 - -crwdns19627:0crwdne19627:0 - -crwdns19628:0crwdne19628:0 - -crwdns19629:0crwdne19629:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/curriculum-integrations/growing-into-a-butterfly.md b/csunplugged/topics/content/xx_LR/sorting-networks/curriculum-integrations/growing-into-a-butterfly.md deleted file mode 100644 index 6009287e9..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/curriculum-integrations/growing-into-a-butterfly.md +++ /dev/null @@ -1,7 +0,0 @@ -# crwdns12092:0crwdne12092:0 - -crwdns18891:0crwdne18891:0 crwdns12094:0crwdne12094:0 crwdns12095:0crwdne12095:0 - -*BlockTag: crwdns20016:0crwdne20016:0* - -{image file-path="img/topics/butterfly-story-caterpillar.png" alt="A caterpillar."} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/curriculum-integrations/retelling-a-story.md b/csunplugged/topics/content/xx_LR/sorting-networks/curriculum-integrations/retelling-a-story.md deleted file mode 100644 index f4953353c..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/curriculum-integrations/retelling-a-story.md +++ /dev/null @@ -1,7 +0,0 @@ -# crwdns12097:0crwdne12097:0 - -crwdns18892:0crwdne18892:0 - -*BlockTag: crwdns20017:0crwdne20017:0* - -{image file-path="img/topics/little-red-riding-hood-3.png" alt="Little Red Riding Hood knocking at the door of a house."} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/sorting-networks.md b/csunplugged/topics/content/xx_LR/sorting-networks/sorting-networks.md deleted file mode 100644 index 673b2d4d0..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/sorting-networks.md +++ /dev/null @@ -1,3 +0,0 @@ -# crwdns12088:0crwdne12088:0 - -crwdns12089:0crwdne12089:0 crwdns12090:0crwdne12090:0 crwdns12091:0crwdne12091:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-ct-links.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-ct-links.md deleted file mode 100644 index 1b654eaa8..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-ct-links.md +++ /dev/null @@ -1,101 +0,0 @@ -crwdns12225:0crwdne12225:0 - -*BlockTag: crwdns18945:0crwdne18945:0* - -{panel type="ct-algorithm"} - -# crwdns18946:0crwdne18946:0 - -crwdns12227:0crwdne12227:0 - -#### crwdns12228:0crwdne12228:0 - -crwdns12229:0crwdne12229:0 - -*BlockTag: crwdns12230:0crwdne12230:0* - -{panel end} - -*BlockTag: crwdns18947:0crwdne18947:0* - -{panel type="ct-abstraction"} - -# crwdns18948:0crwdne18948:0 - -crwdns12232:0crwdne12232:0 - -#### crwdns12233:0crwdne12233:0 - -crwdns12234:0crwdne12234:0 - -*BlockTag: crwdns12235:0crwdne12235:0* - -{panel end} - -*BlockTag: crwdns18949:0crwdne18949:0* - -{panel type="ct-decomposition"} - -# crwdns18950:0crwdne18950:0 - -crwdns12237:0crwdne12237:0 crwdns12238:0crwdne12238:0 - -#### crwdns12239:0crwdne12239:0 - -crwdns12240:0crwdne12240:0 - -*BlockTag: crwdns12241:0crwdne12241:0* - -{panel end} - -*BlockTag: crwdns18951:0crwdne18951:0* - -{panel type="ct-pattern"} - -# crwdns18952:0crwdne18952:0 - -crwdns12243:0crwdne12243:0 - -#### crwdns12244:0crwdne12244:0 - -crwdns12245:0crwdne12245:0 crwdns12246:0crwdne12246:0 - -*BlockTag: crwdns12247:0crwdne12247:0* - -{panel end} - -*BlockTag: crwdns18953:0crwdne18953:0* - -{panel type="ct-evaluation"} - -# crwdns18954:0crwdne18954:0 - -crwdns12249:0crwdne12249:0 - -#### crwdns12250:0crwdne12250:0 - -crwdns12251:0crwdne12251:0 - -*BlockTag: crwdns12252:0crwdne12252:0* - -{panel end} - -*BlockTag: crwdns18955:0crwdne18955:0* - -{panel type="ct-logic"} - -# crwdns18956:0crwdne18956:0 - -crwdns12254:0crwdne12254:0 - -#### crwdns12255:0crwdne12255:0 - -crwdns12256:0crwdne12256:0 crwdns12257:0crwdne12257:0 - -crwdns12258:0crwdne12258:0 - -crwdns12259:0crwdne12259:0 - -*BlockTag: crwdns12260:0crwdne12260:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md deleted file mode 100644 index 3631fdefd..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-ct-links.md +++ /dev/null @@ -1,85 +0,0 @@ -crwdns12261:0crwdne12261:0 - -*BlockTag: crwdns18927:0crwdne18927:0* - -{panel type="ct-algorithm"} - -# crwdns18928:0crwdne18928:0 - -crwdns12263:0crwdne12263:0 - -#### crwdns12264:0crwdne12264:0 - -crwdns12265:0crwdne12265:0 - -*BlockTag: crwdns12266:0crwdne12266:0* - -{panel end} - -*BlockTag: crwdns18929:0crwdne18929:0* - -{panel type="ct-abstraction"} - -# crwdns18930:0crwdne18930:0 - -crwdns12268:0crwdne12268:0 - -#### crwdns12269:0crwdne12269:0 - -crwdns12270:0crwdne12270:0 - -*BlockTag: crwdns12271:0crwdne12271:0* - -{panel end} - -*BlockTag: crwdns18931:0crwdne18931:0* - -{panel type="ct-pattern"} - -# crwdns18932:0crwdne18932:0 - -crwdns12273:0crwdne12273:0 - -#### crwdns12274:0crwdne12274:0 - -crwdns12275:0crwdne12275:0 - -*BlockTag: crwdns12276:0crwdne12276:0* - -{panel end} - -*BlockTag: crwdns18933:0crwdne18933:0* - -{panel type="ct-evaluation"} - -# crwdns18934:0crwdne18934:0 - -crwdns12278:0crwdne12278:0 - -#### crwdns12279:0crwdne12279:0 - -crwdns12280:0crwdne12280:0 - -*BlockTag: crwdns12281:0crwdne12281:0* - -{panel end} - -*BlockTag: crwdns18935:0crwdne18935:0* - -{panel type="ct-logic"} - -# crwdns18936:0crwdne18936:0 - -crwdns12283:0crwdne12283:0 - -#### crwdns12284:0crwdne12284:0 - -crwdns12285:0crwdne12285:0 - -crwdns12286:0crwdne12286:0 - -crwdns12287:0crwdne12287:0 - -*BlockTag: crwdns12288:0crwdne12288:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml deleted file mode 100644 index b83d5f85c..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -sorting-network: - description: crwdns8220:0crwdne8220:0 -sorting-network-cards: - description: crwdns8221:0crwdne8221:0 diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md deleted file mode 100644 index 4d8b294ae..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-junior.md +++ /dev/null @@ -1,113 +0,0 @@ -# crwdns12289:0crwdne12289:0 - -## crwdns12290:0crwdne12290:0 - -crwdns12291:0crwdne12291:0 - -## crwdns12292:0crwdne12292:0 - -- crwdns12293:0crwdne12293:0 - -## crwdns12294:0crwdne12294:0 - -crwdns12295:0crwdne12295:0 crwdns12296:0crwdne12296:0 - -*BlockTag: crwdns18909:0crwdne18909:0* - -{panel type="math"} - -# crwdns18910:0crwdne18910:0 - -crwdns12298:0crwdne12298:0 - -*BlockTag: crwdns12299:0crwdne12299:0* - -{panel end} - -## crwdns12300:0crwdne12300:0 - -crwdns12301:0crwdne12301:0 - -### crwdns12302:0crwdne12302:0 - -*BlockTag: crwdns12303:0crwdne12303:0* - -{image file-path="img/topics/sorting-network-equal-3.png"} - -crwdns12304:0crwdne12304:0 crwdns12305:0crwdne12305:0 crwdns12306:0crwdne12306:0 - -crwdns12307:0crwdne12307:0 - -1. crwdns12308:0crwdne12308:0 - -2. crwdns12309:0crwdne12309:0 - -3. crwdns12310:0crwdne12310:0 - -4. crwdns12311:0crwdne12311:0 - -### crwdns12312:0crwdne12312:0 - -crwdns12313:0crwdne12313:0 - -crwdns12314:0crwdne12314:0 - -crwdns12315:0crwdne12315:0 - -*BlockTag: crwdns18911:0crwdne18911:0* - -{panel type="teaching"} - -# crwdns18912:0crwdne18912:0 - -crwdns12317:0crwdne12317:0 - -*BlockTag: crwdns12318:0crwdne12318:0* - -{panel end} - -### crwdns12319:0crwdne12319:0 - -*BlockTag: crwdns12320:0crwdne12320:0* - -{image file-path="img/topics/sorting-network-variation-alphabet.png"} - -crwdns12321:0crwdne12321:0 - -## crwdns12322:0crwdne12322:0 - -crwdns12323:0crwdne12323:0 - -crwdns12324:0crwdne12324:0 crwdns12325:0crwdne12325:0 crwdns12326:0crwdne12326:0 crwdns12327:0crwdne12327:0 - -crwdns12328:0crwdne12328:0 - -*BlockTag: crwdns18913:0crwdne18913:0* - -{panel type="teaching"} - -# crwdns18914:0crwdne18914:0 - -crwdns12330:0crwdne12330:0 crwdns12331:0crwdne12331:0 crwdns12332:0crwdne12332:0 crwdns12333:0crwdne12333:0 - -*BlockTag: crwdns12334:0crwdne12334:0* - -{image file-path="img/topics/sorting-network-backwards-1.png"} - -*BlockTag: crwdns12335:0crwdne12335:0* - -{image file-path="img/topics/sorting-network-backwards-2.png"} - -*BlockTag: crwdns12336:0crwdne12336:0* - -{panel end} - -## crwdns12337:0crwdne12337:0 - -crwdns12338:0crwdne12338:0 crwdns12339:0crwdne12339:0 crwdns12340:0crwdne12340:0 crwdns12341:0crwdne12341:0 - -## crwdns12342:0crwdne12342:0 - -crwdns12343:0crwdne12343:0 - -crwdns12344:0crwdne12344:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml deleted file mode 100644 index 15987d0e1..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -sorting-network: - description: crwdns8222:0crwdne8222:0 -sorting-network-cards: - description: crwdns8223:0crwdne8223:0 diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network.md deleted file mode 100644 index 622a1f01a..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/investigating-variations-using-the-sorting-network.md +++ /dev/null @@ -1,179 +0,0 @@ -# crwdns12345:0crwdne12345:0 - -## crwdns12346:0crwdne12346:0 - -crwdns12347:0crwdne12347:0 - -## crwdns12348:0crwdne12348:0 - -- crwdns12349:0crwdne12349:0 crwdns12350:0crwdne12350:0 - -- crwdns12351:0crwdne12351:0 crwdns12352:0crwdne12352:0 - -## crwdns12353:0crwdne12353:0 - -crwdns12354:0crwdne12354:0 crwdns12355:0crwdne12355:0 - -crwdns12356:0crwdne12356:0 crwdns12357:0crwdne12357:0 crwdns12358:0crwdne12358:0 - -*BlockTag: crwdns18937:0crwdne18937:0* - -{panel type="math"} - -# crwdns18938:0crwdne18938:0 - -crwdns12360:0crwdne12360:0 - -*BlockTag: crwdns12361:0crwdne12361:0* - -{panel end} - -## crwdns12362:0crwdne12362:0 - -crwdns12363:0crwdne12363:0 - -### crwdns12364:0crwdne12364:0 - -*BlockTag: crwdns12365:0crwdne12365:0* - -{image file-path="img/topics/sorting-network-equal-3.png"} - -crwdns12366:0crwdne12366:0 crwdns12367:0crwdne12367:0 - -crwdns12368:0crwdne12368:0 - -1. crwdns12369:0crwdne12369:0 - -2. crwdns12370:0crwdne12370:0 - -3. crwdns12371:0crwdne12371:0 - -4. crwdns12372:0crwdne12372:0 - -### crwdns12373:0crwdne12373:0 - -crwdns12374:0crwdne12374:0 - -crwdns12375:0crwdne12375:0 - -crwdns12376:0crwdne12376:0 - -*BlockTag: crwdns18939:0crwdne18939:0* - -{panel type="teaching"} - -# crwdns18940:0crwdne18940:0 - -crwdns12378:0crwdne12378:0 - -*BlockTag: crwdns12379:0crwdne12379:0* - -{panel end} - -### crwdns12380:0crwdne12380:0 - -*BlockTag: crwdns12381:0crwdne12381:0* - -{image file-path="img/topics/sorting-network-variation-alphabet.png"} - -crwdns12382:0crwdne12382:0 - -### crwdns12383:0crwdne12383:0 - -crwdns12384:0crwdne12384:0 crwdns12385:0crwdne12385:0 crwdns12386:0crwdne12386:0 crwdns12387:0crwdne12387:0 - -crwdns12388:0crwdne12388:0 crwdns12389:0crwdne12389:0 - -*BlockTag: crwdns19545:0crwdne19545:0* - -{panel type="general"} - -# crwdns18942:0crwdne18942:0 - -crwdns19546:0crwdne19546:0 - -*BlockTag: crwdns19547:0crwdne19547:0* - -{image file-path="img/topics/sorting-network-toffees-cellos-sponge.png" align="right"} - -crwdns12393:0crwdne12393:0 - -*BlockTag: crwdns12394:0crwdne12394:0* - -{panel end} - -### crwdns12395:0crwdne12395:0 - -*BlockTag: crwdns20019:0crwdne20019:0* - -{image file-path="img/topics/sorting-network-variation-words.png"} - -crwdns12397:0crwdne12397:0 crwdns12398:0crwdne12398:0 crwdns12399:0crwdne12399:0 - -*BlockTag: crwdns12400:0crwdne12400:0* - -{image file-path="img/topics/sorting-network-crochet-v-crocodile.png"} - -crwdns12401:0crwdne12401:0 - -*BlockTag: crwdns20020:0crwdne20020:0* - -{image file-path="img/topics/sorting-network-variation-words-2.png"} - -crwdns12403:0crwdne12403:0 crwdns12404:0crwdne12404:0 - -### crwdns12405:0crwdne12405:0 - -*BlockTag: crwdns20021:0crwdne20021:0* - -{image file-path="img/topics/sorting-network-variation-music.png"} - -crwdns12407:0crwdne12407:0 crwdns12408:0crwdne12408:0 crwdns12409:0crwdne12409:0 - -### crwdns12410:0crwdne12410:0 - -*BlockTag: crwdns12411:0crwdne12411:0* - -{image file-path="img/topics/sorting-network-variation-aural.jpg"} - -crwdns12412:0crwdne12412:0 crwdns12413:0crwdne12413:0 crwdns12414:0crwdne12414:0 - -crwdns12415:0crwdne12415:0 - -## crwdns12416:0crwdne12416:0 - -crwdns12417:0crwdne12417:0 - -crwdns12418:0crwdne12418:0 crwdns12419:0crwdne12419:0 crwdns12420:0crwdne12420:0 crwdns12421:0crwdne12421:0 - -crwdns12422:0crwdne12422:0 - -*BlockTag: crwdns18943:0crwdne18943:0* - -{panel type="teaching"} - -# crwdns18944:0crwdne18944:0 - -crwdns12424:0crwdne12424:0 crwdns12425:0crwdne12425:0 crwdns12426:0crwdne12426:0 crwdns12427:0crwdne12427:0 - -*BlockTag: crwdns12428:0crwdne12428:0* - -{image file-path="img/topics/sorting-network-backwards-1.png"} - -*BlockTag: crwdns12429:0crwdne12429:0* - -{image file-path="img/topics/sorting-network-backwards-2.png"} - -*BlockTag: crwdns12430:0crwdne12430:0* - -{panel end} - -## crwdns12431:0crwdne12431:0 - -crwdns12432:0crwdne12432:0 crwdns12433:0crwdne12433:0 crwdns12434:0crwdne12434:0 crwdns12435:0crwdne12435:0 - -## crwdns12436:0crwdne12436:0 - -crwdns12437:0crwdne12437:0 - -crwdns12438:0crwdne12438:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md deleted file mode 100644 index aa77b66f5..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-ct-links.md +++ /dev/null @@ -1,96 +0,0 @@ -*BlockTag: crwdns18915:0crwdne18915:0* - -{panel type="ct-algorithm"} - -# crwdns18916:0crwdne18916:0 - -crwdns12440:0crwdne12440:0 crwdns12441:0crwdne12441:0 - -#### crwdns12442:0crwdne12442:0 - -- crwdns12443:0crwdne12443:0 - -- crwdns12444:0crwdne12444:0 - -*BlockTag: crwdns12445:0crwdne12445:0* - -{panel end} - -*BlockTag: crwdns18917:0crwdne18917:0* - -{panel type="ct-abstraction"} - -# crwdns18918:0crwdne18918:0 - -crwdns12447:0crwdne12447:0 crwdns12448:0crwdne12448:0 - -#### crwdns12449:0crwdne12449:0 - -- crwdns12450:0crwdne12450:0 -- crwdns12451:0crwdne12451:0 - -*BlockTag: crwdns12452:0crwdne12452:0* - -{panel end} - -*BlockTag: crwdns18919:0crwdne18919:0* - -{panel type="ct-decomposition"} - -# crwdns18920:0crwdne18920:0 - -crwdns12454:0crwdne12454:0 crwdns12455:0crwdne12455:0 - -#### crwdns12456:0crwdne12456:0 - -- crwdns12457:0crwdne12457:0 - -*BlockTag: crwdns12458:0crwdne12458:0* - -{panel end} - -*BlockTag: crwdns18921:0crwdne18921:0* - -{panel type="ct-pattern"} - -# crwdns18922:0crwdne18922:0 - -crwdns12460:0crwdne12460:0 - -*BlockTag: crwdns12461:0crwdne12461:0* - -{panel end} - -*BlockTag: crwdns18923:0crwdne18923:0* - -{panel type="ct-evaluation"} - -# crwdns18924:0crwdne18924:0 - -crwdns12463:0crwdne12463:0 crwdns12464:0crwdne12464:0 - -#### crwdns12465:0crwdne12465:0 - -- crwdns12466:0crwdne12466:0 -- crwdns12467:0crwdne12467:0 - -*BlockTag: crwdns12468:0crwdne12468:0* - -{panel end} - -*BlockTag: crwdns18925:0crwdne18925:0* - -{panel type="ct-logic"} - -# crwdns18926:0crwdne18926:0 - -crwdns12470:0crwdne12470:0 - -#### crwdns12471:0crwdne12471:0 - -- crwdns12472:0crwdne12472:0 -- crwdns12473:0crwdne12473:0 - -*BlockTag: crwdns12474:0crwdne12474:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md deleted file mode 100644 index 0e6898ee3..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-ct-links.md +++ /dev/null @@ -1,93 +0,0 @@ -*BlockTag: crwdns18963:0crwdne18963:0* - -{panel type="ct-algorithm"} - -# crwdns18964:0crwdne18964:0 - -crwdns12476:0crwdne12476:0 crwdns12477:0crwdne12477:0 - -#### crwdns12478:0crwdne12478:0 - -crwdns12479:0crwdne12479:0 - -crwdns12480:0crwdne12480:0 - -*BlockTag: crwdns12481:0crwdne12481:0* - -{panel end} - -*BlockTag: crwdns18965:0crwdne18965:0* - -{panel type="ct-abstraction"} - -# crwdns18966:0crwdne18966:0 - -crwdns12483:0crwdne12483:0 crwdns12484:0crwdne12484:0 - -#### crwdns12485:0crwdne12485:0 - -crwdns12486:0crwdne12486:0 crwdns12487:0crwdne12487:0 - -*BlockTag: crwdns12488:0crwdne12488:0* - -{panel end} - -*BlockTag: crwdns18967:0crwdne18967:0* - -{panel type="ct-decomposition"} - -# crwdns18968:0crwdne18968:0 - -crwdns12490:0crwdne12490:0 crwdns12491:0crwdne12491:0 - -#### crwdns12492:0crwdne12492:0 - -crwdns12493:0crwdne12493:0 - -*BlockTag: crwdns12494:0crwdne12494:0* - -{panel end} - -*BlockTag: crwdns18969:0crwdne18969:0* - -{panel type="ct-pattern"} - -# crwdns18970:0crwdne18970:0 - -crwdns12496:0crwdne12496:0 - -*BlockTag: crwdns12497:0crwdne12497:0* - -{panel end} - -*BlockTag: crwdns18971:0crwdne18971:0* - -{panel type="ct-evaluation"} - -# crwdns18972:0crwdne18972:0 - -crwdns12499:0crwdne12499:0 crwdns12500:0crwdne12500:0 - -#### crwdns12501:0crwdne12501:0 - -crwdns12502:0crwdne12502:0 crwdns12503:0crwdne12503:0 crwdns12504:0crwdne12504:0 - -*BlockTag: crwdns12505:0crwdne12505:0* - -{panel end} - -*BlockTag: crwdns18973:0crwdne18973:0* - -{panel type="ct-logic"} - -# crwdns18974:0crwdne18974:0 - -crwdns12507:0crwdne12507:0 - -#### crwdns12508:0crwdne12508:0 - -crwdns12509:0crwdne12509:0 crwdns12510:0crwdne12510:0 crwdns12511:0crwdne12511:0 - -*BlockTag: crwdns12512:0crwdne12512:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml deleted file mode 100644 index d9a6dc8b5..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -sorting-network: - description: crwdns8224:0crwdne8224:0 -sorting-network-cards: - description: crwdns8225:0crwdne8225:0 diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md deleted file mode 100644 index 65f59c6fb..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-junior.md +++ /dev/null @@ -1,117 +0,0 @@ -# crwdns12513:0crwdne12513:0 - -## crwdns12514:0crwdne12514:0 - -crwdns12515:0crwdne12515:0 - -### crwdns12516:0crwdne12516:0 - -*BlockTag: crwdns12517:0crwdne12517:0* - -{image file-path="img/topics/sorting-network-office-note-text-en.png" alt="A group of students all carry a note to the office."} - -crwdns12518:0crwdne12518:0 crwdns12519:0crwdne12519:0 - -## crwdns12520:0crwdne12520:0 - -*BlockTag: crwdns20079:0crwdne20079:0* - -{panel type="video"} - -# crwdns20080:0crwdne20080:0 - -*BlockTag: crwdns20081:0crwdne20081:0* - -{video url="https://vimeo.com/437722996"} - -crwdns20082:0crwdne20082:0 - -- [crwdns20084:0crwdne20084:0](https://vimeo.com/437726931) -- [crwdns20086:0crwdne20086:0](https://vimeo.com/437726955) - -*BlockTag: crwdns20087:0crwdne20087:0* - -{panel end} - -crwdns20088:0crwdne20088:0 crwdns20089:0crwdne20089:0 crwdns20090:0crwdne20090:0 crwdns20091:0crwdne20091:0 - -crwdns20092:0crwdne20092:0 - -*BlockTag: crwdns20093:0crwdne20093:0* - -{panel type="math"} - -# crwdns20094:0crwdne20094:0 - -crwdns20095:0crwdne20095:0 - -*BlockTag: crwdns20096:0crwdne20096:0* - -{panel end} - -## crwdns12529:0crwdne12529:0 - -*BlockTag: crwdns20097:0crwdne20097:0* - -{image file-path="img/topics/sorting-network-kids.png" alt="A group of children sort items on a Sorting Network drawn on concrete."} - -1. crwdns12531:0crwdne12531:0 -2. crwdns12532:0crwdne12532:0 -3. crwdns12533:0crwdne12533:0 crwdns12534:0crwdne12534:0 -4. crwdns12535:0crwdne12535:0 -5. crwdns12536:0crwdne12536:0 -6. crwdns12537:0crwdne12537:0 -7. crwdns12538:0crwdne12538:0 -8. crwdns12539:0crwdne12539:0 -9. crwdns12540:0crwdne12540:0 crwdns12541:0crwdne12541:0 -10. crwdns12542:0crwdne12542:0 crwdns12543:0crwdne12543:0 -11. crwdns12544:0crwdne12544:0 - -*BlockTag: crwdns20098:0crwdne20098:0* - -{panel type="teaching"} - -# crwdns20099:0crwdne20099:0 - -crwdns20100:0crwdne20100:0 crwdns20101:0crwdne20101:0 crwdns20102:0crwdne20102:0 crwdns20103:0crwdne20103:0 - -*BlockTag: crwdns20104:0crwdne20104:0* - -{image file-path="img/topics/sorting-network-too-far-kid.png" alt="A child walks too far in the sorting network activity, failing the activity for everyone."} - -crwdns20105:0crwdne20105:0 crwdns20106:0crwdne20106:0 - -*BlockTag: crwdns20107:0crwdne20107:0* - -{panel end} - -## crwdns12554:0crwdne12554:0 - -crwdns20108:0crwdne20108:0 crwdns20109:0crwdne20109:0 crwdns20110:0crwdne20110:0 crwdns20111:0crwdne20111:0 crwdns20112:0crwdne20112:0 - -crwdns20113:0crwdne20113:0 - -crwdns20114:0crwdne20114:0 crwdns20115:0crwdne20115:0 crwdns20116:0crwdne20116:0 crwdns20117:0crwdne20117:0 - -crwdns20118:0crwdne20118:0 crwdns20119:0crwdne20119:0 - -*BlockTag: crwdns20120:0crwdne20120:0* - -{image file-path="img/topics/sorting-network-node-1.png" alt="An image showing the network with the path the smallest number would take through the network if the smallest number started in node 1."} - -crwdns20121:0crwdne20121:0 - -*BlockTag: crwdns20122:0crwdne20122:0* - -{image file-path="img/topics/sorting-network-node-2.png" alt="An image showing the network with the path the smallest number would take through the network if the smallest number started in node 2."} - -crwdns20123:0crwdne20123:0 - -crwdns20124:0crwdne20124:0 - -crwdns20125:0crwdne20125:0 - -## crwdns12573:0crwdne12573:0 - -- crwdns20126:0crwdne20126:0 -- crwdns20127:0crwdne20127:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml deleted file mode 100644 index c91e2627f..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network-resource-descriptions.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -sorting-network: - description: crwdns8226:0crwdne8226:0 -sorting-network-cards: - description: crwdns8227:0crwdne8227:0 diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network.md deleted file mode 100644 index eb31e8dd1..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/lessons/reinforcing-numeracy-through-a-sorting-network.md +++ /dev/null @@ -1,141 +0,0 @@ -# crwdns12576:0crwdne12576:0 - -## crwdns12577:0crwdne12577:0 - -crwdns12578:0crwdne12578:0 - -### crwdns12579:0crwdne12579:0 - -*BlockTag: crwdns12580:0crwdne12580:0* - -{image file-path="img/topics/sorting-network-office-note-text-en.png" alt="A group of students all carry a note to the office."} - -crwdns12581:0crwdne12581:0 crwdns12582:0crwdne12582:0 - -## crwdns12583:0crwdne12583:0 - -*BlockTag: crwdns20022:0crwdne20022:0* - -{panel type="video"} - -# crwdns20023:0crwdne20023:0 - -*BlockTag: crwdns20024:0crwdne20024:0* - -{video url="https://vimeo.com/437722996"} - -crwdns20025:0crwdne20025:0 - -- [crwdns20027:0crwdne20027:0](https://vimeo.com/437726931) -- [crwdns20029:0crwdne20029:0](https://vimeo.com/437726955) - -*BlockTag: crwdns20030:0crwdne20030:0* - -{panel end} - -crwdns20031:0crwdne20031:0 crwdns20032:0crwdne20032:0 crwdns20033:0crwdne20033:0 crwdns20034:0crwdne20034:0 - -crwdns20035:0crwdne20035:0 - -*BlockTag: crwdns20036:0crwdne20036:0* - -{panel type="math"} - -# crwdns20037:0crwdne20037:0 - -crwdns20038:0crwdne20038:0 - -*BlockTag: crwdns20039:0crwdne20039:0* - -{panel end} - -*BlockTag: crwdns20040:0crwdne20040:0* - -{panel type="exemplars"} - -# crwdns20041:0crwdne20041:0 - -crwdns20042:0crwdne20042:0 crwdns20043:0crwdne20043:0 - -*BlockTag: crwdns20044:0crwdne20044:0* - -{image file-path="img/topics/sorting-network-example-cards-1.png" alt="Two pieces of paper with single digit numbers printed on them."} - -*BlockTag: crwdns20045:0crwdne20045:0* - -{image file-path="img/topics/sorting-network-example-cards-2.png" alt="Two pieces of paper with seven digit numbers printed on them."} - -*BlockTag: crwdns20046:0crwdne20046:0* - -{image file-path="img/topics/sorting-network-example-cards-3.png" alt="Two pieces of paper with fractions printed on them."} - -*BlockTag: crwdns20047:0crwdne20047:0* - -{panel end} - -## crwdns12599:0crwdne12599:0 - -*BlockTag: crwdns20048:0crwdne20048:0* - -{image file-path="img/topics/sorting-network-kids.png" alt="A group of children sort items on a Sorting Network drawn on concrete."} - -1. crwdns12601:0crwdne12601:0 -2. crwdns12602:0crwdne12602:0 -3. crwdns12603:0crwdne12603:0 crwdns12604:0crwdne12604:0 -4. crwdns12605:0crwdne12605:0 -5. crwdns12606:0crwdne12606:0 -6. crwdns12607:0crwdne12607:0 -7. crwdns12608:0crwdne12608:0 -8. crwdns12609:0crwdne12609:0 -9. crwdns12610:0crwdne12610:0 crwdns12611:0crwdne12611:0 -10. crwdns12612:0crwdne12612:0 crwdns12613:0crwdne12613:0 -11. crwdns12614:0crwdne12614:0 - -*BlockTag: crwdns20049:0crwdne20049:0* - -{panel type="teaching"} - -# crwdns20050:0crwdne20050:0 - -crwdns20051:0crwdne20051:0 crwdns20052:0crwdne20052:0 crwdns20053:0crwdne20053:0 crwdns20054:0crwdne20054:0 - -*BlockTag: crwdns20055:0crwdne20055:0* - -{image file-path="img/topics/sorting-network-too-far-kid.png" alt="A child walks too far in the sorting network activity, failing the activity for everyone."} - -crwdns20056:0crwdne20056:0 crwdns20057:0crwdne20057:0 - -*BlockTag: crwdns20058:0crwdne20058:0* - -{panel end} - -## crwdns12624:0crwdne12624:0 - -crwdns20059:0crwdne20059:0 crwdns20060:0crwdne20060:0 crwdns20061:0crwdne20061:0 crwdns20062:0crwdne20062:0 crwdns20063:0crwdne20063:0 - -crwdns20064:0crwdne20064:0 - -crwdns20065:0crwdne20065:0 crwdns20066:0crwdne20066:0 crwdns20067:0crwdne20067:0 crwdns20068:0crwdne20068:0 - -crwdns20069:0crwdne20069:0 crwdns20070:0crwdne20070:0 - -*BlockTag: crwdns20071:0crwdne20071:0* - -{image file-path="img/topics/sorting-network-node-1.png" alt="An image showing the network with the path the smallest number would take through the network if the smallest number started in node 1."} - -crwdns20072:0crwdne20072:0 - -*BlockTag: crwdns20073:0crwdne20073:0* - -{image file-path="img/topics/sorting-network-node-2.png" alt="An image showing the network with the path the smallest number would take through the network if the smallest number started in node 2."} - -crwdns20074:0crwdne20074:0 - -crwdns20075:0crwdne20075:0 - -crwdns20076:0crwdne20076:0 - -## crwdns12643:0crwdne12643:0 - -- crwdns20077:0crwdne20077:0 -- crwdns20078:0crwdne20078:0 \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/unit-plan-ct-links.md deleted file mode 100644 index bd9797e89..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/unit-plan-ct-links.md +++ /dev/null @@ -1,89 +0,0 @@ -*BlockTag: crwdns18897:0crwdne18897:0* - -{panel type="ct-algorithm"} - -# crwdns18898:0crwdne18898:0 - -crwdns12101:0crwdne12101:0 crwdns12102:0crwdne12102:0 crwdns12103:0crwdne12103:0 crwdns12104:0crwdne12104:0 crwdns12105:0crwdne12105:0 - -*BlockTag: crwdns12106:0crwdne12106:0* - -{panel end} - -*BlockTag: crwdns18899:0crwdne18899:0* - -{panel type="ct-abstraction"} - -# crwdns18900:0crwdne18900:0 - -crwdns12108:0crwdne12108:0 crwdns12109:0crwdne12109:0 - -crwdns12110:0crwdne12110:0 crwdns12111:0crwdne12111:0 crwdns12112:0crwdne12112:0 crwdns12113:0crwdne12113:0 - -crwdns12114:0crwdne12114:0 - -*BlockTag: crwdns12115:0crwdne12115:0* - -{panel end} - -*BlockTag: crwdns18901:0crwdne18901:0* - -{panel type="ct-decomposition"} - -# crwdns18902:0crwdne18902:0 - -*BlockTag: crwdns20018:0crwdne20018:0* - -{image file-path="img/topics/sorting-network-comparing-apples.png" alt="A person compares a large apple and a small apple." alignment="right"} - -crwdns12118:0crwdne12118:0 crwdns12119:0crwdne12119:0 crwdns12120:0crwdne12120:0 crwdns12121:0crwdne12121:0 crwdns12122:0crwdne12122:0 - -crwdns12123:0crwdne12123:0 - -*BlockTag: crwdns12124:0crwdne12124:0* - -{panel end} - -*BlockTag: crwdns18903:0crwdne18903:0* - -{panel type="ct-pattern"} - -# crwdns18904:0crwdne18904:0 - -crwdns12126:0crwdne12126:0 - -crwdns12127:0crwdne12127:0 crwdns12128:0crwdne12128:0 crwdns12129:0crwdne12129:0 crwdns12130:0crwdne12130:0 crwdns12131:0crwdne12131:0 - -crwdns12132:0crwdne12132:0 crwdns12133:0crwdne12133:0 crwdns12134:0crwdne12134:0 - -crwdns12135:0crwdne12135:0 crwdns12136:0crwdne12136:0 - -*BlockTag: crwdns12137:0crwdne12137:0* - -{panel end} - -*BlockTag: crwdns18905:0crwdne18905:0* - -{panel type="ct-evaluation"} - -# crwdns18906:0crwdne18906:0 - -crwdns12139:0crwdne12139:0 crwdns12140:0crwdne12140:0 crwdns12141:0crwdne12141:0 - -*BlockTag: crwdns12142:0crwdne12142:0* - -{panel end} - -*BlockTag: crwdns18907:0crwdne18907:0* - -{panel type="ct-logic"} - -# crwdns18908:0crwdne18908:0 - -crwdns12144:0crwdne12144:0 crwdns12145:0crwdne12145:0 crwdns12146:0crwdne12146:0 crwdns12147:0crwdne12147:0 crwdns12148:0crwdne12148:0 - -crwdns12149:0crwdne12149:0 crwdns12150:0crwdne12150:0 crwdns12151:0crwdne12151:0 - -*BlockTag: crwdns12152:0crwdne12152:0* - -{panel end} \ No newline at end of file diff --git a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/unit-plan.md b/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/unit-plan.md deleted file mode 100644 index f8a51192c..000000000 --- a/csunplugged/topics/content/xx_LR/sorting-networks/unit-plan/unit-plan.md +++ /dev/null @@ -1,102 +0,0 @@ -# crwdns12153:0crwdne12153:0 - -*BlockTag: crwdns18893:0crwdne18893:0* - -{panel type="video"} - -# crwdns18894:0crwdne18894:0 - -crwdns12155:0crwdne12155:0 - -*BlockTag: crwdns12156:0crwdne12156:0* - -{video url="https://vimeo.com/437722996"} - -crwdns12157:0crwdne12157:0 - -- [crwdns12159:0crwdne12159:0](https://vimeo.com/437726931) -- [crwdns12161:0crwdne12161:0](https://vimeo.com/437726955) - -*BlockTag: crwdns12162:0crwdne12162:0* - -{panel end} - -crwdns12164:0crwdne12164:0 crwdns12165:0crwdne12165:0 crwdns12166:0crwdne12166:0 crwdns12167:0crwdne12167:0 - -*BlockTag: crwdns12168:0crwdne12168:0* - -{image file-path="img/topics/sorting-network-many-computers-vs-one.png" alt="An image showing a group of people working on their computers working, compared to one person at their computer."} - -crwdns12169:0crwdne12169:0 crwdns12170:0crwdne12170:0 crwdns12171:0crwdne12171:0 crwdns12172:0crwdne12172:0 - -crwdns12173:0crwdne12173:0 crwdns12174:0crwdne12174:0 - -*BlockTag: crwdns12175:0crwdne12175:0* - -{image file-path="img/topics/sorting-network-digging-hole-text-en.png" alt="One person is digging a hole and the other person states they can't start digging until the other person is done."} - -crwdns12176:0crwdne12176:0 crwdns12177:0crwdne12177:0 crwdns12178:0crwdne12178:0 crwdns12179:0crwdne12179:0 - -*BlockTag: crwdns12180:0crwdne12180:0* - -{image file-path="img/topics/sorting-network-confused-people.png" alt="A group of people are confused in front of computers as they try to coordinate a simple job across many people."} - -crwdns12181:0crwdne12181:0 crwdns12182:0crwdne12182:0 - -crwdns12183:0crwdne12183:0 crwdns12184:0crwdne12184:0 - -crwdns12185:0crwdne12185:0 crwdns12186:0crwdne12186:0 crwdns12187:0crwdne12187:0 crwdns12188:0crwdne12188:0 - -## crwdns18281:0crwdne18281:0 - -*BlockTag: crwdns12190:0crwdne12190:0* - -{image file-path="img/topics/sorting-network-too-far-kid.png" alt="A child walks too far in the sorting network activity, failing the activity for everyone."} - -crwdns12191:0crwdne12191:0 crwdns12192:0crwdne12192:0 crwdns12193:0crwdne12193:0 crwdns12194:0crwdne12194:0 - -## crwdns18282:0crwdne18282:0 - -- crwdns12196:0crwdne12196:0 -- crwdns12197:0crwdne12197:0 -- crwdns12198:0crwdne12198:0 -- crwdns12199:0crwdne12199:0 -- crwdns12200:0crwdne12200:0 -- crwdns12201:0crwdne12201:0 crwdns12202:0crwdne12202:0 - -*BlockTag: crwdns18895:0crwdne18895:0* - -{panel type="math"} - -# crwdns18896:0crwdne18896:0 - -crwdns12204:0crwdne12204:0 - -*BlockTag: crwdns12205:0crwdne12205:0* - -{panel end} - -## crwdns18283:0crwdne18283:0 - -*BlockTag: crwdns12207:0crwdne12207:0* - -{image file-path="img/topics/sorting-network-tortoises-vs-rabbit.png" alt="A group of turtles build a wall quicker than one rabbit."} - -crwdns12208:0crwdne12208:0 crwdns12209:0crwdne12209:0 crwdns12210:0crwdne12210:0 crwdns12211:0crwdne12211:0 crwdns12212:0crwdne12212:0 - -crwdns12213:0crwdne12213:0 crwdns12214:0crwdne12214:0 - -*BlockTag: crwdns12215:0crwdne12215:0* - -{image file-path="img/topics/sorting-network-ancient-sorting-network-text-en.png" alt="A GPU finds a cave painting of an ancient sorting network."} - -crwdns12216:0crwdne12216:0 crwdns12217:0crwdne12217:0 crwdns12218:0crwdne12218:0 - -crwdns12219:0crwdne12219:0 - -## crwdns18284:0crwdne18284:0 - -- crwdns12221:0crwdne12221:0 -- crwdns12222:0crwdne12222:0 -- crwdns12223:0crwdne12223:0 -- crwdns12224:0crwdne12224:0 \ No newline at end of file diff --git a/csunplugged/topics/content/yy_RL b/csunplugged/topics/content/yy_RL deleted file mode 120000 index cb9aa369e..000000000 --- a/csunplugged/topics/content/yy_RL +++ /dev/null @@ -1 +0,0 @@ -xx_LR \ No newline at end of file diff --git a/csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/zh_Hans/binary-numbers/ct-links.md similarity index 100% rename from csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/unit-plan-ct-links.md rename to csunplugged/topics/content/zh_Hans/binary-numbers/ct-links.md diff --git a/csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md b/csunplugged/topics/content/zh_Hans/binary-numbers/lessons/how-binary-digits-work-ct-links.md similarity index 100% rename from csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/lessons/how-binary-digits-work-ct-links.md rename to csunplugged/topics/content/zh_Hans/binary-numbers/lessons/how-binary-digits-work-ct-links.md diff --git a/csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml b/csunplugged/topics/content/zh_Hans/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml similarity index 100% rename from csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/lessons/how-binary-digits-work-resource-descriptions.yaml rename to csunplugged/topics/content/zh_Hans/binary-numbers/lessons/how-binary-digits-work-resource-descriptions.yaml diff --git a/csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/lessons/how-binary-digits-work.md b/csunplugged/topics/content/zh_Hans/binary-numbers/lessons/how-binary-digits-work.md similarity index 100% rename from csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/lessons/how-binary-digits-work.md rename to csunplugged/topics/content/zh_Hans/binary-numbers/lessons/how-binary-digits-work.md diff --git a/csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/unit-plan.md b/csunplugged/topics/content/zh_Hans/binary-numbers/whats-it-all-about.md similarity index 100% rename from csunplugged/topics/content/zh_Hans/binary-numbers/unit-plan/unit-plan.md rename to csunplugged/topics/content/zh_Hans/binary-numbers/whats-it-all-about.md diff --git a/csunplugged/topics/management/commands/_CurriculumIntegrationsLoader.py b/csunplugged/topics/management/commands/_CurriculumIntegrationsLoader.py index f56b0f284..e67c57aab 100644 --- a/csunplugged/topics/management/commands/_CurriculumIntegrationsLoader.py +++ b/csunplugged/topics/management/commands/_CurriculumIntegrationsLoader.py @@ -5,7 +5,7 @@ from utils.errors.KeyNotFoundError import KeyNotFoundError from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError from utils.errors.InvalidYAMLValueError import InvalidYAMLValueError -from topics.models import CurriculumArea, UnitPlan, Lesson +from topics.models import CurriculumArea, Lesson class CurriculumIntegrationsLoader(TranslatableModelLoader): @@ -88,37 +88,18 @@ def load(self): if "prerequisite-lessons" in integration_data: prerequisite_lessons = integration_data["prerequisite-lessons"] if prerequisite_lessons is not None: - for (unit_plan_slug, lessons) in prerequisite_lessons.items(): - if lessons is None: - raise MissingRequiredFieldError( - self.structure_file_path, - ["unit-plan"], - "Prerequisite Lesson" - ) + for lesson_slug in prerequisite_lessons: try: - UnitPlan.objects.get( + lesson = Lesson.objects.get( topic__slug=self.topic.slug, - slug=unit_plan_slug + slug=lesson_slug, ) + integration.prerequisite_lessons.add(lesson) except ObjectDoesNotExist: raise KeyNotFoundError( self.structure_file_path, - unit_plan_slug, - "Unit Plans" + lesson_slug, + "Lessons" ) - for lesson_slug in lessons: - try: - lesson = Lesson.objects.get( - topic__slug=self.topic.slug, - unit_plan__slug=unit_plan_slug, - slug=lesson_slug, - ) - integration.prerequisite_lessons.add(lesson) - except ObjectDoesNotExist: - raise KeyNotFoundError( - self.structure_file_path, - lesson_slug, - "Lessons" - ) self.log("Added curriculum integration: {}".format(integration.name), 1) diff --git a/csunplugged/topics/management/commands/_LessonsLoader.py b/csunplugged/topics/management/commands/_LessonsLoader.py index 91b299a09..4f882f358 100644 --- a/csunplugged/topics/management/commands/_LessonsLoader.py +++ b/csunplugged/topics/management/commands/_LessonsLoader.py @@ -21,16 +21,14 @@ class LessonsLoader(TranslatableModelLoader): """Custom loader for loading lessons.""" - def __init__(self, topic, unit_plan, **kwargs): + def __init__(self, topic, **kwargs): """Create the loader for loading lessons. Args: topic: Object of Topic model (Topic). - unit_plan: Object of UnitPlan model (UnitPlan). """ super().__init__(**kwargs) self.topic = topic - self.unit_plan = unit_plan def load(self): """Load the content for a single lesson. @@ -89,7 +87,6 @@ def load(self): lesson_duration = None lesson = self.topic.lessons.create( - unit_plan=self.unit_plan, slug=lesson_slug, duration=lesson_duration, ) diff --git a/csunplugged/topics/management/commands/_TopicLoader.py b/csunplugged/topics/management/commands/_TopicLoader.py index 52ed8e8f4..2bd90e58d 100644 --- a/csunplugged/topics/management/commands/_TopicLoader.py +++ b/csunplugged/topics/management/commands/_TopicLoader.py @@ -2,11 +2,18 @@ import os.path from django.db import transaction +from django.core.exceptions import ObjectDoesNotExist from utils.TranslatableModelLoader import TranslatableModelLoader from utils.check_required_files import find_image_files +from utils.convert_heading_tree_to_dict import convert_heading_tree_to_dict from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError - -from topics.models import Topic +from utils.errors.KeyNotFoundError import KeyNotFoundError +from topics.models import ( + Topic, + Lesson, + LessonNumber, + AgeGroup, +) class TopicLoader(TranslatableModelLoader): @@ -32,21 +39,36 @@ def load(self): """ topic_structure = self.load_yaml_file(self.structure_file_path) - unit_plans = topic_structure.get("unit-plans", None) - if unit_plans is None: - raise MissingRequiredFieldError( - self.structure_file_path, - ["unit-plans"], - "Topic" - ) - topic_translations = self.get_blank_translation_dictionary() content_filename = "{}.md".format(self.topic_slug) content_translations = self.get_markdown_translations(content_filename) for language, content in content_translations.items(): - topic_translations[language]["content"] = content.html_string topic_translations[language]["name"] = content.title + topic_translations[language]["content"] = content.html_string + + if "whats-it-all-about" in topic_structure: + whats_it_all_about_filename = topic_structure["whats-it-all-about"] + whats_it_all_about_translations = self.get_markdown_translations( + whats_it_all_about_filename, + heading_required=False, + remove_title=True, + ) + for language, content in whats_it_all_about_translations.items(): + topic_translations[language]["whats_it_all_about"] = content.html_string + if content.heading_tree: + heading_tree = convert_heading_tree_to_dict(content.heading_tree) + topic_translations[language]["whats_it_all_about_heading_tree"] = heading_tree + + if "computational-thinking-links" in topic_structure: + ct_links_filename = topic_structure["computational-thinking-links"] + ct_links_translations = self.get_markdown_translations( + ct_links_filename, + heading_required=False, + remove_title=False, + ) + for language, content in ct_links_translations.items(): + topic_translations[language]["computational_thinking_links"] = content.html_string if "other-resources" in topic_structure and topic_structure["other-resources"] is not None: other_resources_filename = topic_structure["other-resources"] @@ -64,14 +86,20 @@ def load(self): else: topic_icon = None - # Create topic objects and save to the db + # Create Topic object and save to the database topic = Topic( slug=self.topic_slug, icon=topic_icon, ) self.populate_translations(topic, topic_translations) - self.mark_translation_availability(topic, required_fields=["name", "content"]) + self.mark_translation_availability( + topic, + required_fields=[ + "name", + "content", + ] + ) topic.save() self.log("Added Topic: {}".format(topic.name)) @@ -90,16 +118,82 @@ def load(self): structure_filename=structure_filename ).load() - # Load unit plans - for unit_plan_file_path in unit_plans: - content_path, structure_filename = os.path.split(unit_plan_file_path) - self.factory.create_unit_plan_loader( - topic, - base_path=self.base_path, - content_path=os.path.join(self.content_path, content_path), - structure_filename=structure_filename, - lite_loader=self.lite_loader, - ).load() + # Get path to lesson yaml + lessons_yaml = topic_structure.get("lessons", None) + if lessons_yaml is None: + raise MissingRequiredFieldError( + self.structure_file_path, + ["lessons", "age-groups"], + "Topic" + ) + + lesson_path, lesson_structure_file = os.path.split(lessons_yaml) + + # Call the loader to save the lessons into the db + self.factory.create_lessons_loader( + topic, + content_path=os.path.join(self.content_path, lesson_path), + structure_filename=lesson_structure_file, + base_path=self.base_path, + lite_loader=self.lite_loader, + ).load() + + # Create AgeGroup and assign to lessons + age_groups = topic_structure.get("age-groups", None) + if age_groups is None: + raise MissingRequiredFieldError( + self.structure_file_path, + ["lessons", "age-groups"], + "Unit Plan" + ) + + for (age_group_slug, age_group_data) in age_groups.items(): + + try: + age_group = AgeGroup.objects.get( + slug=age_group_slug + ) + except ObjectDoesNotExist: + raise KeyNotFoundError( + self.structure_file_path, + age_group_slug, + "Age Range" + ) + + if age_group_data is None: + raise MissingRequiredFieldError( + self.structure_file_path, + ["lesson keys"], + "Unit Plan" + ) + + for (lesson_slug, lesson_data) in age_group_data.items(): + try: + lesson = Lesson.objects.get( + slug=lesson_slug + ) + except ObjectDoesNotExist: + raise KeyNotFoundError( + self.structure_file_path, + lesson_slug, + "Lesson" + ) + + if lesson_data is None or lesson_data.get("number", None) is None: + raise MissingRequiredFieldError( + self.structure_file_path, + ["number"], + "Unit Plan" + ) + else: + lesson_number = lesson_data.get("number", None) + + relationship = LessonNumber( + age_group=age_group, + lesson=lesson, + number=lesson_number, + ) + relationship.save() if "curriculum-integrations" in topic_structure: curriculum_integrations_structure_file_path = topic_structure["curriculum-integrations"] diff --git a/csunplugged/topics/management/commands/_UnitPlanLoader.py b/csunplugged/topics/management/commands/_UnitPlanLoader.py deleted file mode 100644 index 1d0f8238a..000000000 --- a/csunplugged/topics/management/commands/_UnitPlanLoader.py +++ /dev/null @@ -1,153 +0,0 @@ -"""Custom loader for loading unit plans.""" - -import os.path -from django.core.exceptions import ObjectDoesNotExist -from utils.TranslatableModelLoader import TranslatableModelLoader -from utils.convert_heading_tree_to_dict import convert_heading_tree_to_dict -from utils.errors.MissingRequiredFieldError import MissingRequiredFieldError -from utils.errors.KeyNotFoundError import KeyNotFoundError - - -from topics.models import ( - Lesson, - LessonNumber, - AgeGroup, -) - - -class UnitPlanLoader(TranslatableModelLoader): - """Custom loader for loading unit plans.""" - - def __init__(self, factory, topic, **kwargs): - """Create the loader for loading unit plans. - - Args: - factory: LoaderFactory object for creating loaders (LoaderFactory). - topic: Object of related topic model (Topic). - """ - super().__init__(**kwargs) - self.factory = factory - self.unit_plan_slug = os.path.splitext(self.structure_filename)[0] - self.topic = topic - - def load(self): - """Load the content for unit plans. - - Raise: - KeyNotFoundError: when no object can be found with the matching attribute. - MissingRequiredFieldError: when a value for a required model field cannot - be found in the config file. - """ - unit_plan_structure = self.load_yaml_file(self.structure_file_path) - - unit_plan_translations = self.get_blank_translation_dictionary() - - content_filename = "{}.md".format(self.unit_plan_slug) - content_translations = self.get_markdown_translations(content_filename) - for language, content in content_translations.items(): - unit_plan_translations[language]["content"] = content.html_string - unit_plan_translations[language]["name"] = content.title - if content.heading_tree: - heading_tree = convert_heading_tree_to_dict(content.heading_tree) - unit_plan_translations[language]["heading_tree"] = heading_tree - - if "computational-thinking-links" in unit_plan_structure: - ct_links_filename = unit_plan_structure["computational-thinking-links"] - ct_links_translations = self.get_markdown_translations( - ct_links_filename, - heading_required=False, - remove_title=False, - ) - for language, content in ct_links_translations.items(): - unit_plan_translations[language]["computational_thinking_links"] = content.html_string - - unit_plan = self.topic.unit_plans.create( - slug=self.unit_plan_slug, - languages=list(content_translations.keys()), - ) - - self.populate_translations(unit_plan, unit_plan_translations) - self.mark_translation_availability(unit_plan, required_fields=["name", "content"]) - - unit_plan.save() - - self.log("Added unit plan: {}".format(unit_plan.name), 1) - - # Load the lessons for the unit plan - # Get path to lesson yaml - lessons_yaml = unit_plan_structure.get("lessons", None) - if lessons_yaml is None: - raise MissingRequiredFieldError( - self.structure_file_path, - ["lessons", "age-groups"], - "Unit Plan" - ) - - lesson_path, lesson_structure_file = os.path.split(lessons_yaml) - - # Call the loader to save the lessons into the db - self.factory.create_lessons_loader( - self.topic, - unit_plan, - content_path=os.path.join(self.content_path, lesson_path), - structure_filename=lesson_structure_file, - base_path=self.base_path, - lite_loader=self.lite_loader, - ).load() - - # Create AgeGroup and assign to lessons - age_groups = unit_plan_structure.get("age-groups", None) - if age_groups is None: - raise MissingRequiredFieldError( - self.structure_file_path, - ["lessons", "age-groups"], - "Unit Plan" - ) - - for (age_group_slug, age_group_data) in age_groups.items(): - - try: - age_group = AgeGroup.objects.get( - slug=age_group_slug - ) - except ObjectDoesNotExist: - raise KeyNotFoundError( - self.structure_file_path, - age_group_slug, - "Age Range" - ) - - if age_group_data is None: - raise MissingRequiredFieldError( - self.structure_file_path, - ["lesson keys"], - "Unit Plan" - ) - - for (lesson_slug, lesson_data) in age_group_data.items(): - try: - lesson = Lesson.objects.get( - slug=lesson_slug - ) - except ObjectDoesNotExist: - raise KeyNotFoundError( - self.structure_file_path, - lesson_slug, - "Lesson" - ) - - if lesson_data is None or lesson_data.get("number", None) is None: - raise MissingRequiredFieldError( - self.structure_file_path, - ["number"], - "Unit Plan" - ) - else: - lesson_number = lesson_data.get("number", None) - - relationship = LessonNumber( - age_group=age_group, - lesson=lesson, - number=lesson_number, - ) - relationship.save() diff --git a/csunplugged/topics/migrations/0102_auto_20220516_0335.py b/csunplugged/topics/migrations/0102_auto_20220516_0335.py new file mode 100644 index 000000000..458bc2991 --- /dev/null +++ b/csunplugged/topics/migrations/0102_auto_20220516_0335.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2022-05-16 03:35 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0101_auto_20210929_2238'), + ] + + operations = [ + migrations.AddField( + model_name='topic', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='topic', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='topics_topi_search__d723a2_gin'), + ), + ] diff --git a/csunplugged/topics/migrations/0103_auto_20220519_2311.py b/csunplugged/topics/migrations/0103_auto_20220519_2311.py new file mode 100644 index 000000000..edb1e07e7 --- /dev/null +++ b/csunplugged/topics/migrations/0103_auto_20220519_2311.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2022-05-19 23:11 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0102_auto_20220516_0335'), + ] + + operations = [ + migrations.AddField( + model_name='unitplan', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='unitplan', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='topics_unit_search__1551c1_gin'), + ), + ] diff --git a/csunplugged/topics/migrations/0104_auto_20220520_0454.py b/csunplugged/topics/migrations/0104_auto_20220520_0454.py new file mode 100644 index 000000000..4d2edee3f --- /dev/null +++ b/csunplugged/topics/migrations/0104_auto_20220520_0454.py @@ -0,0 +1,42 @@ +# Generated by Django 3.2.11 on 2022-05-20 04:54 + +import django.contrib.postgres.indexes +import django.contrib.postgres.search +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0103_auto_20220519_2311'), + ] + + operations = [ + migrations.AddField( + model_name='curriculumintegration', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddField( + model_name='lesson', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddField( + model_name='programmingchallenge', + name='search_vector', + field=django.contrib.postgres.search.SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='curriculumintegration', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='topics_curr_search__ba0181_gin'), + ), + migrations.AddIndex( + model_name='lesson', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='topics_less_search__3c7d6a_gin'), + ), + migrations.AddIndex( + model_name='programmingchallenge', + index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='topics_prog_search__168ecd_gin'), + ), + ] diff --git a/csunplugged/topics/migrations/0105_auto_20220609_0411.py b/csunplugged/topics/migrations/0105_auto_20220609_0411.py new file mode 100644 index 000000000..25d502368 --- /dev/null +++ b/csunplugged/topics/migrations/0105_auto_20220609_0411.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.11 on 2022-06-09 04:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0104_auto_20220520_0454'), + ] + + operations = [ + migrations.RemoveField( + model_name='lesson', + name='unit_plan', + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links', + field=models.TextField(default=''), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about', + field=models.TextField(default=''), + ), + migrations.DeleteModel( + name='UnitPlan', + ), + ] diff --git a/csunplugged/topics/migrations/0106_auto_20220609_2330.py b/csunplugged/topics/migrations/0106_auto_20220609_2330.py new file mode 100644 index 000000000..7aaf77ec5 --- /dev/null +++ b/csunplugged/topics/migrations/0106_auto_20220609_2330.py @@ -0,0 +1,63 @@ +# Generated by Django 3.2.11 on 2022-06-09 23:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0105_auto_20220609_0411'), + ] + + operations = [ + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree', + field=models.JSONField(default=dict), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree', + field=models.JSONField(default=dict), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_de', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_en', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_es', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_fr', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_mi', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_xx_lr', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_yy_rl', + field=models.JSONField(default=dict, null=True), + ), + migrations.AlterField( + model_name='lesson', + name='heading_tree_zh_hans', + field=models.JSONField(default=dict, null=True), + ), + ] diff --git a/csunplugged/topics/migrations/0107_auto_20220613_0207.py b/csunplugged/topics/migrations/0107_auto_20220613_0207.py new file mode 100644 index 000000000..2e00dbfbd --- /dev/null +++ b/csunplugged/topics/migrations/0107_auto_20220613_0207.py @@ -0,0 +1,133 @@ +# Generated by Django 3.2.11 on 2022-06-13 02:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0106_auto_20220609_2330'), + ] + + operations = [ + migrations.AddField( + model_name='topic', + name='computational_thinking_links_de', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_en', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_es', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_fr', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_mi', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_xx_lr', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_yy_rl', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='computational_thinking_links_zh_hans', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_de', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_en', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_es', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_fr', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_de', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_en', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_es', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_fr', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_mi', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_xx_lr', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_yy_rl', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_heading_tree_zh_hans', + field=models.JSONField(default=dict, null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_mi', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_xx_lr', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_yy_rl', + field=models.TextField(default='', null=True), + ), + migrations.AddField( + model_name='topic', + name='whats_it_all_about_zh_hans', + field=models.TextField(default='', null=True), + ), + ] diff --git a/csunplugged/topics/migrations/0108_auto_20220821_2359.py b/csunplugged/topics/migrations/0108_auto_20220821_2359.py new file mode 100644 index 000000000..72a6fc992 --- /dev/null +++ b/csunplugged/topics/migrations/0108_auto_20220821_2359.py @@ -0,0 +1,245 @@ +# Generated by Django 3.2.15 on 2022-08-21 23:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('topics', '0107_auto_20220613_0207'), + ] + + operations = [ + migrations.RemoveField( + model_name='agegroup', + name='description_xx_lr', + ), + migrations.RemoveField( + model_name='agegroup', + name='description_yy_rl', + ), + migrations.RemoveField( + model_name='classroomresource', + name='description_xx_lr', + ), + migrations.RemoveField( + model_name='classroomresource', + name='description_yy_rl', + ), + migrations.RemoveField( + model_name='curriculumarea', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='curriculumarea', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='curriculumintegration', + name='content_xx_lr', + ), + migrations.RemoveField( + model_name='curriculumintegration', + name='content_yy_rl', + ), + migrations.RemoveField( + model_name='curriculumintegration', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='curriculumintegration', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='glossaryterm', + name='definition_xx_lr', + ), + migrations.RemoveField( + model_name='glossaryterm', + name='definition_yy_rl', + ), + migrations.RemoveField( + model_name='glossaryterm', + name='term_xx_lr', + ), + migrations.RemoveField( + model_name='glossaryterm', + name='term_yy_rl', + ), + migrations.RemoveField( + model_name='learningoutcome', + name='text_xx_lr', + ), + migrations.RemoveField( + model_name='learningoutcome', + name='text_yy_rl', + ), + migrations.RemoveField( + model_name='lesson', + name='computational_thinking_links_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='computational_thinking_links_yy_rl', + ), + migrations.RemoveField( + model_name='lesson', + name='content_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='content_yy_rl', + ), + migrations.RemoveField( + model_name='lesson', + name='heading_tree_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='heading_tree_yy_rl', + ), + migrations.RemoveField( + model_name='lesson', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='lesson', + name='programming_challenges_description_xx_lr', + ), + migrations.RemoveField( + model_name='lesson', + name='programming_challenges_description_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallenge', + name='content_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallenge', + name='content_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallenge', + name='extra_challenge_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallenge', + name='extra_challenge_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallenge', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallenge', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallengedifficulty', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallengedifficulty', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallengeimplementation', + name='expected_result_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallengeimplementation', + name='expected_result_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallengeimplementation', + name='hints_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallengeimplementation', + name='hints_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallengeimplementation', + name='solution_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallengeimplementation', + name='solution_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallengelanguage', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallengelanguage', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='programmingchallengelanguage', + name='programming_reminders_xx_lr', + ), + migrations.RemoveField( + model_name='programmingchallengelanguage', + name='programming_reminders_yy_rl', + ), + migrations.RemoveField( + model_name='resourcedescription', + name='description_xx_lr', + ), + migrations.RemoveField( + model_name='resourcedescription', + name='description_yy_rl', + ), + migrations.RemoveField( + model_name='topic', + name='computational_thinking_links_xx_lr', + ), + migrations.RemoveField( + model_name='topic', + name='computational_thinking_links_yy_rl', + ), + migrations.RemoveField( + model_name='topic', + name='content_xx_lr', + ), + migrations.RemoveField( + model_name='topic', + name='content_yy_rl', + ), + migrations.RemoveField( + model_name='topic', + name='name_xx_lr', + ), + migrations.RemoveField( + model_name='topic', + name='name_yy_rl', + ), + migrations.RemoveField( + model_name='topic', + name='other_resources_xx_lr', + ), + migrations.RemoveField( + model_name='topic', + name='other_resources_yy_rl', + ), + migrations.RemoveField( + model_name='topic', + name='whats_it_all_about_heading_tree_xx_lr', + ), + migrations.RemoveField( + model_name='topic', + name='whats_it_all_about_heading_tree_yy_rl', + ), + migrations.RemoveField( + model_name='topic', + name='whats_it_all_about_xx_lr', + ), + migrations.RemoveField( + model_name='topic', + name='whats_it_all_about_yy_rl', + ), + ] diff --git a/csunplugged/topics/models.py b/csunplugged/topics/models.py index 8b11f4eeb..a768f7fd2 100644 --- a/csunplugged/topics/models.py +++ b/csunplugged/topics/models.py @@ -6,6 +6,9 @@ from django.contrib.postgres.fields import IntegerRangeField from resources.models import Resource from utils.TranslatableModel import TranslatableModel +from django.contrib.postgres.search import SearchVectorField +from django.contrib.postgres.indexes import GinIndex +from search.utils import concat_field_values class GlossaryTerm(TranslatableModel): @@ -112,8 +115,12 @@ class Topic(TranslatableModel): slug = models.SlugField(unique=True) name = models.CharField(max_length=100, default="") content = models.TextField(default="") + whats_it_all_about = models.TextField(default="") + whats_it_all_about_heading_tree = models.JSONField(default=dict) + computational_thinking_links = models.TextField(default="") other_resources = models.TextField(default="") icon = models.CharField(max_length=100, null=True) + search_vector = SearchVectorField(null=True) def get_absolute_url(self): """Return the canonical URL for a topic. @@ -134,44 +141,29 @@ def __str__(self): """ return self.name - -class UnitPlan(TranslatableModel): - """Model for unit plan in database.""" - - MODEL_NAME = _("Unit Plan") - RETURN_TO_PARENT = _("Return to topic") - - # Auto-incrementing 'id' field is automatically set by Django - topic = models.ForeignKey( - Topic, - on_delete=models.CASCADE, - related_name="unit_plans" - ) - slug = models.SlugField() - name = models.CharField(max_length=100, default="") - content = models.TextField(default="") - computational_thinking_links = models.TextField(default="") - heading_tree = models.JSONField(default=dict) - - def get_absolute_url(self): - """Return the canonical URL for a unit plan. + def index_contents(self): + """Return dictionary for search indexing. Returns: - URL as string. + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. """ - kwargs = { - "topic_slug": self.topic.slug, - "unit_plan_slug": self.slug + return { + 'A': self.name, + 'B': self.content, + 'C': concat_field_values( + self.lessons.values_list('name'), + ), + 'D': self.other_resources, } - return reverse("topics:unit_plan", kwargs=kwargs) - def __str__(self): - """Text representation of UnitPlan object. + class Meta: + """Meta options for model.""" - Returns: - Name of unit plan (str). - """ - return self.name + indexes = [ + GinIndex(fields=['search_vector']) + ] class ProgrammingChallengeDifficulty(TranslatableModel): @@ -218,6 +210,7 @@ class ProgrammingChallenge(TranslatableModel): on_delete=models.CASCADE, related_name="programming_challenges" ) + search_vector = SearchVectorField(null=True) def get_absolute_url(self): """Return the canonical URL for a programming challenge. @@ -263,6 +256,27 @@ def __str__(self): """ return self.name + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + return { + 'A': self.name, + 'B': self.content, + 'D': self.topic.name, + } + + class Meta: + """Meta options for model.""" + + indexes = [ + GinIndex(fields=['search_vector']) + ] + class ProgrammingChallengeLanguage(TranslatableModel): """Model for programming language in database.""" @@ -356,17 +370,12 @@ class Lesson(TranslatableModel): on_delete=models.CASCADE, related_name="lessons" ) - unit_plan = models.ForeignKey( - UnitPlan, - on_delete=models.CASCADE, - related_name="lessons" - ) slug = models.SlugField(max_length=100) name = models.CharField(max_length=100, default="") duration = models.PositiveSmallIntegerField(null=True) content = models.TextField(default="") computational_thinking_links = models.TextField(default="") - heading_tree = models.JSONField(default=list) + heading_tree = models.JSONField(default=dict) age_group = models.ManyToManyField( AgeGroup, through="LessonNumber", @@ -390,6 +399,7 @@ class Lesson(TranslatableModel): classroom_resources = models.ManyToManyField( ClassroomResource, ) + search_vector = SearchVectorField(null=True) def has_programming_challenges(self): """Return boolean of lesson having any programming challenges. @@ -444,7 +454,6 @@ def get_absolute_url(self): """ kwargs = { "topic_slug": self.topic.slug, - "unit_plan_slug": self.unit_plan.slug, "lesson_slug": self.slug } return reverse("topics:lesson", kwargs=kwargs) @@ -457,6 +466,28 @@ def __str__(self): """ return self.name + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + return { + 'A': self.name, + 'B': self.content, + 'C': self.topic.name, + 'D': self.computational_thinking_links, + } + + class Meta: + """Meta options for model.""" + + indexes = [ + GinIndex(fields=['search_vector']) + ] + class LessonNumber(models.Model): """Model for relationship between age group and lesson in database.""" @@ -506,6 +537,7 @@ class CurriculumIntegration(TranslatableModel): Lesson, related_name="curriculum_integrations" ) + search_vector = SearchVectorField(null=True) def has_prerequisite_lessons(self): """Return boolean of integration having any prerequisite lessons. @@ -536,6 +568,30 @@ def __str__(self): """ return self.name + def index_contents(self): + """Return dictionary for search indexing. + + Returns: + Dictionary of content for search indexing. The dictionary keys + are the weightings of content, and the dictionary values + are strings of content to index. + """ + return { + 'A': self.name, + 'B': self.content, + 'C': concat_field_values( + self.curriculum_areas.values_list('name'), + ), + 'D': self.topic.name, + } + + class Meta: + """Meta options for model.""" + + indexes = [ + GinIndex(fields=['search_vector']) + ] + class ResourceDescription(TranslatableModel): """Model for relationship between resource and lesson in database.""" diff --git a/csunplugged/topics/search_indexes.py b/csunplugged/topics/search_indexes.py deleted file mode 100644 index 1c2acae8b..000000000 --- a/csunplugged/topics/search_indexes.py +++ /dev/null @@ -1,183 +0,0 @@ -"""Search index for topics models. - -Note: Document boosting for Whoosh backend is with keyword '_boost' instead - of 'boost'. -""" - -from haystack import indexes -from topics.models import ( - Topic, - UnitPlan, - Lesson, - ProgrammingChallenge, - CurriculumIntegration, - CurriculumArea, -) - - -class TopicIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for Topic model.""" - - text = indexes.CharField(document=True, use_template=True) - - def prepare(self, obj): - """Set boost of Topic model for index. - - Args: - obj (Topic): Topic object. - - Returns: - Dictionary of data. - """ - data = super(TopicIndex, self).prepare(obj) - data["_boost"] = 2 - return data - - def get_model(self): - """Return the Topic model. - - Returns: - Topic object. - """ - return Topic - - -class UnitPlanIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for UnitPlan model.""" - - text = indexes.CharField(document=True, use_template=True) - topic = indexes.CharField(model_attr="topic") - - def prepare(self, obj): - """Set boost of UnitPlan model for index. - - Args: - obj (UnitPlan): UnitPlan object. - - Returns: - Dictionary of data. - """ - data = super(UnitPlanIndex, self).prepare(obj) - data["_boost"] = 1.5 - return data - - def get_model(self): - """Return the UnitPlan model. - - Returns: - UnitPlan object. - """ - return UnitPlan - - -class LessonIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for Lesson model.""" - - text = indexes.CharField(document=True, use_template=True) - topic = indexes.CharField(model_attr="topic") - unit_plan = indexes.CharField(model_attr="unit_plan") - curriculum_areas = indexes.MultiValueField() - - def prepare(self, obj): - """Set boost of Lesson model for index. - - Args: - obj (Lesson): Lesson object. - - Returns: - Dictionary of data. - """ - data = super(LessonIndex, self).prepare(obj) - data["_boost"] = 1.2 - return data - - def prepare_curriculum_areas(self, obj): - """Create data for curriculum_areas index value. - - Args: - obj (Lesson): Lesson object. - - Returns: - List of curriculum area primary keys as strings. - """ - curriculum_areas = list(CurriculumArea.objects.filter( - learning_outcomes__in=obj.learning_outcomes.all() - ).distinct().values_list("pk", flat=True)) - return curriculum_areas - - def get_model(self): - """Return the Lesson model. - - Returns: - Lesson object. - """ - return Lesson - - -class CurriculumIntegrationIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for CurriculumIntegration model.""" - - text = indexes.CharField(document=True, use_template=True) - topic = indexes.CharField(model_attr="topic") - curriculum_areas = indexes.MultiValueField() - - def prepare(self, obj): - """Set boost of CurriculumIntegration model for index. - - Args: - obj (CurriculumIntegration): CurriculumIntegration object. - - Returns: - Dictionary of data. - """ - data = super(CurriculumIntegrationIndex, self).prepare(obj) - data["_boost"] = 0.7 - return data - - def prepare_curriculum_areas(self, obj): - """Create data for curriculum_areas index value. - - Args: - obj (CurriculumIntegration): CurriculumIntegration object. - - Returns: - List of curriculum area primary keys as strings. - """ - curriculum_areas = list(obj.curriculum_areas.all().values_list("pk", flat=True)) - return curriculum_areas - - def get_model(self): - """Return the CurriculumIntegration model. - - Returns: - CurriculumIntegration object. - """ - return CurriculumIntegration - - -class ProgrammingChallengeIndex(indexes.SearchIndex, indexes.Indexable): - """Search index for ProgrammingChallenge model.""" - - text = indexes.CharField(document=True, use_template=True) - topic = indexes.CharField(model_attr="topic") - - def prepare(self, obj): - """Set boost of ProgrammingChallenge model for index. - - Args: - obj (ProgrammingChallenge): ProgrammingChallenge object. - - Returns: - Dictionary of data. - """ - data = super(ProgrammingChallengeIndex, self).prepare(obj) - data["_boost"] = 0.4 - return data - - def get_model(self): - """Return the ProgrammingChallenge model. - - Returns: - ProgrammingChallenge object. - """ - return ProgrammingChallenge diff --git a/csunplugged/topics/translation.py b/csunplugged/topics/translation.py index 644078d32..88b30e9ab 100644 --- a/csunplugged/topics/translation.py +++ b/csunplugged/topics/translation.py @@ -6,7 +6,6 @@ from modeltranslation.translator import translator, TranslationOptions from topics.models import ( Topic, - UnitPlan, ProgrammingChallenge, ProgrammingChallengeImplementation, Lesson, @@ -25,24 +24,20 @@ class TopicTranslationOptions(TranslationOptions): """Translation options for Topic model.""" - fields = ("name", "content", "other_resources") + fields = ( + "name", + "content", + "whats_it_all_about", + "whats_it_all_about_heading_tree", + "computational_thinking_links", + "other_resources", + ) fallback_undefined = { "content": None, "other_resources": None } -class UnitPlanTranslationOptions(TranslationOptions): - """Translation options for UnitPlan model.""" - - fields = ("name", "content", "computational_thinking_links", "heading_tree") - fallback_undefined = { - "content": None, - "computational_thinking_links": None, - "heading_tree": None - } - - class ProgrammingChallengeTranslationOptions(TranslationOptions): """Translation options for ProgrammingChallenge model.""" @@ -159,7 +154,6 @@ class ProgrammingChallengeLanguageTranslationOptions(TranslationOptions): translator.register(Topic, TopicTranslationOptions) -translator.register(UnitPlan, UnitPlanTranslationOptions) translator.register(ProgrammingChallenge, ProgrammingChallengeTranslationOptions) translator.register(ProgrammingChallengeImplementation, ProgrammingChallengeImplementationTranslationOptions) translator.register(Lesson, LessonTranslationOptions) diff --git a/csunplugged/topics/urls.py b/csunplugged/topics/urls.py index 553c99630..7ad42fa46 100644 --- a/csunplugged/topics/urls.py +++ b/csunplugged/topics/urls.py @@ -36,6 +36,12 @@ views.TopicView.as_view(), name="topic" ), + # eg: /topics/binary-numbers/whats-it-all-about/ + path( + '<slug:topic_slug>/whats-it-all-about/', + views.TopicWhatsItAllAboutView.as_view(), + name="topic_whats_it_all_about" + ), # eg: /topics/binary-numbers/integrations/binary-bracelets/ path( '<slug:topic_slug>/integrations/<slug:integration_slug>/', @@ -60,28 +66,40 @@ views.ProgrammingChallengeLanguageSolutionView.as_view(), name="programming_challenge_solution" ), + # Redirect # eg: /topics/binary-numbers/unit-plan/ path( - '<slug:topic_slug>/<slug:unit_plan_slug>/', - views.UnitPlanView.as_view(), - name="unit_plan" + '<slug:topic_slug>/unit-plan/', + views.redirect_to_topic, + ), + # eg: /topics/binary-numbers/lesson-1/ + path( + '<slug:topic_slug>/<slug:lesson_slug>/', + views.LessonView.as_view(), + name="lesson" + ), + # eg: /topics/binary-numbers/lesson-1/programming/ + path( + '<slug:topic_slug>/<slug:lesson_slug>/programming/', + views.ProgrammingChallengeList.as_view(), + name="programming_challenges_list" ), + # Redirect # eg: /topics/binary-numbers/unit-plan/description/ path( - '<slug:topic_slug>/<slug:unit_plan_slug>/description/', - views.UnitPlanDescriptionView.as_view(), - name="unit_plan_description" + '<slug:topic_slug>/<slug:deprecated_unit_plan_slug>/description/', + views.redirect_to_topic_whats_it_all_about, ), + # Redirect # eg: /topics/binary-numbers/unit-plan/lesson-1/ path( - '<slug:topic_slug>/<slug:unit_plan_slug>/<slug:lesson_slug>/', - views.LessonView.as_view(), - name="lesson" + '<slug:topic_slug>/<slug:deprecated_unit_plan_slug>/<slug:lesson_slug>/', + views.redirect_to_lesson, ), + # Redirect # eg: /topics/binary-numbers/unit-plan/lesson-1/programming/ path( - '<slug:topic_slug>/<slug:unit_plan_slug>/<slug:lesson_slug>/programming/', - views.ProgrammingChallengeList.as_view(), - name="programming_challenges_list" + '<slug:topic_slug>/<slug:deprecated_unit_plan_slug>/<slug:lesson_slug>/programming/', + views.redirect_to_lesson_programming, ), ] diff --git a/csunplugged/topics/views.py b/csunplugged/topics/views.py index fe263d52f..e5ab1ef38 100644 --- a/csunplugged/topics/views.py +++ b/csunplugged/topics/views.py @@ -1,7 +1,7 @@ """Views for the topics application.""" from django.db.models import Q -from django.shortcuts import get_object_or_404 +from django.shortcuts import get_object_or_404, redirect from django.views import generic from django.http import JsonResponse, Http404 from config.templatetags.render_html_field import render_html_with_static @@ -13,7 +13,6 @@ from .models import ( Topic, CurriculumIntegration, - UnitPlan, Lesson, LessonNumber, ProgrammingChallenge, @@ -37,7 +36,6 @@ def get_queryset(self): Queryset of Topic objects ordered by name. """ topics = Topic.objects.order_by("name").prefetch_related( - "unit_plans", "lessons", "curriculum_integrations", "programming_challenges", @@ -71,78 +69,18 @@ def get_context_data(self, **kwargs): """ # Call the base implementation first to get a context context = super(TopicView, self).get_context_data(**kwargs) - # Add in a QuerySet of all the connected unit plans - unit_plans = self.object.unit_plans.order_by("name") - context["unit_plans"] = add_lesson_ages_to_objects(unit_plans) + context["grouped_lessons"] = group_lessons_by_age(self.object.lessons.all()) # Add in a QuerySet of all the connected curriculum integrations context["curriculum_integrations"] = self.object.curriculum_integrations.order_by("number") return context -class UnitPlanView(generic.DetailView): - """View for a specific unit plan.""" - - model = UnitPlan - template_name = "topics/unit-plan.html" - context_object_name = "unit_plan" - - def get_object(self, **kwargs): - """Retrieve object for the unit plan view. - - Returns: - UnitPlan object, or raises 404 error if not found. - """ - return get_object_or_404( - self.model.objects.select_related(), - topic__slug=self.kwargs.get("topic_slug", None), - slug=self.kwargs.get("unit_plan_slug", None) - ) - - def get_context_data(self, **kwargs): - """Provide the context data for the unit plan view. - - Returns: - Dictionary of context data. - """ - # Call the base implementation first to get a context - context = super(UnitPlanView, self).get_context_data(**kwargs) - # Loading object under consistent context names for breadcrumbs - context["topic"] = self.object.topic - # Add all the connected lessons - context["grouped_lessons"] = group_lessons_by_age(self.object.lessons.all()) - return context - - -class UnitPlanDescriptionView(generic.DetailView): - """View for a specific unit plan.""" +class TopicWhatsItAllAboutView(generic.DetailView): + """View for a topic's whats it all about section.""" - model = UnitPlan - template_name = "topics/unit-plan-description.html" - context_object_name = "unit_plan" - - def get_object(self, **kwargs): - """Retrieve object for the unit plan view. - - Returns: - UnitPlan object, or raises 404 error if not found. - """ - return get_object_or_404( - self.model.objects.select_related(), - topic__slug=self.kwargs.get("topic_slug", None), - slug=self.kwargs.get("unit_plan_slug", None) - ) - - def get_context_data(self, **kwargs): - """Provide the context data for the unit plan view. - - Returns: - Dictionary of context data. - """ - # Call the base implementation first to get a context - context = super(UnitPlanDescriptionView, self).get_context_data(**kwargs) - # Loading object under consistent context names for breadcrumbs - context["topic"] = self.object.topic - return context + model = Topic + template_name = "topics/topic-whats-it-all-about.html" + slug_url_kwarg = "topic_slug" class LessonView(generic.DetailView): @@ -159,9 +97,8 @@ def get_object(self, **kwargs): Lesson object, or raises 404 error if not found. """ return get_object_or_404( - self.model.objects.select_related(), + self.model, topic__slug=self.kwargs.get("topic_slug", None), - unit_plan__slug=self.kwargs.get("unit_plan_slug", None), slug=self.kwargs.get("lesson_slug", None), ) @@ -185,7 +122,6 @@ def get_context_data(self, **kwargs): } ) context["topic"] = self.object.topic - context["unit_plan"] = self.object.unit_plan # Add all the connected programming challenges context["programming_challenges"] = self.object.programming_challenges.exists() # Add all the connected learning outcomes @@ -224,13 +160,11 @@ def get_context_data(self, **kwargs): lesson = get_object_or_404( Lesson.objects.select_related(), topic__slug=self.kwargs.get("topic_slug", None), - unit_plan__slug=self.kwargs.get("unit_plan_slug", None), slug=self.kwargs.get("lesson_slug", None), ) context["lesson"] = lesson context["programming_challenges"] = lesson.retrieve_related_programming_challenges().prefetch_related( 'learning_outcomes', 'learning_outcomes__curriculum_areas', 'implementations') - context["unit_plan"] = lesson.unit_plan context["topic"] = lesson.topic return context @@ -362,7 +296,6 @@ def get_context_data(self, **kwargs): context["integration_curriculum_areas"] = self.object.curriculum_areas.order_by("name") # Add in a QuerySet of all the prerequisite lessons context["prerequisite_lessons"] = self.object.prerequisite_lessons.select_related().order_by( - "unit_plan__name", "lessonnumber", ) return context @@ -431,3 +364,55 @@ def glossary_json(request, **kwargs): return JsonResponse(data) else: raise Http404("Term parameter not specified.") + + +# Redirects + +def redirect_to_topic(request, **kwargs): + """Redirect request to topic. + + Returns a 301 permanent redirect HTTP response. + """ + return redirect( + 'topics:topic', + topic_slug=kwargs.get('topic_slug'), + permanent=True, + ) + + +def redirect_to_topic_whats_it_all_about(request, **kwargs): + """Redirect request to What's it all about page for a topic. + + Returns a 301 permanent redirect HTTP response. + """ + return redirect( + 'topics:topic_whats_it_all_about', + topic_slug=kwargs.get('topic_slug'), + permanent=True, + ) + + +def redirect_to_lesson(request, **kwargs): + """Redirect request to lesson. + + Returns a 301 permanent redirect HTTP response. + """ + return redirect( + 'topics:lesson', + topic_slug=kwargs.get('topic_slug'), + lesson_slug=kwargs.get('lesson_slug'), + permanent=True, + ) + + +def redirect_to_lesson_programming(request, **kwargs): + """Redirect request to lesson programming. + + Returns a 301 permanent redirect HTTP response. + """ + return redirect( + 'topics:programming_challenges_list', + topic_slug=kwargs.get('topic_slug'), + lesson_slug=kwargs.get('lesson_slug'), + permanent=True, + ) diff --git a/csunplugged/utils/LoaderFactory.py b/csunplugged/utils/LoaderFactory.py index 5d6b241e6..d58b9695e 100644 --- a/csunplugged/utils/LoaderFactory.py +++ b/csunplugged/utils/LoaderFactory.py @@ -9,13 +9,13 @@ from topics.management.commands._ProgrammingChallengesLoader import ProgrammingChallengesLoader from topics.management.commands._ProgrammingChallengesStructureLoader import ProgrammingChallengesStructureLoader from topics.management.commands._TopicLoader import TopicLoader -from topics.management.commands._UnitPlanLoader import UnitPlanLoader from topics.management.commands._ClassroomResourcesLoader import ClassroomResourcesLoader from at_home.management.commands._ActivityLoader import ActivityLoader from at_home.management.commands._ChallengeLoader import ChallengeLoader from resources.management.commands._ResourcesLoader import ResourcesLoader from classic.management.commands._ClassicPagesLoader import ClassicPagesLoader from general.management.commands._GeneralPagesLoader import GeneralPagesLoader +from at_a_distance.management.commands._LessonLoader import AtADistanceLessonLoader class LoaderFactory: @@ -41,9 +41,9 @@ def create_learning_outcomes_loader(self, **kwargs): """Create learning outcomes loader.""" return LearningOutcomesLoader(**kwargs) - def create_lessons_loader(self, topic, unit_plan, **kwargs): + def create_lessons_loader(self, topic, **kwargs): """Create lessons loader.""" - return LessonsLoader(topic, unit_plan, **kwargs) + return LessonsLoader(topic, **kwargs) def create_classroom_resources_loader(self, **kwargs): """Create lessons loader.""" @@ -61,10 +61,6 @@ def create_topic_loader(self, **kwargs): """Create topic loader.""" return TopicLoader(self, **kwargs) - def create_unit_plan_loader(self, topic, **kwargs): - """Create unit plan loader.""" - return UnitPlanLoader(self, topic, **kwargs) - def create_activity_loader(self, **kwargs): """Create activity loader.""" return ActivityLoader(self, **kwargs) @@ -84,3 +80,7 @@ def create_classic_pages_loader(self, **kwargs): def create_general_pages_loader(self, **kwargs): """Create general pages loader.""" return GeneralPagesLoader(structure_dir="", **kwargs) + + def create_at_a_distance_lesson_loader(self, lesson_number, **kwargs): + """Create at a distance lesson loader.""" + return AtADistanceLessonLoader(lesson_number, **kwargs) diff --git a/dev b/dev index 03f93b776..6edf33cc3 100755 --- a/dev +++ b/dev @@ -47,7 +47,7 @@ defhelp help 'View all help.' # Start development environment cmd_start() { echo "Creating systems..." - docker-compose -f docker-compose.local.yml up -d + docker compose -f docker-compose.local.yml up -d # Alert user that system is ready echo -e "\n${SUCCESS}System is up!${NC}" echo -e "Run the command ${CODE}./dev update${NC} to load content." @@ -57,12 +57,12 @@ defhelp start 'Start development environment.' # Stop development environment cmd_end() { echo "Stopping systems..." - docker-compose -f docker-compose.local.yml down + docker compose -f docker-compose.local.yml down } defhelp end 'Stop development environment.' cmd_restart() { - docker-compose -f docker-compose.local.yml restart "$@" + docker compose -f docker-compose.local.yml restart "$@" } defhelp restart 'Restart container.' @@ -89,35 +89,35 @@ defhelp update 'Run Django migrate and updatedata commands and build static file # Run Django makemigrations command cmd_makemigrations() { echo "Creating database migrations..." - docker-compose -f docker-compose.local.yml exec django python ./manage.py makemigrations --no-input + docker compose -f docker-compose.local.yml exec django python ./manage.py makemigrations --no-input } defhelp makemigrations 'Run Django makemigrations command.' # Run Django migrate command cmd_migrate() { echo "Applying database migrations..." - docker-compose -f docker-compose.local.yml exec django python ./manage.py migrate + docker compose -f docker-compose.local.yml exec django python ./manage.py migrate } defhelp migrate 'Run Django migrate command.' # Reboot Django Docker container cmd_reboot_django() { echo "Rebooting Django container..." - docker-compose -f docker-compose.local.yml restart django + docker compose -f docker-compose.local.yml restart django } defhelp reboot_django 'Reboot Django container.' # Run Django updatedata command cmd_update_data() { echo "Loading content..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py updatedata "$@" + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py updatedata "$@" } defhelp updatedata 'Load content into database.' # Build static files cmd_static() { echo "Building static files..." - docker-compose -f docker-compose.local.yml run --rm node npm run generate-assets + docker compose -f docker-compose.local.yml run --rm node npm run generate-assets } defhelp static 'Build static files.' @@ -125,7 +125,7 @@ defhelp static 'Build static files.' cmd_collect_static() { echo echo "Collecting static files..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python manage.py collectstatic --no-input --clear + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python manage.py collectstatic --no-input --clear } defhelp collect_static "Collecting static files." @@ -140,61 +140,69 @@ cmd_update_static() { defhelp update_static 'Update static files.' # Run Django command rebuild_index -cmd_rebuild_index() { +cmd_rebuild_search_indexes() { echo "Rebuilding search index..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py rebuild_index --noinput + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py rebuild_search_indexes } -defhelp rebuild_index "Run Django rebuild_index command." +defhelp rebuild_index "Run Django rebuild_search_indexes command." # Run Django makeresourcethumbnails command cmd_make_resource_thumbnails() { echo "Creating thumbnails for resource PDFs..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py makeresourcethumbnails + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py makeresourcethumbnails } defhelp makeresourcethumbnails 'Run Django makeresourcethumbnails command.' # Run Django makeresources command cmd_make_resources() { echo "Creating static resource PDFs..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py makeresources + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py makeresources "$@" } defhelp makeresources 'Run Django makeresources command.' +# Run Django create_lesson_pdfs command +cmd_create_lesson_pdfs() { + echo "Creating At a Distance lesson PDFs..." + docker compose -f docker-compose.local.yml run --rm decktape "$@" + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py create_lesson_speaker_notes_pdfs "$@" +} +defhelp create_lesson_pdfs 'Run Django create_lesson_pdfs command.' + # Run Django makemessages command cmd_makemessages() { echo "Running Django makemessages command..." - docker-compose -f docker-compose.local.yml exec django python ./manage.py makemessages -l en + docker compose -f docker-compose.local.yml exec django python ./manage.py makemessages -l en } defhelp makemessages 'Run Django makemessages command.' # Build Docker images cmd_build() { echo "Building Docker images..." - docker-compose -f docker-compose.local.yml build + docker compose -f docker-compose.local.yml build "$@" } defhelp build 'Build or rebuild Docker images.' # Run exec cmd_exec() { - docker-compose -f docker-compose.local.yml exec "$@" + docker compose -f docker-compose.local.yml exec "$@" } defhelp exec "Execute command in given container." # View Docker logs cmd_logs() { echo "Building Docker images..." - docker-compose -f docker-compose.local.yml logs --timestamps "$@" + docker compose -f docker-compose.local.yml logs --timestamps "$@" } defhelp logs 'View logs.' # Run style checks cmd_style() { echo "Running PEP8 style checker..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django flake8 + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django flake8 pep8_status=$? echo echo "Running Python docstring checker..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django pydocstyle --count --explain + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django pydocstyle --count --explain pydocstyle_status=$? ! (( pep8_status || pydocstyle_status )) } @@ -203,34 +211,34 @@ defhelp style 'Run style checks.' # Run test suite cmd_test_suite() { echo "Running test suite..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --nomigrations + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --nomigrations } defhelp test_suite 'Run test suite with code coverage.' # Run specific test suite cmd_test_specific() { echo "Running specific test suite..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py test --settings=config.settings.testing "${1}" -v 3 --nomigrations + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py test --settings=config.settings.testing "${1}" -v 3 --nomigrations } defhelp test_specific 'Run specific test suite. Pass in parameter of Python test module.' # Display test coverage table cmd_test_coverage() { echo "Displaying test suite coverage..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage xml -i - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage report -m --skip-covered + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage xml -i + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage report -m --skip-covered } defhelp test_coverage 'Display code coverage report.' # Run test suite backwards for CI testing cmd_test_backwards() { echo "Running test suite backwards..." - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py test --settings=config.settings.testing --pattern "test_*.py" --reverse -v 0 --nomigrations + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py test --settings=config.settings.testing --pattern "test_*.py" --reverse -v 0 --nomigrations } defhelp test_backwards 'Run test suite backwards.' cmd_createsuperuser() { - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py createsuperuser + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django python ./manage.py createsuperuser } defhelp createsuperuser "Create superuser in Django system." @@ -238,10 +246,10 @@ defhelp createsuperuser "Create superuser in Django system." # For use in GitHub Actions environment cmd_ci() { - docker network create uccser-development-proxy + docker network create uccser-development-stack cmd_start - docker-compose -f docker-compose.local.yml run --rm --user="root" node npm run generate-assets - docker-compose -f docker-compose.local.yml run --rm --user="root" django python manage.py collectstatic --no-input + docker compose -f docker-compose.local.yml run --rm --user="root" node npm run generate-assets + docker compose -f docker-compose.local.yml run --rm --user="root" django python manage.py collectstatic --no-input local cmd="$1" shift if [ -z "$cmd" ]; then @@ -260,15 +268,15 @@ cmd_ci() { } cmd_test_general() { - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --exclude-tag=resource --exclude-tag=management --nomigrations + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --exclude-tag=resource --exclude-tag=management --nomigrations } cmd_test_resources() { - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --tag=resource --nomigrations + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --tag=resource --nomigrations } cmd_test_management() { - docker-compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --tag=management --nomigrations + docker compose -f docker-compose.local.yml run --rm --label traefik.enable=false django coverage run --rcfile=./.coveragerc ./manage.py test --settings=config.settings.testing --pattern "test_*.py" -v 3 --tag=management --nomigrations } # --- Core script logic ------------------------------------------------------- diff --git a/docker-compose.local.yml b/docker-compose.local.yml index a2e2d4027..ce9acafd6 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -13,12 +13,12 @@ services: - ./infrastructure/local/postgres/.envs command: /start networks: - - uccser-development-proxy + - uccser-development-stack - backend labels: # General labels - "traefik.enable=true" - - "traefik.docker.network=uccser-development-proxy" + - "traefik.docker.network=uccser-development-stack" - "traefik.http.services.cs-unplugged-django.loadbalancer.server.port=8000" # HTTPS - "traefik.http.routers.cs-unplugged-django.entryPoints=web-secure" @@ -41,7 +41,7 @@ services: command: npm run dev postgres: - image: postgres:13.3 + image: postgres:13.6 healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] start_period: 10s @@ -56,14 +56,6 @@ services: - local-postgres-data:/var/lib/postgresql/data:Z - local-postgres-data-backups:/backups:z - - elasticsearch: - image: elasticsearch:5 - networks: - - backend - volumes: - - local-search-index:/usr/share/elasticsearch/data:Z - jobe: image: trampgeek/jobeinabox:latest networks: @@ -74,7 +66,7 @@ services: volumes: - ./docs:/docs:z networks: - - uccser-development-proxy + - uccser-development-stack labels: # General labels - "traefik.enable=true" @@ -85,14 +77,24 @@ services: - "traefik.http.routers.cs-unplugged-docs.rule=Host(`docs.cs-unplugged.localhost`)" - "traefik.http.routers.cs-unplugged-docs.tls=true" + decktape: + build: + context: ./infrastructure/local/decktape/ + dockerfile: Dockerfile + profiles: + - slides-pdf-generation + networks: + - backend + volumes: + - ./csunplugged/build/:/slides + - ./infrastructure/local/decktape/create-slide-files.js:/decktape/create-slide-files.js:z networks: backend: driver: bridge - uccser-development-proxy: + uccser-development-stack: external: true volumes: local-postgres-data: {} local-postgres-data-backups: {} - local-search-index: {} diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 5559e12f2..712b8053b 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -78,7 +78,7 @@ services: postgres: <<: *default-opts - image: postgres:13.3 + image: postgres:13.6 # TODO: Write test script that reads secret files # to get correct username # healthcheck: @@ -109,22 +109,6 @@ services: - postgres-data:/var/lib/postgresql/data:Z - postgres-data-backups:/backups:z - elasticsearch: - <<: *default-opts - image: elasticsearch:5 - deploy: - replicas: 1 - placement: - constraints: - - node.role==worker - - node.labels.role==data - restart_policy: - condition: on-failure - networks: - - backend - volumes: - - search-index:/usr/share/elasticsearch/data:Z - jobe: <<: *default-opts image: trampgeek/jobeinabox:latest diff --git a/docs/author/topics.rst b/docs/author/topics.rst index d335b9dee..b14b61c7d 100644 --- a/docs/author/topics.rst +++ b/docs/author/topics.rst @@ -44,7 +44,7 @@ This is a broad overview of the topics application, and the following sections p Viewing All Topics Content ------------------------------------------------------------------------------ -When developing locally, once you have run ``./csu start`` and ``./csu update`` (see +When developing locally, once you have run ``./dev start`` and ``./dev update`` (see :doc:`../getting_started/helper_commands`) you can go to the url below to see your local version of the website: @@ -52,14 +52,6 @@ local version of the website: cs-unplugged.localhost/ -You can also go to the url below to get a quick overview of what content is loaded: - -.. code-block:: none - - cs-unplugged.localhost/__dev__/ - -For more information about what this page displays, see :doc:`../developer/dev`. - .. _topics-directory-structure: Topics Content Directory @@ -130,12 +122,12 @@ To set up a new topic, which you can then add content to, you will first need to - Create a set of required directories and config files within the ``topics/structure/`` directory. - Add the minimum required configuration settings to these files. -Before you can run ``./csu update`` and view the topic on your local machine, these Markdown +Before you can run ``./dev update`` and view the topic on your local machine, these Markdown and YAML files must contain some required headings and content. We recommend adding some placeholder content to these files and checking that you can view them locally, before moving on to adding content. -After these steps have been completed you can run ``./csu update``, and view +After these steps have been completed you can run ``./dev update``, and view the topic at: .. code-block:: none @@ -178,7 +170,7 @@ Add the required fields, and their keys, to these YAML files: - The **lesson** config file. The required fields are listed in the section :ref:`lesson-file` section. -Now you can run the ./csu update command. +Now you can run the ``./dev update`` command. Once this has finished you will be able to view the topic at ``cs-unplugged.localhost/en/topics/`` The description of the topic is written in the **topic** Markdown file. @@ -1259,13 +1251,9 @@ Curriculum Integrations Configuration File - **Optional Fields:** - - ``prerequisite-lessons:`` A list of unit plan keys containing lessons that are + - ``prerequisite-lessons:`` A list of lesson slugs that are expected to be completed before attempting this curriculum integration. - - **Required Fields:** - - - ``<unit-plan-key>:`` A key corresponding to a unit plan. - - **Required Fields:** - ``<lesson-key>`` A key corresponding to a lesson in the given unit diff --git a/docs/changelog.rst b/docs/changelog.rst index 895663db7..d1aacf862 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -23,10 +23,85 @@ All notable changes to this project will be documented in this file. fit the Semantic Versioning model. However these version numbers can still provide a good indication of the changes in each version. +7.0.0 +============================================================================== + +**Release date:** 11 August 2022 + +**Summary of changes:** + +This release adds the 'At a distance' area of the website. + +**Changelog:** + +- Add 'At a distance' area of the website for teaching CS Unplugged remotely: + - Includes three lessons: + - Stroop Effect + - Algorithms + - Binary Representation + - Six more planned to be released before the end of 2022. + - Each lesson includes presentation slides with speaker notes. +- Remove unit plans from topics, the content of these unit plans have been moved to the topic. + - Unit plans were initially as we planned for storing multiple unit +- Update 'Binary Windows' printable to be only one page, and have 5 and 6 bit options. +- Replace blurry images of 'At home' challenges within 'Unlocking the secret in product codes'. +- Update Chinese (Simplified) and French translations. +- Add tiled background for 'Plugging it in' homepage. +- Remove elasticsearch as search dependency and use Full Text Search (FTS) within Postgres. +- Show full Git SHA on development website. +- Suppress gunicorn access and error logs during local development. +- Remove unused 'dev' application (local development sitemap). +- Remove outdated xx_LR/yy_RL language files used for unsupported in-context translation feature provided by Crowdin. +- Update Gulp SCSS task to only update files changed since last run. +- Update test coverage to codecov. +- Update documentation to use 'dev' script, instead of deprecated 'csu' script. +- Auto-merge minor dependency updates (this includes minor and patch updates). +- Allow all dependency update pull requests to be created (remove open limit on Dependabot). +- Ignore updates to non-LTS Django packages. +- Add OCI labels to Django Docker image. +- Update license year. +- Use modified Sniglet font with macron support for Te Reo Māori. +- Dependency updates: + - Add decktape 3.4.1. + - Add gulp-dependents 1.2.5. + - Add reveal.js 4.3.1. + - Update actions/checkout from v2 to v3. + - Update actions/upload-artifact from v2 to v3. + - Update ansi-colors from 4.1.1 to 4.1.3. + - Update autoprefixer from 10.4.2 to 10.4.8. + - Update bootstrap from 4.6.0 to 4.6.1. + - Update browser-sync from 2.27.7 to 2.27.10. + - Update codemirror from 5.65.1 to 5.65.6. + - Update coverage 6.2 to 6.4.4. + - Update crowdin/github-action from 1.4.6 to 1.4.12. + - Update cssnano from 5.0.15 to 5.1.13. + - Update django from 3.2.11 to 3.2.15. + - Update django-cors-headers from 3.11.0 to 3.13.0. + - Update django-debug-toolbar from 3.2.4 to 3.6.0. + - Update django-environ from 0.8.1 to 0.9.0. + - Update django-extensions from 3.1.5 to 3.2.0. + - Update django-modeltranslation from 0.17.3 to 0.18.4. + - Update docker/metadata-action from v3 to v4. + - Update download-artifact from v2 to v3. + - Update login-action from v1.12.0 to v2.0.0. + - Update lxml from 4.7.1 to 4.9.1. + - Update Pillow from 9.0.0 to 9.2.0. + - Update postcss from 8.4.5 to 8.4.16. + - Update postgres from 13.3 to 13.6. + - Update PyPDF2 from 1.26.0 to 2.10.2. + - Update requests from 2.27.1 to 2.28.1 + - Update sass from 1.49.0 to 1.54.4. + - Update tqdm from 4.62.3 to 4.64.0. + - Update whitenoise from 5.3.0 to 6.2.0. + - Update yargs from 17.3.1 to 17.5.1. + - Remove django-haystack[elasticsearch] 3.1.1. + - Remove django-widget-tweaks 1.4.12. + - Remove elasticsearch 5.5.3. + 6.5.0 ============================================================================== -**Release date:** 19th December 2022 +**Release date:** 19th December 2021 **Changelog:** diff --git a/docs/developer/dev.rst b/docs/developer/dev.rst deleted file mode 100644 index fd6a34ea5..000000000 --- a/docs/developer/dev.rst +++ /dev/null @@ -1,54 +0,0 @@ -Dev Application -############################################################################## - -This application: - -1. Provides a quick reference for viewing what content has been added to the database. -2. Allows authors to check Markdown content has rendered as expected. -3. Is only to be used in a development environment. - -This application is available only when ``DEBUG`` mode is enabled (and therefore is not -visible in production). ``DEBUG`` mode is enabled by default when developing locally. - -This application does not necessarily show the same connection/layout of content as in -the actual site itself. This is because some of the links in this app link to the actual -site, but many link to a copy of the template from the topics app (and are therefore are -likely to be out of date at any given point in time). - - -What does this app contain? -============================================================================== - -The dev application currently contains the following: - -- Topics - a list of available topics, and links to the corresponding template in the - topics applications. The children listed under each topic are: - - - Unit Plans and Lessons. - All of these link to the corresponding page in the Topics - application. The purpose of this list is to give an overview of which lessons have - been added to each unit plan, and which unit plans have been added to each topic. - It is possible for someone to have created a markdown file for a lesson (or unit - plan, or topic) but it not be shown in this list, this is because only Markdown - files listed in configuration (``yaml``) files are loaded into the database. - - - Curriculum Integrations - a list of curriculum integration activities. This **does - not** link to the template from the topic application. This is because a curriculum - integration only has to be linked to a topic (at the very least) in order for it to - be loaded into the database, i.e. it is possible for a curriculum integration to be - loaded into the database without it being assigned to a lesson. - - - Programming Challenges - a list of programming challenges. This **does not** link to - the template from the topic application. This is because a programming challenge - only has to be linked to a topic (at the very least) in order for it to be loaded - into the database, i.e. it is possible for a programming challenge to be loaded - into the database without it being assigned to a lesson. - -- Curriculum Areas - a list of curriculum areas and their subdomains. - -- Learning Outcomes - a list of learning outcomes. - -- Programming Challenge Languages - a list of programming languages that programming - challenge solutions can be given in. - -- Programming Challenge Difficulties - a list of difficulty levels and their corresponding - title. diff --git a/docs/developer/index.rst b/docs/developer/index.rst index a60fc9f75..10b4d1206 100644 --- a/docs/developer/index.rst +++ b/docs/developer/index.rst @@ -15,7 +15,6 @@ The following pages are for those wanting to develop the CS Unplugged system. classic media resources - dev search deployment test_suite diff --git a/docs/developer/search.rst b/docs/developer/search.rst index 807fee99d..25e3864f7 100644 --- a/docs/developer/search.rst +++ b/docs/developer/search.rst @@ -32,7 +32,7 @@ However Django is not setup to handle multiple URL routes all based off the patt For example, Django would not check a URL matches a unit plan slug after failing to find a topic: - ``r"^/topics/(?P<topic_slug>[-\w]+)/$"`` -- ``r"^/topics/(?P<unit_plan_slug>[-\w]+)/$"`` +- ``r"^/topics/(?P<lesson_slug>[-\w]+)/$"`` Therefore the current setup of URLs and views for the ``general`` and ``classic`` applications is left untouched, and new configuration files are added for data to be added as models. The configuration files do duplicate some data, but only for pages that are searchable. diff --git a/docs/developer/test_suite.rst b/docs/developer/test_suite.rst index 0f64aa253..8989d22fe 100644 --- a/docs/developer/test_suite.rst +++ b/docs/developer/test_suite.rst @@ -8,7 +8,7 @@ Test Suite Running the Test Suite ============================================================================== -``./csu test_suite`` will run the entire test suite. For running a specific tests, viewing code coverage, and more testing commands, see :doc:`../getting_started/helper_commands`. +``./dev test_suite`` will run the entire test suite. For running a specific tests, viewing code coverage, and more testing commands, see :doc:`../getting_started/helper_commands`. Structure diff --git a/docs/getting_started/helper_commands.rst b/docs/getting_started/helper_commands.rst index 0174f8ea6..dcdf1a212 100644 --- a/docs/getting_started/helper_commands.rst +++ b/docs/getting_started/helper_commands.rst @@ -7,12 +7,12 @@ Helper Commands for Developing The CS Unplugged project uses many systems (Django, Docker, Gulp, etc) to run, so we have written a script for running groups of commands for running the system while developing. -The script is called ``csu`` and can be found in the ``cs-unplugged`` folder of the repository. +The script is called ``dev`` and can be found in the ``cs-unplugged`` folder of the repository. To run this script, open a terminal window in the directory and enter the following command (you don't need to enter the ``$`` character, this shows the start of your terminal prompt): .. code-block:: bash - $ ./csu [COMMAND] + $ ./dev [COMMAND] Where ``[COMMAND]`` is a word from the list below: @@ -62,7 +62,7 @@ All users of the project (content and technical developers) should become famili ``build`` ============================================================================== -Running ``./csu build`` will build or rebuild the Docker images that are required for the CS Unplugged system. +Running ``./dev build`` will build or rebuild the Docker images that are required for the CS Unplugged system. ----------------------------------------------------------------------------- @@ -71,7 +71,7 @@ Running ``./csu build`` will build or rebuild the Docker images that are require ``clean`` ============================================================================== -Running ``./csu clean`` deletes 'dangling' Docker images left over from builds, which will free up hard drive space. +Running ``./dev clean`` deletes 'dangling' Docker images left over from builds, which will free up hard drive space. ----------------------------------------------------------------------------- @@ -80,7 +80,7 @@ Running ``./csu clean`` deletes 'dangling' Docker images left over from builds, ``collect_static`` ============================================================================== -Running ``./csu collect_static`` runs the Django ``collectstatic`` command to collect static files. +Running ``./dev collect_static`` runs the Django ``collectstatic`` command to collect static files. It will copy files under the ``static/`` folder into the ``staticfiles/`` folder. ----------------------------------------------------------------------------- @@ -90,7 +90,7 @@ It will copy files under the ``static/`` folder into the ``staticfiles/`` folder ``compilemessages`` ============================================================================== -Running ``./csu compilemessages`` runs the Django ``compilemessages`` command. +Running ``./dev compilemessages`` runs the Django ``compilemessages`` command. This runs over ``.po`` files and creates ``.mo`` files which are optimised for use by ``gettext``. You will need to run this command after each time you create your message file or each time you make changes to it. @@ -101,7 +101,7 @@ You will need to run this command after each time you create your message file o ``docs`` ============================================================================== -Running ``./csu docs`` will remove any existing documentation and build a fresh copy of the documentation for CS Unplugged. +Running ``./dev docs`` will remove any existing documentation and build a fresh copy of the documentation for CS Unplugged. ----------------------------------------------------------------------------- @@ -110,7 +110,7 @@ Running ``./csu docs`` will remove any existing documentation and build a fresh ``end`` ============================================================================== -Running ``./csu end`` will stop any containers which are currently running, this usually takes 10 to 20 seconds. +Running ``./dev end`` will stop any containers which are currently running, this usually takes 10 to 20 seconds. ----------------------------------------------------------------------------- @@ -119,7 +119,7 @@ Running ``./csu end`` will stop any containers which are currently running, this ``flush`` ============================================================================== -Running ``./csu flush`` runs the Django ``flush`` command to flush the database. +Running ``./dev flush`` runs the Django ``flush`` command to flush the database. ----------------------------------------------------------------------------- @@ -128,7 +128,7 @@ Running ``./csu flush`` runs the Django ``flush`` command to flush the database. ``help`` ============================================================================== -Running ``./csu help`` displays brief help text for the script. +Running ``./dev help`` displays brief help text for the script. More details for each command can be found on this page. ----------------------------------------------------------------------------- @@ -138,10 +138,10 @@ More details for each command can be found on this page. ``logs`` ============================================================================== -Running ``./csu logs`` will display the logs for the running systems. +Running ``./dev logs`` will display the logs for the running systems. The output is for all logs until the time the command was run, therefore successive calls may display new logs. -To follow logs as they output, enter ``docker-compose logs --follow``. +To follow logs as they output, enter ``docker compose logs --follow``. ----------------------------------------------------------------------------- @@ -150,7 +150,7 @@ To follow logs as they output, enter ``docker-compose logs --follow``. ``makemessages`` ============================================================================== -Running ``./csu makemessages`` runs the Djanog ``makemessages`` command. +Running ``./dev makemessages`` runs the Djanog ``makemessages`` command. This will create message files where each message file represents a single language. Message files contain all available translation strings and how they should be represented in the given language. @@ -161,7 +161,7 @@ Message files contain all available translation strings and how they should be r ``makemigrations`` ============================================================================== -Running ``./csu makemigrations`` runs the Django ``makemigrations`` command to create migration files. +Running ``./dev makemigrations`` runs the Django ``makemigrations`` command to create migration files. ----------------------------------------------------------------------------- @@ -170,7 +170,7 @@ Running ``./csu makemigrations`` runs the Django ``makemigrations`` command to c ``makeresources`` ============================================================================== -Running ``./csu makeresources`` runs the custom Django ``makeresources`` command to create static resource PDF files. +Running ``./dev makeresources`` runs the custom Django ``makeresources`` command to create static resource PDF files. ----------------------------------------------------------------------------- @@ -179,7 +179,7 @@ Running ``./csu makeresources`` runs the custom Django ``makeresources`` command ``makeresourcethumbnails`` ============================================================================== -Running ``./csu makeresourcethumbnails`` generates the thumbnails for each resource PDF. +Running ``./dev makeresourcethumbnails`` generates the thumbnails for each resource PDF. ----------------------------------------------------------------------------- @@ -188,7 +188,7 @@ Running ``./csu makeresourcethumbnails`` generates the thumbnails for each resou ``migrate`` ============================================================================== -Running ``./csu migrate`` runs the Django ``migrate`` command to apply migration files. +Running ``./dev migrate`` runs the Django ``migrate`` command to apply migration files. ----------------------------------------------------------------------------- @@ -197,7 +197,7 @@ Running ``./csu migrate`` runs the Django ``migrate`` command to apply migration ``reboot_django`` ============================================================================== -Running ``./csu reboot_django`` will rebuild the Django Docker container. +Running ``./dev reboot_django`` will rebuild the Django Docker container. ----------------------------------------------------------------------------- @@ -206,7 +206,7 @@ Running ``./csu reboot_django`` will rebuild the Django Docker container. ``rebuild_index`` ============================================================================== -Running ``./csu rebuild_index`` runs the Haystack ``rebuild_index`` Django command. +Running ``./dev rebuild_index`` will rebuild the search indexes. ----------------------------------------------------------------------------- @@ -215,10 +215,10 @@ Running ``./csu rebuild_index`` runs the Haystack ``rebuild_index`` Django comma ``restart`` ============================================================================== -Running ``./csu restart`` is a shortcut for running: +Running ``./dev restart`` is a shortcut for running: -- ``./csu end`` -- ``./csu start`` +- ``./dev end`` +- ``./dev start`` More details for each command can be found on this page. @@ -229,9 +229,9 @@ More details for each command can be found on this page. ``shell`` ============================================================================== -Running ``./csu shell`` opens a bash terminal within the Django container (this requires the CS Unplugged system to be running). +Running ``./dev shell`` opens a bash terminal within the Django container (this requires the CS Unplugged system to be running). -This is the equivalent to entering ``docker-compose run django bash``. +This is the equivalent to entering ``docker compose run django bash``. ----------------------------------------------------------------------------- @@ -240,7 +240,7 @@ This is the equivalent to entering ``docker-compose run django bash``. ``start`` ============================================================================== -Running ``./csu start`` starts the development environment. +Running ``./dev start`` starts the development environment. It performs the following tasks: - Build system Docker images if required (see below) @@ -248,12 +248,12 @@ It performs the following tasks: - Start the Nginx server to display the website and static files - Start the database server -When you run this command for the first time on a computer it will also run ``./csu build`` to build the system Docker images. +When you run this command for the first time on a computer it will also run ``./dev build`` to build the system Docker images. This can take some time, roughly 15 to 30 minutes, depending on your computer and internet speed. -Images are only required to be built once, unless the image specifications change (you can rebuild the images with ``./csu build``). +Images are only required to be built once, unless the image specifications change (you can rebuild the images with ``./dev build``). Once the images are built, the script will run these images in containers. -Once the development environment is operational, run the ``./csu update`` command to load the CS Unplugged content. +Once the development environment is operational, run the ``./dev update`` command to load the CS Unplugged content. ----------------------------------------------------------------------------- @@ -262,7 +262,7 @@ Once the development environment is operational, run the ``./csu update`` comman ``static`` ============================================================================== -Running ``./csu static`` runs the commands for generating the static files for the website. +Running ``./dev static`` runs the commands for generating the static files for the website. If changes are made to the static files (for example, a new image is added) when the system is running, this command needs to be entered to view the new files on the website. @@ -273,7 +273,7 @@ If changes are made to the static files (for example, a new image is added) when ``static_prod`` ============================================================================== -Running ``./csu static_prod`` runs the commands for generating production static files for the website. +Running ``./dev static_prod`` runs the commands for generating production static files for the website. This produces compressed SASS files without sourcemaps. ----------------------------------------------------------------------------- @@ -283,7 +283,7 @@ This produces compressed SASS files without sourcemaps. ``static_scratch`` ============================================================================== -Running ``./csu static_scratch`` runs the commands for generating scratch images for the website. +Running ``./dev static_scratch`` runs the commands for generating scratch images for the website. ----------------------------------------------------------------------------- @@ -292,7 +292,7 @@ Running ``./csu static_scratch`` runs the commands for generating scratch images ``style`` ============================================================================== -Running ``./csu style`` will run the ``flake8`` and ``pydocstyle`` commands to check the style of the project. +Running ``./dev style`` will run the ``flake8`` and ``pydocstyle`` commands to check the style of the project. If the output is ``0`` for a check, then there are zero errors. ----------------------------------------------------------------------------- @@ -302,7 +302,7 @@ If the output is ``0`` for a check, then there are zero errors. ``test_backwards`` ============================================================================== -Running ``./csu test_backwards`` will run the test suite in reverse. +Running ``./dev test_backwards`` will run the test suite in reverse. This is useful to check if any tests are influencing the result of each other. If this command if run on Travis CI, it will only run for a pull request. @@ -313,7 +313,7 @@ If this command if run on Travis CI, it will only run for a pull request. ``test_coverage`` ============================================================================== -Running ``./csu test_coverage`` will display a table detailing test code coverage, from the report generated by ``./csu test``. +Running ``./dev test_coverage`` will display a table detailing test code coverage, from the report generated by ``./dev test``. ----------------------------------------------------------------------------- @@ -322,8 +322,8 @@ Running ``./csu test_coverage`` will display a table detailing test code coverag ``test_specific`` ============================================================================== -Running ``./csu test_specific [MODULE_PATH]`` will run a specific test module. -For example, running ``./csu test_specific tests.resources.views.test_index_view`` will only run the tests for checking the index view of the resources application. +Running ``./dev test_specific [MODULE_PATH]`` will run a specific test module. +For example, running ``./dev test_specific tests.resources.views.test_index_view`` will only run the tests for checking the index view of the resources application. ----------------------------------------------------------------------------- @@ -332,8 +332,8 @@ For example, running ``./csu test_specific tests.resources.views.test_index_view ``test_suite`` ============================================================================== -Running ``./csu test_suite`` will run the test suite, and create a report detailing test code coverage. -The code coverage report can be displayed by running ``./csu test_coverage``. +Running ``./dev test_suite`` will run the test suite, and create a report detailing test code coverage. +The code coverage report can be displayed by running ``./dev test_coverage``. ----------------------------------------------------------------------------- @@ -342,7 +342,7 @@ The code coverage report can be displayed by running ``./csu test_coverage``. ``update`` ============================================================================== -Running ``./csu update`` performs the following tasks: +Running ``./dev update`` performs the following tasks: - Update the database with the required structure (known as the schema) - Load the CS Unplugged content into the database @@ -351,7 +351,7 @@ Running ``./csu update`` performs the following tasks: Once the script has performed all these tasks, the script will let you know the website is ready. Open your preferred web browser to the URL ``cs-unplugged.localhost`` to view the website. -In more detail, ``./csu update`` runs the Django ``makemigratations`` and ``migrate`` commands for updating the database schema, and then runs the custom ``updatedata`` command to load the topics content into the database. +In more detail, ``./dev update`` runs the Django ``makemigratations`` and ``migrate`` commands for updating the database schema, and then runs the custom ``updatedata`` command to load the topics content into the database. It also runs the ``static`` command to generate static files. If changes are made to the topics content when the system is running, this command needs to be run to view the new changes on the website. @@ -363,7 +363,7 @@ If changes are made to the topics content when the system is running, this comma ``updatedata`` ============================================================================== -Running ``./csu updatedata`` runs the custom ``updatedata`` command to load the topics content into the database. +Running ``./dev updatedata`` runs the custom ``updatedata`` command to load the topics content into the database. ----------------------------------------------------------------------------- @@ -372,7 +372,7 @@ Running ``./csu updatedata`` runs the custom ``updatedata`` command to load the ``update_lite`` ============================================================================== -Running ``./csu update_lite`` only loads key content. +Running ``./dev update_lite`` only loads key content. Useful for development. ----------------------------------------------------------------------------- @@ -382,7 +382,7 @@ Useful for development. ``wipe`` ============================================================================== -Running ``./csu wipe`` delete all Docker containers and images on your computer. +Running ``./dev wipe`` delete all Docker containers and images on your computer. Once this command has be run, a full download and rebuild of images is required to run the system (can be triggered by the ``build`` or ``start`` commands). ----------------------------------------------------------------------------- diff --git a/docs/getting_started/installation.rst b/docs/getting_started/installation.rst index ef8b3bc49..582ebc5a7 100644 --- a/docs/getting_started/installation.rst +++ b/docs/getting_started/installation.rst @@ -108,14 +108,14 @@ character, this shows the start of your terminal prompt). .. code-block:: bash $ docker version - $ docker-compose version + $ docke compose version $ docker run hello-world .. note:: Depending on your operating system, if the above commands don't work you may need to set Docker to be able to run without ``sudo``. - You will need to do this in order to use the ``csu`` helper script. + You will need to do this in order to use the ``dev`` helper script. Step 7: Install Text Editor/IDE (optional) ================================================= @@ -222,15 +222,15 @@ Step 9: Check Project Setup Works To check the project works, open a terminal in the project root directory, which is the ``cs-unplugged/`` directory (should contain a file called -``csu``). +``dev``). Type the following commands into the terminal (we will cover these commands in more detail on the next page): .. code-block:: bash - $ ./csu start - $ ./csu update + $ ./dev start + $ ./dev update If this is the first time you're running this script, it will need to build system images. diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst index f541f24cd..246464b3a 100644 --- a/docs/troubleshooting.rst +++ b/docs/troubleshooting.rst @@ -1,27 +1,27 @@ Troubleshooting ############################################################################## -``csu`` helper script +``dev`` helper script ============================================================================== -I get a ``No such file or directory`` error when running the ``csu`` script +I get a ``No such file or directory`` error when running the ``dev`` script ------------------------------------------------------------------------------ Check your terminal working directory is within the ``cs-unplugged`` directory, the root directory of the project. -Running the ``ls`` command in this directory should list the ``csu`` file. +Running the ``ls`` command in this directory should list the ``dev`` file. -I have an error when running ``./csu start`` +I have an error when running ``./dev start`` ------------------------------------------------------------------------------ If you are having issues running the ``start`` command, try rebuilding the -system images with ``./csu build``. +system images with ``./dev build``. Changes may be have been made to the system images since you initally created them. If this still doesn't solve your problem, you could also try deleting any -existing images with ``./csu wipe``, and then build and start the system with -``./csu start``. +existing images with ``./dev wipe``, and then build and start the system with +``./dev start``. If issue still persists, log a bug on our `issue tracker`_. @@ -39,7 +39,7 @@ located within the ``static`` directory. If the image is located within the ``static/`` directory, check the filepath is correct. -When running ``./csu update``, the script will report an error if an image +When running ``./dev update``, the script will report an error if an image cannot be found. **Scratch block images** @@ -50,7 +50,7 @@ find & replace is your friend here). If you can find the file with the same block syntax and there isn't a image in the ``staticfiles/`` directory with the same filename -(``.svg`` instead of ``.txt``), try running ``./csu update``. +(``.svg`` instead of ``.txt``), try running ``./dev update``. If this doesn't fix the problem, the problem is in our scripts so log a bug on our `issue tracker`_. @@ -64,14 +64,14 @@ Changed CSS/SCSS styles are not updated when I view the website Firstly check the compiled CSS is located in the ``staticfiles/`` directory, and that the changes have appeared in the compiled CSS file. -If the CSS file does not include the changes made, run ``./csu static``. -If you are editing SCSS files, check the ``./csu static`` command isn't reporting +If the CSS file does not include the changes made, run ``./dev static``. +If you are editing SCSS files, check the ``./dev static`` command isn't reporting SCSS compilation errors. The website isn't displaying when I open ``cs-unplugged.localhost`` in a browser ---------------------------------------------------------------------------------------------- -Check you have run the ``./csu start`` command, and that it hasn't reported any +Check you have run the ``./dev start`` command, and that it hasn't reported any errors. .. _issue tracker: https://github.com/uccser/cs-unplugged/issues diff --git a/infrastructure/local/decktape/Dockerfile b/infrastructure/local/decktape/Dockerfile new file mode 100644 index 000000000..bded7945d --- /dev/null +++ b/infrastructure/local/decktape/Dockerfile @@ -0,0 +1,6 @@ +FROM astefanutti/decktape:3.4.1 + +COPY --chown=node:node ./create-slide-files.js /decktape + +ENTRYPOINT ["node", "/decktape/create-slide-files.js"] +CMD [] diff --git a/infrastructure/local/decktape/create-slide-files.js b/infrastructure/local/decktape/create-slide-files.js new file mode 100755 index 000000000..0a3cb33c5 --- /dev/null +++ b/infrastructure/local/decktape/create-slide-files.js @@ -0,0 +1,90 @@ +const http = require('http'); +const fs = require('fs'); +const path = require('path'); +const { execSync } = require("child_process"); + +// Top level directory is created by inherited Docker image and is mapped +// by Docker Compose to the csunplugged/build/ directory to set the correct +// permissions. +const ROOT_PATH = '/slides/' +// The second /slides/ directory to be created in +// the build directory with the correct permissions. +const FILES_BASE_PATH = path.join(ROOT_PATH, '/slides/'); +const BASE_URL = 'http://django:8000'; + + +function generateSlideFiles(data) { + var resolution = data.resolution; + + // For each language + for (const [language_code, lesson_slugs] of Object.entries(data.languages)) { + // For each lesson + lesson_slugs.forEach(lesson_slug => { + + let output_directory = path.join(FILES_BASE_PATH, language_code, lesson_slug); + let slide_count = data.slide_counts[lesson_slug] + + // Create directory if it doesn't exist + if (!fs.existsSync(output_directory)) { + fs.mkdirSync(output_directory, {recursive: true}); + } + + // Create screenshots and PDF + execSync( + `/decktape/decktape.js reveal \ + --chrome-path chromium-browser \ + --chrome-arg=--no-sandbox \ + --slides 1-${slide_count} \ + --screenshots \ + --screenshots-size=${resolution} \ + --screenshots-directory=${output_directory} \ + ${BASE_URL}/${language_code}/at-a-distance/${lesson_slug}/slides-file-generation/?hide-debug-toolbar\\\&hide-controls-modal \ + ${lesson_slug}.pdf`, + { + stdio: 'inherit', + }, + ); + + // Move and rename PDF file to correct directory + fs.renameSync( + path.join(ROOT_PATH, `${lesson_slug}.pdf`), + path.join(output_directory, `${lesson_slug}-slides.pdf`), + ) + + console.log(`Created '${language_code}' slide files for ${lesson_slug}.`) + }); + } +} + + +var args = process.argv.slice(2); + + +if (args[0] == '--production') { + query_parameters = 'language=all'; + console.log('Generating slide files for all languages') +} else if (args[0] == '--language' && args[1]) { + language_code = args[1]; + query_parameters = `language=${language_code}`; + console.log(`Generating slide files for '${language_code}' only`) +} else { + query_parameters = ''; + console.log("Generating slide files for 'en' only") +} + +http.get(BASE_URL + `/en/at-a-distance/slides-file-generation-json/?${query_parameters}`, res => { + let data = []; + + res.on('data', chunk => { + data.push(chunk); + }); + + res.on('end', () => { + json_data = Buffer.concat(data).toString(); + console.log("Received data:"); + console.log(json_data); + generateSlideFiles(JSON.parse(json_data)); + }); +}).on('error', err => { + console.log('Error: ', err.message); +}); diff --git a/infrastructure/local/django/.envs b/infrastructure/local/django/.envs index fd34d8291..9c172c21a 100644 --- a/infrastructure/local/django/.envs +++ b/infrastructure/local/django/.envs @@ -1,4 +1,3 @@ # Django - Local DJANGO_SETTINGS_MODULE=config.settings.local -INCLUDE_INCONTEXT_L10N=True diff --git a/infrastructure/production/django/Dockerfile b/infrastructure/production/django/Dockerfile index 796607d3d..d6347b42a 100644 --- a/infrastructure/production/django/Dockerfile +++ b/infrastructure/production/django/Dockerfile @@ -25,6 +25,16 @@ ARG GIT_SHA ARG BUILD_ENVIRONMENT=production ARG APP_HOME=/app +LABEL org.opencontainers.image.title='CS Unplugged' +LABEL org.opencontainers.image.description='A collection of free teaching material that teaches Computer Science through engaging games and puzzles that use cards, string, crayons and lots of running around.' +LABEL org.opencontainers.image.authors='University of Canterbury Computer Science Education Research Group (UCCSER) https://github.com/uccser' +LABEL org.opencontainers.image.url='https://www.codewof.co.nz/' +LABEL org.opencontainers.image.documentation='https://cs-unplugged.readthedocs.io/' +LABEL org.opencontainers.image.source='https://github.com/uccser/cs-unplugged' +LABEL org.opencontainers.image.vendor='University of Canterbury Computer Science Education Research Group (UCCSER)' +LABEL org.opencontainers.image.licenses='MIT AND CC-BY-SA-4.0' +LABEL org.opencontainers.image.revision=${GIT_SHA} + # Set environment variables ENV LANG C.UTF-8 ENV DEPLOYED=True diff --git a/requirements/base.txt b/requirements/base.txt index d9e53ac06..e4de510b9 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,18 +1,18 @@ # Django -django==3.2.11 -django-environ==0.8.1 +django==3.2.15 +django-environ==0.9.0 django-bootstrap-breadcrumbs==0.9.2 # Web serving gunicorn==20.1.0 -whitenoise==5.3.0 +whitenoise==6.2.0 # Database APIs psycopg2==2.9.3 # Resources WeasyPrint==52.4 -Pillow==9.0.0 +Pillow==9.2.0 yattag==1.14.0 tinycss==0.4 @@ -20,29 +20,24 @@ tinycss==0.4 verto==1.0.1 python-markdown-math==0.6 -# Search -django-haystack[elasticsearch]==3.1.1 -elasticsearch==5.5.3 -django-widget-tweaks==1.4.12 - # YAML Loading PyYAML==6.0 # System tools -tqdm==4.62.3 +tqdm==4.64.0 # XML Parsing -lxml==4.7.1 +lxml==4.9.1 cssselect==1.1.0 # I18n -django-modeltranslation==0.17.3 +django-modeltranslation==0.18.4 uniseg==0.7.1.post2 python-bidi==0.4.2 django-bidi-utils==1.0 # Plugging it in -requests==2.27.1 +requests==2.28.1 # CORS -django-cors-headers==3.11.0 \ No newline at end of file +django-cors-headers==3.13.0 diff --git a/requirements/local.txt b/requirements/local.txt index 3bd6b1fc6..94652e348 100644 --- a/requirements/local.txt +++ b/requirements/local.txt @@ -3,5 +3,5 @@ -r test.txt # Debugging Tools -django-debug-toolbar==3.2.4 -django-extensions==3.1.5 +django-debug-toolbar==3.6.0 +django-extensions==3.2.0 diff --git a/requirements/test.txt b/requirements/test.txt index 146a76991..d9a3de392 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -5,10 +5,10 @@ flake8==4.0.1 pydocstyle==6.1.1 # Coverage Tools -coverage==6.2 +coverage==6.4.4 # Skip migration files for local testing django-test-without-migrations==0.6 # PDF file checking -PyPDF2==1.26.0 +PyPDF2==2.10.2 diff --git a/subtitles/fr/product-code-check-digits.vtt b/subtitles/fr/product-code-check-digits.vtt new file mode 100644 index 000000000..2092854b9 --- /dev/null +++ b/subtitles/fr/product-code-check-digits.vtt @@ -0,0 +1,388 @@ +WEBVTT +Kind: captions +Language: fr + +NOTE +Computer Science Education Research, +University of Canterbury, New Zealand +Subtitle file for the video "CS Unplugged - Product Code Check Digits (sample classroom lesson)" +Author: Alasdair Smith +Date: 01/10/2018 + +00:00:04.120 --> 00:00:06.460 +Chiffres de contrôle de code produit + +00:00:06.840 --> 00:00:09.620 +Cool, donc la dernière leçon que nous avons faite nous avons regardé + +00:00:09.620 --> 00:00:14.060 +comment les ordinateurs réussissent à détecter les erreurs +et à les corriger. + +00:00:14.060 --> 00:00:20.380 +Levez la main si vous êtes déjà allés au supermarché +et que vous avez scanné vos courses + +00:00:20.380 --> 00:00:22.920 +et que tous les articles s'affichaient ? + +00:00:22.920 --> 00:00:24.260 +Avez-vous déjà fait cela ? + +00:00:24.260 --> 00:00:24.940 +Oui ? + +00:00:24.950 --> 00:00:33.160 +Baissez les mains, donc que se passe-t-il quand vous scannez +un produit et qu'il n'est pas lu correctement ? + +00:00:33.160 --> 00:00:35.240 +Que fait la personne à la caisse ? + +00:00:35.240 --> 00:00:38.540 +Ou que ferait la personne à la caisse ? + +00:00:38.540 --> 00:00:44.460 +Vous devez leur demander et ils vont scanner quelque chose ? + +00:00:44.460 --> 00:00:48.460 +Oui, ils scannent quelque chose, et parfois +ils doivent saisir quelque chose au clavier non ? + +00:00:48.460 --> 00:00:52.320 +Ça peut ne pas être lu parce que le code barre +peut être plié et ils doivent donc faire quelque chose + +00:00:52.320 --> 00:00:53.460 +que doivent-ils faire ? + +00:00:53.460 --> 00:00:57.980 +N'ont-ils pas quelque chose sur leur clavier, +N'ont-ils pas un machin à code barre. + +00:00:57.980 --> 00:01:01.760 +-- Oui ils ont ça. +-- Et ils le scannent sur la machine + +00:01:01.760 --> 00:01:02.720 +et ça… + +00:01:02.720 --> 00:01:06.420 +C'est ça, mais ça ne nous dit toujours pas +ce qu'est l'article. + +00:01:06.420 --> 00:01:12.020 +Donc en bas d'un article, il y a le +code-barres ; en noir et blanc ? + +00:01:12.020 --> 00:01:14.480 +Mais il y a aussi des chiffres en dessous. + +00:01:14.480 --> 00:01:18.080 +Et ces chiffres ont quelque chose +appelé une somme de contrôle à la fin. + +00:01:18.080 --> 00:01:18.840 +Oui ? + +00:01:18.840 --> 00:01:24.180 +C'est comme s'il y avait un code-barres qui était +un peu plus petit pour qu'il puisse être saisi par une personne. + +00:01:24.180 --> 00:01:25.420 +Oui oui tout à fait. + +00:01:25.420 --> 00:01:29.180 +Donc ils doivent taper les chiffres parce que +la machine ne peut pas les lire correctement ? + +00:01:29.180 --> 00:01:34.300 +Donc le dernier chiffre est appelé "somme de contrôle" +et je vais vous apprendre aujourd'hui comment ça fonctionne. + +00:01:34.300 --> 00:01:37.539 +Dylan, peux-tu aller chercher au fond de la classe +quelque chose qui… + +00:01:37.540 --> 00:01:41.260 +a un code-barres de 13 chiffres pour nous, +et nous verrons comment ça fonctionne. + +00:01:45.260 --> 00:01:49.280 +Cool, donc lis-nous les chiffres tout haut +mais je ne veux pas connaitre le 13e chiffre. + +00:01:49.280 --> 00:01:52.180 +Je veux seulement savoir les 12 premiers chiffres. + +00:01:52.180 --> 00:02:12.780 +9, 3, 1, 0, 4, 9, 2, 0, 0, 0, 4 et 5. + +00:02:12.780 --> 00:02:16.580 +Ok je vais juste te relire ça +est-ce que tu peux vérifier ? + +00:02:16.580 --> 00:02:26.800 +9, 3, 1, 0, 4, 9, 2, 0, 0, 0, 0, 4, 5. + +00:02:26.800 --> 00:02:27.560 +C'est bon ? + +00:02:27.569 --> 00:02:28.569 +Cool. + +00:02:28.569 --> 00:02:32.310 +Ok maintenant nous avons ces chiffres sur le +tableau, ce que je vais vous demander de faire + +00:02:32.310 --> 00:02:34.879 +c'est de m'aider à additionner la ligne du haut. + +00:02:34.880 --> 00:02:37.280 +-- Donc 9 + 1 font ? +-- 10. + +00:02:37.280 --> 00:02:39.220 +-- 10 + 4 font ? +-- 14. + +00:02:39.220 --> 00:02:41.760 +-- 14 + 2 ? +-- 16. + +00:02:41.760 --> 00:02:45.580 +-- 16 + 4 ? +-- 20. + +00:02:45.580 --> 00:02:52.050 +Et nous ne nous intéressons qu'à la colonne des unités, +Quel est donc le chiffre dans la colonne des unités ? + +00:02:52.050 --> 00:02:53.050 +Sam ? + +00:02:53.050 --> 00:02:54.050 +2. + +00:02:54.050 --> 00:02:55.360 +C'est le chiffre des dizaines, bien essayé. + +00:02:55.360 --> 00:02:56.360 +Zéro ? + +00:02:56.360 --> 00:02:59.230 +Zéro, donc on va juste noter le zéro ici. + +00:02:59.230 --> 00:03:01.069 +Parce que c'est le seul chiffre +qui nous intéresse. + +00:03:01.069 --> 00:03:02.980 +Maintenant nous allons additionner la ligne du bas. + +00:03:02.980 --> 00:03:05.360 +-- 3 + 0 font ? +-- 3. + +00:03:05.360 --> 00:03:07.880 +-- 3 + 9 font ? +-- 12. + +00:03:07.880 --> 00:03:12.120 +-- 12 + 0 font ? +-- 12, 12. + +00:03:12.120 --> 00:03:14.560 +-- 12 + 5 font ? +-- 17. + +00:03:14.560 --> 00:03:17.790 +17 mais on ne s'intéresse qu'à la colonne des unités ? + +00:03:17.790 --> 00:03:19.060 +7. + +00:03:19.060 --> 00:03:23.260 +Maintenant nous allons multiplier la ligne du bas par 3, +mais attention. + +00:03:23.260 --> 00:03:25.060 +Nous nous intéressons seulement à la colonne des unités. + +00:03:25.060 --> 00:03:29.400 +Combien font 7 x 3 et quelle est +la valeur des unités ? + +00:03:30.060 --> 00:03:30.900 +Freddy. + +00:03:30.900 --> 00:03:32.000 +1. + +00:03:32.000 --> 00:03:34.340 +Qui d'autre avait 1 ? + +00:03:34.340 --> 00:03:35.600 +Cool. + +00:03:36.580 --> 00:03:37.880 +C'est égal à 1. + +00:03:37.880 --> 00:03:39.520 +Combien font 0 + 1 ? + +00:03:40.780 --> 00:03:41.400 +1. + +00:03:41.400 --> 00:03:42.280 +Cool. + +00:03:42.280 --> 00:03:48.240 +Bien, si je devais faire +0 — en fait ce serait un 10 — ok ? + +00:03:48.240 --> 00:03:51.040 +Parce que nous ne nous intéressons qu'aux unités. + +00:03:51.049 --> 00:03:56.459 +Si je devais faire 0, quel serait +le chiffre manquant ici ? + +00:03:56.460 --> 00:03:57.880 +Zéro ? + +00:03:57.880 --> 00:04:00.340 +1 plus combien font 10 ? + +00:04:00.340 --> 00:04:01.620 +9. + +00:04:01.620 --> 00:04:05.180 +La somme de contrôle est 9. + +00:04:05.189 --> 00:04:06.659 +Vrai ou faux ? + +00:04:06.660 --> 00:04:07.500 +Vrai. + +00:04:07.500 --> 00:04:08.000 +Cool. + +00:04:08.000 --> 00:04:13.840 +Donc ceci est l'équation mathématique qui est +derrière chaque code-barres. + +00:04:13.840 --> 00:04:19.520 +Ok, regardons ce qu'il se passe +si j'entends quelque chose de faux. + +00:04:19.520 --> 00:04:23.380 +Supposons que j'ai entendu un 5 à la place du 4. + +00:04:23.380 --> 00:04:28.680 +Donc la première chose qui va changer est ceci, +est-ce que ça resterait un zéro ? + +00:04:28.680 --> 00:04:30.460 +-- Non. +-- Qu'est-ce que ça deviendrait ? + +00:04:30.460 --> 00:04:31.460 +1. + +00:04:31.460 --> 00:04:37.320 +Ok ce qui change le +1+1 qui n'est plus 1, combien c'est ? + +00:04:37.320 --> 00:04:38.060 +2. + +00:04:38.060 --> 00:04:39.520 +Ça devient 2. + +00:04:39.520 --> 00:04:42.920 +Donc 2 plus combien font 10 ? + +00:04:42.920 --> 00:04:44.180 +Est-ce que c'est 9 ? + +00:04:44.180 --> 00:04:45.040 +Non. + +00:04:45.040 --> 00:04:47.420 +Ça devient 8. + +00:04:47.420 --> 00:04:54.160 +Et parce que j'ai écrit un faux chiffre, +la somme de contrôle est incorrecte, + +00:04:54.160 --> 00:04:58.200 +et la machine vous dit que ce n'est pas correct. + +00:04:58.200 --> 00:05:00.520 +Et vous devez taper les chiffres une nouvelle fois. + +00:05:00.520 --> 00:05:05.360 +Et parce que nous sommes des humains, à votre avis +quelle est l'erreur la plus commune + +00:05:05.360 --> 00:05:07.280 +quand nous tapons des chiffres ? + +00:05:07.280 --> 00:05:10.000 +Comment est-ce qu'on se tromperait le plus ? + +00:05:10.000 --> 00:05:11.770 +-- Robert ? +-- Les chiffres. + +00:05:11.770 --> 00:05:16.200 +Oui les chiffres, qu'est-ce qu'on pourrait faire avec +les chiffres qui les rendraient différents ? + +00:05:17.000 --> 00:05:19.320 +Ne pourrait-on pas tous les écrire ? + +00:05:19.320 --> 00:05:21.900 +Oui, est-ce que je lirais mal les chiffres ? + +00:05:21.910 --> 00:05:22.910 +Qu'est-ce que je ferais ? + +00:05:22.910 --> 00:05:28.410 +À la place de faire 9, 1, +vous pourriez taper 1, 9. + +00:05:28.410 --> 00:05:34.750 +Oui, mais aviez-vous remarqué que celui-là était +le premier chiffre, celui-ci le deuxième, + +00:05:34.750 --> 00:05:37.690 +celui-là est le premier chiffre, +celui-ci le deuxième chiffre. + +00:05:37.690 --> 00:05:44.240 +C'est parce que l'erreur la plus commune +que nous faisons est que nous échangeons 2 chiffres. + +00:05:44.940 --> 00:05:48.800 +Je pourrais lire 93, mais mes doigts taperaient 39. + +00:05:48.800 --> 00:05:50.800 +N'est-ce pas ? Avez-vous déjà fait ça quand vous tapez ? + +00:05:50.800 --> 00:05:52.840 +Et vous avez vos lettres dans le +mauvais sens ? + +00:05:52.840 --> 00:06:00.100 +Et c'est pour ça : la somme de contrôle +nous empêche de venir pour + +00:06:00.100 --> 00:06:06.520 +acheter un paquet de cartes Pokemon et de payer pour un ensemble de panneaux solaires pour robot. + +00:06:06.520 --> 00:06:07.280 +Ok ? + diff --git a/subtitles/fr/sorting-networks.vtt b/subtitles/fr/sorting-networks.vtt new file mode 100644 index 000000000..852f83a0a --- /dev/null +++ b/subtitles/fr/sorting-networks.vtt @@ -0,0 +1,297 @@ +WEBVTT +Kind: captions +Language: fr + +NOTE +Computer Science Education Research, +University of Canterbury, New Zealand +Subtitle file for the video "CS Unplugged - Sorting Networks (sample classroom lesson)" +Author: Alasdair Smith +Date: 01/10/2018 + +00:00:05.060 --> 00:00:10.000 +[Réseaux de tri] + +00:00:11.480 --> 00:00:15.360 +Nous sommes donc allés dehors aujourd'hui +pour comprendre un peu mieux comment fonctionnent les ordinateurs, + +00:00:15.360 --> 00:00:21.160 +et ce que nous avons ici, c'est un peu +comme un supercalculateur fait à la craie. + +00:00:21.160 --> 00:00:24.919 +Et je vais vous montrer pourquoi dans un instant, +j'ai besoin de six volontaires. + +00:00:24.919 --> 00:00:26.150 +Super. + +00:00:26.150 --> 00:00:30.710 +Ce que je vais faire c'est que je vais vous donner +un disque, et vous allez devoir vous placer + +00:00:30.710 --> 00:00:33.430 +sur les cercles — les plus éloignés. + +00:00:33.430 --> 00:00:35.830 +Donc Rhylee tu vas sur +celui qui est le plus éloigné. + +00:00:35.830 --> 00:00:39.090 +Robert tu vas sur le suivant. + +00:00:39.090 --> 00:00:42.900 +Ellie encore sur le suivant. + +00:00:42.900 --> 00:00:45.150 +Kourosh tu peux aller là-bas. + +00:00:45.150 --> 00:00:47.629 +Lewis tu peux aller sur le dernier. + +00:00:47.629 --> 00:00:48.629 +Ok ! + +00:00:48.629 --> 00:00:52.219 +Donc vous êtes tous là, maintenant c'est +un travail d'équipe. + +00:00:52.219 --> 00:00:55.850 +C'est aussi une question d'organisation des données. + +00:00:55.850 --> 00:00:59.460 +Donc vous êtes au début avec vos données +et vous êtes tous désordonnés, nous avons + +00:00:59.460 --> 00:01:05.460 +le nombre 5, le nombre 2, le nombre 1, +le nombre 3, le nombre 6 et le nombre 4. + +00:01:05.460 --> 00:01:10.680 +Et donc avant qu'on aille dans le supercalculateur, +tout ce que je dois vous apprendre est ce symbole ici. + +00:01:10.680 --> 00:01:12.900 +Que signifie ce symbole ici ? + +00:01:12.900 --> 00:01:14.479 +Qu'est-ce que cela signifie Lewis ? + +00:01:14.480 --> 00:01:15.420 +Plus petit et plus grand. + +00:01:15.420 --> 00:01:19.940 +Plus petit et plus grand, quels autres termes +mathématiques peut-on utiliser pour plus petit et plus grand + +00:01:19.940 --> 00:01:21.200 +-- oui ? +-- Inférieur ou supérieur + +00:01:21.200 --> 00:01:27.100 +Inférieur ou supérieur. Super, donc ici +la ligne orange est l'inférieur, + +00:01:27.100 --> 00:01:28.940 +et la ligne bleue est le supérieur. + +00:01:28.940 --> 00:01:33.560 +Donc voyons voir comment ça marche. Pouvez-vous tous +avancer dans la boite. + +00:01:33.560 --> 00:01:37.980 +Pouvez-vous dire "bonjour" à votre voisin et +lui faire un grand sourire. + +00:01:37.990 --> 00:01:39.100 +Pas trop mielleux. + +00:01:39.100 --> 00:01:42.500 +Maintenant vous devez décider : est-ce +que j'ai le nombre le plus grand + +00:01:42.500 --> 00:01:44.600 +ou est-ce que j'ai le plus petit. + +00:01:44.600 --> 00:01:47.100 +Et le plus grand nombre +suit la ligne bleue, + +00:01:47.100 --> 00:01:50.400 +le plus petit nombre suit la ligne orange, aller. + +00:01:51.120 --> 00:01:55.320 +Maintenant, vous devez regarder autour de vous et vérifier que tout le monde +est là et dire bonjour et + +00:01:55.320 --> 00:01:58.000 +faire un grand sourire à votre voisin. + +00:01:58.000 --> 00:02:02.960 +Maintenant décidez qui a le plus petit, qui +a le plus grand nombre. + +00:02:07.480 --> 00:02:08.640 +Est-ce que vous savez quoi faire ? + +00:02:08.649 --> 00:02:12.810 +On continue, je n'ai vu personne sourire et +dire bonjour, souriez et dites bonjour. + +00:02:12.810 --> 00:02:13.810 +Salut. + +00:02:13.810 --> 00:02:15.980 +Maintenant, prenez votre décision. + +00:02:20.420 --> 00:02:21.260 +Bonjour ! + +00:02:21.480 --> 00:02:22.120 +Bien. + +00:02:23.500 --> 00:02:24.660 +Quel nombre avez-vous ? + +00:02:25.840 --> 00:02:27.880 +J'ai le 4 alors je vais aller par ici. + +00:02:27.880 --> 00:02:28.860 +Parfait. + +00:02:33.980 --> 00:02:37.040 +Cool donc je vais vous demander de vous tourner et +de me regarder et nous allons voir + +00:02:37.040 --> 00:02:40.860 +ce qu'il s'est passé avec les nombres, pouvez-vous vous tourner +et montrer vos nombres s'il vous plait ? + +00:02:40.860 --> 00:02:44.000 +Oh, wow Kourosh quel nombre as-tu ? + +00:02:44.000 --> 00:02:45.360 +-- Un. +-- Quel nombre as-tu Lewis ? + +00:02:45.360 --> 00:02:46.360 +Deux. + +00:02:46.360 --> 00:02:47.100 +Trois. + +00:02:47.100 --> 00:02:47.640 +Quatre. + +00:02:47.640 --> 00:02:48.540 +Cinq. + +00:02:48.540 --> 00:02:49.280 +Six. + +00:02:49.280 --> 00:02:51.060 +Ok qu'est-il arrivé à nos nombres ? + +00:02:51.080 --> 00:02:55.520 +Nous les avons mis dans notre supercalculateur +la craie c'est comme un supercalculateur, + +00:02:55.520 --> 00:02:58.480 +et nous les avons traités et que s'est-il passé ? + +00:02:59.140 --> 00:03:01.980 +Nous les avons retrouvés dans le bon ordre. + +00:03:01.980 --> 00:03:04.680 +Oh, est-ce que vous pensez que ça marche avec tout ? +[Astuce : cette activité peut être utilisée pour trier n'importe quoi !] + +00:03:04.680 --> 00:03:05.600 +Oui. +[Astuce : cette activité peut être utilisée pour trier n'importe quoi !] + +00:03:05.600 --> 00:03:07.840 +Quelles autres choses vous pensez +que l'on pourrait trier ? + +00:03:07.840 --> 00:03:08.740 +-- Oui ? +-- Des livres. + +00:03:08.740 --> 00:03:10.060 +Nous pourrions trier des livres, quoi d'autre ? + +00:03:10.580 --> 00:03:11.220 +Des lettres ? + +00:03:11.220 --> 00:03:12.240 +Oui, quoi d'autre ? + +00:03:12.240 --> 00:03:13.080 +Des cloches ? + +00:03:13.080 --> 00:03:14.100 +Oui, quoi d'autre ? + +00:03:14.100 --> 00:03:15.700 +Des notes. + +00:03:15.700 --> 00:03:17.400 +Oui, quoi d'autre ? + +00:03:17.400 --> 00:03:18.400 +Qu'en est-il des grand nombres ? + +00:03:18.409 --> 00:03:20.690 +Avec de très grands nombres est-ce qu'on pourrait faire pareil ? + +00:03:20.690 --> 00:03:22.020 +-- Oui. +-- Oui, super. + +00:03:22.020 --> 00:03:26.440 +[Titres de livres (ordre alphabétique)] + +00:03:34.640 --> 00:03:43.100 +[Grands nombres (ordre numérique)] + +00:03:44.360 --> 00:03:50.260 +[Lettres (ordre alphabétique)] + +00:03:51.500 --> 00:03:58.460 +[Cloches (ton musical, aigu ou grave)] + +00:03:58.740 --> 00:04:00.440 +Laquelle sonne le plus bas et laquelle sonne le plus haut ? + +00:04:00.440 --> 00:04:01.420 +Je suis plus bas. + +00:04:01.420 --> 00:04:03.040 +Tu es plus bas. + +00:04:08.420 --> 00:04:11.020 +Ok, faites-les sonner une par une. + +00:04:11.880 --> 00:04:14.100 +Laquelle sonne le plus bas ? + +00:04:14.480 --> 00:04:15.560 +Celle-ci est la plus basse. + +00:04:15.560 --> 00:04:18.100 +Ok, écoutons la une fois de plus pour être sûrs. + +00:04:19.880 --> 00:04:21.500 +Ça a l'air bon. + +00:04:27.620 --> 00:04:30.240 +Écoutons-les, écoutons-les une fois de plus. + +00:04:30.240 --> 00:04:31.560 +Très bien. + +00:04:31.560 --> 00:04:33.480 +Ok, continuez. + diff --git a/subtitles/zh/binary-digits-sample-classroom-lesson.vtt b/subtitles/zh/binary-digits-sample-classroom-lesson.vtt new file mode 100644 index 000000000..8f3f89189 --- /dev/null +++ b/subtitles/zh/binary-digits-sample-classroom-lesson.vtt @@ -0,0 +1,215 @@ +WEBVTT +Kind: captions +Language: zh + +NOTE +Subtitle file for the video "CS Unplugged - Binary digits (sample classroom lesson)" + +00:00:07.359 --> 00:00:19.100 +今天,我们将学习二进制数。 +你们听说过计算机中,一个叫“位”的东西吗? +听说过的请举手。听说过吗? + +00:00:19.119 --> 00:00:30.900 +位 (bit) 是二进制数的简称。我们将二进制 (binary) 的首字母和数字 (digit) 的最后一个字母相结合,将二进制数 (binary digit) 缩写为位 (bit)。 + +00:00:30.939 --> 00:00:36.600 +现在,这里有五位处于站立状态。 +大家看看,这意味着什么。 + +00:00:36.660 --> 00:00:42.020 +我将给你数字 1, +你将变成一个位,代表 1 个点。 + +00:00:42.020 --> 00:00:44.530 +你将变成一个位,代表 +2 个点。 + +00:00:44.530 --> 00:00:48.600 +下一个数字是什么?大声说出来。(4、3) + +00:00:48.600 --> 00:00:52.600 +认为是 3 的同学,请举手。那是我们的计数系统。 + +00:00:52.600 --> 00:00:57.800 +让我们看看,你们在二进制上对不对。哦不!答案是 4。 + +00:00:57.850 --> 00:01:07.800 +下一个数字可能是什么?嗯?(6 或 5)。 +它可能是 6 或 5。而实际上它是 8。 + +00:01:07.800 --> 00:01:14.400 +这些数字有什么规律呢?Oliver,下一个数字是什么?(16) 他回答得对吗? + +00:01:14.430 --> 00:01:23.500 +16 之后又是哪个数字呢?Jacob (32) 哦,那么 32 之后呢? + +00:01:23.570 --> 00:01:32.100 +(136) 有可能哦,但还可能是什么呢?Lachlin (64) 他对了吗?(是的)。 + +00:01:32.159 --> 00:01:42.300 +64 之后的数字是什么?Thomas (128) 那之后呢?Jacob?(256) 干得漂亮。 + +00:01:42.300 --> 00:01:53.000 +有谁知道下一个数字是什么吗?Ben。(512) 所以,当我们……下一个数字呢 Jacob? + +00:01:53.000 --> 00:01:58.950 +因此,只需要用几个位,我们就可以 +数到很大的数字了,对吗? + +00:01:58.950 --> 00:02:07.070 +如果看这个的话,我们可以数到 1、2、4、8、 +16 个点。 + +00:02:07.070 --> 00:02:20.600 +让我们看看,在计算机中,它意味着什么。位可能处于开启,也可能处于关闭状态。因此,这个位可能是开启,也可能是关闭。 + +00:02:20.670 --> 00:02:29.900 +现在,我想让大家想出 31 和 1 之间的一个数字。想到数字的同学请举手。Ben,什么数字 (12)。 + +00:02:29.930 --> 00:02:40.200 +12 现在需要看着这些点,并用二进制的方法表示 12 个点。我们应该开启还是关闭 16 呢?(关闭)。请关闭。 + +00:02:40.209 --> 00:02:53.500 +如果要表示的是数字 12,我们应该开启还是关闭 8 呢?(开启)好的,还剩多少呢?(4) 我们需要开启还是关闭 4 个点呢?(开启)。 + +00:02:53.550 --> 00:03:04.000 +2 怎么办?(关闭)为什么?为什么要关闭 2?(因为您已经用 8 和 4 表示 12 了)。因此,1 应该开启还是……?(关闭) + +00:03:04.060 --> 00:03:16.100 +谁可以告诉我二进制中 12 是什么,如何表示 12?谁要试着回答一下?(关闭、开启、开启、关闭、关闭)同意的话,请竖起你的大拇指。 + +00:03:16.170 --> 00:03:21.850 +Elarn 认为如何呢,要表示一下吗?大家都可以先把自己开启了, + +00:03:21.850 --> 00:03:29.400 +Elarn,选一个你想要表示的数字。(24) 24 你可以先把自己开启吗? + +00:03:33.599 --> 00:03:45.670 +为了 24,我们应该开启还是关闭 16?(开启)8 开启 +或关闭(开启)4、(关闭)2(关闭)1(关闭)。 + +00:03:45.670 --> 00:03:53.769 +Elarn,24 个点的二进制是怎样的?(开启、开启 +关闭、关闭、关闭)。 + +00:03:53.769 --> 00:03:56.400 +大家可以给我表示一下 1 吗?我们应该怎么表示 1? + +00:03:56.470 --> 00:04:08.000 +可以如何表示数字 1?(黑色、黑色、黑色、黑色、白色)你们可以做到吗? + +00:04:08.000 --> 00:04:15.700 +现在,大家都看到数字 1 在那儿了。 +你们还能想到比 1 更小的数字吗?Will? + +00:04:15.769 --> 00:04:22.700 +(0) 你可以如何表示 0?(关闭白色)。 + +00:04:22.720 --> 00:04:38.000 +我们可以表示最小数字零以及 +最大数字。如果你们再次把卡片全部开启,在有五位的情况下,我们可以 +表示的最大数字是多少?Ben?(31)同意 Ben 的同学请举手?它是 31。 + +00:04:38.099 --> 00:04:49.300 +如果我们可以表示 31,那么下一张卡片的数字将会是多少?如果我加入其中,成为第六位,下一个数字会是多少?(32) 32。 + +00:04:49.389 --> 00:05:00.000 +如果我把 32 打开,这些家伙都必须(关闭) +关闭以表示 32。你们可以全部关闭吗? + +00:05:00.000 --> 00:05:03.879 +让我们做一些计数,看看不同的位 +会有什么情况。 + +00:05:03.879 --> 00:05:12.600 +我们得到了零。应该如何表示 1?是的,给出指令(开启 1)。 + +00:05:12.629 --> 00:05:23.800 +2,我们如何表示 2?告诉大家(关闭 1、开启 2)3?Lachlin,开始吧(开启 1,并保持 2 为开启状态)。 + +00:05:23.800 --> 00:05:43.500 +4?(开启 2,关闭 1,再开启 4)5?(开启 1……) +你注意到第一位有什么情况了吗? + +00:05:43.550 --> 00:05:50.000 +Zander,你注意到了哪些情况(它做了 +所有工作)。看起来它做了所有工作。 + +00:05:50.099 --> 00:06:00.900 +为什么看起来它似乎做了所有工作? +Ben?(没有它,你无法表示奇数)再次开启你的全部位。 + +00:06:00.979 --> 00:06:07.699 +你看到的第一位和你能看到的其他所有位 +有什么区别? + +00:06:07.699 --> 00:06:16.439 +William?(数字 1 是仅有的奇数)它是仅有的奇数。 + +00:06:16.439 --> 00:06:21.500 +我们可以表示很多数字,对吗?我想知道,可以如何表示字母? + +00:06:21.520 --> 00:06:31.580 +和身旁的小伙伴讨论 +你认为可以如何表示字母。 + +00:06:31.580 --> 00:06:35.900 +你认为可以如何表示字母? + +00:06:51.080 --> 00:06:55.920 +5、4、3、2、1,看这边。 + +00:06:56.000 --> 00:07:04.000 +想到该如何使用这些表示字母的同学 +请举手。你有什么想法? + +00:07:04.000 --> 00:07:19.200 +(可以用数字表示字母。26 可以表示 Z,A 可以表示 1)26 可以表示 Z,A 可以表示 1,那么 B 是什么呢?Jacob? + +00:07:19.270 --> 00:07:27.300 +(2),C 是什么呢 (3),那么 D 呢?(4),E?(5)。我觉得你们已经理解相关的内容了。 + +00:07:27.310 --> 00:07:35.600 +我想知道,你们是否清楚我给你们发的 +是什么。我将给你们发一条消息。 + +00:07:35.669 --> 00:07:44.100 +黑色、白色、黑色、黑色、黑色。那是什么数字?(8)。 + +00:07:44.129 --> 00:07:53.200 +字母表上的第八个字母是什么?(H)。记住它。 + +00:07:53.229 --> 00:07:58.600 +关闭、开启、关闭、关闭、开启。得出什么数字?(9) + +00:07:58.669 --> 00:08:13.500 +Zander,我对你说什么了?(您对我们说的是“嗨”)是吗?你们同意他吗?我们打招呼了吗? + +00:08:13.520 --> 00:08:20.900 +但这些只是开启和关闭的点和卡, +我真的可以通过这种方式,给你们传送一条消息吗? + +00:08:20.919 --> 00:08:38.000 +(是的)让我看看你们有多棒。大家看看我能不能表示 +我在哪个月份出生。准备好了吗?关闭、开启、开启、关闭、关闭。 + +00:08:38.070 --> 00:08:44.500 +我在哪个月份出生?轻声告诉我,所以有很多人知道答案。 +开始。(十二月)答对了。 + +00:08:44.510 --> 00:08:52.500 +因此,我们使用二进制数和使用这些点 +就可以传达从字母到数字的任何东西。 + +00:08:52.540 --> 00:08:57.500 +你们甚至还可以用它们表示图像和声音, +还有电影。 + +00:08:57.500 --> 00:09:03.730 +所有涉及位的东西都可以,因为在计算机中, +并没有太多像这样的卡片, + +00:09:03.730 --> 00:09:15.000 +并没有太多的零和一, +但有很多需要开启或关闭的东西。 diff --git a/third-party-licences/revealjs.txt b/third-party-licences/revealjs.txt new file mode 100644 index 000000000..f82a0cc76 --- /dev/null +++ b/third-party-licences/revealjs.txt @@ -0,0 +1,19 @@ +Copyright (C) 2011-2022 Hakim El Hattab, http://hakim.se, and reveal.js contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.