2017-2018 / INFO0030-3

Programming Projects


20h Th, 100h Proj.

Number of credits

 Bachelor in computer science5 crédits 
 Master of science in computer science and engineering (120 ECTS)5 crédits 


Benoît Donnet

Language(s) of instruction

French language

Organisation and examination

Teaching in the second semester

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: Performance Analysis
  • Chapter 7: Source Code Management
Part 3: Event-Based Programming Concepts
  • Chapter 1: Introduction to Graphical User Interfaces
  • Chapter 2: Interactive Applications
  • Chapter 3: MVC Patter
Part 4: Introduction to Software Engineering
  • Chapter 1: Software Engineering Basics

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 understand some mechanisms used for analyzing an application performance.
  • to build a graphical user interface with GTK and the MVC pattern.
  • to discuss the different steps for creating a software and the different software development methods.
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:

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)

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.
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.

Assessment methods and criteria

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

  • Project 1: 20% of the final grade
  • Project 2: 30% of the final grade
  • Project 4: 50% of the final grade
The first 2 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 3rd 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 3rd 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.

Work placement(s)

Organizational remarks

The theoretical course is made of, more or less 10 lessons (typically, the theoretical course ends around Easter).  There are no exercices/lab sessions.
Students are invited to interact with the educational team through the ecampus forum, for any questions related to the theoretical courses and the assignments.


Teacher: Benoit Donnet (benoit.donnet@ulg.ac.be) -- Office I/15 (B28) TA: Korian Edeline (korian.edeline@ulg.ac.be) -- Office R.71/b (B28)

Items online

Course Web Site
The course Web page is of the highest importance as it covers contact information, PDFs, assignments subjects and any resource useful for implementing projects (compiler, OS, ...)