20h Th, 100h Proj.
Number of credits
|Bachelor in computer science||5 crédits|
|Master of science in computer science and engineering (120 ECTS)||5 crédits|
Language(s) of instruction
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
- Chapter 1: Compilation
- Chapter 2: Library
- Chapter 3: Tests
- Chapter 4: Documentation
- Chapter 5: Debugging
- Chapter 6: Performance Analysis
- Chapter 7: Source Code Management
- Chapter 1: Introduction to Graphical User Interfaces
- Chapter 2: Interactive Applications
- Chapter 3: MVC Patter
- 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.
Prerequisite knowledge and skills
The course requires several corequisites:
- INFO0946: Introduction à la Programmation (http://www.montefiore.ulg.ac.be/~bdonnet/info0946/index.html)
- INFO0947: Compléments de Programmation (http://www.montefiore.ulg.ac.be/~bdonnet/info0947/index.html)
- 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)
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).
- 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 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.
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.
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, ...)