We will be running a two week workshop covering the basics of programming in C and C++ in September. This course is aimed at participants with no prior knowledge of C. The course is open to all (incoming) MISCADA MSc students of Durham University, Durham University staff, and Users from DiRAC (RSEs, PhDs, PostDocs). The course results from a collaboration between Durham’s Department of Computer Science, Durham’s Advanced Research Computing and DiRAC.

Date: 11 September – 22 September 2023
Format: The course will be hybrid. Participate over zoom or in person at Durham University’s Computer Science department. The Friday sessions are all virtual.
Location: Mon-Thu MCS 2094 (for those who attend in person; second floor in the Maths and Computer Science building)
Week 1
Day 1 Introduction and the von Neumann machine model (lecturer T. Weinzierl)
Day 2 Variables and memory management (lecturer C. Marcotte)
Day 3 Control structures (lecturer C. Marcotte)
Day 4 Functions, call stacks, call semantics (lecturer A. Reinarz)
Day 5 Mini project (trainer A. Tuft)
Week 2
Day 1 Procedural programming and code organisation (lecturer A. Reinarz)
Day 2 Data structures (lecturer A. Reinarz)
Day 3 Object-oriented programming (lecturer L. Morgenstern)
Day 4 Lambda notation (lecturer L. Morgenstern)
Day 5 Mini project (trainer A. Tuft)
No prior knowledge of C is required. However, we expect participants to be familiar with another programming language such as Python. For people joining us virtually, we will not provide infrastructure unless they already have a Durham IT account, i.e. those participants will be required to bring along their own kit or use computers from their home institution. DiRAC users will be able to use DiRAC facilities.
We expect participants to be able to use basic text editors and to have some bash/shell knowledge. An introduction to these tools is available from the Software Carpentry page.
Every Monday-Thursday, the course will consist of a 3h lecture in the morning from 9:00-12:00 UK time. In the afternoon, exercises will be provided for self-study, though we offer online support. On both Fridays, participants are asked to complete a mini-project in self-study. Again, an online help desk will be available. As this is a module that is not assessed formally, participants are encouraged to work through it as a group if they want.