INTRODUZIONE ALLA PROGRAMMAZIONE canale 1

Docente coordinatore e verbalizzante: MARCO SCHAERF

Obiettivi formativi

Obiettivi generali
L'obiettivo del corso di Introduzione alla Programmazione è di far acquisire allo studente alcune tecniche fondamentali della programmazione funzionale e imperativa attraverso il linguaggio di programmazione Python, nonché lo studio di modelli per l'informatica. Al termine del corso lo studente sarà in grado di scrivere programmi in Python che comportano l'uso delle tecniche di programmazione e delle strutture dati introdotte. L'acquisizione dei contenuti e, in particolare, della capacità di programmazione, richiede l'uso del calcolatore.

Obiettivi specifici
Conoscenza e comprensione: Lo studente acquisirà una migliore conoscenza dei concetti della programmazione e delle strutture dati attraverso lo sviluppo di programmi Python che risolvono problemi reali

Applicare conoscenza e comprensione: Lo studente sarà in grado di analizzare il problema, progettare la sua risoluzione e poi realizzarla attraverso l'uso del linguaggio Python.

Capacità critiche e di giudizio: Lo studente sarà in grado di individuare e valutare criticamente gli aspetti salienti sia dell'analisi e della realizzazione di programmi Python che della valutazione dei risultati.

Capacità comunicative: Il corso permette allo studente di poter presentare problematiche di analisi e risoluzione di problemi computazionali in campi ingegneristici di interesse applicativo.

Capacità di apprendimento: Il corso mira a favorire attitudini autonome di analisi e apprendimento orientate alla soluzione dei problemi.

Risultati di apprendimento attesi

Obiettivo del corso è di insegnare le basi dell'informatica e della programmazione e la loro applicazione alla risoluzione dei problemi

Prerequisiti

Il corso non presuppone alcuna conoscenza di programmazione, solo concetti di matematica di livello liceale

Programma dell’insegnamento

Introduzione all'informatica:
Macchina di Von Neumann, linguaggio macchina, rappresentazione di numeri interi e reali, caratteri ed altri tipi di dato, espressioni regolari

Programmazione in linguaggio Python:
programmare con numeri e stringhe, istruzioni di decisione e ciclo, funzioni, liste, files e dizionari

Testi di riferimento

Il libro di riferimento è uno dei seguenti (a scelta dello studente)

Horstmann, Necaise "Concetti di Informatica e fondamenti di Python", Apogeo Education; 2° edizione (17 giugno 2019)
ISBN-10 ‏ : ‎ 889163543X
ISBN-13 ‏ : ‎ 978-8891635433
Tipo Prodotto: Volume
Pagine: 786

Introduzione alla programmazione con Python. Dal pensiero computazionale al machine learning
di John V. Guttag (Autore), Gianluca Rossi (a cura di)
Editore ‏ : ‎ EGEA (6 ottobre 2021)
Lingua ‏ : ‎ Italiano
Copertina flessibile ‏ : ‎ 340 pagine
ISBN-10 ‏ : ‎ 8823823161
ISBN-13 ‏ : ‎ 978-8823823167

Modalità di svolgimento

Le lezioni si tengono in aula per la parte teorica e di esercitazioni ed in laboratorio per la parte pratica di programmazione

Frequenza

La frequenza non è obbligatoria, ma fortemente consigliata

Modalità di esame

L'esame consiste in una prova al calcolatore con una parte per verificare le conoscenze dei modelli dell'informatica ed una al calcolatore per verificare la capacità di programmazione

Esempi di domande

1) Scrivere una funzione che riceve in ingresso una lista l contenente coppie (tuple) di numeri interi e restituisce la lunghezza della più lunga sequenza di coppie con la proprietà che il secondo numero della coppia a sinistra è uguale al primo numero della coppia a destra.

2) Scrivere una funzione che riceve in ingresso il nome di un file di testo file, che potete assumere contenga solo caratteri alfabetici, spazi e ‘\n’, e una stringa s contenente solo caratteri alfabetici (cioè una parola) e restituisce un dizionario con chiavi i numeri di riga (contate a partire da 1) e valore associato a ciascuna chiave k la lista delle parole della riga k che contengono tutte e sole le vocali italiane (‘aeiou’) di s (incluse ripetizioni). Non dovete fare differenza tra lettere maiuscole e minuscole, quindi ‘Anna’ e 'casa' contengono le stesse vocali.

3) Scrivere una funzione che prende in ingresso un file di testo in formato csv file ed una lista l. Il file file contiene le informazioni sui programmi che devono essere eseguiti da un centro di calcolo e la lista l le informazioni sul computer disponibile per farli girare. Il file csv file ha il seguente formato:

NomeProgramma,SistemaOperativo,QuantitàRAM

dove NomeProgramma è il nome del programma da eseguire, SistemaOperativo è il nome del sistema operativo su cui questo programma deve girare e QuantitàRAM è la quantità minima di RAM (intera e misurata in GB) necessaria per far girare il programma.

La lista l ha il seguente formato [SistemaOperativo,NumeroCores,QuantitàRAMdisponibile]

Dove SistemaOperativo è il sistema operativo del computer, NumeroCores è il numero di Cores presenti nel computer e QuantitàRAMdisponibile è il numero (intero) di GB di RAM complessivamente disponibili su quel computer. Ogni programma deve essere eseguito su un core del computer secondo la seguente regola: I programmi vanno assegnati ai core seguendo l’ordine in cui si trovano nel file, devono essere assegnati solo se il computer ha il sistema operativo adatto ed un numero di GB disponibili sufficienti (ovviamente dopo che un programma è stato assegnato ad un core, quel core non è più disponibile ed i GB disponibili complessivamente scendono). Se nessun core soddisfa i criteri vuol dire che il programma non si può eseguire.
La funzione deve restituire un dizionario con chiave il nome del programma e valore il numero del core (da 1 a NumeroCores) su cui viene fatto girare. Se nessun core è disponibile per quel programma allora il valore sarà 'Nessuno'.

Dato Il numerale a 16 bit: 1011110010001000 in binario puro, esso è un numero < 10^6 ?
Dato Il numerale a 16 bit 0111111111111111 in binario puro, esso è un numero < 2^16 ?

  • Anno accademico2024/2025
  • Corso di studio a cui afferisce l’insegnamentoIngegneria Informatica e Automatica
  • Codice insegnamento10606868
  • CurriculumInformatica
  • Anno e semestre1º anno - 1º semestre
  • TipologiaBasic educational activities
  • AmbitoMatematica, informatica e statistica
  • SSDING-INF/05
  • Presenza obbligatoriaNo
  • Linguaita
  • CFU9 CFU
  • Durata complessiva90 ore
  • Distribuzione delle ore54 classroom hours, 18 training hours, 18 laboratory hours