Line 34: |
Line 34: |
| | | |
| I would very much like to extend the idea to make a very flexible application and with some more features. I propose an application that would provide an easy interface to create web based(HTML5/CSS & JS, runnable on any supported browser) interactive tutorials that can be installed on any local (or remote host) server machine to host the created tutorials for learning programming languages. | | I would very much like to extend the idea to make a very flexible application and with some more features. I propose an application that would provide an easy interface to create web based(HTML5/CSS & JS, runnable on any supported browser) interactive tutorials that can be installed on any local (or remote host) server machine to host the created tutorials for learning programming languages. |
| + | |
| + | THE USER INTERFACE: |
| + | |
| + | The user interface would be implemented using HTML5 and JS. The GUI will mainly consists of two main parts namely the tutorial creator and the viewer. |
| + | INTERACTIVE TUTORIALS INTERFACE |
| + | |
| + | The application installed on a XO machine will communicate with an online Node.js based server and will allow safe running of the of the commands/programs requested by the user. |
| + | The application will use RESTful services to communicate with the servers. It is very critical to build a system that can safely run the code sent by user without sending the server machine into some unwanted state. The backend will be written using Node.js and it will be used to communicate with the operating system services and compilers. |
| + | |
| + | THE PROCESS FOR CREATING A TUTORIAL |
| + | |
| + | In the initial version there would be provision for creating two or three types of tutorials. The user will be provided with a wizard which must be filled detailing the design, content and behaviour for the tutorial. Then a JSON/XML file will be created containing these details. |
| + | User would have two options for either uploading the tutorial to the public web repository or to export it into some file. Once this file(s) have been uploaded to the server, it will auto generate some code and prepare a web page for its testrun from where the user can check whether it is working properly. |
| + | The user will also have to choose the pre-requisite environment tools tutorials. |
| + | |
| + | PROVISION FOR ADDED SUPPORT FOR MATLAB CODES: |
| + | |
| + | MATLAB is a very important tool available for any engineering/science field. |
| + | We can add support for running matlab/octave(.m) codes by using the octave interpreter. |
| + | |
| | | |
| * '''RUNNING A JAVASCRIPT CODE :''' | | * '''RUNNING A JAVASCRIPT CODE :''' |
Line 46: |
Line 66: |
| Interactive tutorials are a great tool for newbie learners. There is no better alternative to it which can help you learn programming languages etc. in no time. There are many programming languages and courses and video tutorials available that it is not possible for anyone to learn everything. But time comes when one needs to learn more than one thing within a time constraint and all of it by himself. We intend to generate a software platform where anyone with some knowledge of a language can create small interactive tutorials (Web based). If we consider video tutorials it takes time to learn and even more time to download in remote areas. Sometimes it also becomes boring that many students do not find interest in it and give up even before starting the task. | | Interactive tutorials are a great tool for newbie learners. There is no better alternative to it which can help you learn programming languages etc. in no time. There are many programming languages and courses and video tutorials available that it is not possible for anyone to learn everything. But time comes when one needs to learn more than one thing within a time constraint and all of it by himself. We intend to generate a software platform where anyone with some knowledge of a language can create small interactive tutorials (Web based). If we consider video tutorials it takes time to learn and even more time to download in remote areas. Sometimes it also becomes boring that many students do not find interest in it and give up even before starting the task. |
| * '''What technologies (programming languages, etc.) will you be using?''' | | * '''What technologies (programming languages, etc.) will you be using?''' |
| + | The main GUI shown above is build usingJavascript and HTML/CSS.It communicates with a host computer (can be the device running Sugar itself) which is aNodeJSbased server. Support for languages depends on the compilers which are installed in the host computer. I would probably be using the [https://github.com/adobe-research/theseus Thesus] library for visual debugging. |
| * '''What is the timeline for development of your project? The Summer of Code work period is from May 19 - August 22; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (27 June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.''' | | * '''What is the timeline for development of your project? The Summer of Code work period is from May 19 - August 22; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (27 June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.''' |
| | | |
Line 56: |
Line 77: |
| '''Week 4 - 5 :''' Create the GUI tool for teacher to make step by step tutorials. These would be stored in the server as JSON format so that it can be loaded by XO using the Interactive Shell. (or a REST api service, would make further improvements easy) | | '''Week 4 - 5 :''' Create the GUI tool for teacher to make step by step tutorials. These would be stored in the server as JSON format so that it can be loaded by XO using the Interactive Shell. (or a REST api service, would make further improvements easy) |
| | | |
− | '''Week 6 - 8 :''' Visual Debugger - Debugging skills are of greater importance than to just write the code. There will always be bugs and errors in a code freshly written. The application must have a visual debugger in the interactive JS Shell. I am thinking of using this tool for this purpose. https://github.com/adobe-research/theseus | + | '''Week 6 :''' Add support for HTML/CSS. Student would be able to write(edit) HTML/CSS code and see the corresponding changes. |
| + | |
| + | '''Week 7 - 8 :''' Visual Debugger - Debugging skills are of greater importance than to just write the code. There will always be bugs and errors in a code freshly written. The application must have a visual debugger in the interactive JS Shell. I am thinking of using this tool for this purpose. https://github.com/adobe-research/theseus |
| | | |
| '''Week 9 - 10 :''' Sanbox the code - Security is a very big concern for virtual execution environments. Create a code filtering system for checking code to make sure that the server doesn't crash. | | '''Week 9 - 10 :''' Sanbox the code - Security is a very big concern for virtual execution environments. Create a code filtering system for checking code to make sure that the server doesn't crash. |