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
Further information
Lesson attendance: recommended.
Tools for supporting teaching: http://e-l.unifi.it.
Type of Assessment
The exam consists of:
- Written: one or more exercises to be carried out in the laboratory, using the laboratory computers, without notes, books, cell phones, portable devices. During the exam, the laboratory computers will not be connected to the network;
- Oral: questions about the whole program (referring to the course textbooks and supplementary handouts, as reported on the Moodle website of the course).
The oral exam can only be taken after passing the written exam (i.e. if at least the written exam is taken).
The exam (both written and oral) can be taken in a certain session only after having booked on the appropriate website of the university.
Necessary (but not sufficient) conditions for passing the written exam are all the following:
- The code compiles without errors
- The code respects all the specifications of the exercizes
- All automatic tests provided by teachers are successful
The writing remains valid for the current exam session only. Therefore who has passed the writing has to take the oral exam in the same session.
If the oral interview is not passed, or if the student decides to refuse the final grade:
- Studente has to redo both the writing and the oral exam in a following session, and
- the intermediate test (if passed) is cancelled (so the student has to take the written exam in the "complete" (not "reduced") form starting from the following session.
The oral date will be communicated after the written exam and will be indicatively the next day or a few days after the written date.
Structure of the written exam: it consists of two parts:
- Part on "Java--", which requires to implement a Java program focusing on the arguments treated in the first semester of the course.
Students who have passed and want to take the intermediate test are exempted from carrying out this part of the exam. Please note that the student, in order to try to improve the evaluation of the intermediate test, can still decide to carry out this first part of the exam too. In this case, at the time of its delivery, the intermediate test is canceled regardless of the evaluation of the exam itself.
- Part on "Java", which requires to implement a Java programfocused on the topics seen in the second semester of the course. This part must be done by all students.
If the student also passes the oral exam, the final mark is calculated taking into account the assessment of the written exam and the assessment of the oral exam.
Intermediate tests
-------------------
They can take the tests in itinere (intermediate tests) only:
- First year students
- Students from previous years who have never enrolled in the Programming exam of previous academic years
A student can enroll in both intermediate tests. The student's participation in the second intermediate test, i.e., her/his presence at the time of the second test, immediately cancels the first intermediate test eventually passed with a positive evaluation. Please note: the cancellation occurs at the moment in which the student is present at the second test, regardless the student delivers the second intermediate test or not.
Passing the intermediate test will allow students to take the written task in a "reduced" form, ie with less exercises to carry out during the exam in the laboratory. In particular, students with the intermediate test passed may not carry out the exercises of the exam on the part of "Java--" and therefore carry out only the exercises on the part of "Java".
To try to improve the evaluation of their intermediate test, students can still decide to carry out the written task in a complete form by also delivering the exercises on the part of "Java--". In this case the intermediate test is canceled regardless of the evaluation of the exam itself.
The intermediate test is canceled (therefore it will no longer be valid) if:
- The student does not pass the oral test;
- The student refuses the final grade;
- In order to try to improve the evaluation of the intermediate test, the student decides to carry out the written task in a complete form, also delivering the exercises on the "Java--" part. In this case, the intermediate test is canceled regardless of the evaluation of the task itself.
The intermediate test is NOT canceled if the student gives the assignment in reduced form (only the exercises on the "Java" part) and this is not considered sufficient. In this case, the student will again be able to carry out the written exam in the reduced form starting from the next session.
If the student also passes the oral exam, the final mark is calculated taking into account the assessment of the intermediate test, the assessment of the written assignment (in "reduced" form), and the assessment of the oral exam.
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. Generic Programming. Data structures and Collections.