PROGRAMMING LANGUAGES AND LABORATORY
Academic year and teacher
If you can't find the course description that you're looking for in the above list,
please see the following instructions >>
- Versione italiana
- Academic year
- 2016/2017
- Teacher
- FABRIZIO RIGUZZI
- Credits
- 9
- Didactic period
- Secondo Semestre
- SSD
- INF/01
Training objectives
- The main goal of the course consists in enabling the students to write programs in object-oriented languages. Moreover, the course will illustrate the basic principles of the theory of formal languages, of computability theory and of logic programming.
The main acquired knowledge will be:
- basic principles of object-oriented programming
- object-oriented programming techniques
- the Java programming language
- basics of Java's graphics
- basic principles of the theory of formal languages and abstract machines
- basic principle of computability theory
- techniques for the design and analysis of a programming language
- implementation of a programming language
- basics of logic programming
The basic acquired abilities (that are the capacity of applying the acquired knowledge) will be:
- analysis and solution of problems of increasing complexity with object-oriented code,
- evaluation of the complexity of a problem
- automatic generation of compilers with automatic tools (lex and yacc)
- implementation of simple algorithms in logic programming Prerequisites
- The exam can be taken only after having passed the exam for the course "Programming and Programming Laboratory".
The following concepts and knowledge provided by the course "Programming and Programming Laboratory" are mandatory:
- structured programming principles
- C language
- basic data structures
- basic algorithms Course programme
- Introduction to object oriented programming (OOP) (12 hours): classical OOP, Java OOP, composed objects, packages, strings, arrays, wrappers, Eclipse IDE.
Java OOP (16 hours): inheritance, subtyping, polymorphism, the Object class, abstract classes and interfaces, exceptions, input/output.
Java Collection Framework (JCF) (14 hours): JCF, generics, JCF with generics.
Graphics in Java (8 hours): JavaFX, event model.
Formal languages (16 hours): abstract machines, interpreters, compilers, describing a programming language, lexical analysis, syntactic analysis, foundations of computability, foundations of complexity, automatic tools to generate lexical and syntactic analyzers (lex and yacc).
Logic programming (6 hours). Didactic methods
- The course is composed of 72 lecture hours.
The lectures will cover all the course topics and will include also simple tests on the computer by the students of the examples shown by the teacher. Learning assessment procedures
- The aim of the exam is to verify at which level the learning objectives previously described have been achieved.
The examination is composed of a practical test and a test on theory.
The practical test takes place in the computer laboratory and consists of an exercise on Java: the students have to write a program that reads data from a text file and elaborates it. The program must be written using the computers of the laboratory. The test lasts two hours. It is worth 17 points. It is forbidden to use personal computers or smart phones. It is allowed to use teaching material. The program code must compile without errors otherwise the test will not be considered for marking.
The test on theory consists of three open-ended questions on the theoretical part of the course. The test lasts 30 minutes. It is worth 15 points. It is forbidden to use personal computers, smart phones or teaching material.
The final mark is given by the sum of the marks in the two tests. The exam is passed if the mark in each test is at least 9. The two tests can be taken in different exam dates. Reference texts
- - Teacher's handouts
- Bruce Eckel, Thinking in Java 4th edition, Prentice Hall, Thinking in Java, 3rd Edition, free ebook, http://www.mindviewinc.com/downloads/TIJ-3rd-edition4.0.zip
- Maurizio Gabbrielli, Simone Martini, "Linguaggi di Programmazione. Principi e paradigmi", Seconda Edizione, McGraw-Hill, 2011.
Further research texts are:
Cay S. di Horstmann, Concetti di informatica e fondamenti di Java - 4a ed., Apogeo, Milano
H. M. Deitel, P. J. Deitel. Java Fondamenti di Programmazione, 3a ed., Apogeo, Milano.
J. Lewis, W. Loftus, Java - Fondamenti di progettazione software, Addison Wesley, Italia.