MUNComputerScienceSociety / hackathon-ideas

Project ideas for future hackathons
1 stars 0 forks source link

Implementation decisions #6

Open arcrose opened 9 years ago

arcrose commented 9 years ago

It seems like now would be a good time to make some decisions regarding how we are going to implement each of the projects we're thinking of doing here.

I feel that each project is fairly well suited to an implementation as a web service, and that the graduation tracker could also be made as a desktop application. I think having some diversity in the set of tools we go into the hackathon using is important, but we also want to balance things so that participants could transfer knowledge picked up at or in preparation for the hackathon to as many projects as possible.

Here is how I think we could break down the implementation of each project:

Breakdown

Quiz System

Since Python is used on campus for a couple of courses already, and is very easy to learn and use, we could build a very simple web service using Flask and use symbolic/scientific computing libraries such as SymPy, SciPy, and NumPy mentioned in other issues for problem generation and answer/grade processing.

Project Submission Utility

I'm not entirely certain what @Gudahtt has in mind for this kind of thing, but I assume it makes sense to either have this be implemented as a very simple Node JS web service or a desktop application written in Java.

MUN API

Node JS is definitely a fantastic choice for implementing APIs, so I would say that, hands down, this is the best choice. Express is a pretty fantastic web framework, so I think a web based service, possibly accompanied by some utilities written in Python, would be a very natural way to tackle this project.

Graduation Progress Tracker

Based on the discussion I've had with a few people so far about how this might be implemented, it's likely that we will have to do some web scraping to regularly gather information about course offerings and/or graduation requirements from the university calendar/self serve. This could be built as a desktop application, but I think it might be safer if we limit the amount of web crawling we have to do and implement this as another web service. Again, I think Node JS fits here and, as this is the project I am most interested in working on myself, I think I would prefer to work with Node and be able to do the UI with HTML+CSS.

Preparation

Since the projects here are likely to be using:

  1. Python - Flask, Scipy, Sympy
  2. Node.js - Express
  3. Java

I think it would be sufficient to:

  1. Inform potential candidates about the project implementation decisions via Facebook and the mailing list.
  2. Provide resources for potential participants to learn the basics of Python and Node.js ahead of time (preferably something they can do in a couple hours).
  3. Give a couple of tutorials on Javascript/Node and Python/Flask.

I'm confident I could give at least a couple tutorials on JS/Node.js and even introductory Python. I'm not very familiar with Flask yet, but if I'm not mistaken, @Gudahtt is at least a little familiar with it. Would you be able and willing to give a tutorial or two on these?

Gudahtt commented 9 years ago

@Whymarrh has already started the MUN API - an organization has been created for it already: https://github.com/munapps

It seems that he has been using Node.js for what's been completed so far. I haven't looked at it in-depth yet though.


Regarding the submission script, I think it makes sense to implement it as a web service. IIRC, it used to be just a simple script that used a special directory on labnet for project storage? That doesn't seem like the best idea. A web service is simpler.

It'd be ideal to have both a web and a command-line interface. But that's not important.

I'd probably choose either Node.js or Flask. Both would be relatively easy to work with I'd think.


For the quiz system, I agree with your suggestions @redwire


For the Graduation progress tracker, it definitely makes sense for this to be build on top of the MUN API. Any web scraping required should neatly fit in that project. What you suggested sounded reasonable @redwire.

I haven't used Flask much, but I did spend some time looking into it. I'd definitely be willing to work on a tutorial over Christmas break.

I think we could safely stick with Javascript and Python, and leave Java out.

Gudahtt commented 9 years ago

@Chehri: (responding here because it seems more relevant to this discussion)

By the way, are we going to try to limit ourselves to Java? Just trying to think about how we can involve everyone.

I'm certainly not opposed to using Java. But Personally, I haven't found it to be as easy to work with when it comes to web projects.

If somebody wanted to propose a Java web framework to use, we'd certainly consider it (something along the same lines as Flask for python, or NodeJS for javascript). I've heard of a few pretty good Java web frameworks, but they all seemed pretty complex compared to Python or Javascript alternatives.