Computer Science Programme
Senior sophisters can elect to follow the MCS programme with the intention of graduating with a Master in Computer Science (MCS) after successfully completing five years of study, or can finish after 4 years of study with the intention of graduating with a BA (Mod) in Computer Science. All Senior Sophister Students follow the same programme in Michaelmas term, and in Hilary term the MCS students take an Internship while the BA (Mod) students take an individual project and a group project.
Senior sophister student select whether they are intending to take the five year Masters programme by submitting an application for the Masters programme and Internship programme (Note: it is one form, and has to be submitted by the deadline which is typically in early October in their Senior Sophister year; The deadline is on the Internship programme page). Students who do not submit an application automatically take the four year Moderatorship programme.
Prospective students should read the brief descriptions of the courses below the tables which follow. Current students should follow the links (to the eLearning environment, "Blackboard", or to the module websites) or refer to my.tcd.ie for full details, including assessment criteria and learning outcomes.
|Michaelmas Term||Hilary Term
BA (Mod) programme
|Hilary Term |
|CS4051 Human Factors|
|CS4098 Group Computer Science Project|
|CS7091 Industrial/Research lab Internship|
|CS4081 Technology Entrepreneurship |
|CS4099 Final Year Project|
|Four options from the table below|
The form for selecting options is available here.
|CS4001 Fuzzy Logic (Description, Blackboard)|
|CS4004 Formal Verification (Description, Blackboard)||Presentation|
|CS4012 Topics in Functional Programming (Description, Blackboard)||Presentation|
|CS4021 Advanced Computer Architecture (Description, Website)|
|CS4031 Mobile Communications (Description, Blackboard)||Presentation|
|CS4032 Distributed Systems (Description, Website)|
|CS4052 Computer Graphics (Description, Blackboard)||Presentation|
|CS4053 Computer Vision (Description, Blackboard)||Presentation||Extra Info|
|CS4061 Artifical Intelligance IIa (Description, Blackboard)||Presentation|
|CS4071 Compiler Design II (Description, Blackboard)||Presentation|
|CS4LL5 Advanced Computational Linguistics (Description, Website)||Presentation|
This module aims to provide students with an understanding of the main issues underlying the usability of systems, and the main techniques and processes for interface design and evaluation. They will also gain a basic understanding of the theories which account for human performance.
This module introduces the fundamentals of technology entrepreneurship. It will cover the process technology entrepreneurs use to start companies. This involves taking a technology idea and finding a high-potential commercial opportunity, gathering resources such as talent and capital, figuring out how to sell and market the idea and managing rapid growth.
The Group Computer Science Project is undertaken in Hilary Term by students who have elected to follow the BA (Mod) programme. The goal of this project is to promote teamwork and also to allow students to use their individual skills and experiences within the context of developing defined projects from specification to delivery. A key aim is to develop students abilities in framing design problems and working iteratively to achieve a working solution.
The Final Year Project is undertaken in Hilary Term by students who have elected to follow the BA (Mod) programme. The aim of the project is to integrate the theoretical and practical knowledge of the student across all of the years of their study and provide a practical demonstration of their capability in executing a challenging project.
The Internship is undertaken by students who have elected to follow the MCS programme. The aim is to enable students to further develop an understanding of how design aspects and theoretical aspects of computer science are applied to practical problems in a real world context. For more information, please visit https://www.scss.tcd.ie/internships (and for current students a link to Submit the Internship Technical Report).
This module will introduce you to the exciting new field of fuzzy systems. Fuzzy systems are in almost daily use: your washing machine has fuzzy controls and many of the refrigerators do too. In both cases, the machines can sense the amount of stuff (clothes or food) and adjust their operations accordingly.
Fuzzy logic has been developed by computer scientists and control engineers over the last 30 odd years. Fuzzy logic is now being used in a range of critical systems ranging from image processing to the processing of financial time series.
Increasingly complex computer systems are becoming ever more important in all aspects of our lives. There are numerous examples where software bugs had extremely serious consequences, financially or to human well-being. This module will explore techniques to verify that computer systems satisfy their specifications; i.e., that they have no bugs and are thus safe to use. The focus of this module will be mainly on software correctness.
Students of this course will learn to invent precise program specifications using mathematical logics, and use formal methods to prove beyond doubt the absence of bugs in software. They will also learn how to use verification tools such as Microsoft's Dafny to achieve this aim.
This course builds on CS3012 which introduced the fundamental concepts of functional programming. In CS4012 we will take an in-depth look at more advanced topics in functional programming and discuss some current research directions in the field.
This advanced module provides students with the theoretical background and practical experience of developing lockless algorithms. Lockless algorithms allow shared data structures to be updated concurrently by multiple threads, typically on multicore CPUs. Students study the implementation and limitations of locks, how to use Spin to reason about the correctness of concurrent algorithms, the implementation of CAS based lockless algorithms and hardware transactional memory. Students have access to an x64 based 8 core (16 thread) server supporting hardware transactional memory.
Effective wireless communication is the key enabling technology for realising the emerging ubiquitous computing vision. Mobile Communications is a final year option module which imbues the next generation of graduates with a cognisance and awareness of both the capabilities and limitations of modern mobile devices. In this module students being by learning about the underlying principles of wireless transmission and how these underpin the design of wireless communication networks. This material forms a platform for the subsequent analysis, assessment and implementation of a wide variety of modern wireless communication systems.
Critical appraisal of recent publications in IEEE and ACM journals is used to enhance each students ability to communicate effectively through the written medium.
Building distributed applications is a difficult task due to the concurrency, communication latency, and possibility of partial failure that is inherent in distributed systems. As in other areas of computer science, the trend in providing support for building distributed applications has been towards presenting the application developer with ever higher levels of abstraction and, in the particular case of distributed programming, of location transparency. This course takes a critical look at some of the paradigms and architectural issues involved in distributed programming and their likely evolution.
Students will be given opportunities to develop their problem solving, programming and written communication skills by designing solutions to programming problems, implementing those solutions as fully networked distributed systems.
The objective of this module is to equip the students with the fundamental understanding of the major elements of Computer Graphics and explore related areas including geometric modelling, rendering and animation. The main focus of the module is on the mathematics and algorithms used in the synthesis of computer graphics imagery and animation, and their practical application. Students are introduced to the standard architectures of modern graphical applications including details on the underlying hardware and low-level software components common to all such systems. The module is intended to enable students to bridge the gap between these low-level fundamental, components common to all computer applications, and the high-level abstract output in most interactive graphical applications.
Students are also introduced to OpenGL, a modern high-level graphics API which is widely used for 3D Design and Visualisation, along with the industry standard modelling software, 3D Studio Max, and this software is used throughout the course to demonstrate concepts and to allow the students to develop their own 3D models, scenes and applications.
The aim of this module is to give students a firm understanding of the theory underlying the processing and interpretation of visual information and the ability to apply that understanding to ubiquitous computing and entertainment related problems. It provides them with an opportunity to apply their problem-solving skills to an area which, while it is firmly part of computer science/engineering, draws strongly from other disciplines (physics, optics, psychology). The module is based around problems so that the technology is always presented in context and during some tutorials students work in groups to design solutions to real world problems using the techniques that they have been taught. In addition, the course has a significant practical component so that students can appreciate how difficult it can be to apply the technology.
This is an in-depth initiation into some topics in AI, including the use of simple description logics and the application of finite-state methods to natural language processing. The syllabus includes topics such as knowledge representation, description logics, finite-state methods and reasoning about change.
To teach the principles of compiler optimization.
The aim is to give a grounding in so-called unsupervised machine learning techniques which are vital to many language-processing technologies including Machine Translation, Speech Recognition and Topic Modelling. Whilst studied in these contexts, the techniques themselves are used much more widely in data mining and machine vision for example.