Software technologies for bioengineering

     A course for the biomedical engineering curricula


2009-2010, Teaching: Giorgio Metta, Lorenzo Natale, Ugo Pattacini

    Laboratory is based on the Open Source Yarp library
    More information on:
    For fun:

Where and when: Wednesday 10-12 room B6, Friday 10-12 room B10.

Final exams:
    Friday Jan 22nd, room E3, 9am-1pm
    Tuesday Feb 2nd, room  E4, 9am-1pm
    Tuesday Feb 23rd, room 3rd floor (pad E), 9am-1pm
    Monday Mar 22nd, room 3rd floor (pad E), 9.30am-1pm
    Monday Apr 26th, room 3r floor (pad E), 9.00am-1pm

Deadline problem set: to be announced.

Contact Giorgio Metta:
     tel: 010-717-81411 or 010-353-2946
     email: pasa (AT)     

Contact Lorenzo Natale:
     tel: 010-717-81420
     email: nat (AT)

Contact Ugo Pattacini:
     tel: 010-717-81420
     email: ugo.pattacini (AT)

Mailing list: os (AT)

Use of the mailing list:
- general interest questions and requests
- additional requests about classes and exercises
- announcements about the course
- information exchange about the exercises
- limited to registered users (all students registered at the beginning of the semester)

To pass:
- problem sets  (1/3 of the final score)
---- working groups: click here
- oral exam (2/3 of the final score)
---- to complete the course in the current semester requires complying with the deadlines (June 30th, 2010).

For the oral exam:
Questions on:
   - Slides (all of them, available from this webpage)
   - Additional papers, also available for download
   - Problem sets or OS related programming questions

Problem set additional instructions (please read carefully!):

   - Problem sets must be submitted:
        1. with the source code and presented orally
        2. all files, including the CMakeFiles (see examples)
        3. enough comments to understand the code
        4. collaboration is allowed only within groups of two people

   - Problem set text: -PDF-

Syllabus and lecture notes

Current semester (up to date)

  1. Introduction, general concept about operating systems (Oct 2nd) -click here for the lecture notes-
  2. Processes e multiprogramming ~ processes and threads (Oct 3rd) -click here for the lecture notes-
  3. Oct 7th -CANCELLED-
  4. Oct 9th -CANCELLED-
  5. Processes and threads + IPC (continuing class #2, Oct 14th) -click here for the lecture slides-
  6. IPC (few slides) + Scheduling (Oct 16th) -click here for the lecture slides-
    - Recommended: paper on UNIX, please read it! (click here).
  7. Introduction to Yarp (Oct 21st), -a few slides-, -example code-
    - Recommended: paper on Yarp (click here)
    - Also: link to Yarp documentation, website, and CMake home page
  8. Laboratory, quick C++ refresher and examples (Oct 23rd), -example code-
  9. Continuing Yarp details, threads, semaphores, timers (Oct 28th) -example code: producer-consumer-
  10. Memory management (Oct 30th) -click here for the lecture slides-
  11. Laboratory, developing an example of C++ class (Nov 4th) -example code-
  12. Laboratory, developing motor control using Yarp threads (Nov 6th) -click here for specs, model and code-
  13. Memory management, page replacement algorithms (Nov 11th) -click here for the lecture slides-
    - Chapter on memory management from Tanenbaum ((c) A.S.Tanenbaum, from his home page) -pdf, click here-
  14. I/O system, general concept, software (Nov 13th) -click here for the lecture slides-
  15. Laboratory (Nov 18th)
  16. Nov 20th -CANCELLED-
  17. Laboratory, memory management (Nov 25th)
  18. Laboratory, memory management (Nov 27th): -specs and code (zip file)-
  19. I/O system, more on disks and other devices (Dec 2nd) -click here for the lecture slides, part 1-, -part 2-
    - Chapter on I/O from Tanenbaum ((c) A.S. Tanenbaum, from his home page) -pdf, click here-
  20. C++ templates (-online doc-), STL list container (-online doc-), Bottle and Port in YARP (Dec 4th):  -click here for the lecture slides-
  21. Laboratory, message-passing over YARP (Dec 9th): -click here for specs and code-
  22. Dec 11th -CANCELLED- (MRI machine visits)
  23. x86 architecture, concept and assembly/instruction set -pdf of the lecture slides-
  24. Dec 18th -CANCELLED- (extra in January, TBA)
  25. Laboratory, user-space thread library implementation (Jan 21st)

Extra material

  1. More about Working Set algorithms -pdf click here-, paper on the WS concept click here
  2. Networking, introduction to -pdf book chapter-, -slide from Tanenbaum web site-

Useful stuff (please have a look at this, it's important!)

  1. Compiler and linker, a brief introduction -click here for the slides-
  2. Producer-consumer example with YARP -slide (~9 Mb)-
  3. Multithreading -slides-
  4. A few more Yarp examples - use with care! -zip file here-, -example from the manual-
  5. Yarp port examples -see here for a tutorial-
  6. Final problem set description (old!) -pdf of the requirements-, -maze stuff-, -game protocol-
  7. About the Linux shell, a short tutorial -click here-
  8. Multiprocessor systems in brief -pdf click here-.

Support laboratory material:

      - Producer-consumer project (source code): click here to download the complete zip file
      - Producer-consumer project, networked version: click here to download the complete zip file
      - Demo client (from the past semester): click here to download the source code, client on a single thread

 Additional material (past semester):

      Small C/C++ manual (in italian): -pdf-
      Yarp source: -yarp-2.2.1.tar.gz-
      Yarp documentation: click here
      Home page past semester: click here

Past exams and problem sets (useful!):

test March 2006: click here (PDF)
test December 2005: click here (PDF)

test 1: topics "processes, threads, IPC and scheduling" click here.
test 2
: topics "memory, I/O, file system" click here.

problem set 1: -pdf-.
problem set 2: -pdf-.

References (by no means complete)
    - Andrew S. Tanenbaum, Modern operating systems, Prentice Hall International 2001. ISBN: 0-13-092641-8
    - Raphael A. Finkel, An Operating Systems Vademecum, Second Edition 1988, Prentice Hall Englewood Cliffs, NJ 07632
           - Available for free from:

Other resources:
    - Ubuntu Linux:

More on C/C++:
- "Linguaggio C", B.W. Kernighan D.M. Ritchie, Jackson.
- "C++", 
H. Shildt , Mac Graw Hill.
- "The C++ Programming language"
, Bjarne Stroustrup, Addison Wesley, 3d ed.