Tecnologie dell'Informazione

Alberto Ferrari - uniPr

Ambito di ricerca

  • Computing Education Research:
    • Campo di ricerca multidisciplinare relativo all'apprendimento e insegnamento dell'Informatica
  • Campo specifico: introduzione alla programmazione (coding)
    • Programmazione → aspetto centrale dell'informatica

Computational thinking

Computational thinking will be a fundamental skill used by everyone in the world by the middle of the 21st Century. Just like reading, writing, and arithmetic.“

"Il pensiero computazionale sarà una competenza fondamentale utilizzata da tutti in tutto il mondo entro la metà del 21° secolo. Proprio come la lettura, la scrittura e l'aritmetica."

“... un approccio alla risoluzione di problemi, alla progettazione, e alla comprensione del comportamento umano che si basa su concetti fondamentali dell'informatica.”

J.M. Wing, Computational Thinking

Programmazione (coding)

e Pensiero Computazionale

  • La programmazione è certamente uno degli aspetti fondamentali (anche se non l'unico) del pensiero computazionale.
  • Lo sviluppo di applicazioni informatiche permette di introdurre fondamentali aspetti del computational thinking es:
    • astrazione
    • modellizzazione

Progetti per la diffusione del pensiero computazionale

  • Scratch
    • Semplice ambiente grafico interattivo
    • 24° posto fra i più diffusi linguaggi di programmazione (TIOBE)
  • code.org - progetto "Hour of Code"
    • “Every student in every school should have the opportunity to learn computer science”
    • 40 lingue diverse e 10 milioni di studenti coinvolti
  • Programma il futuro
  • App Inventor
    • Realizzazione di applicazioni Android per smartphone e tablet

Finanziamenti e diffusione

Puzzle programming vs Text-based programming

  • Puzzle programming
    • L'utente interagisce con un ambiente grafico collegando fra loro blocchi di diverso tipo in modo da formare un puzzle che rappresenta il programma.
    • I blocchi si collegano tra loro solo se soddisfano specifiche condizioni.
    • Forma e colore dei blocchi facilitano la comprensione dei possibili "incastri" e rappresentano le regole sintattiche del linguaggio
if (Count > 256) {
  Count = 0;
  alert("Game Over");
}

Moana - Atlantis

Google Blockly

  • Blockly è un progetto Google open source
  • E'una libreria JavaScript client side che mette a disposizione una API per creare blocchi e di definire per questi
    • forma
    • colore
    • modalità di connessione con altri blocchi
    • codice da generare nella conversione in vari linguaggi di programmazione

Google Blockly

  • Blockly for Web
    • Allows web pages to include a visual code editor for any of Blockly's five supported programming languages, or your own.
  • Scratch Blocks (developer preview)
    • Scratch Blocks builds on Google’s Blockly technology and the Scratch team’s expertise in designing creative interfaces for young learners.
  • iOS and Android (developer previews)
    • The Blockly team is actively working on achieving feature parity and supporting cross platform development.

Progetti

  • OOPP (Object Oriented Puzzle Programming)
    • Progettazione di applicazioni Object Oriented
    • Definizione di Interfacce, Classi (Attributi, Costruttori, Metodi)
    • Generazione della struttura di una applicazione Java
  • JOB (Java Object Blocks)
    • Integrazione di OOPP
    • Partendo da codice Java ottenere il puzzle della struttura delle classi
    • "Reverse engineering"
  • Tangible Block Programming
    • Blocci fisici
    • Collaborazione
  • ELDM (Electronic Logbook Data Mining)
    • Machine learning
    • Analisi dei dati dei registri elettronici

OOPP (motivazioni)-> Object-first

  • Insegnare agli studenti a pensare in termini di oggetti già nel momento in cui affrontano i primi problemi.
  • Prima dei tradizionali costrutti di selezione e iterazione vengono presentati i concetti fondamentali del paradigma ad oggetti:
    • incapsulamento
    • ereditarietà
    • polimorfismo
  • Il paradigma ad oggetti è difficile?

it is the switch that is difficult, not the object-orientation

Kolling, M., The Problem of Teaching Object-Oriented Programming

Object Oriented Puzzle Programming

  • Target
    • Corsi introduttivi all'informatica (per informatici)
    • Università - Scuola Superiore
  • Metodologia
    • Paradigma ad Oggetti (Object early)
    • Object first, Model first
  • Strumenti
    • Ambiente di sviluppo didattico
    • grafico (drag & drop)
  • Linguaggio (Metalinguaggio)
    • Block and Puzzle Programming

OOPP IDE

IDE (Ambiente di Sviluppo)

  • Struttura:
    • Toolbox
      • blocchi suddivisi in categorie e sottocategorie
    • Area di lavoro
      • puzzle formato dai blocchi
    • Area di testo
      • codice generato dai blocchi
      • nel linguaggio di programmazione selezionato

Puzzle → Programma

  • Creazione di blocchi di alto livello relativi ai token fondamentali della programmazione Object Oriented
    • classi
    • attributi
    • costruttori
    • metodi
  • Per ogni blocco è definita la conversione nel codice equivalente in vari linguaggi di programmazione
    • Java, Python, Javascript
  • Dal puzzle si genera la struttura dell'applicazione

Object Oriented Puzzle Programming

Caratteristiche

  • Approccio visuale e non testuale
  • Favorisce il superamento delle difficoltà sintattiche
  • Permette di concentrarsi sugli aspetti algoritmici e di progettazione
  • Semplicità
  • Ambiente didattico per un primo approccio alla programmazione
  • Utilizzabile senza software aggiuntivo (necessita solo di un browser)
  • Metalinguaggio grafico
  • Generazione codice multilinguaggio

Object Oriented Puzzle Programming

Limiti e scelte di progettazione

  • Utilizzo per un primo approccio didattico allo sviluppo di semplici applicazioni Object Oriented.
  • Caratteristiche avanzate, presenti per esempio nelle specifiche UML, non saranno gestite.
  • La programmazione testuale è sicuramente più indicata per lo sviluppo di applicazioni complesse.

Blockly is currently designed for creating relatively small scripts. ... Please do not attempt to maintain the Linux kernel using Blockly

Tangible Block Programming

  • In Tangible Block Programming i blocchi sono fisici
    • puzzle colorati e di varie forme di legno o di carta
  • I “giovani programmatori” li dispongono su di un tavolo collegandoli in modo da proporre la soluzione “algoritmica” di un semplice problema
  • Mediante la fotocamera di uno smartphone (o tablet) i blocchi vengono individuati (pattern recognition) e il puzzle viene riproposto sullo schermo del dispositivo sul quale è possibile mandare in esecuzione il codice e verificare il risultato dell’ “elaborazione”

Tangible Block Programming

Progetti in atto

  • OSMO
    • https://www.playosmo.com
    • More than 22,000 schools teach with Osmo
  • Google ProjectBlocks
    • https://projectbloks.withgoogle.com/

Tangible Block Programming

Tangible Blocks

Electronic Logbook Data Mining

  • Analisi con metodologie di machine learning i dati provenienti dai registri elettronici delle scuole medie superiori per ottenere informazioni che tendano a segnalare e anticipare situazioni problematiche e in generale essere di ausilio al miglioramento degli obiettivi didattici.
  • Collaborazioni:
    • DI UniPi - Dipartimento di Informatica dell’Università di Pisa
    • KDD Lab - Knowledge Discovery and Data Mining Laboratory
    • ISTI CNR - Istituto di Scienza e Tecnologie dell'Informazione – CNR
    • SoBigData

http://www.ce.unipr.it/eldm/

Attività didattica

  • Collaborazione stage estivo per studenti delle scuole superiori
    • “Bubble Bobble in Python”
  • Corso "Fondamenti di Informatica" laurea triennale in Ingegneria Informatica, Elettronica e delle Telecomunicazioni
    • lezioni
    • esercitazioni

Pubblicazioni

  • Ferrari, A., Poggi, A., & Tomaiuolo, M. (2016). Object oriented puzzle programming. Mondo Digitale, 15(64) (SCOPUS)
  • Ferrari, A., Poggi, A., & Tomaiuolo, M. (2017). Computational Thinking, Innovative Computational Environments and Coding. Encyclopedia of Information Science and Technology-4th ed. (pubblicazione 07-2017)
  • M. Amoretti, A. Ferrari, P. Fornacciari, M. Mordonini, F. Rosi, M. Tomaiuolo (2016) Local-First Algorithms for Community Detection. KDWEB 2016

Alberto Ferrari
Universita' degli Studi di Parma