diff --git a/.github/workflows/test-and-deploy.yaml b/.github/workflows/test-and-deploy.yaml index ff36c5385..5044c842b 100644 --- a/.github/workflows/test-and-deploy.yaml +++ b/.github/workflows/test-and-deploy.yaml @@ -108,6 +108,7 @@ jobs: || github.event_name == 'release' runs-on: ubuntu-20.04 needs: [ + test-django-system-check, test-content, test-general, test-resources, @@ -149,6 +150,7 @@ jobs: || github.event_name == 'release' runs-on: ubuntu-20.04 needs: [ + test-django-system-check, test-content, test-general, test-resources, @@ -207,6 +209,7 @@ jobs: ] fail-fast: true needs: [ + test-django-system-check, test-content, test-general, test-resources, diff --git a/csunplugged/config/__init__.py b/csunplugged/config/__init__.py index be24cd954..05df44815 100644 --- a/csunplugged/config/__init__.py +++ b/csunplugged/config/__init__.py @@ -1,3 +1,3 @@ """Module for Django system configuration.""" -__version__ = "6.3.0" +__version__ = "6.4.0" diff --git a/csunplugged/config/settings/base.py b/csunplugged/config/settings/base.py index 7d629efc8..7136fcdb6 100644 --- a/csunplugged/config/settings/base.py +++ b/csunplugged/config/settings/base.py @@ -62,6 +62,7 @@ "search.apps.SearchConfig", "classic.apps.ClassicConfig", "at_home.apps.AtHomeConfig", + "moocs.apps.MoocsConfig", ] # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps diff --git a/csunplugged/config/urls.py b/csunplugged/config/urls.py index 6da3926ba..2b72ad895 100644 --- a/csunplugged/config/urls.py +++ b/csunplugged/config/urls.py @@ -18,6 +18,7 @@ path('resources/', include('resources.urls', namespace='resources')), path('at-home/', include('at_home.urls', namespace='at_home')), path('plugging-it-in/', include('plugging_it_in.urls', namespace='plugging_it_in')), + path('moocs/', include('moocs.urls', namespace='moocs')), ) urlpatterns += [ diff --git a/csunplugged/gulpfile.js b/csunplugged/gulpfile.js index 25a7c5e2e..0471bb91c 100644 --- a/csunplugged/gulpfile.js +++ b/csunplugged/gulpfile.js @@ -50,6 +50,7 @@ function pathsConfig(appName) { scss_source: `${staticSourceRoot}/scss`, js_source: `${staticSourceRoot}/js`, images_source: `${staticSourceRoot}/img`, + files_source: `${staticSourceRoot}/files`, vendor_js_source: [ `${vendorsRoot}/jquery/dist/jquery.js`, `${vendorsRoot}/popper.js/dist/umd/popper.js`, @@ -63,6 +64,7 @@ function pathsConfig(appName) { fonts_output: `${staticOutputRoot}/fonts`, images_output: `${staticOutputRoot}/img`, js_output: `${staticOutputRoot}/js`, + files_output: `${staticOutputRoot}/files`, } } @@ -167,6 +169,12 @@ function img() { .pipe(dest(paths.images_output)) } +// Downloadable files +function files() { + return src(`${paths.files_source}/**/*`) + .pipe(dest(paths.files_output)) +} + // Browser sync server for live reload // TODO: Not yet working // function initBrowserSync() { @@ -202,7 +210,8 @@ const generateAssets = parallel( scss, js, vendorJs, - img + img, + files ) // Set up dev environment diff --git a/csunplugged/moocs/__init__.py b/csunplugged/moocs/__init__.py new file mode 100644 index 000000000..336ed0ea2 --- /dev/null +++ b/csunplugged/moocs/__init__.py @@ -0,0 +1 @@ +"""Module for the MOOCs application.""" diff --git a/csunplugged/moocs/apps.py b/csunplugged/moocs/apps.py new file mode 100644 index 000000000..3c0ddad1e --- /dev/null +++ b/csunplugged/moocs/apps.py @@ -0,0 +1,9 @@ +"""Application configuration for the MOOCs application.""" + +from django.apps import AppConfig + + +class MoocsConfig(AppConfig): + """Configuration object for the MOOCs application.""" + + name = "moocs" diff --git a/csunplugged/moocs/urls.py b/csunplugged/moocs/urls.py new file mode 100644 index 000000000..754719b9a --- /dev/null +++ b/csunplugged/moocs/urls.py @@ -0,0 +1,14 @@ +"""URL routing for the moocs application.""" + +from django.urls import path + +from . import views + +app_name = 'moocs' +urlpatterns = [ + path( + '', + views.MoocsIndexView.as_view(), + name="index" + ), +] diff --git a/csunplugged/moocs/views.py b/csunplugged/moocs/views.py new file mode 100644 index 000000000..cfc1d042d --- /dev/null +++ b/csunplugged/moocs/views.py @@ -0,0 +1,9 @@ +"""Views for the MOOCs application.""" + +from django.views.generic import TemplateView + + +class MoocsIndexView(TemplateView): + """View for the MOOCs homepage that renders from a template.""" + + template_name = "moocs/index.html" diff --git a/csunplugged/package.json b/csunplugged/package.json index 19ba3dcfa..ebd533c58 100644 --- a/csunplugged/package.json +++ b/csunplugged/package.json @@ -5,12 +5,12 @@ "dependencies": {}, "devDependencies": { "ansi-colors": "4.1.1", - "autoprefixer": "10.3.6", + "autoprefixer": "10.3.7", "bootstrap": "4.6.0", "browser-sync": "2.27.5", "browserify": "17.0.0", "child_process": "1.0.2", - "codemirror": "5.63.1", + "codemirror": "5.63.3", "cssnano": "5.0.8", "details-element-polyfill": "2.4.0", "fancy-log": "1.3.3", @@ -30,9 +30,9 @@ "multiple-select": "1.5.2", "pixrem": "5.0.0", "popper.js": "1.16.1", - "postcss": "8.3.8", + "postcss": "8.3.9", "postcss-flexbugs-fixes": "5.0.2", - "sass": "1.42.1", + "sass": "1.43.2", "scratchblocks": "uccser/scratchblocks#master", "vinyl-buffer": "1.0.1", "yargs": "17.2.1" diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/Error Detection and Correction - Will It Scan.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/Error Detection and Correction - Will It Scan.pdf new file mode 100644 index 000000000..42f045306 Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/Error Detection and Correction - Will It Scan.pdf differ diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Heuristics lesson - Bingo board.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Heuristics lesson - Bingo board.pdf new file mode 100644 index 000000000..3a3426c38 Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Heuristics lesson - Bingo board.pdf differ diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Heuristics lesson.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Heuristics lesson.pdf new file mode 100644 index 000000000..fc26cebe7 Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Heuristics lesson.pdf differ diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - The Stroop effect lesson - Printable.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - The Stroop effect lesson - Printable.pdf new file mode 100644 index 000000000..f5b2afcfa Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - The Stroop effect lesson - Printable.pdf differ diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - The Stroop effect lesson.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - The Stroop effect lesson.pdf new file mode 100644 index 000000000..409aae3a8 Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - The Stroop effect lesson.pdf differ diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Think-aloud lesson.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Think-aloud lesson.pdf new file mode 100644 index 000000000..06cb01f2d Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/HCI - Think-aloud lesson.pdf differ diff --git a/csunplugged/static/files/mooc/teaching-computational-thinking/Image representation - Exploring pixels worksheets.pdf b/csunplugged/static/files/mooc/teaching-computational-thinking/Image representation - Exploring pixels worksheets.pdf new file mode 100644 index 000000000..42f0a50ad Binary files /dev/null and b/csunplugged/static/files/mooc/teaching-computational-thinking/Image representation - Exploring pixels worksheets.pdf differ diff --git a/csunplugged/static/img/classic-cs-unplugged-logo.png b/csunplugged/static/img/classic-cs-unplugged-logo.png deleted file mode 100644 index 22876d275..000000000 Binary files a/csunplugged/static/img/classic-cs-unplugged-logo.png and /dev/null differ diff --git a/csunplugged/static/img/cs-unplugged-classic-logo.svg b/csunplugged/static/img/cs-unplugged-classic-logo.svg new file mode 100755 index 000000000..c8b0585ac --- /dev/null +++ b/csunplugged/static/img/cs-unplugged-classic-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csunplugged/static/img/moocs/edx-logo.svg b/csunplugged/static/img/moocs/edx-logo.svg new file mode 100644 index 000000000..2ebc61cf8 --- /dev/null +++ b/csunplugged/static/img/moocs/edx-logo.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/csunplugged/static/img/moocs/edx-logo.svg-LICENSE b/csunplugged/static/img/moocs/edx-logo.svg-LICENSE new file mode 100644 index 000000000..b638cd168 --- /dev/null +++ b/csunplugged/static/img/moocs/edx-logo.svg-LICENSE @@ -0,0 +1,2 @@ +edX logo is a registered trademarks of edX Inc. All Rights Reserved. +Used with permission from https://www.edx.org/media-kit diff --git a/csunplugged/static/img/moocs/teaching-computational-thinking.png b/csunplugged/static/img/moocs/teaching-computational-thinking.png new file mode 100644 index 000000000..2af89f48d Binary files /dev/null and b/csunplugged/static/img/moocs/teaching-computational-thinking.png differ diff --git a/csunplugged/static/scss/website.scss b/csunplugged/static/scss/website.scss index a719ac797..943aa76a6 100644 --- a/csunplugged/static/scss/website.scss +++ b/csunplugged/static/scss/website.scss @@ -442,7 +442,7 @@ body { } ol, ul { - margin-bottom: 1rem !important; + margin-bottom: 1rem; } .large-text { @@ -485,6 +485,12 @@ ol, ul { background-color: mix($educator-colour, $white, 10%); } } + &-educator-4 { + border-top-color: mix($educator-colour, $white, 40%); + &:hover { + background-color: mix($educator-colour, $white, 10%); + } + } &-at-home-1 { border-top-color: $at-home-colour; &:hover { @@ -902,3 +908,15 @@ button:hover .icon-search { height: 2.5rem; width: auto; } + +#classic-cs-unplugged-logo { + height: 5rem; +} + + +// MOOCs + +.edx-logo { + height: 3rem; + margin-left: 0.5rem; +} diff --git a/csunplugged/templates/general/index.html b/csunplugged/templates/general/index.html index e1d10925a..387b3fe45 100644 --- a/csunplugged/templates/general/index.html +++ b/csunplugged/templates/general/index.html @@ -20,16 +20,16 @@

- {% if LANGUAGE_CODE == "en" %} - - COVID-19: Click here to see how to use CS Unplugged at home - - {% endif %}

{% blocktrans trimmed %} 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. {% endblocktrans %}

+ {% if LANGUAGE_CODE == "en" %} + + New online course for educators available - Click here to learn more + + {% endif %}
@@ -76,6 +76,11 @@

{% trans "Curriculum Integrations" %}

+ +

+ {% trans "Online Courses" %} +

+

At home

@@ -102,10 +107,8 @@

The original activities are still available at

- -

- {% trans "Classic CS Unplugged" %} -

+
+
diff --git a/csunplugged/templates/generic/classic-unplugged-button.html b/csunplugged/templates/generic/classic-unplugged-button.html index 66098e755..fac630b19 100644 --- a/csunplugged/templates/generic/classic-unplugged-button.html +++ b/csunplugged/templates/generic/classic-unplugged-button.html @@ -18,7 +18,7 @@

{% trans "Translations for some activities available at the Classic CS Unplu
- + {% trans
diff --git a/csunplugged/templates/moocs/index.html b/csunplugged/templates/moocs/index.html new file mode 100644 index 000000000..c3d6c1a91 --- /dev/null +++ b/csunplugged/templates/moocs/index.html @@ -0,0 +1,124 @@ +{% extends "base-educators.html" %} + +{% load i18n %} +{% load static %} +{% load django_bootstrap_breadcrumbs %} + +{% block title %} + {% trans "Online Courses" %} +{% endblock title %} + +{% block breadcrumbs %} + {% breadcrumb "Online Courses" "moocs:index" %} +{% endblock breadcrumbs %} + +{% block page_heading %} +

{% trans "Online Courses" %}

+{% endblock page_heading %} + +{% block content %} +

+ {% blocktrans trimmed %} + The following massive open online courses have been created by the CS Unplugged team. + {% endblocktrans %} +

+ +
+ + {# Teacher talking to students #} + +

Teaching Computational Thinking

+
Available in English
+ +
+
+

Summary

+

+ This course is for educators who are passionate about the future of their 7-12+ year old students and want to learn more about teaching computer science in an engaging and meaningful way. +

+ + +
+ {% trans "Click here to view course on" %} + +
+
+
+
+

Course contents and resources

+ + +
+
+ +
+ +

edX logo is a registered trademarks of edX Inc. All Rights Reserved.

+ +{% endblock content %} 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/unit-plan/lessons/binary-search-trees-ct-links.md index 60500032f..169f5b7b0 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/unit-plan/lessons/binary-search-trees-ct-links.md @@ -107,7 +107,7 @@ These trees rely on the logic that if we are following one branch, then one can This is because of the simple relationship between the nodes in the tree, and the nodes that they connect to. As with the data we could use in a sorting network, any data can be put into a binary search tree as long as it has what is called a "transitive relation". For example, numbers have a transitive relation based on "less than": the number 5 is less than 10, and 10 is less than 15, which means that 5 must also be less than 15. -In general, this transitive relation means: if a is less than b, and b is less than c, then a is less than c. +In general, this transitive relation means: if 'a' is less than 'b', and 'b' is less than 'c', then 'a' is less than 'c'. If items don’t have this relation then there is no logical way for us to figure out where to put it in the tree! Not all relations are transitive; for example, consider the relation "is standing next to". If Arnold is standing next to Tim, and Tim is standing next to Caitlin, it doesn't necessarily mean that Arnold is standing next to Caitlin. 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/unit-plan/lessons/binary-search-trees.md index 2271b406e..35cf5fbec 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/unit-plan/lessons/binary-search-trees.md @@ -260,7 +260,7 @@ If you run out of room, the tree doesn't have to be too tidy, as long as it's ob In practice, we'd usually have some information associated with the value that we're looking for (such as a person's details). You could build a binary search tree that looks up the population of cities, dates of historical events, or the definition of foreign words (an example is shown below). -Having students research the content of a disc and then place it provides an integrated learning opportunity. +Having students research the content of a disc and then place it, provides an integrated learning opportunity. {image file-path="img/topics/binary-search-tree-cities.png" alt="A binary search tree where the nodes are cities with their population number, sorted in alphabetical order."} 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/unit-plan/unit-plan-ct-links.md index 629a1619f..7ba99377f 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/unit-plan/unit-plan-ct-links.md @@ -73,7 +73,7 @@ Different data structures have different strengths and weaknesses, there is no m So when we decide which data structure(s) to use when solving a problem we need to take into account several factors, for example: what type(s) of data are we going to be using? Is speed important for this task? Is it important that we don’t use too much computer memory? Is it ok if it is occasionally slow if that means most of the time it is really fast? For example, binary search trees work well if items are added to them in a random order, but they can become very inefficient if you add data in an already sorted order! Evaluating how fast these algorithms will be with different kinds of input will be crucial to understanding how fast a computer program will work in these different situations. -The factors you need to think about will be different for different problems, and in some cases there are factors which will only matter if you are actually programming your solution (such as how much memory it uses). +The factors you need to think about will be different for different problems, and in some cases there are factors which will only matter if you are actually programming your solution (such as how much memory it uses). When we select which data structures to use we must evaluate them based on these factors, and choose the one we think is most suitable for the problem. When we create our data structures we also have to evaluate the individual parts of them to ensure they function well. For example, it is important to evaluate how random the hash function that a hash table uses is. @@ -84,7 +84,7 @@ For example, it is important to evaluate how random the hash function that a has # Logic -To design data structures we must use our logic skills. +To design data structures we must use our logic skills. For example, in a binary search tree, each decision going through the tree is based on the logic that a range of values can only be down one particular branch because of the rules around how the tree was constructed. We can extend logical reasoning to work out where the smallest value in a tree is, and also, for a given value, where the next largest one will be. In hash tables, we need to design the hash function we choose, as it has a large impact on how we store data in the hash table, and this in turn has a large impact on how quickly we can search through it. @@ -99,6 +99,6 @@ Therefore a good hash function should ensure that every piece of data will end u In some of the examples we added the digits of a value together to get a hash value. But what would happen if we multiply them together? This might appear to produce a better range of values, but (applying some logic) we can realise that if any of the digits is a zero, then the hash total will be zero, so this value will become more likely to occur. -There are many other combinations of arithmetic we could apply, but good reasoning needs to be applied to make sure that it doesn't turn out to hash many values to the same place. +There are many other combinations of arithmetic we could apply, but good reasoning needs to be applied to make sure that it doesn't turn out to hash a large number of values to the same place. {panel end} 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/unit-plan/unit-plan.md index b0984d535..d74cb1042 100644 --- a/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan.md +++ b/csunplugged/topics/content/en/data-structures-for-searching/unit-plan/unit-plan.md @@ -23,7 +23,9 @@ Sometimes you just need to know if the key exists; for example, a spelling check ## Digital Technologies | Data Structures One of the data structures that will be explained in this unit is the **binary search tree**; these have a lot of the same benefits as sorted lists, but make it a lot easier to keep the data organised. -Trees in general come up a lot in computer science because they provide a very structured way to keep information organised - even the structure of folders used on a personal computer is a type of tree - so studying a particular kind of tree called a binary search tree is a good introduction to ideas that keep coming up when developing software. +Trees in general come up a lot in computer science because they provide a very structured way to keep information organised. +The structure of folders used on a personal computer is a type of tree - so studying a particular kind of tree called a binary search tree is a good introduction to ideas that keep coming up when developing software. + Another structure that we introduce in this unit is a **hash table**. These are similar to a list of data, but data is placed at very specific points in the list, rather than being in a completely random or a completely sorted order. The main idea of a hash table is that you can apply a simple calculation (called a hash function) to the key that you're looking for, and that will tell you where to look for it in the hash table. @@ -78,7 +80,7 @@ Typically it’s a login name, customer number, product name, or anything that s Binary search trees are also the basis of a commonly used structure where the relationships between the keys are important - especially if you're looking for values similar to the one being searched for. Hashing, and using hash functions supports programmers to make really fast searching algorithms. This approach might seem almost fanciful at first because it relies a lot on randomness - making a very random value by chopping up and mixing the key you're searching for, and hoping that not too many other things come out to the same value. -Fortunately the statistics around this are well understood, and people can design very fast and efficient hash tables. +Fortunately the statistics around this are well understood, and people can design very fast and efficient hash tables. {image file-path="img/topics/data-structures-for-searching-searching-girl.png" alt="Using a search engine."} diff --git a/csunplugged/topics/content/en/learning-outcomes.yaml b/csunplugged/topics/content/en/learning-outcomes.yaml index e4bbdf119..931997847 100644 --- a/csunplugged/topics/content/en/learning-outcomes.yaml +++ b/csunplugged/topics/content/en/learning-outcomes.yaml @@ -54,10 +54,10 @@ organise-find-data-bst: text: Organise and find data using a binary search tree (BST). assess-efficiency-bst: - text: Assess the efficiency of a BST for searching. + text: Assess the efficiency of a binary search tree (BST) for searching. compare-efficiency-bst: - text: Compare the efficiency of a BST with other approaches to searching. + text: Compare the efficiency of a binary search tree (BST) with other approaches to searching. # DRAMA LEARNING OUTCOMES diff --git a/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan-ct-links.md b/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan-ct-links.md index 2a2a353e7..665515a31 100644 --- a/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan-ct-links.md +++ b/csunplugged/topics/content/en/sorting-networks/unit-plan/unit-plan-ct-links.md @@ -116,8 +116,7 @@ Could this problem be solved easier by a non-parallel system? A very important rule for the data that Sorting Networks can process is the data must have something called a transitive relation. -The transitive relation means: if a is less than b, and b is less than c, then a -is less than c. +The transitive relation means: if 'a' is less than 'b', and 'b' is less than 'c', then 'a' is less than 'c'. For example, numbers have a transitive relation: the number 5 is less than 10, and 10 is less than 15, which means that 5 must also be less than 15. Data must have this relation for a Sorting Network to be able to sort it. diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index a0f80b0cf..5559e12f2 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -52,9 +52,9 @@ services: - "traefik.http.routers.cs-unplugged-django.rule=${CS_UNPLUGGED_ROUTER_RULE}" - "traefik.http.routers.cs-unplugged-django.entryPoints=web" # Redirect non-www to www, only triggers in production swarm. - - "traefik.http.middlewares.redirect-non-www.redirectregex.regex=^https://csunplugged(.*)" - - "traefik.http.middlewares.redirect-non-www.redirectregex.replacement=https://www.csunplugged$${1}" - - "traefik.http.middlewares.redirect-non-www.redirectregex.permanent=true" + - "traefik.http.middlewares.cs-unplugged-redirect-non-www.redirectregex.regex=^https://csunplugged(.*)" + - "traefik.http.middlewares.cs-unplugged-redirect-non-www.redirectregex.replacement=https://www.csunplugged$${1}" + - "traefik.http.middlewares.cs-unplugged-redirect-non-www.redirectregex.permanent=true" networks: - uccser-public - backend diff --git a/docs/changelog.rst b/docs/changelog.rst index 2af443973..4f92c2dbc 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -23,6 +23,31 @@ 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. +6.4.0 +============================================================================== + +**Release date:** 17th November 2021 + +**Changelog:** + +- Add 'Online Courses (MOOCs)' area of the website: + - Added first course with links to supporting resources. + - Update notice on homepage to link to new course. +- Add new Classic CS Unplugged logo. +- Fix grammar in several lessons. +- Expand 'BST' acronym in learning outcomes. +- Add Django system check to required checks in testing and deployment pipeline. +- Set Traefik redirect middleware to have a unique name. +- Dependency updates: + - Update autoprefixer from 10.3.6 to 10.3.7. + - Update codemirror from 5.63.1 to 5.63.3. + - Update postcss 8.3.8 to 8.3.9. + - Update sass 1.42.1 to 1.43.1. + - Update django from 3.2.7 to 3.2.8. + - Update PyYAML from 5.4 to 6.0. + - Update flake8 from 3.9.2 to 4.0.1. + - Update coverage from 5.5 to 6.0.2. + 6.3.0 ============================================================================== diff --git a/requirements/base.txt b/requirements/base.txt index a523a4cc8..6f8ce8226 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,5 +1,5 @@ # Django -django==3.2.7 +django==3.2.8 django-environ==0.7.0 django-bootstrap-breadcrumbs==0.9.2 @@ -26,7 +26,7 @@ elasticsearch==5.5.3 django-widget-tweaks==1.4.8 # YAML Loading -PyYAML==5.4 +PyYAML==6.0 # System tools tqdm==4.62.3 diff --git a/requirements/test.txt b/requirements/test.txt index d40892e87..2428fb676 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,11 +1,11 @@ # Test dependencies # Check Python style -flake8==3.9.2 +flake8==4.0.1 pydocstyle==6.1.1 # Coverage Tools -coverage==5.5 +coverage==6.0.2 # Skip migration files for local testing django-test-without-migrations==0.6