Code Monkey home page Code Monkey logo

worlddevelopment / exercise_database Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 2.0 12.42 MB

Content parts database for upload, automatically splitting, sharing, composition, conversion of e.g. sheets of exercises or solutions in ODT,DOCX,TEX,HTML,... Initiative of University of Wuerzburg Didactics of Mathematics.

Home Page: http://didaktik.mathematik.uni-wuerzburg.de

Makefile 0.84% Perl 33.13% CSS 0.58% XSLT 2.26% JavaScript 0.89% TeX 2.38% Shell 0.09% Perl 6 0.02% Ruby 0.01% Java 47.14% PHP 0.03% HTML 11.67% C 0.78% Lex 0.16%
teacher lecturer exercise sheet draft manage compose share class lecture

exercise_database's Introduction

Exercise Management System =: EMS | Exercise Database

Lizenz

CreativeCommons-Attribution-ShareAlike (CC-BY-SA) https://creativecommons.org/licenses/by-sa/4.0/ or newer

Teacher|Lecturer Exercise Database Features

  • upload DOCX|ODT|TEX|... sheet, split automatically into exercises
  • compose new sheet drafts from the potentially world wide exercise pool
  • preview
  • convert
  • share
  • download and print for your class|lecture.
  • tree, list views
  • realtime filtering of views
  • exercise <-> solution relationship detection
  • statistics (e.g. where which exercise was used)

Capable of converting, splitting sheets into exercises in all common file formats ODT, DOCX, HTML, TXT, RTF, ... These are then stored in a database and can be chosen and joined into a new sheet draft which can be modified at any time and is ready for download to print it for your class. Your own uploads as well as those referencing your name are shown when filtering the tree by your own exercises. screenshot of sheet preview, download

Tech

  • Apache Tomcat (local or online)
  • JavaServerPages, Beans; Java, JavaScript, CSS; (among others)

Dependencies

  • TODO

Credits

Code by J.R.I.Frühholz aka J.R.I.Balzer at service of Dr. Wolfgang Weigel, Prof. Dr. Hans-Georg Weigand of the University of Wuerzburg and later also under Prof. Dr. Frank Puppe, Information technology, Artificial Intelligence, also University of Wuerzburg.

Initial code capable to split TXT, TEX files with basic user interface and preview generation has been developed by a team around Artiom K. at a Software Practice Semester and during an employment at the Chair of Mathematics for Didactics.

Links

University of Wuerzburg Chair for Didactics of Mathematics Chair for Information technology VI, Artificial intelligence

About issues & being nice

Background

Splitting, joining random exercises in all kind of file types and then also matching exercise + solution which may be spread across sheets is a very complicated undertaking. We were the first to follow this deadly path. It included years of stagnation, months of disputes, crawling for other solutions across the globe at no avail, redesign anger and frustration for both W.Weigel and J.R.I.Frühholz.

Finally one single almost exmatriculated bad university student had the luck to become under the extreme pressure to get it done or be exmatriculated. It worked out but hair of all those participating turned into a greyish wilderness.

At this point I'd like to thank W. Weigel from the bottom of my heart as he stood by my side to defend me till the end. I do not deserve such great support! Thank you, Wolfgang!

Also I'd like to thank Prof. Puppe with his many wishes of things to be changed and features to be added (like local usage of this originally merely web tool or cross platform support for this originally Linux program, both goals were achieved within limitations) which - due to my last minute change of thesis topic - was just a few weeks before hand-in time.

It made the tool better! A lot of features were added (like SQLite, cross platform local execution support) and some fierce random crashes were fixed under this strain that may never have happened otherwise.

It was due to his final very generous decision to accept and let my thesis pass that chances to get the aerospace degree were kept up and finally succeeded thanks to periodically recurring easier exam at my last possible chance to let bad students like me pass.

At this point I'd wish to show my gratitude towards Dr. Kiessling, my friends that gave me shelter to recover from the car and quite a few other lecturers who were gentle or generous earlier as well as my employers Control theory, Didactics of Mathematics and Aerospace chairs that helped me a lot enduring quite a lot of extra stress: thanks Nils Gageik, Prof. Montenegro & consorts for this!

