# Our progress so far

Time has really flown since we started this summer, so it’s really good for us to look back at what we have done so far, and also to try and write down a little about what we have planned for the future. This post will go through what our site does at present, and also what we want it to be able to do in the future.

What we’ve made What we are working on is a web app that will be hosted on a single server. Users (both students and educators) can log in, take lessons, answer questions, and most importantly receive intelligent feedback on the answers they give. Currently all but the last of those features work well. In the (not so distant) future we will add the capabilities for educators to track the progress of their students and be given feedback about what users are finding hardest.

The present home screen

Mistake analysis system In the final Mimir site users will be able to read through lessons and take randomly generated questions that the writer of the lesson has input. The mistake analysis system will look at the answer the user gives to a question and, if necessary, work out what mistake they might have made. One of the general strategies we are adopting to try and do this is breaking the answer to a question down into individual steps, then simulating the derivation of an incorrect answer by trying different combinations of common mistakes for the individual steps. Using this approach we hope to generate a bank of likely incorrect answers on the fly, which we can then use to provide the user with helpful information about where they might have gone wrong. So recently we have been working on implementing a parser for mathematical expressions that will allow us to do this automatically with any question given the answer in the form a symbolic expression. To use our prototypical example of the 2×2 matrix determinant $\text{det}\begin{pmatrix} a & b \\ c & d \end{pmatrix} = a\cdot d-b\cdot c$, which the parser will break down into the individual steps (multiplications, followed by a subtraction).

Community section One of the larger additions that differs from our early ideas is the community section, while we hope that our mistake analysis system will be comprehensive, we understand that sometimes a more human approach is necessary. The community section of the site is a question and answer forum that integrates fully with the main lesson and questions system, to allow users who are still in need of a bit of explaining to quickly and easily get what they need. We have designed the whole area to be similar in look and feel to the existing stackexchange/stackoverflow network of sites (and indeed many other q&a websites), this should make the site familiar to many users.

The community section

Sustainability ideas Recently we have been spending time working on our ideas for sustaining Mimir after this initial period is over. We have been weighing up a variety of options including looking for university adoption, donations/funding sources and advertising. Of these the first is the one we are most seriously pursuing, and identifying where we can provide value to institutions is a key challenge for us. Knowing how we can make Mimir more suited to universities and colleges is also an important problem for us to solve before we go forward. These issues have been our main focus over the past week.

We are fairly happy with what we have managed so far, and we hope to accomplish a lot more as we take the project further.

# Useful resources and support

So we’ve been a little slow on the blog updates lately, apologies for that. We were all hyped to write lots after the event at Campus London, but never quite got round to it. Now its time to fix this oversight with our next post on resources we have found helpful so far, and hopefully a few others to follow in quick succession.

We’ve used a lot of resources along the way, so its rather hard to keep track of them, nevertheless we hope this will be a fairly representative list of the sort of things we have found extremely helpful so far. We’ve split it into a few rough sections, from the more technical to some things we’ve found useful managing the project.

Coding related tools We’ve been using Git along with GitHub to keep our code properly distributed. Not only this but the issue tracker built in has been great for organising tasks that need doing, and keeping track of who is working on what.

The code itself We said a little about what languages and packages we are using previously, so of course the various tutorials, documentation listings and questions on support forums associated to Python, Django, Sage, jQuery, SQL, Flot and d3 (to name but a few) have been helpful to us on a daily basis. For testing and ensuring our code is up to scratch we have found the w3c validator to be very useful, along with using Selenium to automatically test.

Design aspects In terms of how we’ve designed the site we haven’t read as much material as maybe we did about the code elements, however we have certainly been influenced by existing sites, and the design principles employed there. For example, anyone familiar with stackoverflow will notice a resemblance between it and our community section.
So while we don’t have anything concrete to link to here, years of browsing the web and seeing what works and what doesn’t is definitely a useful resource for us when designing the look and feel of our site.

Technical papers We’ve had to do a lot of research and planning work for our mistake analysis system and in doing so reading papers (and books) on different algorithms we might be able to use to help accomplish our goal. As such various websites such as arXiv that host technical papers for free have proved very useful.

Last but certainly not least, the support from the JISC Summer of Student Innovation team and the experts who have advised us so far has been absolutely invaluable.

