Module Code | CSU22061 |
Module Name | Intermediate Programming |
ECTS Weighting[1] | 5 ECTS |
Semester taught | Semester 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.
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 Component | Brief Description | Learning Outcomes Addressed | % of total | Week set | Week Due |
Examination | In Person Exam | L01, L02, L03 L04,L05,L06 | 60 | N/A | N/A |
Coursework 3 | concerns classes and inheritance | L01, L02, L03 L04,L05,L06 | 16 | 9 | N/A |
Coursework 2 | concerns strings, vectors, nested vectors as a data structure | L01, L02, L03 | 16 | 5 | N/A |
Coursework 1 | concerns functions & vars, separate compilation | L01, L02, L03 | 8 | 2 | N/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
In Person Exam, 100%
Contact Hours and Indicative Student Workload
Contact Hours (scheduled hours per student over full module), broken down by: | 33 hours |
Lecture | 22 hours |
Laboratory | 11 hours |
Tutorial or seminar | 0 hours |
Other | 0 hours |
Independent study (outside scheduled contact hours), broken down by: | 69 hours |
Preparation for classes and review of material (including preparation for examination, if applicable | 33 hours |
completion of assessments (including examination, if applicable) | 36 hours |
Total Hours | 102 hours |
Recommended Reading List
C++ how to program: introducing the new C++14 Standard. Deitel and Deitel
Module Pre-requisites
Prerequisite modules: NA
Other/alternative non-module prerequisites: NA
Module Co-requisites
None
Module Website
www.scss.tcd.ie/Martin.Emms/2061