Skip to main content
CODE 86736
ACADEMIC YEAR 2024/2025
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR ING-INF/05
LANGUAGE English
TEACHING LOCATION
  • GENOVA
SEMESTER 1° Semester
MODULES Questo insegnamento è un modulo di:
TEACHING MATERIALS AULAWEB

OVERVIEW

Robots are programmed machines based on multi-task, distributed and concurrent programming. The ARP course expands the so called system programming  level. The student will learn how to use the operating system's services to design such concurrent sitributed applications. In addition, robotic programs must be reliable and portable through differenet kernels, different versions and different architectures/electronics. In general, programming in Robotics encompasses different topics: 1) writing and debugging a soft/hard real time programme, 2) the operating system structure, and its relevant features, 3) concurrent / distributed programming, 4) designing complex, distributed, modular software applications. ARP covers  mostly the mid topics of the list above. ARP, RTOS and SOFAR cooperate in addressing all topics. State-of-the-art languages are used, in particular C, C++ and Rust, together with  ISO/IEC 9945 POSIX framework

AIMS AND CONTENT

LEARNING OUTCOMES

The goal of the course is to give the students the fundamentals of POSIX programming, concurrent programming, and inter-process communication (i.e., interrupts, signals, pipes, threads, semaphores, shared memory, sockets, publish/subscribe methods). The objective involves both theoretical knowledge and practical work (coding for multiprocess / distributed systems). State-of-the-art programming languages are used in coding, in particular C and rust.

AIMS AND LEARNING OUTCOMES

  • Following Bloom's taxonomy, the student will achieve the following results (levels 2 to 4):
  •  
  • Describe the behaviour of the different communication / synchronization primitives between tasks and processes (events, shared memory, messages) both in a single and in networked machines.
  • Apply state-of-practice concurrent / distribute programming schemes to solve reference problems in robotics, using the mostly used languages (C/C++ and Rust)
  • Compare different communication / synchronization primitives in solving common robotic problems, and
  • Motivate the selection of the most suitable for a specific process.
  • Design and test concurrent / distributed programmes to solve standard, complex, relevant cases in robotics.
  • The student will also achieve :

  • Advanced functional literacy competence
  • Advanced personal competence
  • Advanced social competence
  • Proficiency in advanced project creation
  • Competence in basic project management
  •  

PREREQUISITES

  1. Programming in C Language (advanced concepts)
  2. Basic structure of an Operating System's kernel
  3. Basic networking concepts

TEACHING METHODS

 

This is a sample scheme based on the flipped classroom model.. The actual scheme will  be adapted to schedule, calendar and course organisation

Lessons attendance is mandatory.

The development of the assignments projects (project-based learning), and related reports, will enable the student to work on the skills

advanced functional literacy competence

advanced personal competence

advanced social competence

advanced project creation

basic project management

SYLLABUS/CONTENT

The course is composed by 12 modules, one per week.

  1. Course intro
  2. Op sys architecture 1
  3. Op sys architecture 2
  4. SysCalls1: processes
  5. SysCalls2: threads
  6. SysCalls3: mutual exclusion, synchronization
  7. SysCalls4: pipes
  8. SysCalls5: non determinism
  9. SysCalls6: events
  10. SysCalls7: sockets
  11. Publish/Subscribe: D-BUS, fast DDS
  12. Real cases analysis

Each module includes an assignment whose solution is discussed in a successive module. The reference framework is the POSIX standard. Languages are C/C++ and Rust.

RECOMMENDED READING/BIBLIOGRAPHY

The whole study material (reference textbooks, slides, examples) is available in the AulaWeb portal and / or in the Teams main page of the course.

TEACHERS AND EXAM BOARD

Exam Board

ALESSANDRO CARFI' (President)

LESSONS

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

The final exam is only one othe component of the assessment process. The exam mark will contribute approximatively with 22% - 33% of the full assessment.

The exam consists in an on line test on the AulaWeb portal, with questions related to the learning outcomes. The test is done in presence in the classroom. 

ASSESSMENT METHODS

The course implements a continuous assessment process. All the assignments proposed to students every week may contribute to it.  Intermediate and final, more complex, assignments will be also proposed. Assignments are evaluated if delivered in a regular basis, respecting specific deadlines. 

The final mark will take into account both the exam and the continuous evaluation of assessments, giving specific values to the different components.

All the assignment deadlines will be closed before the last exam session of the semester (approximatively end of February for semester 1 and mid September for semester 2).

FURTHER INFORMATION

Special assessments may be defined for those students who decide to pass the exam in the second semester. 

Agenda 2030 - Sustainable Development Goals

Agenda 2030 - Sustainable Development Goals
Quality education
Quality education
Gender equality
Gender equality
Industry, innovation and infrastructure
Industry, innovation and infrastructure