Skip to main content

Trinity College Dublin, The University of Dublin

Menu Search

Module Descriptor School of Computer Science and Statistics

Module CodeCS4400
Module NameInternet Applications
Module Short Title
Semester TaughtMichaelmas Term
Contact Hours

Lecture hours: 11Tutorial/lab hours: 22

Total hours: 33

A series of individual projects contributing to a significant group project are undertaken over the semester in student’s time, with contact hours scheduled in support of that activity. Students are also expected to engage with staff and support systems as necessary to progress their work.

Module Personnel Assistant Professor Stephen Farrell, Associate Professor Ciarán Mc Goldrick
Learning Outcomes
  • When students have successfully completed this module they should be able to:

    • Describe the basic characteristics, structure and operation of a distributed system, and the issues which a distributed system must address in disparate scalable computing contexts;
    • Identify and evaluate appropriate platform, system and communication models for distributed problem scenarios;
    • Reason about the role and significance of emerging technologies in scalable computing contexts
    • Design, construct, document, deploy and test scalable distributed system solutions to realistic real-world problems;
    • Reason about the performance trade-offs in choosing, developing and deploying in different scalable paradigms;
    • Make use of appropriate documentation and reference material.
    • Develop a strategy for parallel implementation of a complex algorithm
    • Utilise container and virtualisation infrastructure proficiently.
    • Consider the ethical and engineering issues regarding data security, integrity and sovereignty. 


Learning Aims

This module aims to provide a theoretical and practical understanding of modern scalable systems and architectures, from billions of highly distributed Internet of Things devices, through to present day concepts, such as Cloud architectures and systems. It addresses the practical tools and techniques of practical distributed systems, ranging from energy, communication and data considerations, through to high scale and remote computation and analysis metaphors.  This module will provide a theoretical and practical understanding of Scalable Computing platforms and systems, and scaffold that knowledge in both present and future paradigms. It covers the fundamental structures, concepts and approaches that underpin key platforms, and targets they can be represented, analysed and manipulated. It addresses the practical systems, tools and techniques of creating scalable systems, building incrementally through practical project work, encompassing the key architectures and infrastructures relevant to today’s deployments.

Module Content

The module will be delivered in 3 phases, sequenced as described below. Each phase will be motivated by a lecture series, but will also require substantial focus on and delivery of graded practical development work. Students are cautioned that this practical programme will build from week to week towards a final project output. Grade values for each phase are noted.

Phase 1: Introduction to Scalable Computing and Systems (Weeks 1-4 - 20%)

This lecture-series phase will introduce the various principles and concepts that underpin scalable computing, from tiny constrained embedded devices through to large deployable cloud instances and infrastructures. Themes will include cloud, cluster, distributed, energy-aware, parallel, peer-to-peer, greed, grid and utility computing.

Phase 2: Initial platform identification, deployment and validation(Weeks 2-5 - 20%)

This phase will incorporate a series of structured, hierarchical, practical activities intended to ensure student familiarity with the key platforms, systems, tools and modalities of implementation and validation that are encountered in Industry and which will be employed on this module.

Phase 3: Group project implementation, validation and demonstration (Weeks 5-12 - 60%)

The primary practical assessment activity will be encapsulated in a single, challenging group project. Each group will have a uniquely assessable challenge, with a series of interim goals/outputs/results, culminating in a final validation of the implemented system. It is intended that the challenge can valuably target scalable IoT deployments through to multi instance cloud compute solutions...

Recommended Reading List

Graham Hutton, Programming in Haskell, Cambridge press, 2016.

Extensive use will also be made of research papers and other material from the literature and ongoing research examples from our work at TCD.

Module Prerequisites

Students are required to be competent in at least one high level programming language (e.g. Python, Java, C++, C# etc.). Previous experience with concurrent programming is beneficial but concurrency will be reviewed in the module. Haskell is the module programming language. Student’s unfamiliar with functional programming in practice should devote some preparatory time to building simple Haskell based systems. Consult the module web site for more details and suggested readings.

Assessment Details

100% coursework.

A summary of assessment follows. The final grade awarded will be a simple accumulation of grades achieved in each element. Assessment of each component will be based on the quality of the student’s submission, solution design and implementation, and success in achieving the appropriate outcome.



  • 75% individual
  • 25% group coursework

A summary of assessment follows. The final grade awarded will be a simple accumulation of grades achieved in each element. Assessment of each component will be based on the quality of the student’s design and implementation, their success in achieving the prescribed task, and their understanding of the key concepts and methodologies thereof.

Inclass assessments: 20%
Project 1: 10%
Project 2: 10%
Project 3: 15%
Project 4: 25%
Final report: 20%


 Assessment in the Supplemental session will be based on 100% coursework.

Module Website
Academic Year of Data2018/19