Vai al contenuto principale
Logo di Scuola Universitaria Interdipartimentale in Scienze Strategiche (SUISS)

SUISS - Struttura Didattica Speciale in Scienze strategiche

Scuola Universitaria Interdipartimentale in Scienze Strategiche (SUISS)

Logo di Scuola Universitaria Interdipartimentale in Scienze Strategiche (SUISS)
Oggetto:

PROGRAMMAZIONE

Oggetto:

PROGRAMMING

Oggetto:

Anno accademico 2024/2025

Codice attività didattica
INF0397
Docente
Gian Luca Pozzato (Titolare del corso)
Corso di studio
[f055-c504] Laurea Magistrale in Scienze Strategiche e Militari
[f055-c504COM] Laurea Magistrale in Scienze e Militari (Percorso Comunicazioni)
Anno
1° anno
Periodo
Primo semestre
Tipologia
Caratterizzante
Crediti/Valenza
9
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto
Prerequisiti

Non è richiesto alcun prerequisito specifico. È 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, 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 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, 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:

Obiettivi formativi


L'insegnamento si propone di fornire le nozioni e le competenze per la risoluzione di problemi computazionali. Gli allievi e allieve dovranno essere in grado di acquisire un modo rigoroso e analitico di ragionare e di affrontare i problemi. In particolare dovranno conoscere i concetti avanzati della programmazione e le strutture dei dati. Dovranno essere in grado di risolvere problemi computazionali con iterazione e ricorsione, nonché di implementarli per mezzo di un linguaggio di programmazione di alto livello.



The course aims to provide the notions and skills for solving computational problems. Students should be able to develop skills concernig a rigorous and analytical way of reasoning and dealing with problems. In particular, they will have to know the advanced concepts of programming and data structures. They will be able to solve computational problems with iteration and recursion, as well as implement algorithms by means of a high-level programming language.

Oggetto:

Risultati dell'apprendimento attesi


Al termine dell’insegnamento e dello studio individuale, ci si attende che studentesse e studenti siano in grado di risolvere problemi di programmazione, individuando l'algoritmo opportuno.

- CONOSCENZA E CAPACITÀ DI COMPRENSIONE: acquisizione di metodologie di progettazione e sintesi di algoritmi iterativi e ricorsivi.
- CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: acquisizione dell'uso di strumenti linguistici e del calcolatore elettronico per tradurre algoritmi in programmi funzionanti.
- AUTONOMIA DI GIUDIZIO: acquisizione di criteri per stabilire correttezza e coerenza dei programmi sintetizzati rispetto a semplici specifiche.
- ABILITÀ COMUNICATIVE: acquisizione degli 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.



At the end of the teaching and self-study, students are expected to be able to solve computational problems by finding a suitable algorithm.

- KNOWLEDGE AND UNDERSTANDING: acquisition of methodologies for design and synthesis of iterative and recursive algorithms.
- ABILITY TO APPLY KNOWLEDGE AND UNDERSTANDING: acquisition of the use of linguistic tools and of the computer in order to translate algorithms into working programs.
- AUTONOMY IN JUDGEMENTS: acquisition of criteria to establish correctness and coherence of the proposed programs with respect to basic specifications.
- COMMUNICATION SKILLS: acquisition of vocabulary items that characterize a computer scientist aimed at moving from an informal algorithmic description, to describe the solution to a computational problem, to its implemented version in a real programming language.
- LEARNING SKILLS: acquisition of autonomous learning skills and self-assessment of self preparation, suitable for undertaking subsequent 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 è organizzato in:
- lezioni frontali per illustrare i concetti e gli strumenti;
- lezioni collaborative con lo sviluppo guidato di esercizi di programmazione.


The course is organised in:
- lectures to illustrate concepts and tools;
- collaborative lessons with guided development of programming exercises.

Oggetto:

Modalità di verifica dell'apprendimento


La valutazione dell’apprendimento è costituita da una prova scritta di scrittura di programmi per la verifica dell'apprendimento della capacità di risolvere problemi di programmazione e di implementarli in un linguaggio di programmazione di alto livello.

La valutazione dell'esame terrà in considerazione il metodo di soluzione adottato e la qualità della soluzione proposta.
Il voto ottenuto durante una prova rimane valido durante tutto l'Anno Accademico in cui la prova è stata sostenuta.

Per gli studenti/esse con DSA o disabilità, si prega di prendere visione delle modalità di supporto all'indirizzo:
https://www.unito.it/servizi/lo-studio/studenti-e-studentesse-con-disabilita
di Ateneo, ed in particolare delle procedure necessarie per il supporto in sede d’esame.


The final exam consists of a written test of programming in order to verify the ability to solve computational problems and to implement them in a high-level programming language.

The evaluation of the exam will take into account the adopted solution and the quality of the proposed solution.
The grade obtained during a test remains valid throughout the Academic Year in which the test was taken.

For students with SLD or disabilities, please read the support methods
at the URL:
https://www.unito.it/servizi/lo-studio/studenti-e-studentesse-con-disabilita
and in particular the procedures for supporting them during the exams.

Oggetto:

Attività di supporto


Tutto il materiale utilizzato durante le lezioni frontali e il codice sviluppato durante le lezioni collaborative sono disponibili sulla pagina Moodle del corso. Il materiale è reso disponibile di volta in volta seguendo l’evolversi dell’insegnamento.

Saranno previste 21 ore di attività didattica integrativa svolte dal dottor ZOIA Stefano


All the material used during the lectures and the code developed during the collaborative lessons are available on the Moodle page of the course. The material is made available from time to time following the evolution of the teaching.

Testi consigliati e bibliografia

Oggetto:


Oltre al materiale dell’insegnamento reso disponibile via Moodle, si suggerisce il seguente testo:

- Jeri R. Hanly, Elliot B. Koffman. "Problem solving e programmazione in C". Apogeo.


In addition to the teaching material made available via Moodle, the following text is suggested:

- Jeri R. Hanly, Elliot B. Koffman. "Problem solving e programmazione in C". Apogeo.



Registrazione
  • Aperta
    Apertura registrazione
    20/09/2024 alle ore 00:00
    Chiusura registrazione
    30/06/2025 alle ore 23:55
    Oggetto:
    Ultimo aggiornamento: 17/09/2024 11:57
    Location: https://www.suiss.unito.it/robots.html
    Non cliccare qui!