INFR08022 Computer Programming: Skills and Concepts (INF-1-CP)
and MUSI09001 Computer Programming for Music Technology.

This course provides an gradual but in-depth introduction to imperative programming using the C programming language. It is intended for students who are not taking Computer Science/Artificial Intelligence as part of their degree. Our lectures (2 a week) are backed up with a scripted (and supervised) two-hour Lab and a one-hour tutorial, every week. The assessment will be based on a 3-hour online programming exam in December (worth 90%) and one coursework due in week 9 (10%).


Lecturers are Mary Cryan and Julian Bradfield. The official Course Organiser is Paul Anderson.


CP/CPMT is taught in semester 1. It is taught as a combination of two Lectures:

It also includes a (compulsory) scripted and supervised Lab (from Thursday, week 1 onwards) in Lab 3.D02 in the Forrest Hill building. Due to the extra numbers on the course, we will have an extra room for Monday's labslot - we have both 3.D02 and 3.D01 that day.

new The Lab Allocations can be found at this link. You will need your Informatics (DICE) password to be able to view your allocation. We have assigned Labs so to avoid any of your lectures.

Problems with Lab/Tutorial allocations should be sent to Gregor Hall (

Some students report security warnings when they try to access this link. This is because the University certifies its own secure pages, rather than using a commercial provider. Most Internet browsers will offer an link to bypass the security-warning, if you look closely. If you really can't see a way to do that, try a different browser (eg switch from Explorer and try with Chrome instead). You will see this problem with all University secure sites if you access them from a private machine, so it's worth installing the University's certificate in your browser. For instructions on this, see Information Services' page.

It also includes a 1-hour Tutorial (from week 3 onwards).
new The Tutorial Allocations can be found at this link.


We will keep a log of our lectures, and the collection of log entries will be maintained here. Individual log entries (once written) will be available as direct links from the lecture titles in the schedule below (I have added the logs for the first 4 lecture, and the first lab, so far).

Meeting Day Date Who Where Title Slides & Handouts     Code    
Week 1  
1. Monday 21 Sept Mary/Julian AT LT1 Introduction to CP sl1, sl1x4 hello.c
2. Tuesday 22 Sept Mary AH B.LT. Imperative programming, operations, errors sl2, sl2x4
Lab 1 Thur24/Mon28/Tues29 M+/J+/J FH 3.D02 Intro to the DICE Environment lab1.pdf, unix.pdf, emacs.pdf  
Week 2  
3. Monday 28 Sept Mary AT LT1 Variables and ints sl3, sl3x4 square.c, max.c
4. Tuesday 29 Sept Mary AH B.LT Arithmetic operations, int, float, double sl4, sl4x4 floats.c, quadratic.c
Lab 2 Thur1/Mon5/Tues6 M+/J+/J FH 3.D02 Simple arithmetic problems lab2.pdf  
Week 3  
Tutorial Tutor   week 3 sheet tutwk3.pdf
5. Monday 5 Oct Mary AT LT1 arithmetic, if-statement(cont.) sl5, sl5x4 quadratic.c, quadratic2.c
6. Tuesday 6 Sept Mary AH B.LT iteration: for and while sl6, sl6x4 table.c, fib.c, fib-for.c, lect6code.tar
Lab 3 Thur8/Mon12/Tues13 M+/J+/J FH 3.D02 Programming, with some iteration lab3.pdf  
Week 4  
Tutorial Tutor   week 4 sheet tutwk4.pdf
7. Monday 12 Oct Mary AT LT1 Functions
8. Tuesday 13 Oct Mary AH B.LT Functions 2
Lab 4 Thur15/Mon19/Tues20 M+/J+/M FH 3.D02 Simple Graphics with descartes
Week 5  
Tutorial Tutor   week 5 sheet
9. Monday 19 Oct Julian AT LT1 Arrays
10. Tuesday 20 Oct Julian AH B.LT Practical Programming
Lab 5 Thur22/Mon26/Tues27 M+/J+/M FH 3.D02 Functions, some pointers, some arrays  
Week 6  
Tutorial Tutor   week 6 sheet
11. Monday 26 Oct Julian AT LT1 scanf in more detail; char
12. Tuesday 27 Oct Julian AH B.LT Strings
Lab 6 Thur29/Mon2/Tues3 M+/J+/M FH 3.D02 Arrays and some strings  
Week 7  
Tutorial Tutor   week 7 sheet
13. Monday 2 Nov Julian AT LT1 Structured Data
14. Tuesday 3 Nov Julian AH B.LT Structured Data, cont.; enums; switch
Lab 7 Thur5/Mon9/Tues10 M+/J+/J FH 3.D02 Structured data types
Week 8  
Tutorial Tutor   week 8 sheet
15. Monday 9 Nov Mary AT LT1 Searching and sorting
16. Tuesday 10 Nov Mary AH B.LT Recursion (including mergesort)
Lab Thur12/Mon16/Tues17 M+/J+/M FH B.LT1 mock exam  
Week 9  
Tutorial Tutor   week 9 sheet
17. Monday 16 Nov Julian AT LT1 Libraries and Separate Compilation
18. Tuesday 17 Nov Julian AH B.LT Files in C
Lab 8 Thur19/Mon23/Tues24 M+/J+/J FH 3.D02 Recursion and some File work
Week 10  
Tutorial Tutor   Mock exam Qs; Files and Arguments see prev sheet
19. Monday 23 Nov Julian AT LT1 Program Arguments, More C; Mock exam feedback
20. Tuesday 24 Nov Mary AH B.LT Some past exam Questions
Lab 9 Thur26/Mon30/Tues1 M+/J+/J FH 3.D02 past exam papers


Your grade for CP will depend on two components. The first part will be a single electronically-submitted piece of coursework, due by 4pm, Friday 20th November (end week 9). This work is worth 10% of your overall grade. The second is the final exam, carried out as a computer-based programming test held in the computer labs, taking place at the the end of semester 1. This final exam is worth 90% of your overall grade.

The (due end week 9) coursework must also be completed by CMPT students and is worth 10% of their grade also. However, the weighting of the exam is slightly different - it is worth only 70%, with the remaining 20% depending on the extra piece of practical work for CPMT students, done with the Music department in week 11.

Course Text

"A Book on C: Programming in C", 4th edition; by Al Kelley and Ira Pohl.

Practising on your own machine

Home : Teaching : Courses 

Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail:
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh