GithubHelp home page GithubHelp logo

a0-prw / thetamat Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 544 KB

A system of interactive LESSONS and EXERCISES for teaching and demonstrating elementary mathematics.

License: GNU General Public License v3.0

Common Lisp 97.90% Shell 0.02% CSS 2.08%

thetamat's Introduction

This is free software which you use entirely at your own risk.

Thetamat is 'The Teaching Assistant for Mathematics'.  It is a system
of interactive LESSONS and EXERCISES for teaching and demonstrating
elementary mathematics.  The lessons and exercises are made available
through a web-browser interface for use both in class teaching
situations by subscribed teachers and in individual practice and
lesson-review by their enrolled pupils.

The system guides pupils through the exercises, generating immediate
feedback for the pupil and progress reports which can be accessed by
the teacher.  The LESSONS provide both traditional text (containing
explicit instruction) and appropriate interactive elements which are
designed to support the understanding of the textual content.

Thetamat can supplement (and in some cases, depending on how the
teacher chooses to use it, replace) a traditional school textbook.
The program is not intended as a self-tutoring system, though more
mature, motivated students with good reading ability may be able to
use it in this way.

Thetamat may be particularly useful in teaching groups of pupils of
widely diverging levels of mathematical understanding, since it allows
pupils to progress at their own speed, while helping the teacher to
manage and monitor the pupils interaction with the teaching material.

The system is not intended to teach problem solving skills but aims to
assist in the teaching of basic skills and knowledge which are
prerequisite to developing mathematical problem-solving ability.

With the above caveat, the system is currently roughly complete for
lessons and calculation practice to about grade 5 or 6.

Requirements:

Thetamat has been developed and tested using SBCL on Linux, but it
should run anywhere with a Common Lisp, perhaps with some fiddling
with pathname stuff.  Only Firefox and Chrome(ium) browsers were
developed for, so it is unlikely that it will work properly with IE.
In addition, the current version of Firefox (25) on Linux suddenly
stopped registering keypress events, so if you use the scratchpad, you
will have to use the mouse and menu until Firefox magically starts
working again (I am not going to fix it).

Installing: 

1) place Thetamat in ~/quicklisp/local-projects/thetamat/

2) Change directory to ~/quicklisp/local-projects/thetamat/

3) run sbcl --load mkcore.lisp (can take a long time - only necessary
first time)

4) run sbcl --core at.core --load initialize-system.lisp

5) Visit https://localhost:4040 and login as teacher "a0_larry" with
password "foo" or pupil "a0_Hope" with password "foo"

6) Experiment.

Useage:

To setup new teachers evaluate (in package "AT") 

(define-teacher "Firstname" "Surnames" NPUPILS), 

where NPUPILS is how many pupils the teacher should be allowed to
enroll. (This returns a unique system name derived from Firstname) AND
THEN EVALUATE,

(setf (user-password "unique-system-name") (suggest-password)),

for a hard-to-crack password OR just give the password (a string)
yourself.

To delete a teacher (for example, a0_larry) evaluate (in package "AT"),

(delete-teacher-locally "a0_larry"), 

This also deletes any pupils the teacher might have enrolled.

Public Access:

You can run thetamat on a public server somewhere with appropriate
settings for the IP address, etc in Infrastructure/package.lisp. You
will have to have appropriate rules for iptables including something like:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 4040

Since 4040 ( an unpriviledged port ) is used by default.

Obviously, YOU WILL ALSO HAVE TO GENERATE YOUR OWN SSL PRIVATE KEY AND
CERTIFICATE, or acquire them from somewhere.  See ssl/var.sh.  Also,
I recommend using dtach (apt-get install dtach on debian) to run
thetamat as a "daemon", with an appropriate crontab @REBOOT entry for
restarting if the server goes down.

The Scratchpad:

You don't have to use the scratchpad, and neither do your pupils
unless you want them to or they want to.  It is a simple editor for 2d
mathematical expressions, allowing them to "work on screen" instead of
on paper. Press "?" in the scratchpad menu for a brief help screen.

Bugs and extensions:

You are welcome to fix bugs or write program extensions/improvements.
Send a pull request, thanks.

Background:

Thetamat was part of a commercial educational software system which I
was planning to market.  I ran out of time and money, and into some
issues in my personal life, which forced me to shelve my business
plans and find some work in the real world.  This accounts for some of
the weirdness in the code, since what you have here has been ripped
out of a larger system.  Other wierdnesses are probably the result of
unrefined design decisions coupled with a severe lack of time.  In
particular, I would change the crazy, insane topsort of the modules
which is way over the top.  I started a saner way of defining modules,
but did not have time to finish it. Look in Scripts/Lesson-texts for
how it was unfolding.  Also, I was learning along the way, so I would
do some stuff differently today.

thetamat's People

Contributors

a0-prw avatar

Watchers

James Cloos avatar  avatar

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.