2023-2024 / INFO0030-3

Programming Projects


20h Th, 100h Proj.

Number of credits

 Bachelor of Science (BSc) in Computer Science7 crédits 


Benoît Donnet

Language(s) of instruction

French language

Organisation and examination

Teaching in the second semester


Schedule online

Units courses prerequisite and corequisite

Prerequisite or corequisite units are presented within each program

Learning unit contents

The course is made of a certain number of theoretical lessons (+/- 10 lessons) and various programming projects (4) that must be solved  by students, individually or by groups of two.

The theoretical courses aims at introducing concepts required to do the projects.  The theoretical courses is made of 4 parts:

Part 1: Advanced C Concepts

  • Chapter 1: Type Definition
  • Chapter 2: Genericity
  • Chapter 3: Program Arguments
Part 2: Tools

  • Chapter 1: Compilation
  • Chapter 2: Library
  • Chapter 3: Tests
  • Chapter 4: Documentation
  • Chapter 5: Debugging
  • Chapter 6: Source Code Management
Part 3: Event-Based Programming Concepts

  • Chapter 1: Introduction to Graphical User Interfaces
  • Chapter 2: Interactive Applications
  • Chapter 3: MVC Pattern 
A few exercises sessions are organized to support key theoretical aspects.

Learning outcomes of the learning unit

The objective of the course is to allow students to apply principles studied in the programming courses of the 1st Bachelor (INFO0946 and INFO0947) but, also, to learn to write programs, in C, that are correct, efficient, elegant, and readable.

At the end of the course, the student will be able

  • to produce a software architecture that is rigourous, efficient and elegant.
  • to handle opaque types, program arguments, and write "generic" C code.
  • to handle varous tools for helping the programmer, such as the Makefile, library generation, unit tests (with the Seatest library), code documentation (doxygen), code debugging (gdb, valgrind), source code management (svn, git-hub).
  • to build a graphical user interface with GTK and the MVC pattern.
In addition, students will learn various soft skills, such as report writing, LaTeX, and oral defense of a report.

Prerequisite knowledge and skills

The course requires several corequisites:

  • INFO0946: Introduction à la Programmation
  • INFO0947: Compléments de Programmation 
  • Good knowledge of French (spoken and written)

Planned learning activities and teaching methods

Practical application (i.e., project solving) of concepts/tools seen during lessons.

Mode of delivery (face to face, distance learning, hybrid learning)

Face-to-face course

Additional information:

Theoretical lessons are based on slides (cfr. web site).   Students are supposed to add personal notes on the slides.  The audience is expected to actively participate to each course.

Home works are distributed during the semester.

Exercises statements are available online (cfr. web site)

The course is given during the second semester.

Recommended or required readings

The course slides are available on the course web page. A printed version is made available at the CDC (end of January).  Students are supposed to have a copy of the slides as soon as possible
During the semester, students also receive an individual feedback on their projects.
In addition, students can rely on two documents:

  • Critères de Style, document describing programming sytle criteria.  An electronic version (PDF) is available on the course Web page.  A printed version is availabe at the CDC (end of January).
  • Critères de Langage, document describing various ways of using the C langugage, as we teach it during the course.  An electronic version (PDF) is available on the course Web page.  A printed version is availabe at the CDC (end of January).
No book is mandatory for this course.  However, the following books have been used for building the course:
  • R. Malgouyres, R. Zrour, F. Feschet. "Initiation à l'Algorithmique et à la Programmation en C". Ed. Dunod 2011.
  • M. Divay. "Algorithmique et Structures de Données Génériques". Ed. Dunod 2004.
  • A. Braquelaire. "Méthodologie de la Programmation en C". Ed. Dunod 2005.
  • B. W. Kernighan, D. M. Ritchie. "La Langage C". Ed. Dunod 2004.
  • J.-L. Imbert. "Algorihmes Fondamentaux et Langage C". Ed. Ellipses 2008.
  • R. Mecklenburg. "Managing Projects with GNU make". Ed. O'Reilly 2004.

Written work / report

Additional information:

Students are evaluated only based on projects.  The weighting is the following

  • Project 1: 15% of the final grade
  • Project 2: 20% of the final grade
  • Project 3: 15% of the final grade
  • Project 4: 50% of the final grade
The first 3 projects must be done individually.  Grades are given based on a generic evaluation matrix (75% of the project grade) shared at the begining of the semester and on key learning outcomes of the project (25% of the project grade).

The 4th project must be done by group of two.  It requires, in addition to C code, a written report and an oral defense.  50% of the project grade is assigned with the evaluation matrix, 20% for the learning outcomes, 15% for the written report, and 15% for the oral defense and project demo.

Students have to submit all projects.  In case of non respecting this rule, the student will receive an absence grade.

In case of failure in june, all projects with a grade < 10/20 must be redone for the resit (no support will be provided during the summer). 

  • Regarding the 4th project, it must be redone individually.  However, the report and the defense are not anymore part of the assignment.  The grade will thus be assigned based on the evaluation matrix (75%) and the project learniing outcomes (25%).
  • a student cannot, of course, copy (or be inspired) by project realised during the semester by one of your friends.  Plagiarism is prohibited.
  • all projects that must be redone must be submitted (deadline: 1st day of the resit), otherwise an absence grade (for the resit) will be assigned

Work placement(s)

Organisational remarks and main changes to the course

The theoretical course is made of, more or less 10 lessons (typically, the theoretical course ends around Easter).  A few exercises sessions and assignment coaching are organized throughout the semester

Students are invited to interact with the educational team through the ecampus forum, for any questions related to the theoretical courses and the assignments.


Coordinator/Lecturer: Benoit Donnet -- Office 1.87b (B28)


  • Emeline Marechal -- Office 1.73b (B28)
  • Vincent Jacquot -- Office 1.72b (B28)

Association of one or more MOOCs