- Programmazione 1
- Introduzione
Syllabus del corso
Obiettivi
Acquisire le basi della programmazione imperativa in Java
Contenuti sintetici
L’insegnamento presenterà i concetti alla base dei linguaggi di programmazione ad alto livello focalizzandosi sul paradigma imperativo. Questi concetti verranno spiegati utilizzando il linguaggio Java e saranno fatti sperimentare agli studenti con l’implementazione di semplici algoritmi mirati
Programma esteso
- Struttura logica di un elaboratore e codifica dell'informazione. Gerarchia dei linguaggi di programmazione, compilatori e interpreti. Cenni informali sulla correttezza dei programmi (sintassi, semantica). La Java Virtual Machine. Algoritmi e programmi
- Tipi di dati primitivi. Variabili, dichiarazioni e assegnamenti. Espressioni e valutazione. Type checking
- Stringhe. Input/Output da tastiera/su schermo (classe Scanner)
- Strutture di controllo: sequenza, selezione, iterazione. Array di tipi primitivi
- Applicazione semplificata della progettazione logica del programma
- Metodi di classe, definizione ed invocazione. Parametri di tipo primitivo. Uso della dot notation. Record di attivazione. Variabili di classe e costanti
- Il concetto di reference: cenni alla gestione della memoria in Java (heap, stack e loro uso durante l’esecuzione dei programmi). Array di reference. Metodi di classe con tipi di dati complessi: definizione e invocazione. Passaggio di parametri by reference e by value
- Programmare utilizzando la ricorsione, metodi ricorsivi e gestione dello stack.
Prerequisiti
Le conoscenze di tipo matematico e logico acquisite nella scuola superiore
Modalità didattica
L’insegnamento è composto da lezioni frontali, esercitazioni e sessioni di lavoro assistito in laboratorio.
Inoltre, verranno resi disponibili on-line sia le slide e gli esercizi svolti in classe che vari tipi di esercizi mirati (quiz, domande pratiche) da svolgere individualmente da parte degli studenti.
Le lezioni sono tenute in italiano.
Materiale didattico
Libro di testo:
- Walter Savitch -Programmazione di base e avanzata con Java - Seconda Edizione, 2018, Pearson Education Italia, ISBN 9788871929613
Appunti scritti dai docenti
Periodo di erogazione dell'insegnamento
Primo semestre, Anno Accademico 2022-2023
Modalità di verifica del profitto e valutazione
La verifica dell'apprendimento comprende una prova scritta e un colloquio orale.
Nella prova scritta si richiede di:
- rispondere a domande a risposta multipla e aperte, che hanno lo scopo di verificare la preparazione dello studente sulle varie parti del programma;
- svolgere al computer alcuni esercizi di programmazione in linguaggio Java, con lo scopo di verificare se lo studente è in grado di applicare le tecniche di programmazione viste durante le lezioni e le esercitazioni, e di implementare tali tecniche nel linguaggio di programmazione Java.
Ciascuna delle due parti sarà valutata in trentesimi e il voto della prova scritta sarà la media dei voti delle due parti.
La prova scritta potrà essere sostituita da due prove parziali erogate in itinere, organizzate e valutate allo stesso modo della prova scritta ma più semplici e riguardanti ciascuna solo una parte del programma.
Al colloquio orale, oltre alla discussione dello scritto, possono essere fatte domande sugli argomenti del corso.
Orario di ricevimento
Su appuntamento
Aims
To learn the basics of imperative programming in Java
Contents
The course will introduce the basis of high level programming languages, with a deeper focus on the imperative paradigm. The Java language will be used, and students will code simple algorithms.
Detailed program
- Logical structure of a computer and data representations. Classes of programming languages, compilers vs. interpreters. Concepts of program correctness (syntax, semantics). The Java Virtual Machine. Algorithms and programs
- Primitive data types. Variables, declarations and assignments. Expressions and their evaluation. Type checking
- Strings. Input/Output via keyboard/screen (the 'Scanner' class)
- Control structures: sequence, selection, iteration. Arrays with primitive types
- Simplified application of logic development of a program
- Class methods, definition and invocation. Primitive type parameters. Dot notation. Activation records. Class variables and constants
- References: memory management in Java (heap, stack, and program execution). Arrays of references. Class methods with complex type parameters: definition and invocation. Passing parameters by value and by reference
- Programming with recursion, recursive methods and stack handling
Prerequisites
Mathematical-logical skills at the high-school level
Teaching form
The course comprises usual lectures, exercises in the classroom, and assisted sessions in the laboratory.
Moreover, slides and exercises will be made available online.
The course is taught in Italian.
Textbook and teaching resource
Textbook (the English version is also available):
- Walter Savitch - Programmazione di base e avanzata con Java - Seconda Edizione, 2018, Pearson Education Italia, ISBN 9788871929613
Lecture notes written by the teachers.
Semester
First semester, Academic Year 2022-2023
Assessment method
Learning assessment includes a written exam and an oral exam.
The written exam consists of:
- multiple-choice and open questions, whose aim is to test student's knowledge of various parts of the program;
- some programming exercises developed on a computer using the Java programming language. In this case, the aim is to verify that the student is able to apply the programming techniques which have been presented during the course, and to implement such techniques in the Java programming language.
Each of the two parts will result in a score out of thirty and the final mark of the written part will be the average of the two partial scores.
The written exam could be replaced by two intermediate tests, each performed on some of the subjects covered during the course. They will be organised and evaluated in the same way as the written exam.
During the oral exam, besides discussing the contents of the written exam, some questions may be posed on the subjects of the course.
Office hours
On appointment
Scheda del corso
Staff
-
Simone Bianco
-
Davide Elio Ciucci
-
Alex Graudenzi
-
Alessandro Raganato
-
Claudio Rota
-
Italo Francesco Zoppis