This course goal is that of completing the skills of students in the area of coding by presenting the software development techniques based on the object oriented paradigm and their adoption with the Java programming language.
The course completes students' skills in the area of coding by presenting software development techniques based on the Object-Oriented paradigm. The Java programming language is analyzed in detail and used to exemplify the OO concepts; mentions of alternative solutions, such as the ones adopted in C++ and Python, are also sketched.
The student at the end of the course will know the fundamental concepts of software engineering (software life cycle, configuration management, test, design) and of object oriented programming (classes, objects, attributes, methods, inheritance, interfaces), in addition she will know in detail the main features of the Java programming language.
The acquired abilities will concern: the familiarity with the Java language, the capability of analyzing the requirements of a small-sized software system in order to deliver the relative design, the ability to implement and test the classes in the design using an integrated development environment (IDE).
At the end of the course, the students will know the fundamental concepts of the Object-Oriented paradigm, understand the problems that drove the creation of such a paradigm, and master the main features of the Java programming language (classes, objects, attributes, methods, inheritance, interfaces, ...). They will also be acquainted with the main concepts of software engineering (software life cycle, configuration management, test, design).
The acquired abilities include familiarity with the Java language, analyzing the requirements of a small-sized software system to deliver the relative design, and implementing and testing the classes in the design using an integrated development environment (IDE).
The knowledge of basic programming constructs (types and data structures, control statements, functions and function calls) and of sorting and searching algorithms is a prerequisite.
Basic knowledge of programming in the C language (types and data structures, control statements, functions, and function calls).
The course will consists of a set of classroom traditional lectures to present the topics of software engineering and Java language. Moreover there will be classroom exercises to present and discuss exemplary programs. In addition to the classroom part, there will be lab exercises with assignments focusing on the development of simple case studies by means of the Java programming language and the Eclipse development environment.
The course consists in a set of lectures where the topics are presented; lectures include several exercises carried out interactively with the students. Labs focus on the development of case studies by means of the Java programming language, using Eclipse as a development environment.
The portal will contain the slides provided by the teachers and the information concerning the labs.
The main additional suggested readings are:
Arnold, Gosling, Holmes. ¡§The Java Programming Language ¡V 4th edition¡¨, Addison-Wesley, 2006
„X R. Urma, M. Fusco, A. Mycroft. ¡§Java 8 in Action: Lambdas, streams, and functional-style programming.¡¨ Manning, 2015.
„X M.Fowler, K. Scott, UML Distilled, 3rd ed. Addison-Wesley, 2003.
„X Bruegge, Dutoit. Object-Oriented Software Engineering Using UML, Patterns, and Java. Pearson, 2009
The portal will contain the slides provided by the teachers and the information concerning the labs. Additional material is not required.
Suggested readings are:
Arnold, Gosling, Holmes. "The Java Programming Language, 4th edition", Addison-Wesley, 2006
R. Urma, M. Fusco, A. Mycroft. "Java 8 in Action: Lambdas, streams, and functional-style programming", Manning, 2015
M.Fowler, K. Scott. "UML Distilled, 3rd", Addison-Wesley, 2003
Bruegge, Dutoit. "Object-Oriented Software Engineering Using UML, Patterns, and Java." Pearson, 2009
Modalità di esame: Test informatizzato in laboratorio;
Exam: Computer lab-based test;
The exam will take place in the computer lab using the same tools used during the lab assignments, it will consists in the development of a Java program that implement a set of given requirements. In addition the student will be presented with three of four closed answer questions concerning theory not applied in the programming part. The question will weight 15% of the final grade.
The exam lasts two hours, the use of notes and books is not allowed.
The grading will be based on the quality of the delivered program in terms of correctly implemented functions, the severity of the missing features and the design decisions adopted.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Computer lab-based test;
The exam takes place in the computer lab using the same tools used during the lab assignments.
It consists of developing a Java program that implements a set of given requirements. Moreover, the student must answer three or four closed answer questions concerning theory not applied in the programming part.
The exam lasts two hours, and the use of notes and books is not allowed.
The evaluation of the programming part is based on the quality of the delivered program in terms of correctly implemented functions, the severity of the missing features, and the adopted design decisions.
Two versions of the developed program are evaluated:
1. the lab version: the program is uploaded to the versioning repository at the end of the lab examination. In the case of more than one upload, only the last one is evaluated. Uploads done after the official end of the examination are discarded.
2. the home version: a corrected version of the program developed at home and uploaded to the versioning repository by a deadline communicated at the end of the lab exam (usually one week).
The grade of the programming examination is based on a software test suite designed to test the correct implementation of all program requirements. The final grade is computed by assessing:
1. the percentage of tests passed by the lab version
2. the inverse of the number of modifications applied at home to the program to pass all tests (i.e., the difference between the home and lab versions)
The program is recompiled with the standard javac compiler running in a Linux environment. If the program causes compilation errors, the number of passed tests is automatically evaluated as 0 (zero).
If the home program does not pass all the tests, the exam is rejected.
Correlations between the test failures are not considered: it does not matter if more than one test fails due to the same error; only the passed/failed number of tests is considered. If fixing a single error allows the program to pass various tests that failed in the lab version, this entails less modifications (thus leading to a higher value for the second component of the grade)
The programming part of the exam accounts for 85% of the final grade, while the closed answer questions account for 15% of the final grade.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.