Dettagli sull'Insegnamento per l'A.A. 2016/2017
Nome:
Principi e Paradigmi di Programmazione / Programming Principles and Paradigms
Informazioni
Crediti:
: Bachelor Degree in Computer Science 6 CFU (b)
Erogazione:
Bachelor Degree in Computer Science 3rd anno curriculum General Elective
Lingua:
Italiano
Prerequisiti
Background notions about the imperative programming paradigm (as gained within the course of "Fondamenti di Programmazione con Laboratorio").
Obiettivi
The aim of the course is to present three main programming paradigms: imperative, functional and object-oriented; one main objective is to highlight different characteristics and common aspects of such paradigms. These aspects will be analyzed by accounting for both the abstractions provided by a specific language and its design principles. Giving an overview of some real languages conforming different paradigms will carry on the analysis.
Sillabo
- Introduction and background notions
- Functional languages: Lisp, Scheme
- Functions, recursion, and lists
- Hybrid languages: the family of Algol languages and ML
- Type system
- Type inference in ML
- Polymorphism
- Scope and Memory management
- Control structures in sequential languages
- Base concepts about object-oriented languages: C++ and Java
Descrittori di Dublino
Alla fine del corso, lo studente dovrebbe
- know the fundamental principles of the different programming paradigms and the main programming techniques to be adopted by using a specific programming paradigm.
- be aware of the constructs that distinguish a specific programming paradigm.
- know and understand the main common and distinctive characteristics of the several existing programming paradigms
- be able to describe the normal steps in developing a program using a common high level programming language and have capacity of studying in detail specific languages conforming to specific programming paradigms.
- be able to declare and process appropriate data structures and to apply selection constructs in conditional statements.
- be able to employ repetition constructs in programs, including nested loops.
- be able to declare and apply one-dimensional arrays.
- be able to implement input and output statements.
- be able to construct programs which employ procedures and functions.
- be able to explain how to identify program errors and how to test programs in a systematic manner.
- be able to complete the detailed documentation of one or more programs.
- be able to complete a programming project and demonstrate the skills required in the management of a software development project.
Testi di riferimento
- J. Mitchell, Concepts in Programming Languages , Cambridge University Press . 2003. Il testo è in Inglese e alcune copie sono disponibili in biblioteca
Modalità d'esame
Pre-Assessment:
There is no formal pre-assessment, but Course pre-requisites are clearly stated on the Module website. Fulfillment of such pre-requisites is verified by formative assessment. Additional lectures or short seminars or individual homework might be provided by the teacher in case significant problems are detected.
Formative Assessment:
The formative assessment is performed via interactive interaction between teacher and students during lectures. Students are aware since the beginning of the Course that they will be involved (in turns) in:
- Questioning and discussion, by means of open oral questions to the class or to single students.
- Exit Slips: students are assigned written questions or exercises to be answered in 10 minutes, and a student is then selected for oral presentation of her/his solution to the class.
Summative Assessment:
Written test followed by an optional oral exam.
In order to help the students to split the workload, an optional mid-term written test will also be provided, which is meant to cover the first part of the course.
The written test includes (i) a theoretical part and (ii) a practical part. The former aims at verifying the level of knowledge of the concepts underpinning the course topics. It is organized in terms of open questions to which the student has to answer in detail. The latter is meant to verify the student’s ability to reason on and solve practical problems hence providing a detailed explanation of the applied solution.
Criteria of evaluation will be: (i) the level of knowledge of the course topics and the ability to reason on them in order to devise possible solutions to related problems, hence following a creative approach; (ii) the proper use of technical terminology and of the mathematical concepts underlying the course topics, e.g., functions, algebra, and logic; and (iii) the clarity and completeness of explanations.
The oral exam will typically cover the areas of the written answers that need clarification plus, possibly, additional subjects proposed by the teacher. The oral test can be required either by the student, to improve grades or by the teacher, in presence of significant mistakes/misunderstandings in the written test.
Assessment breakdown: 100% mid-term plus end-of-semester summative assessment.
The written test (2 hours) consists in:
(a) Two or three short essays, to cover point (i), 50% of total marks;
(b) Two or three exercises, to cover point (ii), 50% of total marks.
All parts can result in negative marks if the answer is omitted or seriously flawed.
The oral test (max 1 hour) consists of one question for each serious mistake in the written test (the answer compensates the negative marks obtained therein) and one question for each 3 extra points that the student intends to add to the written test marks.
The final marks of the “Programming Principles and Paradigms” 6 CFU Module are obtained as the average among the marks of the written and oral tests.
Aggiornamenti alla pagina del corso
Le informazioni sulle editioni passate di questo corso sono disponibili per i seguenti anni accademici:
Per leggere le informazioni correnti sul corso, se ancora erogato, consulta il catalogo corsi di ateneo.
Ultimo aggiornamento delle informazioni sul corso: 08 giugno 2017, 10:39