- Area di Scienze
- Corso di Laurea Triennale
- Matematica [E3502Q - E3501Q]
- Insegnamenti
- A.A. 2025-2026
- 1° anno
- Laboratorio di Matematica e Informatica
- Introduzione
Syllabus del corso
Obiettivi
Conoscenza e capacità di comprensione
Al termine del corso, lo studente avrà acquisito le conoscenze fondamentali relative all'architettura dei sistemi informatici e delle reti di calcolatori, nonché una comprensione critica dei principali paradigmi di programmazione, con particolare focus sul paradigma imperativo.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di analizzare problemi computazionali di complessità elementare, progettare algoritmi risolutivi appropriati e implementarli efficacemente utilizzando il linguaggio di programmazione Java, dimostrando padronanza delle tecniche di programmazione imperativa.
Autonomia di giudizio
Lo studente svilupperà la capacità di valutare criticamente l'appropriatezza di diverse soluzioni algoritmiche, confrontare l'efficienza di approcci alternativi e selezionare le strategie di programmazione più adeguate in relazione al contesto del problema da risolvere.
Abilità comunicative
Lo studente sarà in grado di documentare il proprio codice in modo chiaro e professionale, spiegare le scelte implementative adottate e comunicare efficacemente i risultati del proprio lavoro di programmazione utilizzando il linguaggio tecnico appropriato.
Capacità di apprendimento
Lo studente acquisirà le competenze metodologiche necessarie per approfondire autonomamente nuovi linguaggi di programmazione, tecnologie informatiche e paradigmi di sviluppo software, costruendo le basi per un apprendimento continuo nel campo dell'informatica applicata alla matematica.
Contenuti sintetici
Architettura di Von Neumann. Componenti e funzionalità di un sistema operativo. Cenni alle reti di calcolatori. Linguaggi di Programmazione. Programmazione strutturata in Java.
Programma esteso
Programma: Architettura dei sistemi informatici
- Cenni di architettura dei calcolatori e codifica dell'informazione
- Cenni di sistemi operativi
- Cenni di reti di telecomunicazioni
Programmazione strutturata in Java
- Gerarchia dei linguaggi di programmazione, compilatori e interpreti
- La Java Virtual Machine
- Algoritmi e programmi
- Tipi di dati primitivi.
- Strutture di controllo selettive e iterative
- Array di tipi primitivi
- Metodi, definizione ed invocazione
- Ricorsione
Prerequisiti
Nessuno
Modalità didattica
- Lezione frontale, 4 cfu
- Laboratorio a distanza 2 cfu
Si utilizza un approccio didattico ibrido che combina didattica frontale (DE) e didattica interattiva (DI). La DE include la presentazione e spiegazione dettagliata dei contenuti teorici. La DI prevede interventi attivi degli studenti tramite esercizi e problemi svolti duranti i laboratori pratici, supportati da un tutor/esercitatore.
Le lezioni si svolgono in presenza e sono tenute in italiano, per 32 ore (4 CFU).
I Laboratori sono a distanza e sono tenuti in italiano, per 24 ore (24 CFU).
Materiale didattico
Tutte le informazioni sul corso, le slide presentate a lezione e le esercitazioni da svolgere in laboratorio verranno fornite tramite la piattaforma elearning di ateneo all’indirizzo elearning.unimib.it.
Testo di riferimento:
W. Savitch: "Programmazione di base e avanzata con Java", a cura di Daniela Micucci, 3° edizione, Pearson
Periodo di erogazione dell'insegnamento
Secondo semestre
Modalità di verifica del profitto e valutazione
Modalità dell’esame
Prova scritta e prova orale facoltativa (a richiesta dello studente che abbia ottenuto valutazione dello scritto almeno pari a 26/30). Valutazione con voto in trentesimi 18-30/30. La prova orale, che può riguardare sia domande teoriche che svolgimento di esercizi pratici di programmazione, ha peso inferiore alla prova scritta, determinando un incremento massimo di 4 punti rispetto al risultato della prova scritta ed è necessaria per l'ottenimento della lode.
La prova scritta è divisa in due parti: nella prima si valutano, attraverso una serie di domande a risposta chiusa, le conoscenze dei fondamenti teorici della programmazione strutturata; nella seconda, si valuta, attraverso l'implementazione di un semplice programma software, la capacità di realizzare in pratica un programma in grado di risolvere correttamente un semplice problema applicativo, rispondendo alle specifiche del problema da risolvere e rispettando i principi della programmazione presentati a lezione, senza generare errori (di compilazione, a runtime o logici).
La media aritmetica (eventualmente pesata) dei voti conseguiti nelle due parti definisce il voto proposto allo studente, che, se sufficiente, ha la facoltà di accettarlo o modificarlo attraverso lo svolgimento di un orale integrativo (eventualmente peggiorandolo nel caso la prova orale non sia soddisfacente). La prova orale può essere sostenuta solo in caso di voto allo scritto pari ad alemo 26/30. Il docente si riserva la facoltà di richiedere un supplemento di indagine, attraverso una prova orale obbligatoria, nei casi in cui la prova scritta, pur essendo valutata sufficiente, presenti delle criticità: ad esempio, insufficienza nella parte teorica e parte pratica molto soddisfacente, o viceversa.
Nel corso dell’anno sono previsti 6 appelli d’esame nei seguenti periodi: uno nel mese di giugno, uno a luglio, uno a settembre, uno a gennaio e due a febbraio. Durante il periodo del corso si tengono due prove scritte parziali che, in caso di esito complessivo positivo, permetteranno di verbalizzare il voto al temrine del corso (6 prova d'esame).
Orario di ricevimento
Giovedì, dalle 11 alle 12 o su appuntamento
Aims
Knowledge and understanding
Upon completion of the course, students will have acquired fundamental knowledge regarding computer systems architecture and computer networks, as well as a critical understanding of the main programming paradigms, with particular focus on the imperative paradigm.
Applying knowledge and understanding
Students will be able to analyze computational problems of elementary complexity, design appropriate solution algorithms, and implement them effectively using the Java programming language, demonstrating mastery of imperative programming techniques.
Making judgements
Students will develop the ability to critically evaluate the appropriateness of different algorithmic solutions, compare the efficiency of alternative approaches, and select the most suitable programming strategies in relation to the context of the problem to be solved.
Communication skills
Students will be able to document their code clearly and professionally, explain the implementation choices adopted, and effectively communicate the results of their programming work using appropriate technical language.
Learning skills
Students will acquire the methodological competencies necessary to independently deepen their knowledge of new programming languages, computer technologies, and software development paradigms, building the foundation for continuous learning in the field of computer science applied to mathematics.
Contents
Von Neumann’s Model of Calculators. Components and functionalities of operating systems. Introduction to Computer Neworks. Programming Languages. Structured Programming in Java.
Detailed program
Architecture of Calculators
- The Von Neumann model and basic notions on information representation
- Introduction to Operating Sytstems
- Basic notions of Computer Networks
Structured Programming in Java
- Programming languages and translators taxonomy
- The Java Virtual Machine
- Algorithms and programs
- Primitive Data types in Java.
- Flow Control in Java
- Arrays of Primitiva Data Types
- Methods in Java: definition and invocation
- Introduction to recursive algorithm design and implementation
Prerequisites
Nothing
Teaching form
- Lessons, 4 credits
- Laboratory, 2 credits
A hybrid teaching approach is used, that combines lecture-based teaching (DE) and interactive teaching (DI). DE involves detailed presentation and explanation of theoretical content. DI includes active student participation through exercises and problems, to be accomplished during the practical laboratories under the supervision of a tutor.
Lessons (32 hours) are conducted in person and are delivered in Italian.
Laboratories (24 hours) are conducted at distance and are in Italian.
Textbook and teaching resource
All the information about the course as well as the lessons slides and practical exercises will be available through the learning platform of the University, at the elearning.unimib.it link.
The suggested texdtbook will be:
W. Savitch: "Programmazione di base e avanzata con Java", a cura di Daniela Micucci, 3rd edition, Pearson
Semester
Second semester
Assessment method
Examination type
Written and Oral examination; the oral examination is not mandatory, but necessary to obtain a "cum laude" merit. The mark range is 18-30/30. The oral examination is about both theoretical questions and practical exercises and can increase the result of written examination by at most 4 points.
The written examination is divided into two parts: the first one is devoted to evaluate theoretical skills aobut structured programming, by means of a collection of close-ended questions; the second one concerns the design and implementation of a simple software program, with the aim to demonstrate the student's capability to solve correctly a simple practical problem, on the basis of programming principles considered during the course, without generating any kind of error (i.e. compile time, runtime, logical errors).
The arithmetic mean (possibly weighted) of the two marks defines the final mark proposed to the student: in case it is sufficient, the student can accept it as is or modify it by means of an oral examination (possibly decreasing the final mark). Oral examination is possible if and only if written examination is sufficient, equal or grater than 26/30. The teacher has the faculty to establish mandatory oral examinations for those students whose written examinations, although sufficient, present some criticalities: for example, in case of not sufficient theoretical questions whereas pratical exercises are good, or viceversa.
Six exam sessions are stated: June, July, September, January and February; moreover two partial examinations are proposed to students during the course. (6th exam session).
Office hours
Thursday, between 11 a.m. and 12 a.m., or by appointment.
Scheda del corso
Staff
-
Fabio Sartori