Lo studente che termina con successo il corso sarà in grado di dimostrare di conoscere i concetti basilari e i fondamenti dei linguaggi di programmazione. A questo scopo viene introdotto C come esempio di linguaggio di programmazione. Al termine del corso gli studenti devono essere in grado di tradurre un metodo astratto di risoluzione di un problema in un programma funzionante e di programmare in C ad un livello intermedio, elaborando algoritmi semplici.
Gli studenti devono inoltre dimostrare di aver acquisito una buona conoscenza di alcuni concetti relativi alla teoria dei linguaggi formali e alla teoria degli automi a stati finiti.
The student who successfully completes the course will be able to demonstrate knowledge of the basic concepts of language programming, by using C as example of programming languages; the student will have the ability to program in C language at an intermediate level, by elaborating simple algorithms.
Furthermore, the student will be able to demonstrate a good knowledge of the basic theory of automata and of formal languages.
La prova scritta, integrata con una discussione orale se svolta a distanza, serve a valutare l'apprendimento delle nozioni teoriche sulla parte di linguaggi e le capacità di risoluzione algoritmica e di programmazione in C.
La prova pratica di programmazione, integrata con una discussione orale se svolta a distanza, ha l'obiettivo di accertare le capacità di programmazione di algoritmi in C, con particolare riferimento alla gestione di sequenze, array, liste ed alberi.
Con la prova orale, facoltativa, si verificheranno le conoscenze sui principali contenuti del corso, e la loro assimilazione, l'uso della terminologia appropriata e infine la capacità di affrontare problemi sia di tipo teorico che pratico legati ai contenuti del corso.
The written exam, combined with an oral discussion, if performed online, is used to evaluate whether the student have learnt the theoretical notions on languages and automata; and the skills in solving algorithmic exercises and in programming their solutions.
The practical test, combined with an oral discussion, if performed online, assesses the skills in solving problems in an algorithmic way and in programming in C, in particular in managing sequences, arrays, lists and trees.
In the optional oral exam the student must be able to discuss the main course contents using the appropriate terminology and to demostrate her/his attitude to program and to solve exercises.
Al termine del corso lo studente sarà in grado di:
At the end of the course the student will be able to
Lo studente potrà acquisire e/o sviluppare la capacità di pensare in modo algoritmico alla soluzione dei problemi.
The student will acquire and/or develop the ability to think in an algorithmic way to the solution of problems.
Durante le prove pratiche di laboratorio sarà anche valutata la modalità algoritmica di soluzione.
During the labtests, the algorithmic solution mode will also be evaluated.
Non sono richieste particolari conoscenze iniziali. Una conoscenza elementare della logica è certamente utile, così come una sufficiente familiarità con le tecniche di dimostrazione.
No particular initial knowledge is required. An elementary knowledge of logic is certainly useful, as well as a sufficient familiarity with the proof techniques.
La frequenza è fortemente consigliata.
Metodi di insegnamento:
Attendance: strongly advised
Teaching methods:
I parte Linguaggio C, come esempio di linguaggio di programmazione.
II parte Cenni di teoria degli automi e dei linguaggi.
[Part I] C language, as an example of programming language.
[Part II] Introduction to automata theory and languages.
Slides presentate durante le lezioni.
TESTI DI RIFERIMENTO
BIBLIOGRAFIA DI APPROFONDIMENTO
Slides presented during the lectures and lecture notes downloadable from the course's web page
Recommended reading parts of the following books:
To go deeper:
Le modalità di esame per gli studenti non frequentanti sono identiche a quelle per gli studenti frequentanti.
Tutte le indicazioni su quanto fatto a lezione si trovano sulla pagina web del corso. Eventuale materiale sotto forma di lucidi o di esercizi è accessibile sempre a partire dalla pagina web del corso.
Examination methods for non-attending students are identical to those for attending students.
Non-attending students can find on the course web page the list of topics presented for each lesson,
with the projected slides, the assigned exercises and references to the relevant teaching mater.
L'esame è composto da:
La prova pratica consiste in un problema di programmazione da risolvere in circa due ore. Se superata, la prova rimane valida per tutti gli appelli dell'anno accademico.
Per accedere alla prova pratica e a quella orale occorre aver superato la prova scritta.
L'eventuale prova orale consiste in un colloquio tra il candidato e il docente, in cui vengono accertate le conoscenze del candidato sui principali argomenti del corso e le sue capacità nel risolvere problemi teorici e pratici.
The exam consists of:
Practical testing consists of a programming problem to be solved in about two hours. If passed, the test remains valid for the whole academic year.
Passing the written exam is necessary to gain access to the practical and oral tests.
If the oral part is not overcome, it is possible to repeat it, without loosing the results of the written and practical parts of the exam.
The optional oral test consists of the teacher assesses the candidate's knowledge of the main subjects of the course and his / her abilities in solving theoretical and practical problems are ascertained.