Skip to content

ETS-Next-Gen/writing_observer

Repository files navigation

Writing Observer and Learning Observer

Writing Observer Logo

This repository is part of a project to provide an open source learning analytics dashboard to help instructors be able to manage student learning processes, and in particular, student writing processes.

linting

Learning Observer

Learning Observer is designed as an open source, open science learning process data dashboarding framework. You write reducers to handle per-student writing data, and aggegators to make dashboards. We've tested this in math and writing, but our focus is on writing process data.

It's not finished, but it's moving along quickly.

Writing Observer

Writing Observer is a plug-in for Google Docs which visualizes writing data to teachers. Our immediate goal was to provide a dashboard which gives rapid, actionable insights to educators supporting remote learning during this pandemic. We're working to expand this to support a broad range of write-to-learn and collaborative learning techniques.

Status

There isn't much to see here for external collaborators yet. This repository has a series of prototypes to confirm we can:

  • collect the data we want;
  • extract what we need from it; and
  • route it to where we want it to go (there's a lot of data, with complex dependencies, so this is actually a nontrivial problem)

Which mitigates most of the technical risk. We also now integrate with Google Classroom. We also have prototype APIs for making dashboards, and a few prototype dashboards.

For this to be useful, we'll need to provide some basic documentation for developers to be able to navigate this repo (in particular, explaining why this approach works).

This system is designed to be massively scalable, but it is not currently implemented to be so (mostly for trivial reasons; e.g. scaffolding code which uses static files as a storage model). It will take work to flush out all of these performance issues, but we'd like to do that work once we better understand what we're doing and that the core approach and APIs are correct.

Getting Started

As an early prototype, getting started isn't seamless. Run:

make install

And follow the instructions. You'll probably run into bugs. Work around the bugs. Then fix up the makefile and make a PR to address those bugs :)

Once that's done, run:

make

Again, fix up the makefile, and make a PR.

You can also go into the devops directory, which has scripts in progress for spinning up a cloud instance and managing flocks of Learning Observer instances.

Installing Writing Observer

To setup writing_observer on top of the learning observer platform you must go into modules/writing_observer and run:

sudo python setup.py develop

System requirements

It depends on what you're planning to use the system for.

The core Learning Observer system works fine on an AWS nano instance, and that's how we do most of our testing and small-scale pilots. These instances have 512MB of RAM, and minimal CPU. It's important that this configuration remains usable.

For deployment and more sophisticated uses (e.g. NLP) in larger numbers of classrooms, we expect to need heavy metal. As we're playing with algorithms, deep learning is turning out to work surprisingly well, and at the same time, requires surprisingly large amounts of computing power. A GPGPU with plenty of RAM is helpful if you want to work with more sophisticated algorithms, and is likely to be a requirement for many types of uses.

All Learning Observer development has been on Linux-based platforms (including Ubuntu and RHEL). There are folks outside of the core team who have tried to run it on Mac or on WSL, with mixed success.

Running on RHEL requires the following services:

  • REDIS
  • nginx.

bcrypt

A note on bcrypt. The code uses bcrypt for some internal password management. We are not including it directly in the install because it acts oddly across platforms so you may need to install some version manually.

Additional Notes

At present the system also uses static content that is served from a repo. This allows us to actually select different sources for the static data. This can also point to the current copy if necessary and can be configured as part of the creds.yaml file to generate the repo or add it on startup.

Contributing or learning more

We're still a small team, and the easiest way is to shoot us a quick email. We'll gladly walk you through anything you're interested in.

Contact/core maintainer: Piotr Mitros

Licensing: Open source / free software. License: AGPL.

About

Writing Observer and Learning Observer: A system for monitoring learning process data, with an initial focus on writing process data from Google Docs.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published