Course Syllabus
Obiettivi
Coerentemente con gli obiettivi formativi del Corso di Studio, l'insegnamento si propone di fornire allo studente le conoscenze di base riguardanti l' architettura dei sistemi informatici e delle reti di calcolatori, come pure i possibili paradigmi di programmazione. Verranno altresì fornite le competenze necessarie a identificare algoritmi risolutivi a semplici problemi e codificarli in linguaggio di programmazione Java, secondo il paradigma della programmazione imperativa.
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 frontale 2 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, 2° 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). 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 sufficienza piena. 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 5 appelli d’esame nei seguenti periodi: uno nel mese di giugno, uno a luglio, uno a settembre, uno a gennaio e uno 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 o sostenere la prova orale integrativa nel mese di giugno. La partecipazione alle prove scritte parziali è subordinata all'esecuzione dei compiti settimanali assegnati durante i laboratori del corso.
Orario di ricevimento
Giovedì, dalle 11 alle 12 o su appuntamento
Aims
This course aims at introducing the basic knowledge of computer systems architecture and networks, as well as different programming pardigms. Moreover, the course will provide competencies to identify algorithms to solve simple problems and implementing them into the Java Programming Language, according to the imperative programming paradigm.
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
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, 2nd 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. 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.
Five exam sessions are stated: June, July, September, January and February; moreover two partial examinations are proposed to studets during the course. Partial examinations can be attended if and only if the student has accomplished the tasks proposed during practical laboratories.
Office hours
Thursday, between 11 a.m. and 12 a.m., or by appointment.