Currently no MOOCs (Massive Open Online Courses) or e-learning systems support a peer instruction method, which has shown some advantages over traditional lecture-based learning techniques. In this project I will implement a tool that helps instructors and their students experiment with this teaching method online. The project will mainly leverage WebRTC technology.
The aim of this project is to implement a peer instruction based e-learning system via a web page, using WebRTC technology. The main feature of that system will be quick switching between broadcasting mode (one teacher streams to many students) and small-group discussion mode (students in small groups stream to each other).
To reflect peer instruction's most important idea (engaging students into discussions with their peers), switching modes will be instant and under teacher's control.
Basic feature. One teacher is broadcasting (their camera stream, by default) to every student taking the class.
Teacher's view: teacher can toggle on or off 'tiles' representing all students' camera streams. This feature may be killing bandwidth, so tiles will be off by default.
Student's view: every student sees two information sources: a stream from their teacher (either camera or screencast) and (this is additional feature) embedded whiteboard, that can display links, text or hand writing from the teacher).
Basic feature. Students are split into small groups and stream in peer-to-peer session in order to discuss teacher's question or their quiz answers.
Student's view: small tiles with streams from other students in a group. If quiz feature gets implemented, one big box will contain students' answers for the question asked by the teacher. Layout will be similar to the Google Hangouts: one main, big tile (for quiz) and below smaller tiles with students camera streams.
Additional feature. While teacher shares knowledge with students via their camera stream, it is not being saved anywhere. And if it was recorded, extracting specific links or text is very cumbersome. Therefore I want to implement an extended whiteboard (that can actually work like a chat).
The teacher will be able to show students links to some additional websites, documents; it will be possible to share notes, LATEX equations and even hand writing.
Additional feature. It's really important to make sure that everyone has understanding of what teacher's saying. Internet connections are buggy, so students should be able to confirm their understanding of current topic. Another possibility is voting for a little tea break in the session.
Additional feature. Teacher should have the option to question students' knowledge by running fast quizes: students have short time to answer, then are switched to groups discussions.
I'll implement the front-end using WebRTC and some JavaScript framework (I'm considering Angular.js and Ember). For styling I'll use either Bootstrap or Zurb Foundation.
For the backend I will use Python web framework Flask (or Django if we opt for quick iteration), REST API.
Very important will be MCU (Multipoint Control Unit) software. It has to not only have low hardware footprint, but also be flexible and fast. One MIT-licensed candidate is Erizo.
Technology used for securely transferring video and audio on the peer-to-peer basis. Supported in newest browsers (except for Internet Explorer).
Most parts of the user interface will be displayed by JavaScript. This means that browsers will asynchronously communicate with the web server. A good practise for that is RESTful web services. This approach will help in future to write platform-specific mobile applications.
Necessary. WebRTC only works for direct peer-to-peer connection, so MCU is needed for broadcasting and small group discussion modes. Depending on MCU's performance, more instances might be needed for latter mode.
With help from web frameworks, I'll write the software so that it can be easily translated and localized.
I may at the beginning focus on Node.js technology for MCU, because Erizo's only library tights with Node.