Coding Tutor

From OLPC
Jump to navigation Jump to search
OlpcProject.png Rahul Bagaria

Idea

Game developers often include a full-fledged tutorial in their strategy/adventure games where a background voice or some text statements guide the player inside the game scenario itself and help him/her learn the nuances of the game in-situ. The idea is to create something similar for students & children wishing to learn programming in a way they feel as if they are playing some game.

Need

When students & children start to learn programming, they are exposed to a burgeoning plethora of IDEs and SDKs and other learning tools which teach them nothing on how to code. Often the documentation is hard to crack for the beginner and he needs to pour over books. Moreover when he does some mistakes, he gets convoluted error messages which he is unable to comprehend. Coding Tutor will act as a software teacher for such students on the XO platform and will make the chore of learning programming a fun task.

Summary

Coding Tutor is inspired by the Hackety Hack software which is a browser cum compiler for learning hacking in Ruby. It will be a self sustained tutorial environment having funky colored screens and a spoken + written tutorial which will teach and guide the user to code in an inalienable way. It will be using the GCC/G++ compiler and will initially be a C/C++ Tutor.

There are various levels of learning which can be there in this tutor. The user starts learning from the basics and tries whatever is taught at the same time in the coding area. When he goes on to the advanced levels the complexity of the Tutor increases as well which provides the user different areas & modalities to work in. The interface and the tutorial techniques are so simple to use that even a child in his early teens can easily learn basic nuances of coding and enjoy the lively experience.

Use Case Scenario

Sample scenario in which the user works:-

  • The user logs in the software which determines his level from the last use and suggests the next sections to learn on.
  • User selects the section and the Tutor starts the interaction by a speech tutorial and suggests what the user should try and practice.
  • User codes in the coding area, Tutor intelligently reads the user’s code and suggests tricks, tips and improvements to provide positive motivation.
  • If there are mistakes in the code, the Tutor understands the error messages, highlights the erratic code and explains the error to the user in a simple and easy way which the user enjoys.
  • The speech interface makes the task even more fun as the user gets comments from the tutor as if he was learning directly from a teacher.
  • User can quit the program as and when he wishes as the tutor stores the state of his work and resumes on his next login.

Proposed Features

Speech Interactivity

The tutor interacts with the user by reading a tutorial text using a TTS Speech Synthesis software. It also comments on and explains the errors in the code by reading the compiler generated errors, and suggests improvements if the user commits common programming errors. The tutor can do so as it will not be made as an IDE but a tutorial software so, it will know what is intended in the section and what mistakes can be made.

Error Highlighter

The tutor will highlight the exact errors in the code (based on analysis of compiler generated errors and corresponding line numbers), generate a sound to inform user of his mistakes and explain the corrections if possible, to the user.

Hints

During the practice sessions, if the user faces some problems, he can ask for hints from the tutor. The tutor will be having certain predefined hints in its database which it can provide. It can also look for certain pitfalls and warn the user of them.

Multi-Language Support

The tutorial will incorporate facility of different languages based on the TTS used and translations available. The tutorials will be translated into different languages using Google Translator and can be reviewed by language experts in the community.

Network Sharing

The user can share his codes and creations with friends using Telepathy, Avahi & Mesh Networking and sustain a creative and fun learning environment. The teacher in classroom can also share good codes with children to enkindle them.

Quiz Sessions

The tutor can hold quiz sessions for the user after he passes certain sections of the tutorial and suggest expected thought processes to him/her to encourage him for further learning, after he completes the quiz. The Quiz can include certain section specific coding questions from database.

Extensibility

This project can be extended in future to include advanced learning tutorials and other features:-

  1. Networking Tutorials: Tutorials regarding networking can be included in future for advanced learners where the software will include corresponding facilities for IPC and Socket Programming. The exercises in these tutorials can be made very interactive as the user will learn the practical aspects of Networking. The XO Mesh Networking for demos will also be helpful in this scenario.
  2. Speech Recognition & Multi modality: Speech commands and requests by user can be included in future using Speech Recognition APIs, in order to have complete interactivity with the tutor.
  3. Other Languages: Other programming languages can also be added to the Coding Tutor as the project develops further. Community developers working in different languages can add tutorials based on their knowledge. It can also include tutorials for scripting languages.

Resources

Hackety Hack

Speech Synthesis

Screen Reader