CSU22061 – Intermediate Programming

Module CodeCSU22061
Module NameIntermediate Programming
ECTS Weighting[1]5 ECTS
Semester taughtSemester 1
Module Coordinator/s  Martin Emms

Module Learning Outcomes

On successful completion of this module, students will be able to:

  • LO1 write, compile and debug C++ code, using command-line tools
  • LO2 solve problems using the string and vector classes
  • LO3 develop and debug code organised as variables and functions
  • LO4 develop and debug code using classes and inheritance
  • LO5 use inheritance in own code development and to exploit third-party class libraries
  • LO6 write code to handle recursive, dynamically allocated data structures, such as syntax trees or the transition graph of a finite state automaton

Module Content

The aim is to engender a mastery of the fundamentals of programming in C++, a language compiled to optimised machine-code, usable in a uniquely wide range of scenarios, from low level ‘close to the metal’ ones to ones involving high level programming abstractions. Command-line tools will be used for program development so the module serves also as an introduction to that approach. Though not a prerequisite for the 2nd semester module CSU22062 Natural Language Processing, this module covers the programming skills that will be used in that module.

Topics covered will include

  • built-in types and coercion
  • pointers, arrays, reference parameters
  • STL containers such as string and vector
  • information packaging via organising code as a collection of variables and functions
  • information packaging via use of structs, classes and inheritance (illustrated by Qt library for GUIs)
  • dynamic memory allocation and recursive data structures (for lists and trees)

Teaching and learning Methods

There will be lectures, tutorials and lab sessions, with the break-down between these being subject to some variation week-on-week, so that when the time-table indicates a lecture the session may actually be a lab-session or a tutorial. Evolving circumstances will dictate whether these take place face-to-face in rooms at Trinity, or take place online. Current intentions are that a substantial amount will be face-to-face.

There will be many exercises in online materials, all of which students will be encouraged to attempt; a subset of these will be set as assignments and graded. To all of the exercises suggested answers will be provided some time after the exercise has been first made available.

Assessment Details

Assessment ComponentBrief DescriptionLearning Outcomes Addressed% of totalWeek setWeek Due
ExaminationTake Home ExamL01, L02, L03
Coursework 3concerns classes and inheritanceL01, L02, L03
Coursework 2concerns strings, vectors,
nested vectors as a data
L01, L02, L03205N/A
Coursework 1concerns functions & vars,
separate compilation
L01, L02, L03102N/A

The details concerning Coursework summarise the preceding iteration of this module and while indicative of what may be expected, things may this year are likely to unfold in a similar but not identical fashion.

Reassessment Details

Take Home Exam, 100%

Contact Hours and Indicative Student Workload

Contact Hours (scheduled hours per student over full module), broken down by:33 hours
22 hours
Laboratory11 hours
Tutorial or seminar0 hours
Other0 hours
Independent study (outside scheduled contact hours), broken down by:69 hours
Preparation for classes and review of material (including preparation for examination, if applicable33 hours
completion of assessments (including examination, if applicable)36 hours
Total Hours102 hours

Recommended Reading List

C++ how to program: introducing the new C++14 Standard. Deitel and Deitel
C++ Program Design J.Cohoon and J.Davidson

Module Pre-requisites

Prerequisite modules: NA

Other/alternative non-module prerequisites: NA

Module Co-requisites


Module Website