Project issues

So now with that background, if you find issues, e.g. not always perfect mapping of solutions to exercises, then be gentle, report them with instructions to reproduce or provide better code yourself.

exercise_database's People

Contributors

faerietree avatar

Stargazers

 avatar

Watchers

 avatar  avatar

exercise_database's Issues

A reusable generic module should avoid project specific package names. Rename aufgaben_db package.

It could be named in a generic or functional way:
e.g.

  • core
  • section_search
  • ...

If it is renamed to section_search, then specific Java files like Aufgaben_DB.java must be moved into another package if it is not generic or does not belong to section_search, else it could be renamed to Core.java.

If the package is renamed to core, then the library functionality could be isolated and called section_search.
Put the project onto the build path.
The source import path then were www.section_search.core.*.

A public domain prefix is employed as at.ciry does lose part of its meaning and international.worlddevelopment is long nor does a claim for worlddevelopment.int|ernational exist.

Support indexless|hierarchical generic content part declaration patterns.

Definitions

Indexless := no index numbering scheme, i.e. if a number occurs then it is either content or denoting a hierarchy in a markup and not a series. => numbers are explicit (no regular expression) => can only have an implicit ordering.
indexed := with index numbering scheme (i.e. explicite order)

Generic := filter by an expression (regex|wildcard|...)
Specific := explicit := filter by explicit content (repeating phrase)
Raw content := markup content
Content := plain text.content, i.e. the visual content like information text, media, ...

Content part declarations

  • [Content phrase filter] (matching all specific content parts within all hierarchy levels mixed)

    • generic|regex|wildcard

      • can match index (have an explicit series order)

        • all|mixed

          building[ ]*([\\d][ .->_]*)+:
          Solution[ ]*([\\d][ .->_]*)+:
          Exercise[ ]*([\\d][ .->_]*)+:
          Teacher[ ]*([\\d][ .->_]*)+:
          Text[ ]*([\\d][ .->_]*)+:
          
        • numbers+special chars only (have an explicit series order, hierarchy e.g. 1.1, 1.2, 2.1, ...)

          ([\\d].)+
          ([\\d])+
          

          Note: Number based index may need filtering of false positives due to numbers occuring in the content parts, too.)

      • guaranteed indexless

        Exercise[ ]*: // generic|regex|wildcard
        ...
        
    • specific|explicit (guaranteed indexless)

      • all|mixed
        Exercise:
        Teacher:
        Teacher (Physics):
        Teacher Physics:
        Structures :
        Structures:
        Text:
        Mission to achieve: // phrase is a sentence|clause
        
      • numbers+special chars only (e.g. 1.1:, 1.1:, 1.1:, ...)
        3:
        1.2:
        800:
        
  • [Raw content | Markup phrase filter]

    • specific|explicit, match only indexless (no order; numbers denote hierarchy depth; Matches only within one hierarchy level)

      #
      ##
      ---
      ===
      h1
      h2
      h:p level='1'
      header level="1"
      header level="2"
      ...
      
    • generic, can match index (Matching all series within all hierachy levels in one pass! [1])
      Note: This is the default case for XML base file formats. It requires keeping track of hierarchy depth counting in code because a node has no number attached! It can however have a style attached denoting depth.

      #+
      header[\\d]*
      h[\\d]*
      section
      
  • [Mixed: Markup & Content phrase filters]

    • specific, mostly indexless (matching all within one hierarchy level with a content filter:)
      #Breaking:
      # Tex
      # general information
      ## specific information
      
    • generic, match only indexless (Matching all series within all hierachy levels in one pass! [1])
      Note: For all XML base file formats this merged pattern is easier to achieve via postprocessing the respective content part's head after employing the generic, indexless filter.
      #+(^[<][\\w][>])*[Tt]ext
      #+[ ]?[Gg]eneral information
      

[1] Only of limited use as higher level elements have no content part if following strict sectioning. what remains is only the declaration unless there is summary|description content between e.g. 1. and its subsection 1.1 .

Purpose

They are essential for the worlddevelopment civilization editor, open bookkeeper bot, ...

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.