Skip to main content

Trinity College Dublin, The University of Dublin

Trinity Menu Trinity Search



You are here Undergraduate > Computer Science > Senior Fresh

Computer Science ProgrammeSenior Fresh

The following is a brief overview of the modules taken in Senior Fresh year. Prospective students should read the brief descriptions of the courses below the table which follows.

Current students should follow the links (to the eLearning environment, "Blackboard", or to the module website) or refer to my.tcd.ie for full details, including assessment criteria and learning outcomes.

Michaelmas Term Hilary Term
CSU22010 Algorithms and Data Structures (Website) CSU22010 Algorithms and Data Structures continued (Website)
CSU22014 System Programming I (Website) CSU23016 Concurrent Systems and Operating Systems
CSU23031 Telecommunications II CSU23021 Microprocessor Systems
CSU22041 Information Management I CSU22022 Computer Architecture I (Website)
MAU22C00 Discrete Mathematics (Website) MAU22C00 Discrete Mathematics continued
  CSU22013 Software Engineering Project I
Trinity Elective in Michaelmas Term (or Hilary Term)

CSU22010 Algorithms and Data Structures

10 ECTS credits, Semester 1 & 2

The aim of the module is threefold:

  1. To teach effective programming and problem solving, using a core toolset of classical algorithms and data structures.
  2. To introduce the methods for evaluating the performance and requirements of programs written by the students

To promote effective software engineering by using well-established techniques for code modularity, structuring, debugging and readability, such as Design by Contract, and unit testing.

Module Description CSU22010 Blackboard Module Website

CSU2013 Software Engineering Project I

5 ECTS credits, Semester 2

In this module, students are introduced to the discipline of software engineering and must work in groups to complete a complex software project. Groups will be managed in conjunction with more senior students taking the CS3013 module. For the duration of this module, students are divided into groups, each of which is closely supervised by the module lecturer and a separate project customer. The module provides students with their first formal experience of group work. They are required to follow a rigorous process consisting initially of requirements gathering, analysis and system design. Thereafter they are required to implement a complex software product using industry standard software engineering tools and methodologies.

The principal aim of this module is to provide students with experience of working together in groups to complete a complex software project. Upon completion of the module students will have gained experience of analysing, specifying, designing and implementing a complete software system. They will also have been exposed to the challenges posed by working in teams and the need to communicate effectively both within their respective groups and to their project supervisor.

Module Description CSU22013 Blackboard

CSU22014 Systems Programming

5 ECTS credits, Semester 1

Students taking this module have already successfully completed modules in object-oriented Java programming and ARM assembly language programming. This module starts with a new perspective on program construction, with structured programming in C. This part of the module deals with the features of C, sound design principles for structured programming, and the necessary self-discipline required to program in a low-level language like C. Students also learn the basics of how programs are commonly implemented, with special emphasis on the layout of program data in memory. In parallel with learning C programming, the students learn about the UNIX operating system, including program development tools, interaction between C programs and the operating system.

Module Description CSU22014 Blackboard

CSU23016 Concurrent Systems and Operating Systems

5 ECTS credits, Semester 2

The first part of this module introduces students to concurrency and concurrent programming. The aim is to provide students with the ability to develop concurrent software systems using standard techniques and constructs. To achieve this aim, students must have a thorough understanding of common problems that arise in concurrent systems and how those problems can be avoided. This module will teach the use of tools and techniques for modelling and verifying the correctness of concurrent systems, applying this through practical laboratory exercises in which small concurrent software systems are developed.


The second part of the module addresses various aspects of the design of modern operating systems. The main aim is to explore how programmers can apply a knowledge of operating system features to the design of efficient applications. This is achieved by examining common algorithms and policies used by modern operating systems, as well as the facilities provided to application programmers. This knowledge is then applied in laboratory exercises.


Concurrency: introduction to concurrency; simple multi-threaded programs in C; modelling concurrent systems; interference; mutual exclusion; critical sections; verification of concurrent programs; semaphores; monitors.
Operating Systems: operating system architectures; memory management; processor scheduling; disk I/O; file systems.

Module Description CSU23016 Blackboard

CSU23021 Microprocessor Systems

5 ECTS credits, Semester 2

Students bring the knowledge and expertise of programming, digital logic and a small amount of digital electronics to the development of small system integration projects combining program design and implementation with simple interface interfacing and breadboarding.
Each team is provided with a small ARM-based computer, a PC-based integrated development system, some electronic components and breadboarding facilities.
Students have to design, build and test integrated hardware and software systems to provide a certain required functionality.
Students also study processor and memory architectural techniques such as pipelining, superscalar architectures and caches.

Module Description CSU23021 Blackboard

CSU22022 Computer Architecture I

5 ECTS credits, Semester 2

The aims of the module are to learn register-transfer specification and design and learn the fundamentals of an instruction processor.
The lectures and tutorials examine the detailed design and organisation of an instruction processor. Coursework consists of two design projects and students use VHDL and ModelSim to simulate and test their designs. The first project involves the design of a processor unit (ALU + shifter + fast registers) and the second project involves the design of an instruction processor.
Topics studied include digital logic, register transfer definitions, micro-operations, bus transfers, ALU design, shifter design, hardwired control design, microprogrammed processor control and the design of an instruction processor.

Module Description CSU22022 Blackboard Module Website

CSU23031 Telecommunications II

5 ECTS credits, Semester 1

The module introduces the basic concepts underlying the communication between nodes connected to the Internet. The explanation of this communication can be split into two layers: One layer focuses on the delivery of data between two immediately connected devices e.g. nodes connected to the same local network; the other layer focuses on the interconnection of individual networks into the Internet and the communication between nodes connected to the Internet.
Topics addressed in this module include:
Error Detection and Flow Control
Example protocols such as HDLC and PPP
Medium Access Control (MAC)l
Examples of MAC protocols such as IEEE 802.11 Wifi and IEEE 802.3 Ethernet
Switching & Routing
Internet Protocol v4/v6
Routing Protocols
Software-Defined Networking and OpenFlow

Module Description CSU23031 Blackboard

CSU22041 Information Management I

5 ECTS credits, Semester 1

This module focuses on the methods and techniques for efficient management (storage, manipulation and retrieval) of data and information in a computer and on the world wide web. It provides a foundation for later modules in database management and advanced information management.

The first part of the module focuses on fundamental issues related to information management on a computer, how data is organised on storage devices, transferred between storage and computer, structured within files, and effectively searched through indexing. Concepts from the first part of the module are exercised through the examination of XML as an example file format that is increasingly used to both store and process information. Accompanying technologies for structuring, manipulating and querying XML will be studied and practiced.

Whereas the first part of the module examines the fundamental concepts for working with structured information and provides a basis for subsequent modules on database technology, the second part of the module focuses on information on the web, ranging from traditional information retrieval techniques through to emerging semantic web techniques.

Module Description CSU22041 Blackboard

Trinity Elective

From 2019-20 students must take a Trinity Elective rather than a Broad Curriculum module. In order to have a balanced workload students are strongly recommended to take their Trinity Elective in Michaelmas term.

MAU22C00 Discrete Mathematics

10 ECTS credits, Semester 1 & 2

This module provides students with an introduction to Discrete Mathematics. Students are exposed to diverse course material presented in the formal style and language that is commonplace in contemporary mathematics, with the aim that they should develop the skills required to engage actively with such material.

Students get an introduction to a variety of topics arising from Calculus,Geometry and Discrete Mathematics, that are of relevance in fields such as acoustics,image processing, computer graphics and cryptology.

Module Description MA2C03 Blackboard Module Website