Vai al contenuto principale
Oggetto:
Oggetto:

Programmazione I

Oggetto:

Programming I

Oggetto:

Anno accademico 2023/2024

Codice attività didattica
MFN0582
Docenti
Alessandro Mazzei (Corso C + Corso C Turno 1 + Corso C Turno 2)
Luca Roversi (Corso B)
Attilio Fiandrotti (Corso A)
Valerio Basile (Corso B Turno 2)
Viviana Bono (Corso B Turno 1)
Elvio Gilberto Amparore (Corso A Turno 1)
Alessia Antelmi (Corso A Turno 2)
Corso di studio
[008707] Laurea in Informatica
Anno
1° anno
Periodo
Primo semestre
Tipologia
Caratterizzante
Crediti/Valenza
9 CFU - Numero di ore - Number of hours: 48 (in aula) + 30 (in laboratorio)
Crediti percorso 24 CFU
1
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto
Prerequisiti
Non è richiesto alcun prerequisito specifico alla programmazione. È consigliabile avere capacità di uso del calcolatore con sistema a finestre. È invece opportuno possedere conoscenze di base, quali i concetti di numero (naturale, intero, razionale, reale), di funzione, le quattro operazioni, elevamento a potenza, radice, esponenziale, logaritmo, piano cartesiano, calcolo algebrico elementare. Infine, è indispensabile una buona padronanza della lingua madre, possibilmente accompagnata da una propensione al ragionamento strutturato.
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): nessuno
No programming skills are required to take this course, however it is advisable to be comfortable at using a windowing system based personal computer. Instead, it is required to to have a grasp on the basic of maths, such as the concepts of number (natural, integer, rational, real), function, four basic operations, power elevation, root, exponential, logarithm, Cartesian plane and elementary algebraic calculation. Finally, a good mastery of the mother tongue is essential, possibly accompanied by a tendency to structured reasoning.
Preparatory Courses (providing the expected entry skills): none
Oggetto:

Sommario insegnamento

Oggetto:

Avvisi

DSA o Disabilità: Sostegno e Accoglienza in UniTO e supporto in sede di Esame
Oggetto:

Obiettivi formativi

Questo insegnamento concorre al raggiungimento degli obiettivi formativi specifici del Corso di Laurea in Informatica (L31), in particolare di quelli dell’area Informatica di base, mirando a fornire le conoscenze di base della programmazione e del funzionamento di un interprete virtuale, propedeutici alla quasi totalità dei corsi a seguire.

In compliance with the training objectives of the Corso di Laurea in Informatica (L31) and being part of the area “Informatica di base”, the present module aiming at providing the basic knowledge about programming and about how a virtual interpreter behaves, preparatory to almost all of the subsequent courses.

Oggetto:

Risultati dell'apprendimento attesi

CONOSCENZA E CAPACITÀ DI COMPRENSIONE. Acquisizione di metodologie di progettazione e sintesi di algoritmi di base.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE. Acquisizione dell'uso di strumenti linguistici e del calcolatore elettronico per tradurre algoritmi di base in programmi funzionanti.

AUTONOMIA DI GIUDIZIO. Acquisizione di criteri per stabilire correttezza e coerenza dei programmi sintetizzati rispetto a semplici specifiche.

ABILITÀ COMUNICATIVE. Acquisizione dei primi elementi del lessico che caratterizzano un informatico finalizzati al passaggio da una descrizione algoritmica informale, per descrivere la soluzione ad un problema, alla sua versione in linguaggio di programmazione vero e proprio.

CAPACITÀ DI APPRENDIMENTO. Acquisizione di capacità autonome di apprendimento e di autovalutazione della propria preparazione, atte ad intraprendere gli studi successivi con un alto grado di autonomia.

KNOWLEDGE AND UNDERSTANDING. Acquisition of methodologies for designing and synthesizing basic algorithms.

APPLYING KNOWLEDGE AND UNDERSTANDING. Acquisition of the use of linguistic and computational tools to translate basic algorithms into working programs.

MAKING JUDGMENTS. Acquisition of criteria for checking correctness and consistency of synthesized programs with respect to simple specifications.

COMMUNICATION SKILLS. Acquisition of the first elements of the vocabulary that characterize a computer scientist aimed at moving from an informal algorithmic description, to describe the solution to a problem, up to its translation into actual programming language.

LEARNING SKILLS. Acquisition of autonomous learning skills and self-assessment, suitable for undertaking further studies with a high degree of autonomy.

Oggetto:

