Code Monkey home page Code Monkey logo

uebungsrahmen's Introduction

uebungsrahmen

Framework for web-based exercise, designed to be reusable between lectures. Set up to be used with WebGL/webgl-operate out of the box.

dependencies

See here (summary: you'll need Node.js version 14 or 16 and git).

graphical user interface

For the most common tasks, you can use the GUI:

# (once) install dependencies - for Node.js 16: add --legacy-peer-deps
npm install

# open ui
npm run ui

quick start (for students)

Note: ./uebung.bat is just a wrapper for node ./scripts/main.js. It should be able to run on both Windows and Unix. If it does not work on your system, just use the node command instead.

# install dependencies - for Node.js 16: add --legacy-peer-deps
npm install
# short version
npm i

# initialize working dir
./uebung.bat init --lecture "My Lecture" --directory "../exercises" --authors "authorId1" "authorId2"
# short version
./uebung.bat i -l "My Lecture" -d "../exercises" -a "authorId1" 

# import assignment
./uebung.bat import -i "./import/assignment01.tgz"
# short version (will select most recent archive inside ./import)
./uebung.bat im

# work on assignment
./uebung.bat start
# short version
./uebung.bat s

# export solution - see full command doc for note about included files
./uebung.bat export --assignment "id"
# short version (will select most recently imported assignment)
./uebung.bat ex

quick start (for creating exercises)

# install dependencies
./uebung.bat install
# short version
./uebung.bat i

# initialize working dir
./uebung.bat init --lecture "My Lecture" --directory "../exercises"
# short version
./uebung.bat i -l "My Lecture" -d "../exercises"

# you can use one of the examples to initialize an exercise
cp -R "./examples/webglOperateExample" "../exercises/myAssignment"

# edit the assignments.json file to include the exercise
# see examples/assignments.json for an example
cp "./examples/assignments.json" "../exercises/assignments.json"

# work on assignment
./uebung.bat start
# short version
./uebung.bat s

# export assignment
./uebung.bat exportAssignment --assignment "id"
# short version (will select most recently imported assignment)
./uebung.bat ex

grading

# import a submission, resetting the assignment before import
# note: only works if the assignment was imported,
# so probably not in your main code base.
./uebung.bat importSolution --input "./import/submission.tgz" --reset
# short version (will select most recent archive inside ./import)
./uebung.bat is -r

full command documentation

See here.

improvements over v1:

  • more generalized architecture -> usable e.g. for plain WebGL exercises
  • separate framework and exercises -> fw reusable between lectures
  • better support for embedded files (md reload, advanced latex)
  • controls visible when in fullscreen view
  • less dependencies
  • dark theme
  • add links to local files in assignment text

uebungsrahmen's People

Contributors

lukaswagner avatar bakoe avatar scheibel avatar

Stargazers

Daniel Limberger avatar

Watchers

 avatar  avatar

uebungsrahmen's Issues

webpack can't resolve theme_css

Reported on mac. The resolve info in webpack.config.js does not seem to work completely reliable. Maybe using DefinePlugin is more robust.

don't require a code entry point

Currently, the exercise.json property entry is required by the framework, but not every exercise type requires JS/TS code. For these cases, an empty source file must be provided. This should be changed by making the entry property optional.

file select breaks on linux

Clicking Choose directory on Linux, KDE Plasma does not work, throws the following error:
[9405:1114/122526.825411:ERROR:browser_main_loop.cc(269)] Gtk: gtk_native_dialog_run: assertion '!priv->visible' failed

This seems to be due to the following electron issue: electron/electron#31152

unicode not handled correctly

umlauts (and probably other unicode chars) in directory names are replaced with unicode escape codes, resulting in the paths being interpreted as subdirectories

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.