60/61/124 - PROGRAMMING 2
Academic Year 2022/2023
Free text for the University
MAURIZIO ATZORI (Tit.)
- Teaching style
- Lingua Insegnamento
|[60/61] COMPUTER SCIENCE||[61/00 - Ord. 2016] PERCORSO COMUNE||9||84|
Programmazione 2 has the goal of teaching the object oriented programming paradigm, and also introduces basics of other paradigms.
Java is used as programming language, but other languages are also mentioned (eg. Python) to show possible alternatives in the design of programming languages.
1. Knowledge and comprehension skills.
The student will know the basics and some advanced techniques of object oriented programming and Java.
She will be able to read and understand API docs and commented code written by other programmers.
2. Ability to apply knowledge and comprehension.
The student will be able to write and comment Java code, design new classes, reasoning about different implementations and autonomously solve compilation and run-time errors.
3. Making judgments.
The course provides students with the basic skills diligent to apply the programming methods described in items during the course of the solutions to technical problems related to their field of study.
4. Communication skills.
Lessons include a high degree of interaction with the students, who will learn to properly communicate the concepts learned, with mastery of the terminology used internationally.
The correction of the theory test takes into account the student's ability to understand the technical language, expressed in English, concerning the topics studied.
The communication skills are further evaluated in the practical test that includes understanding and writing comments in the technical language learned in class.
5. Learning skills.
The course provides students with diligent preparation to allow comprehension of advanced programming texts, including technical documentation as specific APIs, enabling them to expand their knowledge in the future independently.
Basics of Imperative Programming and knowledge of a language such as C (as those acquired by attending Programmazione 1).
Basics of algorithms and data structures (as those acquired by attending Algoritmi e Strutture Dati 1).
The following is the list of main topics taught.
01 - Course Introduction and architectures
02 - Classes e objects
03 - Inheritance
04 - In-depth Inheritance and other techniques
05 - Exceptions
06 - Interfaces
07 - Enum types and generics
08 - Object e Java Collections
09 - Functional Programming
10 - Java Streams
11 - Nested Classes
12 - Annotations
Updated information are available on moodle elearning platform: https://elearning.unica.it/course/view.php?id=121
Programming 2 (PR2) is a 9-credit course, corresponding to 84 hours.
Frontal lessons: 48 hours, typically 2 hours per lesson, 2 lessons per week, 12 weeks. They may be taught in lab or via flipped classroom.
Labs: 36 hours, 3 hours per week, 12 weeks.
According to Manifesto degli Studi, and requirements that may be associated to epidemic (if any), teaching will be due in person (attendance is mandatory), but including the use of online platforms (such as Moodle contents) for innovative and inclusive modalities and content access.
Verification of learning
The final exam is divided into two parts:
1) theoretical part, focused on evaluating Dublin descriptors 1 and 2.
2) practical part, evaluating the remaining descriptors, to be done during the same day.
The theoretical part must be passed before the practical one.
* THEORETICAL PART
It is a set of written questions, typically a quiz with 15 questions with 2 possible answers: True/False (Correct answer: 2 points; Wrong answer: 0 points)
In order to pass this part, at least 18 points out of 30 must be obtained.
* PRACTICAL PART
Development of Java classes, interfaces, etc.
There are a number of test classes (either JUnit or assert-based) made available and the student must develop the classes/methods to pass the software tests in the specified order.
Mark depends on the software tests the student solution passes, each of which has an associated mark/weight.
If marks of both parts are sufficient (at least 18 out of 30), the exam is passed with a final mark as a weighted sum (35% theoretical part, 65% practical part).
Students are asked to attend lessons and laboratory in order to be accepted for the final exam.
It is recommended the use of an book on object-oriented programming updated to (at least) Java 8.
- Concetti di Informatica e Fondamenti di Java, by Cay S. Horstmann
- Thinking in Java, by Bruce Eckel
The Programming 2 course has been hosted by Moodle, an e-learning platform, currently accessible at the following url:
The site contains the teaching material, including:
- slides of each lesson
- slides with insight about lab exercises
- texts of lab exercises
- solutions of the lab exercises
- handnotes for each topic
- in-depth links
- examples of questions and exercises to prepare for the exam, with solutions.
- official Oracle tutorials