Project

Back to overview

Beyond Watching: Next Generation Programming Tutorials Leveraging Interaction Data

English title Beyond Watching: Next Generation Programming Tutorials Leveraging Interaction Data
Applicant Mocci Andrea
Number 190305
Funding scheme Spark
Research institution Università della Svizzera Italiana
Institution of higher education Università della Svizzera italiana - USI
Main discipline Information Technology
Start/End 01.01.2020 - 31.12.2020
Approved amount 99'760.00
Show all

Keywords (7)

computing education; analytics; video tutorials; software engineering; IDE; interactivity; interaction data

Lay Summary (Italian)

Lead
Oltre la fruizione passiva: Video-Lezioni di Programmazione Interattive
Lay summary
Negli ultimi trent'anni, grazie agli sviluppi della tecnologia e la disponibilità di risorse online, l'esperienza di apprendimento è cambiata radicalmente. Nel contesto della programmazione, in particolare, è possibile oggi imparare nuove tecnologie e perfino ottenere titoli di studio grazie a piattaforme online, come per esempio i MOOC, corsi online aperti e disponibili ad un'ampia platea di potenziali studenti. 

Un veicolo di apprendimento fondamentale in questo contesto sono le video-lezioni, che permettono di apprendere una forma di conoscenza non solo concettuale (ad es. nozioni e concetti) ma anche procedurale, ossia imparare concretamente passo-passo quali azioni debbano essere effettuate per risolvere un particolare problema di programmazione.
Tuttavia, la video-lezione registrata consiste solamente nella registrazione delle slide, l'audio del docente che spiega, e al massimo dell'ambiente di sviluppo, chiamato in inglese integrated development environment (IDE), ossia il programma con cui si scrive il codice sorgente. 

Ciò rende fondamentalmente inaccessibile il contenuto che per lo studente è più prezioso, ossia il contenuto dell'IDE e la sua evoluzione durante la lezione. Essa non è meramente una "lavagna" con del contenuto statico, ma è un vero e proprio "laboratorio" con cui gli studenti potrebbero sperimentare e quindi imparare in maniera più efficace. Tuttavia, se la lezione è solo una mera registrazione video, lo studente per poter sperimentare deve replicare la lezione manualmente, incorrendo in potenziali errori e fondamentalmente distraendosi.

La visione di questo progetto è quella di costruire sistemi per produrre e per usufruire di video-lezioni di programmazione che siano interattive, e che permettano non solo di navigare lo stato della lezione e accedere al testo del contenuto dell'IDE (come fosse una "lavagna") ad ogni momento del tutorial, ma anche di ispezionare il contesto in ogni momento, fare ipotesi e verificarle, e poter così sperimentare in maniera attiva. L'idea è quella di sfruttare, in fase di registrazione e di riproduzione del tutorial, i dati di interazione con il sistema di sviluppo, ossia quei dati che il docente genera 'implicitamente' mentre programma. In questo modo, è possibile ricostruire in ogni momento lo stato della lezione non solo nel suo lato audio-video ma anche nelle sue componenti con cui lo studente vorrebbe sperimentare, come lo stato del sistema di sviluppo.
Un sistema del genere potrebbe cambiare e migliorare il modo in cui la programmazione viene insegnata in un contesto sia educativo sia di avanzamento e miglioramento professionale.
Direct link to Lay Summary Last update: 12.12.2019

Responsible applicant and co-applicants

Employees

Abstract

In the past 30 years, thanks to advances in technologies and availability of online resources, the learning experience dramatically changed. In the context of programming education and learning, it is nowadays possible to learn new technologies and acquire degrees exclusively using online resources, as in massive online open courses (MOOCs). Among online resources, a prominent role is covered by video tutorials, since they can be used to disseminate a form of procedural knowledge - through interactive, step-by-step experiences - which is essential to learn programming. In fact, learning how to program requires not only acquiring a base of conceptual knowledge from computer science, but also understanding how to concretely combine the available activities, like editing and navigating source code, to effectively realize a given programming task. Similarly, learning a new complex framework or API requires a programmer to learn both the high-level concepts behind the design choices and the concrete mechanisms to compose the APIs.Both programming tutorials and lectures consist of a video recording of the instructor and a combination of slides and screencasts of the IDE with voice-over instructions. Thus, a fundamental part of the tutorial and of the lecture - that is, the content of the IDE itself and its evolution during the tutorial - is not accessible. This inherently undermines one of the fundamentals mechanisms of learning, which is experimentation. If the developer / student wants to experiment with the code of the tutorial, she needs to resort to some additional material - like code in a repository - provided by the instructor, which represents the state of the code at a given point in time, normally the end of the tutorial.Recent approaches introduced the idea of integrating video tutorial recording with interaction data recording, \ie the recording of the activities performed by a developer in the IDE. This conceptually allows to replay the status of the tutorial code at given snapshots during the video itself. However, these snapshots are relatively coarse grained, and more importantly they are not integrated with the IDE where the tutorial or the lecture has been recorded. Thus, they simply allow to navigate the evolution of the code during the tutorial, but they do not enable full experimentation. Whenever the student wants to experiment with the code on the tutorial, she needs to effectively replicate the state in an external IDE.With this proposal we want to investigate a next generation approach to author, deliver, and experiment with programming video tutorials and lectures by leveraging the research performed in the past few years in mining interaction data. In such an integrated platform, users are able to fully navigate the tutorial in all media dimensions, from video to slides, and from accompanying resources to code, enabling full experimentation by the learner. In our vision, the user can fast-forward and rewind the video stream of the instructor, the IDE state, and the execution environment. More importantly, each state can be inspected and modified at any time, for example to check the types of variables or the full context around the currently edited code. By also recording how the student actively peruses the lecture / tutorial, the instructor may better understand which parts require improvement or re-design. We claim that our envisioned interactive platform has the potential to significantly improve the way video tutorials are produced and perused and thus the way programming teaching and training are performed. Furthermore, our vision includes a set of promising extensions that can drastically impact further aspects of education and training. For example, we envision potential direct enhancements on the construction and execution of other artifacts, like programming assignments, technical interviews, and potentially entire course curricula.
-