FONDAMENTI DI PROGRAMMAZIONE A

Docenti: 
Codice dell'insegnamento: 
10187*4938*2017*2017*9999
Crediti: 
6
Sede: 
PARMA
Anno accademico di offerta: 
2017/2018
Settore scientifico disciplinare: 
INFORMATICA (INF/01)
Semestre dell'insegnamento: 
Primo Semestre
Lingua di insegnamento: 

Italiano

Obiettivi formativi

L'obiettivo principale del corso è quello di far acquisire allo studente le tecniche fondamentali della programmazione imperativa attraverso l'uso del sottoinsieme imperativo del linguaggio di programmazione C++. Il corso mira anche a fornire allo studente la capacità di applicare tecniche di analisi dei problemi per risolvere in modo algoritmico semplici problemi pratici (quali, ad esempio, problemi di calcolo, di ordinamento di dati, di gestione di archivi) e quindi tradurre tali soluzioni in programmi eseguibili. Infine il corso mira a sviluppare capacità di analisi, di astrazione e di scomposizione di problemi in sottoproblemi.
Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione

Il corso introduce i primi concetti relativi alla programmazione imperativa, con particolare attenzione alla comprensione delle tecniche algoritmiche di base dei linguaggi imperativi. Il testo di riferimento è in italiano, ma durante le lezioni viene utilizzata anche la terminologia in lingua inglese come avviamento alla consultazione di letteratura scientifica internazionale.

Capacità di applicare conoscenza e comprensione

Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici, spesso di carattere modellistico/matematico. Le esercitazioni che affiancano il corso sono incentrate sulla risoluzione di esercizi e problemi, con particolare riferimento alla realizzazione di programmi nel linguaggio C++. Molti metodi risolutivi vengono applicati a problemi di natura matematica e numerica e vengono presentati sotto forma algoritmica.

Autonomia di giudizio

Gli esercizi proposti relativamente alla parte teorica svolta a lezione possono essere affrontati individualmente o in gruppo e, spesso, possono essere risolti in modi molto diversi. Il confronto con i compagni di corso e l'ascolto delle soluzioni proposte da altri, nel lavoro a casa o durante gli svolgimenti in aula, favoriscono lo sviluppo di capacità specifiche per poter a chiarire le proprie argomentazioni e individuare strutture comuni tra i diversi approcci.

Abilità comunicative
Le discussioni in aula e durante le esercitazioni consentono di migliorare le capacità di comunicazione. Tali discussioni riguardano i metodi per risolvere i problemi proposti, evidenziando vantaggi e svantaggi dei diversi approcci proposti.

Capacità di apprendimento

Lo studio delle tecniche algoritmiche di base e la loro applicazione a problemi di natura eterogenea contribuiscono a realizzare negli studenti la capacità di apprendere in modo approfondito e non solo superficiale e ripetitivo. Le conoscenze così acquisite non sono mai rigide e meccaniche, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.

Prerequisiti

Nozioni di base su funzioni, insiemi ed espressioni logiche.

Contenuti dell'insegnamento

Nella prima parte del corso sono presentati concetti relativi all'architettura degli elaboratori e alla rappresentazione dell'informazione, con particolare attenzione alla rappresentazione dei numeri interi e dei numeri reali. Successivamente, sono introdotti i fondamenti della programmazione imperativa, utilizzando il linguaggio C++ come linguaggio di programmazione di riferimento. In particolare, sono sviluppate le nozioni di variabile, tipo di dato, algoritmo, espressione e sono introdotte le funzioni e le funzioni ricorsive.

Bibliografia

- D. Mandrioli, S. Ceri, L. Sbattella, P. Cremonesi, G. Cugola. Informatica arte e mestiere, McGraw-Hill, 2014.

Altro materiale:
- Esercizi caricati sulla piattaforma elly.unipr.it
- L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.

- R. Miller, D. Clark, B. White, e W. Knottenbel: An Introduction to the
Imperative Part of C++, 1999, disponibile su WEB all'indirizzo http:
//www.doc.ic.ac.uk/~wjk/C++Intro/CourseStructure.html#S
- Dispense disponibili su Web all'indirizzo http://people.math.unipr.it/gianfranco.rossi/Teaching/FondProgr/index.html

Metodi didattici

Buona parte del corso consiste in lezioni frontali svolte in aula. Il corso si avvale inoltre di esercitazioni svolte in aula dal docente e di esercitazioni svolte in laboratorio, durante le quali gli studenti saranno tenuti a risolvere alcuni esercizi proposti.

Modalità verifica apprendimento

L'esame consiste in una prova scritta e in una prova orale, a cui si accede solo previo superamento della prova scritta. Nella prova scritta sono proposti esercizi riguardanti tutti gli argomenti svolti a lezioni. Una volta superata la prova scritta, la prova orale dev'essere effettuata nello stesso appello.