GithubHelp home page GithubHelp logo

uccser / cs-unplugged Goto Github PK

View Code? Open in Web Editor NEW
193.0 193.0 32.0 513.95 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%
computer-science cs-unplugged django education educational-materials

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

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.

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.

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

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

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.

Create Resource model

Each resource should have:

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

Related #7

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.

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.

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

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).

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

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.