Course info

Course Overview


Questo corso parla soprattutto di cose che sapete già, o che sapete già fare. Ed è qui la sua forza.

Infatti parla di algoritmi, che non sono altro che procedimenti costruttivi per ottenere risultati e realizzare idee. Dietro a quasi tutto quello che facciamo c’è un algoritmo. Questo corso svela gli algoritmi quotidiani che applichiamo inconsapevolmente quando calcoliamo una somma, quando cerchiamo la pagina in un libro, quando mettiamo in ordine degli oggetti, quando facciamo un disegno o quando cerchiamo la strada per raggiungere un luogo.

Ma oltre ad essere strumenti quotidiani, gli algoritmi sono una delle massime espressioni dell’intelligenza umana, un elemento fondamentale del nostro patrimonio culturale e una base solida su cui costruire il futuro. Un problema per cui esista una soluzione algoritmica non è più degno di essere chiamato tale. Così chi trova un algoritmo per risolvere un problema aperto lo risolve per sempre. Persino la complessità che attribuiamo ad un problema non è una sua proprietà intrinseca, ma è data dall’algoritmo che adottiamo per risolverlo. Quindi chi trova un algoritmo più veloce per fare qualcosa rende tutto un po’ più semplice, per sempre.

Conoscere gli algoritmi ci consente non solo di applicarli alla soluzione dei problemi, ma anche di comprendere gli aspetti computazionali della realtà che ci circonda e di dare vita alle nostre idee.

In questo corso impareremo a riconoscere gli algoritmi, a comprenderli e ad usarli. Vedremo quanto sia importante la rappresentazione dei dati di un problema per riuscire a risolverlo.

Potremmo parlare di tutto questo anche senza usare un computer, perché gli algoritmi hanno a che fare con il ragionamento, non con la tecnologia. Ma impareremo anche ad usare JavaScript per rappresentare i nostri algoritmi in modo talmente rigoroso da poterne affidare l’esecuzione a un computer.

Il corso è aperto a tutti e gratuito ed è rivolto soprattutto agli studenti delle scuole superiori e agli studenti universitari che non hanno la programmazione nel proprio piano di studi. Al termine del corso tutti i partecipanti riceveranno un attestato di completamento rilasciato dall'Università di Urbino in forma di open badge.

Vi aspetto!

Learning Objectives

Gli obiettivi di studio sono i seguenti:

  • Svelare la natura algoritmica dei procedimenti quotidiani
  • Offrire consapevolezza degli aspetti computazionali della realtà
  • Comprendere la relazione tra problema e algoritmo
  • Introdurre i concetti di complessità e correttezza
  • Introdurre le principali forme di rappresentazione dei dati
  • Introdurre e sperimentare i principi base della programmazione
  • Introdurre le principali strutture dati
  • Avviare alla programmazione in JavaScript
  • Fornire esempi pratici di algoritmi, guidando i corsisti alla loro comprensione e implementazione in JavaScript

Outcomes

I corsisti acquisiranno consapevolezza degli aspetti computazionali della realtà e strumenti adatti a descriverli e comprenderli. Comprenderanno il legame tra problemi e algoritmi, dando significato ai concetti di complessità e correttezza. Comprenderanno l'importanza della rappresentazione dei dati al fine dell'individuazione di soluzioni algoritmiche. Conosceranno algoritmi esemplificativi che operano su numeri e su strutture dati quali array, alberi e grafi.

I corsisti apprenderanno i principi base della programmazione (istruzioni, sequenze, ripetizioni, selezioni, procedure, funzioni, ricorsione) e faranno esperienza di programmazione in JavaScript. Questo consentirà loro di comprendere anche la relazione che esiste tra un algoritmo e la sua implementazione in un linguaggio di programmazione e sperimenteranno l'importanza del debugging come passo fondamentale dello sviluppo di un programma.

Certification and Additional Info

Il completamento del corso è certificato da un OpenBadge associato ad un certificato di completamento nominale e ad una evidenza dei criteri di rialscio da parte dell'Università di Urbino.

Course Structure

  • Lesson 1 - Introduzione16/10/2017
  • Lesson 2 - JavaScript23/10/2017
  • Lesson 3 - Rappresentazioni13/11/2017
  • Lesson 4 - Lavoriamo con pochi dati, che chiamiamo per nome27/11/2017
  • Lesson 5 - Complessità e correttezza08/01/2018
  • Lesson 6 - Lavoriamo con tanti dati, ma tutti in fila29/01/2018
  • Lesson 7 - Alberi e grafi26/03/2018
  • Lesson 8 - Conclusioni30/04/2018

Teacher

Alessandro Bogliolo


Alessandro Bogliolo is the coordinator of the School of Information Science and Technology at the University of Urbino, Italy, where he teaches Computer architecture and Digital platforms for land management.
His research interests include wireless sensor networks, crowd sensing, collective intelligence, and ultra-low power computing.
Since 2013 he has been actively promoting the diffusion of computational thinking skills, serving as Europe Code Week Ambassador, founding Code's Cool, and developing DIY unplugged games (Cody Roby). In 2015 he coordinated Europe Code Week. 
Alessandro Bogliolo is also serving as e-skills for jobs ambassador.