- Programming 1
- Summary
Course Syllabus
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 i e sessioni di lavoro assistito in laboratorio.
Le lezioni si svolgeranno parzialmente in presenza (salvo diverse indicazioni da parte delle autorità) ed in ogni caso sarà garantita la possibilità di fruirne anche da remoto.
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
Periodo di erogazione dell'insegnamento
Primo semestre, Anno Accademico 2020-2021
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 10 domande a risposta multipla, 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.
Si valuterà la possibilità di sostituire la prova scritta con due prove parziali erogate in itinere, organizzate e valutate allo stesso modo della prova scritta ma più semplici e riguardanti solo metà 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 concepts which are the basis of high level programming languages,
with a deeper focus on the imperative paradigm. The Java language will be used,
and students will come to 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
knowledge as acquired during high-school
Teaching form
The course comprises usual lectures, exercises in the classroom, and assisted sessions in the laboratory.
Lectures will be partially hold in presence (unless otherwise indicated by the authorities) and in any case, it will possible to remotely attend lectures. 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
Semester
First semester, Academic Year 2020-2021
Assessment method
Learning assessment includes a written exam and an oral exam.
The written exam consists of:
- 10 multiple-choice 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.
Si valuterà la possibilità di sostituire la prova scritta con
We will evaluate the possibility of replacing the written exam 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