Code Monkey home page Code Monkey logo

uccser / cs-unplugged Goto Github PK

View Code? Open in Web Editor NEW
193.0 17.0 32.0 513.97 MB

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.

Home Page: https://www.csunplugged.org

License: MIT License

Python 67.32% HTML 22.59% JavaScript 5.49% Shell 0.65% Dockerfile 0.42% SCSS 3.53%
cs-unplugged computer-science education educational-materials django

cs-unplugged's Introduction

CS Unplugged

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.

Production website Development website
master branch develop branch
Test and deploy Test and deploy

Documentation

Documentation for this project can be found on ReadTheDocs, and can also be built from the documentation source within the docs/ directory.

Contributing

We would love your help to make this resource the best it can be! Please read our contribution guide to get started.

Licence

The content of this project itself is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence (LICENCE-CONTENT file). This licence applies to the following contents of this project:

  • Markdown files located within the csunplugged/topics/content/ directory.
  • Images located within the csunplugged/static/img/ directory.

Third-party libraries used in this project have their licences listed within the LICENCE-THIRD-PARTY file, with a full copy of the licence available within the third-party-licences directory. If a source file of a third-party library or system is stored within this repository, then a copyright notice should be present at the top of the file.

The rest of the project, which is the underlying source code used to manage and display this content, is licensed under the MIT licence (LICENSE file).

Sponsors

A massive thank you to the following companies for supporting this project:

Google


Microsoft


Crowdin


Crowdin

cs-unplugged's People

Contributors

archielugtu avatar caitlind avatar courtneycb avatar crowdin-bot avatar dependabot-preview[bot] avatar dependabot[bot] avatar dhlambert avatar ealasdair avatar github-actions[bot] avatar jackmorgannz avatar jimbonothing64 avatar jordangriffiths01 avatar jqi26 avatar pyup-bot avatar ravenmaster001 avatar saranglove avatar uccser-admin avatar uccser-bot avatar willhbr avatar yamboy1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cs-unplugged's Issues

Restructure management commands within topics application

Currently there are two main commands within loadtopics.py:

  1. Loading learning outcome
  2. Loading topic content

Plus there are support functions used by both.

This management command file could be split in multiple files for ease of understanding/editing.

Process Kordac conversion result data

When a Kordac conversion takes place, the load script should:

  • Check images found are within static folder.
  • Check glossary entries are defined in the database.
  • Generate any required images (scratch images to be added in future Kordac release).

Create Resource model

Each resource should have:

  • Number as primary key (used as unique ID)
  • Slug (must be unique)

Related #7

Update load commands to update existing data instead of flushing data

Currently the loadtopics and loadresources commands require the database to delete (flush) all entries and then recreate them. It should instead update existing entries, create new ones, and delete old ones. This is required when users want to create a permanent connection to a resource, topic, etc.

Programming exercise solutions should be displayed on subpage

There should be a link on each programming exercise linking to the solution (with description above on why to view, either finished or need assistance).

Scratch solution is image.
Python solution should be text wrapped in non-selectable div.

Page also states this is one of many possible solutions.

Investigate hosting options

Investigate possible hosting options, including:

  • Google Cloud Platform
  • Microsoft Azure
  • Webfaction
  • etc

Need to check for:

  • Ease of use
  • Ease of scaling
  • Price
  • Performance

Support multiple page resources

Currently the create image function for a resource return a single image. Instead it should return a list of images, which would allow multiple page resources.

For example, for 4 pages of a single page resource the content would be:

Image output: [A]
Final document: A, A, A, A

For 4 pages of a three page resource the content would be:

Image output: [A, B, C], [A, B, C], [A, B, C], [A, B, C] 
Final document: A, B, C, A, B, C, A, B, C, A, B, C

Add front-end tools for development and production

Using front-end tools can allow us to do the following:

  • Compile Sass into CSS, including autoprefixer support.
  • Compile JavaScript with Browserify.
  • Add sourcemaps for our compiled JavaScript and CSS.
  • Minify images with imagemin.
  • Reload the browser automatically on JavaScript (and/or template) changes.
  • Refresh the CSS without reloading the browser on CSS changes.
  • Trigger system notifications when Sass or JavaScript has errors.
  • Minify JavaScript and CSS for production deploy.

and finally:

  • Generate a build folder where all the generated files are stored.

From: https://lincolnloop.com/blog/integrating-front-end-tools-your-django-project/

These tasks are extremely useful, especially the compiling of SASS into CSS. Using SASS for this project is essentially a requirement for easier web development (especially as we plan to use the SASS files from Bootstrap 4 Alpha 6).

There are many options that I'm discovering on how to solve this issue (for both development and production), I've compile a list of links (which I'll keep adding to) of useful resources to read. Quotes are copied from product websites.

This issue replaces #27 #28, but may be effected by the choice in #38.

Django Packages

Django Compressor

Django Compressor processes, combines and minifies linked and inline Javascript or CSS in a Django template into cacheable static files. It supports compilers such as coffeescript, LESS and SASS and is extensible by custom processing steps.

Django Pipeline

Pipeline is an asset packaging library for Django, providing both CSS and JavaScript concatenation and compression, built-in JavaScript template support, and optional data-URI image and font embedding.

Comparison

Task Runners

Grunt

Why use a task runner?
In one word: automation. The less work you have to do when performing repetitive tasks like minification, compilation, unit testing, linting, etc, the easier your job becomes. After you've configured it through a Gruntfile, a task runner can do most of that mundane work for you—and your team—with basically zero effort.

Gulp

gulp is a toolkit for automating painful or time-consuming tasks in your development workflow, so you can stop messing around and build something. By preferring code over configuration, node best practices, and a minimal API surface - gulp makes things simple like never before.

Comparison

Webpack

webpack is a tool to build JavaScript modules in your application. To start using webpack from its cli or api, follow the Installation instructions. webpack simplifies your workflow by quickly constructing a dependency graph of your application and bundling them in the right order. webpack can be configured to customise optimisations to your code, to split vendor/css/js code for production, run a development server that hot-reloads your code without page refresh and many such cool features.

Comparison

Related Reading

Modularise resource PDF generation

Process should be as follow:

  1. Detect if resource has generation available (if not, send 404 response).
  2. Add creation of PDF as job to job queue (Celery or Redis Queue)
  3. Setup base PDF resources
  4. Add resources generate image function to job queue
  5. Compress images to page size
  6. Render image data into PDF template
  7. Send response to user

Group resource files

Currently the Python logic, HTML files, CSS files, static files, and structure data is all stored in different locations. These should be grouped together.

Check usage of package.json

We have included a package.json file to easily install required packages for the gulp file.

However we have no Node/NPM experience so someone should check it's purpose, contents, and usage.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.