1st degree and Bachelor-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino 1st degree and Bachelor-level of the Bologna process in Ingegneria Informatica - Torino Master of science-level of the Bologna process in Digital Skills For Sustainable Societal Transitions - Torino
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 goal of this course is to complete the skills of students in the area of software development by presenting the techniques based on the object-oriented paradigm and their adoption with the Java programming language. Moreover, it provides the fundamental software development life-cycle concepts and introduces the relative tools for its management, in particular version management.
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).
The student at the end of the teaching will possess fundamental concepts of software engineering (development cycle, version management, testing, design) and object-oriented programming (classes, objects, attributes, methods, inheritance interfaces); in addition, he/she will have in-depth knowledge of the main features of the Java language and its main standard libraries.
Skills that will be acquired include: mastery of the Java language; the ability to analyze the requirements of a software system of reasonable complexity in order to define a suitable object-oriented design; and the ability to implement and test project classes through an integrated development environment (IDE) using the Git version control system.
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.
Prerequisites cover basic programming constructs (data types and structures, control statements, subprograms, and subprogram calls), solving simple problems by writing algorithms, knowledge of major data structures (lists, graphs, trees, hash tables), and knowledge of major algorithms, especially sorting and searching.
Basic Features (1 credit)
- Object-oriented programming, Java, IDE
- Classes, attributes, methods and constructors, objects
- Package and visibility rules
- Strings, wrapper classes
- Arrays
Inheritance interfaces (2 credits)
- Inheritance
- Abstract classes, interfaces
- Functional interfaces, lambda expressions
- Exceptions
- Generic types
Standard libraries (3.5 credits)
- JUnit framework
- Collections: sets, lists, maps
- Stream API
- Input/Output Management
- Dates
- Object-Relational Mapping (ORM)
Principles of Software Engineering (1.5 credits)
- Software lifecycle
- Design using the UML language
- Design Pattern
- Version Management
- Testing
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.
This teaching involves a series of classroom lectures presenting aspects of software engineering and the Java language. In addition, there will be classroom exercises aimed at illustrating and discussing example solutions. In addition, there will be laboratory exercises that will cover some simple case studies to be addressed by means of writing Java programs with the help of an integrated development environment (IDE) and the Git version management system.
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
Slides provided by lecturers and information on workshops are available on the teaching portal.
The main recommended textbooks 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 ed. Addison-Wesley, 2003.
- Bruegge, Dutoit. Object-Oriented Software Engineering Using UML, Patterns, and Java. Pearson, 2009.
Other texts may also be indicated at the beginning of the course.
Slides; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Video lezioni tratte da anni precedenti; Strumenti di auto-valutazione;
Lecture slides; Lab exercises; Lab exercises with solutions; Video lectures (current year); Video lectures (previous years); Self-assessment tools;
E' possibile sostenere l’esame in anticipo rispetto all’acquisizione della frequenza
You can take this exam before attending the course
Modalità di esame: Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group project; Computer-based written test in class using POLITO platform;
...
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: Group project; Computer-based written test in class using POLITO platform;
Laboratory exercises are evaluated based on the achievement of a minimum threshold of implemented functionality. The assessment takes place at the time of booking for an exam call, and the result is communicated before the exam itself.
This verification is aimed at testing the ability to use the basic tools (IDE and Git) in addition to knowledge of the elementary notions of object-oriented programming. This part weighs 30% on the final grade.
There are two modes of assessment through a project that can be either a group project or an individual project. The project part is evaluated on the quality of the delivered project, measured in terms of the correct functionality implemented, the severity of the flaws in the delivered project, the design choices made, and the adherence to the recommended development process. This part weighs 45% of the final grade.
**Group project**
The group project is conducted in the last weeks of the semester and involves the adoption of a Git-based development process. The objective is to assess the ability to analyze a problem, design a solution, and implement it using the Java language and basic tools within a small software project. The assessment is completed with a written computer-based exam that aims to verify the acquisition of knowledge related to the topics covered during the course. The exam has a duration of 30 minutes during which no notes or textbooks can be used.
**Individual project**
The individual project is carried out during the in-class examination and aims to verify the ability to analyze a problem, design a solution and implement it using the Java language and basic tools.
The evaluation is completed with a written computer-based exam that aims to verify the acquisition of knowledge related to the topics covered during the course. The exam has a duration of two hours during which notes or textbooks cannot be used.
The knowledge check is based on multiple-choice questions on the theoretical aspects presented during the lectures. This part weighs about 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.