We’d also like to take this opportunity to say a big thank you to anyone involved in any of these resources, I think its safe to say we wouldn’t be anywhere near where we are with the project at the moment without all this help.

# Our development approach

I’m not sure what our exact development approach is, we looked at a list on Wikipedia, but couldn’t find anything that fitted what we do exactly.

You could say our approach is a mixture of Extreme programming and Rapid Application Development, so you might say we are… Extremely RAD.

Back in reality though, our approach is quite simple. We are proceeding in roughly four (overlapping) stages, as follows. First we have been getting some very concrete designs down in terms of data models, technologies used, how the different components of the site will work together and user interfaces. We have also been planning the general look and feel of the site. Next up is building up some of the more basic functionality of the site, allowing users to log in, take lessons, answer questions and view information about their progress. Then we will move on to developing the heart of the site, our mistake analysis system, which will without doubt be the most complex single part of the system. Finally when the site is fully functional we will set about making it look good, polishing rough edges and optimising for mobile devices.

Alex B doing rough UI sketches

Recently we have finished up most of the core feature designs and implemented lots of these in a fairly straightforward manner. We have pretty much finalised all the different technologies we are going to use to make this happen, such as MathJax to make the maths look pretty.

We are very keen on not reinventing the wheel, using web development frameworks and python libraries wherever we can. We hope this will allow us to spend as much time as possible on the really interesting and difficult parts of the project, but at the same we should be able to have high quality code throughout.

Alex W doing more UI design

We currently have our in development code hosted on Github, so we can keep our code safe, and share it between us. At present we are keeping it as a private repository (mostly for security at present, we have a lot of secret keys floating around in our settings files). We do hope in the future to open source the project properly when the time is right (a bit of a way off yet though).

As mentioned above, one of the major challenges in the completion of this project is the mistake analysis system we hope to produce, we are spending a fair amount of time at the moment weighing up the advantages and disadvantages of different solutions to this problem.

We are all hoping to attend the event at Google campus next week, and look forward to meeting other developers and discussing our ideas.

# Introducing Mimir

Mimir is a new web based learning tool being developed primarily over the next three months.
This blog is our public development log, to keep anyone interested up to date with what we’re doing, and how we’re doing it.

The goal is to make a new website to help people learning Mathematics, Computer Science and as many other related subjects as possible. The site will consist of tutorials on a variety of topics, which students can work through. Then when they feel ready they can tackle a series of questions personally generated for them. When they answer a question incorrectly Mimir will use their answer to work out where they might have gone wrong and provide them with specific tips about how they could fix their solution. Mimir will also store data about the types of errors a user is making, and use this to inform it’s decisions on what questions to present to the user in future. We believe this approach will make a student’s learning experience a lot more effective when using the site.

We hope that the site will be of use to a wide variety of students, such as Economists, Physicists, Engineers, Chemists, Life scientists and of course Mathematicians and Computer scientists, to name but a few.

We have been funded through JISC elevator (for which we are very grateful) and hope to use this to make something really great over the course of the summer.

We will be blogging right here at mimirteam.wordpress.com though hopefully once we get a full website set up we can move this over there.
We will also be tweeting from @MimirTeam, though there isn’t much there just yet.

The development team consist of three and a half members, all undergraduates from the University of Warwick:
Alex Best
Jack Kirton
Alex Wendland
Half of John Tringham
Hopefully we will do another post shortly with small biographies of each of us.

So what have we done so far?
Well if you’ve seen our original proposal video you may have noticed a change of name. Indeed after much deliberation (and there really was a lot) we decided that Sigma, our first name, wasn’t exactly what we needed. We eventually settled on Mimir, from the Norse mythological figure Mímir. In Norse legend Mímir is beheaded in battle, but Odin keeps his head to give him advice. We think this story fits perfectly with what we are trying to achieve here, a website that doesn’t just give you questions and answers, but guides you through to a correct solution.

We’ve also for once resisted the urge to jump straight in to coding and have been researching different technologies we will require to make this a success. Currently we are planning on using server side Python, probably with Django, which we will couple with Sage to do some of the mathematical heavy lifting. As in the standard LAMP stack we will most likely use MySQL and the Apache HTTP Server.