Projet Génie Informatique — Freud Image Analyst

The project

Freud is an image analyst — a command-line tool that performs actions on image files: rotate, crop, re-color, compute statistics, and more.

You will build this tool in C, working as a team of three. The project is organized into milestones (groups of related features) and issues (individual features). You implement features one by one, incrementally, validating each against automated tests.

$ ./build/freud.exe -f images/input/test.jpg -c color_blue

Not sure what a command line is? Start with Using the Command Line.

Goals

  • Learn to write C code — structure, pointers, files, functions — by doing
  • Organize a software project with milestones and issues
  • Work as a team with Git and GitHub
  • Build and validate a C project against a set of specifications and automated tests
  • Prepare for the individual exam: coding in a sandbox, answering questions about the project
ImportantThis project is about learning to code — not about using AI to code for you

The goal is to develop your own C programming skills. Do not use AI assistants (ChatGPT, GitHub Copilot, Gemini, etc.) to generate your code. The final exam is individual, in a sandboxed environment, with no internet or coding tools — what matters is what you have learned to write.

Think of learning to program like going to the gym: the point is not to move weight from one place to another, the point is to become stronger yourself. Plagiarism is like pretending to be a fitness influencer by posting someone else’s lift as your own. Using an LLM to generate your code is like bringing a forklift to move the weights for you: it is not the same kind of fault, but it still misses the point of the exercise.

See the Ethics & AI Policy page for the course policy on plagiarism, AI tools, and appropriate help.

How you are evaluated

The course grade has two components:

Component Weight
Project (team, automatic CI) 5 / 20
Exam (individual, Moodle + Safe Exam Browser) 15 / 20

The exam tests your ability to answer questions about the project and write C code in a sandboxed environment — individually, without tools.

→ See Grading & Progress for full details.

Three spaces, one project

flowchart LR
    CL["🎓 GitHub Classroom<br>Register your team"] -->|"creates"| GH["☁️ GitHub Repository<br>Shared code · Issues · CI"]
    LM["💻 Local Machine<br>VS Code · gcc · CMake"] <-->|"git push / pull"| GH

Every line you write lives locally until you push it. GitHub Actions compile and test what is on main — that is what gets graded.

Onboarding — follow in order

Do not skip ahead. Each step depends on the previous one.

  1. The Project Ecosystem — understand the three spaces and the overall flow
  2. Setup — register team, clone, install tools, validate, activate workflows, import issues
  3. First Steps — learn the dev loop, then start Milestone 1 together

Where do you want to go?

🚀 Just registered?

Start from the beginning — register your team, set up your environment, and make your first commit.

Start Here

💻 Ready to code?

Browse features, pick your next issue, and understand the dev loop.

Code

🔍 Stuck or confused?

Common build errors, Git problems, and debugging strategies.

Debugging & Troubleshooting

📊 How am I graded?

Understand the milestone system, CI evaluation, and academic integrity policy.

Evaluate

📚 Want to understand deeper?

Image data structure, the build system, how to collaborate with git.

Learn

🛠 Looking for a tool?

VS Code, Git, CMake, command line — all in one place.

Tools