Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Logistics


Here we discuss how the C programming part of COMP26020 is organised. You can access the slides 🖼️ for this lecture.

A Typical Week

The unit follows a blended approach: we’ll have one live session per week, then there is also a set of asynchronous materials (videos and exercises) to study.

C Part: Unit Content

The C part of the unit is made of:

  1. Lecture materials:
    • There is a 1h live lecture every week.
    • There is also a set of (short) videos to watch every week after the lecture.
  2. Formative (i.e. not marked) assessments:
    • One quiz to complete each week after having studied the lecture materials, to check that you understand the theory well.
    • A set of autocorrected programming exercises to complete each week after having studied the lecture materials, to validate your knowledge from the practical point of view.
  3. Summative (i.e. marked) assessment:
    • One lab exercise to be done at home and/or on the Department’s machines.
  4. Support sessions:
    • These are optional and basically office hours; come if you have any questions about the lecture materials or assessments.
    • There is a 2h support session scheduled every other week, with a total of 3 support session for the part of COMP26020 dedicated to C programming.

Unit Page on Canvas

Like most units, COMP26020 has a course page on Canvas. To access the landing page for the C part, click on the COMP26020 course and then on the button Part I: Imperative Programming in C. It is recommended to bookmark this landing page: it contains the C part schedule telling you everything you need to do for each week, and it also points to all the relevant unit content:

  • Lecture videos, including recordings of live sessions.
  • Lecture notes and lecture slides.
  • The summative lab exercise brief.
  • The formative autocorrected programming exercises.
  • Formative quizzes.
  • Discussion boards.
  • Reading list.

Required Software

The C part of this unit includes a series of formative programming exercises, and a summative lab exercise. All should be done in a Linux x86‑64 (i.e. Intel/AMD CPU) environment with a recent version of GCC.

🚨🚨 Do not use native Windows/Mac or WSL environments 🚨🚨.
We will not provide support for these environments, and you may be unable to complete the exercises and/or lose marks when we grade due to differences in build toolchains.

To access a proper development environment, pleae follow these instructions:

Lecture Videos and Slides

Lecture videos, slides, as well as recordings of past live sessions are available on Canvas, by clicking on the lecture material topics from the landing page mentioned above. In particular, the slides contain clickable links and interactive code snippets. Here is an example (empty C program):

Take a look at the links at the bottom left of the code snippet; you have:

  • A link (blue path) to download a fully functional program containing the code illustrated in the snippet, if you want to build and run it on your local machine.
  • A link to a GitHub repository containing the code in question, located in the same path as defined in the blue link. For example, with the above you can find the code in 00-logistics/sample-code.c. The GitHub repository also contains instructions on how to set up a proper development environment to build and run the code samples (including in your browser with GitHub Codespaces), and to do the formative/summative programming exercises for this part of the unit. This includes instructions for those of you who cannot get a native/VM-based Linux environment (e.g. Apple silicon CPUs).

In these lecture notes, most code snippets will also come with a link to a downloadable source file in the bottom right corner:

#include <stdio.h>

int main() {
    printf("hello, world!\n");
    return 0;
}

Lab Assignment (Marked)

The brief is accessible here. The goal of the exercise is to implement a matrix processing library in C. It is worth 6.5% of the final COMP26020 mark. Keep in mind that this is a full‑year unit, and that the coursework/exam weighting for the C part of the unit is 50/50.

Autocorrected Programming Exercises (Not Marked)

There are a few formative programming exercises:

These exercises are corrected automatically with a tool called check50. The instructions on how to install and use it are available on the page regarding the dummy exercise.

Quizzes

There is a small formative quiz to complete each week by clicking on the corresponding links on the landing page.

ChatGPT and Other AI Tools

The use of generative AI to complete the formative lab exercises is not recommended: they are generally quite simple and can be completed effortlessly with such tools, but you are not learning much in the process. If you struggle with a particular exercise, it is acceptable to ask an AI for some help, or even a solution: just make sure you understand well the code generated.

The use of generative AI is mostly authorised to complete the summative lab exercise, see further instructions in the brief.