Skip to main content

Unit information: Programming in C in 2024/25

Please note: Programme and unit information may change as the relevant academic field develops. We may also make changes to the structure of programmes and assessments to improve the student experience.

Unit name Programming in C
Unit code COMSM1201
Credit points 30
Level of study M/7
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Campbell
Open unit status Not open
Units you must take before you take this one (pre-requisite units)

None

Units you must take alongside this one (co-requisite units)

None

Units you may not take alongside this one

None

School/department School of Computer Science
Faculty Faculty of Engineering

Unit Information

Why is this unit important?

Programming in C is fundamental to the Computer Science MSc for several reasons. Firstly, C is a foundational language, offering a deep understanding of low-level concepts like memory management and data structures. This knowledge is essential for optimizing code and developing efficient software. Second, C's simplicity and minimalistic syntax encourage a strong grasp of programming fundamentals, making it easier to learn other languages. Third, C's ubiquitous presence in operating systems and embedded systems means that proficiency in it is invaluable for system-level development. Overall, mastering C equips computer science students with a strong foundation and versatile skills essential for various programming domains. Furthermore, by dedicating half the teaching block the unit’s scope is extended to encompass a wide array of computer science concepts, including computational complexity and searching algorithms.

How does this unit fit into your programme of study?

The Programming in C unit is fundamental to the whole programme, providing foundational knowledge and forming synergies with all the other units. For example, C Programming aligns with computer architecture by teaching low-level concepts like memory management and assembly language, enhancing understanding of hardware-software interaction. By developing a strong foundation in programming concepts, it is easier for students to transition to object-oriented programming in Java, where complex software structures are built on a solid understanding of basic programming constructs.

Your learning on this unit

On successful completion of this unit you will be able to:

  1. Programme competently in C99.
  2. Apply good software engineering techniques.
  3. Implement a set of standard algorithms.
  4. Compare the space/time complexity of algorithms.
  5. Experience the difficulties around testing large-scale software projects.
  6. Be able to conduct static analysis of code without help.

How you will learn

Teaching will be delivered through a combination of lectures, practical activities supported through lab work, problem sheets of self-directed exercises and general Q&A sessions.

How you will be assessed

Tasks which help you learn and prepare you for summative tasks (formative): 

Teaching will take place over the first ten weeks of the term (excluding the consolidation week), with six hours of lab support every week.

During the taught phase of the unit, students will progress through a series of weekly exercises that consist of structured practical tasks, each with specific outputs and objectives, so that success/failure can be assessed. Completion of these formative tasks will provide students with the skills and knowledge required to pass the assessments. These weekly exercises build upon each other to provide the frameworks required for the summative assessment.  

Tasks which count towards your unit mark (summative): 

5% : Week 3 (Functions/Peer Assessment) - ILOs 1

20%: Week 5 (2D arrays / Files) - ILOs 1 & 2

25% : Week 8 (Searching Arrays of structures) - ILOs 2 & 3

25%: Week11 (Abstract Data Types / Data Structures) - ILOs 3, & 4 & 5

25%: Week 12 (In Theory Exam) - ILO 6 

When assessment does not go to plan 

If a student is required to undertake assessment for the unit in the reassessment period, then they will need to take the component(s) which they have not passed or is still outstanding, this could be the coursework and/or theory exam. Due to a short reassessment period, instead of a student undertaking the four separate coursework components there will be a single coursework component assessing ILOs 1-5 (worth 75%). The Theory Exam (ILO 6) will still be worth 25% of the unit.

Resources

If this unit has a Resource List, you will normally find a link to it in the Blackboard area for the unit. Sometimes there will be a separate link for each weekly topic.

If you are unable to access a list through Blackboard, you can also find it via the Resource Lists homepage. Search for the list by the unit name or code (e.g. COMSM1201).

How much time the unit requires
Each credit equates to 10 hours of total student input. For example a 20 credit unit will take you 200 hours of study to complete. Your total learning time is made up of contact time, directed learning tasks, independent learning and assessment activity.

See the University Workload statement relating to this unit for more information.

Assessment
The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. For appropriate assessments, if you have self-certificated your absence, you will normally be required to complete it the next time it runs (for assessments at the end of TB1 and TB2 this is usually in the next re-assessment period).
The Board of Examiners will take into account any exceptional circumstances and operates within the Regulations and Code of Practice for Taught Programmes.

Feedback