The course aims at introducing the students to the computational thinking, and to the methodological foundations and the corresponding basic notions of the procedural and object-oriented programming paradigms, and of the algorithmic techniques for problem solving and experimental program verification.
P. Crescenzi, Gocce di Java, Franco Angeli, 2014.
Java per Impazienti, Cay Horstmann, Pearson 2018.
Learning Objectives
At the end of the course, the students will be able to analyse and to model a problem, to develop a solution by using algorithmic and programming techniques, to test its correctness, and to verify its efficiency. The students will be able to implement algorithms for several kinds of problems by using a programming language (in particular, Java).
Prerequisites
No prerequisite.
Teaching Methods
class lessons and some laboratories
Further information
Lesson and laboratory attendance: recommended.
Tools for supporting teaching: http://e-l.unifi.it.
Type of Assessment
Laboratory exam (50%), oral exam (50%).
Course program
Algorithms and programs. Design, analysis, implementation and debugging.
Information representation.
Procedural programming.
The programming language Java.
Control flow. Methods. Recursion. Object-Oriented Programming. Classes and Objects. Interfaces and Inheritance. Functional Programming. Generic Programming. Data structures and Collections. Techniques for the design and implementation of programs. Manual and automatic verification of programs with unit tests.