Programma

  • Modello di memoria
    • Tipi elementari: struttura, operazioni
    • Comando “assegnazione”: espressioni a valori di tipo elementare
    • Stato con elementi di tipo elementare: definizione e proprietà
    • Tipo puntatore: struttura e operazioni come incremento, decremento, malloc(), free()
    • Stato con elementi di tipo elementare e puntatore
    • Comando “selezione” e verifica proprietà
  • Programmazione iterativa con cicli
    • problemi numerici su dati di tipo elementare: addizione, moltiplicazione, serie numeriche
    • problemi su dati di tipo puntatore/array: filtri, riorganizzazione elementi, conteggi
  • Funzioni e Frame-stack
    • struttura funzione e “signature”
    • meccanismo della chiamata: parametri attuali/formali, frame, variabili locali, frame-stack
    • rientro dalla chiamata: collocazione risultato, operand stack
    • classificazione chiamate
  • Ricorsione e correttezza
    • problemi numerici su dati di tipo elementare (addizione, moltiplicazione, quadrato, etc.)
    • problemi numerici su dati di tipo stringa
    • problemi c/controvarianti e dicotomici su array monodimensionali
    • problemi su strutture puntate
  • Schemi algoritmici e strutture dati avanzate
    • collezioni di dati di tipo eterogeneo (struct)
    • quantificatori alternati su coppie di array monodimensionali
    • quantificatori alternati su coppie di matrici
    • quantificatori alternati su array/matrici

  • Memory model

    • Elementary types: structure, operations

    • Assignment command: expressions to elementary type values

    • State with elementary type elements: definition and properties

    • Pointer type: structure and operations such as increment, decrement, malloc(), free()

    • State with elements of elementary type and pointer type

    • "Selection" command and property checking

  • Iterative programming with loops
    • Number problems on elementary type data: addition, multiplication, number series
    • problems on pointer/array type data: filters, element reorganization, counts

  • Functions and Frame-stack
    • function structure and "signature"
    • call mechanism: actual/formal parameters, frames, local variables, frame-stack
    • return from call: result placement, operand stack
    • call classification

  • recursion and correctness
    • numerical problems on elementary type data (addition, multiplication, square, etc.)
    • numerical problems on string type data
    • c/contravariant and dichotomous problems on one-dimensional arrays
    • problems on point structures

  • Advanced algorithms and data structures
    • collections of heterogeneous data types (struct)
    • alternating quantifiers on pairs of one-dimensional arrays
    • alternating quantifiers on pairs of arrays
    • alternating quantifiers on arrays/matrices
Oggetto:

Modalità di insegnamento

L'insegnamento si sviluppa in 48 ore di lezione in aula e di 30 ore di lezione in laboratorio. In entrambi i casi la frequenza è facoltativa. Le lezioni potranno essere costituite dall'esposizione di parti delle dispense o di elementi specifici di una tecnica algoritmica, da esercizi svolti sotto la guida del docente, dalla sintesi, per mezzo di un calcolatore, dello schema di un algoritmo, da piccole dimostrazioni di correttezza parziale di un algoritmo, etc.

The course comprises 48 hours of lectures and 30 hourse of laboratory. Attendance is optional for both parts. The lectures could involve explanation of parts of the course material o specific elements of an algorithmic technique, exercises guided by the teachers, synthesis of an algorithm schema with the computer, simple correctness proofs, and so on.

Oggetto:

Modalità di verifica dell'apprendimento

L'esame è essenzialmente uno scritto che si svolge al calcolatore o su carta. Esso verifica la capacità di saper:

  • progettare semplici algoritmi iterativi e ricorsivi;
  • codificare programmi che implementano algoritmi iterativi e ricorsivi;
  • rispondere a domande su aspetti fondamentali della programmazione, come correttezza o terminazione;
  • simulare il funzionamento di un linguaggio di programmazione a runtime

La somma dei punteggi degli esercizi proposti permetterà di ottenere voti sino al "30 e Lode".

The test is a written examination at the computer or on paper. The following skills will be evaluated:

  • design simple iterative and recursive algorithms;
  • write programming code to implement iterative and recursive algorithms;
  • answer questions on core aspects of programming, such as correctness and termination;
  • emulate a language behaviour at runtime

The total score of the exercises may sum up to "30 e lode".

Testi consigliati e bibliografia



Oggetto:
Libro
Titolo:  
Il linguaggio C. Fondamenti e tecniche di programmazione - IX ed. ITA 08/2022
Anno pubblicazione:  
2022
Editore:  
Pearson
Autore:  
Paul J. Deitel, Harvey M. Deitel, G. Maselli
Permalink:  
Obbligatorio:  
No


Oggetto:
Libro
Titolo:  
C Primer Plus, Sixth Edition
Anno pubblicazione:  
2013
Editore:  
Addison-Wesley Professional
Autore:  
Stephen Prata
ISBN  
Permalink:  
Obbligatorio:  
No


Oggetto:
Libro
Titolo:  
Problem solving e programmazione in C
Anno pubblicazione:  
2015
Editore:  
APOGEO
Autore:  
Jeri R. Hanly, Elliot B. Koffman, C. Bolchini, M. Carminati, A. Miele
Permalink:  
Obbligatorio:  
No
Permalink:  
Oggetto:

Dispense o lucidi ufficiali, distribuiti dai docenti.

Official notes and slides, provided by the teachers.



Oggetto:
Ultimo aggiornamento: 11/09/2023 08:41
Location: https://laurea.informatica.unito.it/robots.html
Non cliccare qui!