L'insegnamento introduce lo studente al computing for material science, fornendogli gli elementi di informatica e programmazione in ambito scientifico. Questo comprende l'acquisizione e utilizzo di risorse hardware e software per raccogliere dati ed elaborarli, anche mediante la progettazione e realizzazione di strumenti quali script o applicazioni in vari linguaggi di ampia diffuzione, che sfruttino eventualmente codice pregresso.
Acquisire familiarità con i concetti fondamentali del computing e programmazione nei sistemi di calcolo piu' diffusi nelle STEM con linguaggi imperativi procedurali e object-oriented e relative librerie, imparando a realizzare piccoli programmi o modificare codice gia' esistente.
La frequenza alle esercitazioni permettera' allo studente di
- acquisire familiarita' con sistemi operativi Windows/Unix based, relativi file system e esecuzione di codice in essi
- usare l'appropriato approccio imperativo/strutturale/procedurale/ad oggetti per sviluppare attraverso diversi linguaggi e strumenti via via piu' sofisticati codice adatto al raccoglimento, gestione, analisi e visualizzazione di dati scientifici.
- saper discutere il proprio codice e comprendere il codice costruito da terze parti - quali librerie, suggerimenti da parte di AI generative o colleghi di studio/lavoro
Non sono previsti prerequisiti specifici.
L'insegnamento si compone di lezioni di laboratorio in cui, dopo una breve introduzione agli argomenti, gli studenti svilupperanno, sotto la guida del docente, su macchine a disposizione oppure sul proprio pc personale, il codice del progetto sotto analisi.
Il programma verra' svolto attraverso progetti di successiva difficolta'. In essi verranno applicati:
1) Principi del pensiero computazionale
2) Introduzione agli ambienti di sviluppo e ai sistemi operativi
3) Introduzione a linguaggi di programmazione imperativi (e.g. C++, Python)
4) Strutturazione dell'execution flow e control flow di un codice
5) suddivisione procedurale di un codice e uso di api di libreria
6) uso di strutture dati sia custom che presenti in librerie terze
Indicazioni specifiche sulla bibliografia di riferimento verranno fornite dal docente all'inizio delle lezioni. Tutte le slides utilizzate durante le lezioni e altro materiale didattico saranno disponibili su aulaweb del corso.
Ricevimento: Per tutta la durata dell'insegnamento il docente e' a disposizione degli studenti in giorni e orari definiti all'inizio dell'insegnamento ed eventualmente su appuntamento tramite e-mail: guido.gagliardi@ge.infn.it o aulaweb. Al termine del corso il docente e' a disposizione degli studenti su appuntamento via e-mail: guido.gagliardi@ge.infn.it
L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy
L'esame consiste nella discussione di una tesina preparata dallo studente su un progetto di programmazione a scelta.
Scopo della prova di esame e' valutare la capacita' dello studente di progettare, scrivere, compilare, linkare, eseguire e debuggare un semplice codice, e la capacita' di adattare il proprio codice alle esigenze di persone terze. L'idoneita' verra' verificata in base ai punti elencati.
Rivolgersi al docente per ulteriori informazioni non comprese nella scheda insegnamento