CODE 109208 ACADEMIC YEAR 2023/2024 CREDITS 6 cfu anno 3 INFORMATICA 8759 (L-31) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 1° Semester TEACHING MATERIALS AULAWEB OVERVIEW The course provides an introduction to some tools/frameworks and services useful for software development and management, with the aim of training professionals who contribute to the implementation of software projects while also being aware of management needs. AIMS AND CONTENT LEARNING OUTCOMES The teaching has the primary objective of increasing students' awareness of the tools and services related to software development and management, with particular reference to the aspects of: development and debugging of the code created through integrated development environments (IDE), automatic building , project dependency management, configuration management and versioning, testing, continuous integration and delivery/deployment. AIMS AND LEARNING OUTCOMES This teaching takes up some tools for software development and management already introduced during the degree course (for example IDE and versioning systems, such as Git) and integrates them with other tools and services that can be used to carry out automatic building, manage dependencies, carry out continuous integration of the code (Continuous Integration) and deployment. The teaching is practical and has the educational objective of introducing students to modern software development as it is carried out in a real workplace. At the end of the course, the student will be able to: Use an IDE (e.g. Eclipse IDE or Visual Studio Code) to perform some tasks, such as: create a software project, import/export a project, run and debug a program, refactor the code, manage dependencies, run a test suite of unit test cases; Use a dependency management and automated building tool (e.g. Maven or Gradle) to perform tasks such as: compiling, packaging, test execution, documentation generation; Use a version control system (such as Git) and perform continuous integration of the code via web platforms such as, for example, GitHub or GitLab; Automate the different phases of the software lifecycle, from compilation to testing and finally to deployment through CI tools such as, for example, Jenkins or GitHub Actions; Create, maintain and use containers (e.g. Docker containers) and deploy a container on a node automatically. Containers are a technology used to bundle an application with all the necessary files into a single runtime environment. The container can be easily deployed and run on different operating systems. PREREQUISITES Knowledge of programming fundamentals; Knowledge of an object-oriented programming language (e.g. Java and/or C#); Basic knowledge of Software Engineering. It is useful to have some knowledge and understanding of software engineering terminology and basic techniques of software development process management, software design and verification and validation. TEACHING METHODS Practical laboratory lessons carried out in small teams (2/3 students). Each instrument treated will be accompanied by immediate practical experimentation, in order to quickly acquire confidence and dexterity. The laboratories will be guided and the supplementary activities will be made available on AulaWeb. AulaWeb will be used for three purposes: as a repository of course material; as a channel for bureaucratic communications, explanations and discussions concerning the course; and finally to facilitate teamwork. SYLLABUS/CONTENT The teaching, which is of a practical nature, introduces some of the following tools/environments and services for software development and management (and at different levels of detail): Integrated development environments (such as Eclipse IDE or Visual Studio Code); Dependency management tools and automatic building (e.g. Maven or Gradle); Version control systems (e.g. Git); Hosting services for software projects (e.g. GitHub or GitLab); Tools to automate developer workflow, such as continuous integration and testing (e.g. Jenkins or GitHub Actions); Tools for creating and using containers (e.g. Docker); Deployment tools (e.g. Heroku); At the end of the course the student will possess advanced specialist knowledge in the field of development and management of modern software systems. In particular, he will be able to: select some of the most popular tools for software development and management; effectively set up software development, testing and maintenance processes based on advanced mechanisms of continuous integration RECOMMENDED READING/BIBLIOGRAPHY Documentation available online of the various selected tools and services. TEACHERS AND EXAM BOARD FILIPPO RICCA Ricevimento: Appointment by email Exam Board FILIPPO RICCA (President) MAURA CERIOLI MAURIZIO LEOTTA (President Substitute) LESSONS LESSONS START In accordance with the teaching calendar approved by the Council of Study Programs in Computer Science and Computer Science. Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The objective of the verification procedure is to quantify, for each student, the level of achievement of the previously indicated educational objectives. The verification procedure consists in the evaluation of some guided laboratories and in a written test. The exam consists of the following activities Laboratory activities Written Laboratory activities The course includes laboratory activities to be carried out in groups. For some of these activities, the delivery of the work performed will be required. For others, student participation will simply be monitored. Alternative activities to be delivered via AulaWeb will be proposed to those (e.g. working students) who are unable to attend the laboratory activities. Written The written test will consist of multiple choice questions. The questions will be both theoretical and practical and will focus on the topics/tools covered in class. During the lessons some examples of possible questions and exercises for each topic will be discussed, so that at the end of the course the type of test will be clear. ASSESSMENT METHODS The laboratory activity aims to ascertain: (1) the knowledge of the proposed tools and (2) the collaborative skills in solving problems within the topics addressed in the course. The written has the dual objective of verifying the knowledge of the basic aspects of the discipline and ascertaining the participation of the students in the guided laboratories. In both tests the specific knowledge of the subject and the ability of critical reasoning will be considered. Exam schedule Data appello Orario Luogo Degree type Note 18/01/2024 09:30 GENOVA Laboratorio 12/02/2024 09:30 GENOVA Laboratorio 11/06/2024 09:30 GENOVA Laboratorio 17/07/2024 09:30 GENOVA Laboratorio 19/09/2024 09:30 GENOVA Laboratorio