Skip to main content
CODE 109208
ACADEMIC YEAR 2023/2024
CREDITS
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

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