BSc (Hons) in Computing Science
Prepare for your career in one of the fastest growing industries in the world
This exciting Level 8 Bachelors Degree teaches students about the latest technological developments, and enables them to gain practical work experience, and specialise in, one of four emerging areas.
Why Study Computing Science at Griffith College?
Designed specifically with the needs of industry in mind, the BSc (Hons) in Computing Science at Griffith College is a 4-year programme, which aims to equip students with a thorough understanding of the key principles of computer science. Delivered on a full and part-time basis, as a graduate of this course, you will:
- Obtain highly sought after skills essential for a career in IT.
- Specialise in one of four key emerging areas such as Cloud Computing, Games Development, Network Management and Software Development.
- Fantastic job prospects with a 100% employment record from a sample of 35 graduates from our class of 2017
- Obtain the necessary skills and academic requirements to further your studies with progression onto one of Griffith College’s postgraduate computing courses including a range of Postgraduate Diplomas in Networking, Software Development and Information Management, Master of Science in Network and Information Security, Master of Science in Cloud Computing and Master of Science in Big Data Management & Analytics.
- Small class sizes
- Access to state of the art facilities
- A dedicated experienced lecturing team
- Industry guest speakers
- Limerick - Full-Time - September 2023
- Limerick - Part-Time - September 2023
- Dublin - Full-Time, Part-Time - September 2023
- Cork - Full-Time - September 2023
- Cork - Full-Time - February 2024
Are you applying through the CAO?
Read our CAO HUB for everything you need to know about applying through the CAO!
- Dublin: GC430
- Cork: GC230
The aim of the module is to teach the learner how to design high-quality computer programs in a systematic way. All the relevant concepts and techniques are explained and exemplified in the clearest, simplest language. The objectives are to facilitate the learner to understand the theory underlying programming as a concept and to enhance the logical step by step approach to problem-solving required. The basic concepts of command sequences, iteration and selection are introduced, and the constructs used in a modern programming language to implement these.
The main objective of this course is to introduce learners to the concepts, notations and operations of mathematics that provide a basis for working in the field of computing. The material covered extends the knowledge of learners who have completed courses in mathematics at secondary level.
Learners are given practical experience of developing web sites using these technologies, as well the processes behind researching and planning user-centred web applications.
Learners are helped to develop their knowledge and understanding of how computer hardware is constructed and how the hardware can be made to implement logic and arithmetic and to run programs. Since computing is showing itself to be both pervasive and fast evolving, the module emphasizes the key principles that continue to apply while allowing the scope of the learning to benefit from the broad base envisaged in the module.
Learners are expected therefore to apply the principles of computer hardware to both current and developing technologies. Further, they are helped to cultivate an understanding of how the insights and practice from computer hardware technology contribute to the current state of the art in the wider Computer Science landscape.
The objective of the module is to assist the learner in the transition to third level education by providing them with the necessary academic support and development skills. Learners are expected to develop adaptable competences that support them throughout their learning journey. This module equips learners to optimise their learning experience in College, and provides them with personal and professional lifelong skills and competences.
The world is constantly changing with new and emerging digital technologies bringing many challenges to the commercial world. This module aims to support learners as they develop a broadly based and intellectually challenging framework in the area of systems analysis and development. Learners gain an awareness of current technologies, literature, and research in the area. Learners are expected to apply the principles to both current and developing technologies. Learners achieve this through developing knowledge and skills in the area. Further, they cultivate an understanding of how the insights and practice contribute to the current state of the art in the wider Computer Science landscape.
This module focuses on the concepts involved in the design of an operating system; an understanding of its complexity and its many requirements. It introduces the learner to some fundamental algorithms used in operating systems. It introduces the concept of concurrency in an OS and explores the concept of multiprocessing and resource management strategies.
In the Software Development 1 module the learners complete a large piece of work, encompassing both independent learning and development. They get the opportunity to work on a large-scale project in a team dynamic. They are required to produce complete a software application, host said software on a code repository and to document the process.
They not only learn new technical skills such as code management but also learn how to develop a software product while working as part of a team. This module focusses on code management using version control systems such as Git and GitHub.
Teaching in this module is conducted mainly through between the team of learners and the lecturer. However, in the early stages of the process the Faculty organise a number of relevant seminars. Topics for these will outline the correct usage of code repositories such as GitLab and BitBucket, as well as industry expectations when working with code management software in a team of developers.
The skills that the learners develop in this module benefit them as they progress through their degree and into their professional life.
This module builds on the work completed in the first year Computer Programming module and extends the learners knowledge of programming by giving a comprehensive analysis of object-oriented programming. This paradigm leads to software architectures based on the objects every system or subsystem manipulates. In this view software systems are operational models of real or virtual world activities based around the objects that populate these worlds: people, cars, houses, stacks, sets, queues. As in all programming modules, a key objective is the acquisition, on behalf of the learner, of good software engineering skills and the application of these skills to the design and implementation of software components.
This module is a continuation module and introduces you to the fundamental concepts of object-oriented program design and how to use modelling for constructing complex software systems. As a result, learners develop skills such as communication literacy, critical thinking, analysis, reasoning, and interpretation, which are crucial for gaining employment and developing academic competence. A big emphasis is placed on using UML to module systems and produce designs.
The aim of this module is to teach the theoretical and practical underpinnings of modern database management systems by teaching the design and implementation of Relational Databases. Learners study techniques such as entity-relationship modelling and normalisation in order to more effectively design a database. Learners are also exposed to practical application of structured query language (SQL) in order to implement, populate, query, and manipulate a database design into a relational database management system (RDBMS).
The objectives of the module are to give learners the skills to model databases using E-R diagrams and ensure database designs do not have redundancy through the process of normalisation. Through the practical application of SQL, learners are able to create, update, retrieve, and delete data from databases that implement their database designs. We also enable learners to integrate their databases with other components (self-developed programs) as part of the software development process.
This module aims to support learners as they develop a broadly based, and intellectually challenging framework in the area of Probability & Statistics. Learners have an awareness of current statistical techniques, literature, and research in the area. Learners are expected to apply the principles of probability and statistics to solve problems and inform decision making. Learners achieve this through developing knowledge and understanding of probability and statistical principles, while applying these principles in typical real-world scenarios.
This module builds on the work completed in the Object-Oriented Programming module and will apply the methods learned there to the design of classes that implement data structures. As in all programming modules, a key objective is the acquisition, on behalf of the learner, of good software engineering skills and the application of these skills to the design and implementation of software components. At the heart of all software design is the implementation of appropriate data structures that provide efficient data models for the problem at hand. Learners develop an in-depth knowledge of the standard generic data structures: stacks, queues, sets, bags and maps; and also learn to implement these using both linear (linked lists, arrays) and non-linear (binary search trees, avl trees, B-trees) data structures. Learners will also study Graph Theory and the fundamental graph searching algorithms. Unit testing will be used throughout to build test models for classes developed to implement data structures.
The Software Development 2 module builds on the work completed in Software Development 1. In that module the focus was on source code management using version control systems. In this module the focus is again on developing a large piece of work, using the learning from Software Development 1, but with a focus on software testing and testing suites. They get the opportunity to work on a large-scale project in a team dynamic. They are required to complete requirements analysis, produce complete a software application, host said software on a code repository, implement a testing suite, and to document the process.
They not only learn new technical skills such as software testing and requirements analysis but also work as part of a team to develop a software product.
Teaching in this module is conducted mainly between the team of learners and the lecturer. However, in the early stages of the process the faculty organise a number of relevant seminars. Topics for these will outline how to perform requirement analysis for the project, and how to systematically test the project to assure it is performing to specification.
The skills that the learners develop in this module benefit them as they progress through their degree and into their professional life.
This module introduces the learner to the fundamentals behind server-side web development. They are introduced to the core concepts behind dynamic, database-driven web development, through server-side scripting and database integration and learn how to design and build web applications that deliver database information through server-side HTML pre-processing.
Learners are given practical experience of developing dynamic web sites using these technologies.
A key objective of this module is to give learners an in-depth understanding of those areas of discrete mathematics that are relevant to the study of computing. It builds on the work covered as part of the first year foundations module.
This module provides the learner with a detailed understanding and appreciation of communication networks layouts and a wide range of networking standards and protocols. The module concentrates on the physical layer, signalling and signal encoding schemes and the datalink layer. This module also covers higher level network protocols which enhance knowledge about communication in networks. It also provides a basic understanding of wireless networks.
The aims of this module are to empower the learner with the theory and practice of modern GUI development utilizing HCI principles.
The objectives of this module are:
- To familiarize the learner with human computer interaction principles.
- To give the learner a grounding in the creation of standard GUI components.
- To encourage the learner to discover appropriate combination of standard GUI controls to solve a problem.
- To support the learner in developing custom controls to tackle more challenging problems.
- To enable learners to create comprehensive GUI applications incorporating standard and custom controls to solve complex problems.
This module builds on the work completed in programming modules completed in stages 1 and 2 and will apply the methods learned there to the study of Concurrent Development. Concurrency complicates the field of programming because processes are non-deterministic and to write concurrent systems that are correct we must understand how to manage limited shared resources. Learners gain an understanding of the need for, and advantages of, concurrent and parallel systems; a mastery of a new programming paradigm that is different from that of the single threaded one; a description of how processes and threads are managed in multiprocessor, multi-core machines; an understanding and mastery of the many classical problems arising with concurrent and parallel tasks; an awareness of the need for such issues as fairness, process synchronisation, deadlock avoidance, etc; and an ability to write concurrent and parallel programs to solve real-world problems.
The main aim of the module is to introduce learners to the concepts, notations and operations of mathematics that provide the basis for the foundational knowledge required for working and developing competencies in various emerging fields. The material covered extends the knowledge of learners who have completed mathematical modules in stage 1 and stage 2. The module provides a conceptual understanding of optimisation problems and their real-world applications. First order and second orders methods to solve optimisation problems are covered in detail. Further, the module explores probabilistic techniques such as simulated annealing, and evolutionary algorithms to find solutions to optimisation problems. The learners will have hands-on experience of implementing solution methods and applying algorithms and techniques covered in this module. Finally, the challenge of dimensionality is discussed.
The purpose of the industry placement is to provide the learner with an opportunity to consolidate all the material taught in the previous modules by applying it to real problems within an IT environment. Given its central role in setting all the other modules in the context of a working IT environment, many of the specific aims and objectives of the programme are considerably advanced by the Work Placement Module.
The placement involves a minimum of six months on the job training within a sponsoring company. The learner is monitored both by their immediate company manager and by the Faculty Industry Liaison. The learner is obliged to keep a daily record of their work-experience during their placement. It is expected that through their placement they will gain experience in a number of challenging computing tasks and have to meet the normal deadline demands of the industry.
This module provides the learner with a detailed understanding and appreciation of the different networking standards and protocols with more emphasis above the physical level, but with some reference to the physical layer. The module covers the different protocols commonly found and focuses on available WAN technologies. This module also covers network management and security issues.
The aim of the module is to teach the theoretical and practical underpinnings of distributed system design and implementation. Learners are introduced to the myriad of issues involved when moving from a single computer system to one composed of multiple nodes. Issues covered include but are not limited to: processes, communication, consistency, replication, leader election, fault tolerance, and clock synchronisation. Learners are exposed to the compromises that must be made during design in each of these areas with respect to the entire system.
The objectives of the module are to give learners the ability to consider all of the issues presented above such that they can design and implement distributed systems. These systems that are produced focus on areas desired in the required system while also trying to minimise the trade-offs that are built into the design of said system.
The aim of this module is to teach the theoretical and practical foundation of development for mobile-based environments (e.g. smartphones). Learners are taught the differences between mobile and desktop based environments and the restrictions that come with development on a mobile-based environment (much reduced computation power, touch interaction, limited storage etc.). Learners are exposed to potential security risks, privacy, and data protection concerns surrounding these devices that contain multiple sensors and information about their users.
The objectives of the module are to give learners the skills to develop applications for a mobile-based environment that take into account the limited resource set that is available and also accounting for the application structure prescribed by such environments. UI design is also expanded upon to take account of touch interaction and the UI restrictions of mobile-based environments. Sensor use is covered to show what data can be collected along with examples of user information that can be derived from such sources of data.
In the project module the learners complete a large piece of work, encompassing both research and development. They get the opportunity to work closely with a member of the lecturing staff. They are required to produce complete a software application and to document the process.
They not only learn new technical skills but also learn how to conduct valid academic research and to develop a software product to industry standards.
Teaching in this module is conducted mainly through one-on-one meetings between the learner and the supervisor. However, in the early stages of the process the faculty organises a number of relevant seminars. Topics for these could include: Writing a project proposal, referencing, report writing, research skills, and online resources.
The skills that the learners develop in the project module benefit them in all areas of their chosen careers, either in the computing industry or if pursuing further studies.
This module seeks to give the learner an understanding and knowledge of networking fundamentals including the Open Systems Interconnect (OSI) seven-layer model concepts, terminology and technologies using industry standard hardware and software.
There are two aims to this module: to expose the learner to practical issues in database management systems such as database administration and query optimisation; and to give the learner a flavour of the procedures and considerations in handling Big Data. In order to gain an understanding of how to work with Big Data, the learner gains an understanding of the core concepts required such as Data Mining, Data Warehousing, and Data Analytics.
The module aims to introduce the learner to cloud computing infrastructure. Learners learn state-of-the-art solutions offered by major cloud providers. Its mains focus is on understanding the concepts and techniques which form the cloud infrastructure. A significant part of the assessment involves the learner developing a cloud application, deploying it to the Cloud and configuring for and evaluating performance post installation. Assessment emphasises a collaborative group approach to equip the learners with the skills required to work in a successful agile software development team.
This module focuses on the design and development of digital games using a standard games development environment. The module introduces the learner to the issues and methodologies behind the rules and play of games. It introduces the fundamental ideas behind the design of electronic. Learners are introduced to how games function to construct experiences using rule design, play mechanics, game balancing, and the integration of visual, audio and textual elements into the game. They are also introduced to the iterative nature of the design methodology, games documentation and play testing.
The module has a strong practical element focussed on developing skills in game development. The learner also covers the core elements of game design and engagement with the user.
The aim of this module is to teach the theoretical and practical underpinnings of modern 3D computer graphics APIs and applications. Learners are introduced to the two main families of rendering (Rasterization and Ray Tracing). However, this module focusses mainly on Rasterization as this is what the majority of graphics hardware is built for. Learners study the mathematics behind taking a collection of polygonal 3D triangular meshes and transforming them into an image that is viewable on a 2D screen.
The objectives of this module are to give learners the skills to create applications and render images using a modern Rasterization API (e.g. Vulkan, DirectX 12) through the practical application of transform and lighting techniques, texturing and animation. We also explain to learners how to take these applications and rework them to take advantage of advanced 3D rendering hardware such as stereoscopic screens and VR headsets.
The module aims to introduce the learner to the Internet of Things. The Internet of Things (IoT) is an area that has received significant attention from both industry and academia in recent years. This module is an introductory level which provides an overview of developing and deploying solutions for the Internet of Things. It focusses on key concepts of data retrieval from IoT devices and sending the data to a cloud platform where it can be used to develop smart applications. Learners learn all the steps that are required to develop a basic IoT oriented solution.
The aim of this module is to enable the learner to embody an artificial intelligent agent in the physical or virtual world. The virtual hardware or physical hardware, programmed behaviours, and algorithms will be toughly understood, implemented, and customized by the learners.
This aim will be met through the pursuit of the following objectives:
- To familiarise learners with a number of AI problems including probabilistic inference, planning and search, localization, tracking and control.
- To equip learners with skills in representing these problems and their solutions with appropriate notation.
- To assist learners in expanding their programming competencies to include a programming language suitable for implementing AI behaviours and porting them to physical or virtual robotics hardware.
- To support learners in the sequence of identifying the problem type, selecting the appropriate AI algorithmic solution and implementing this AI algorithmic solution in an appropriate programming language.
- To expose learners to a range of physical and virtual robotic hardware and assist them in evaluating its suitability to perform AI tasks.
- To provide learners with a framework to evaluate the performance of robots performing AI tasks.
This module aims to empower learners to perform a wide range of machine learning tasks including but not limited to classification, prediction, regression, clustering, and association rule learning. Learners will develop a deep understanding of these techniques and be able to apply them to a range of data to produce meaningful results.
This aim will be met through the pursuit of the following objectives
- To familiarise learners with a number of machine learning tasks including but not limited to classification, prediction, regression, clustering, and association rule learning.
- To equip learners with skills to represent these tasks with appropriate notation to express their familiarisation.
- To assist learners in expanding their programming competencies to include a programming language and tool suitable for performing machine learning tasks.
- To support learners in the sequence of identifying the underlying data, classifying the problem type, selecting the appropriate machine learning algorithm, selecting the appropriate tool of implementing a customized tool to perform the machine learning task.
- To expose learners to a dataset concerning real-world problems.
- To provide learners with a framework to evaluate the performance of the techniques on the tasks.
This module aims to provide learners with the foundations necessary for understanding and extending the current state of the art in data analytics and visualisation. In recent years, the world has been flooded with ever-increasing amounts of data. We are required to possess ourselves with data analytics techniques to better understand this data and represent it meaningfully. Visualisation provides one means of tackling data overload, as a well-designed visual representation of the data can help in improving comprehension, memory, and decision making. In this module, learners study techniques and algorithms for carrying basic data analytics (using the statistics) and creating effective visualisations based on well-established principles from graphic design, visual art, and perceptual psychology. The module is targeted both towards learners interested in data analytics and information visualisation.
The module details the cost of breaches and hacks to organisations and hence the importance of ethical hacking and penetration testing. Encryption is covered, from simple classical techniques to modern PK techniques. Learners are shown the process of auditing application source code to verify that the proper security controls are present. The module focusses on web applications. XSS, SQLi, insecure code, code errors.
Other concepts such as steganography, network security (basic analysis of packet captures), and system misconfiguration will be covered.
This module introduces the learner to the concepts of computer forensics and investigative techniques. They encounter various techniques used in digital forensic investigations and the tools required for these investigations. Learners also gain exposure to the practical digital evidence gathering process. Current trends in computer forensics, such as network and cloud forensics are introduced using academic papers. Several investigative techniques will be covered, providing learners with a solid understanding of how to reason about evidence and hypotheses. Given a set of information, evidence, and hypotheses, how does an investigator make sense of it. How is sense made from an information set and how are better predictions made and investigative leads generated? There are many methods, from hard logical inferences to less formal structured analytic techniques.
The module introduces the learner to the fundamentals behind virtualisation, Docker technology. They are introduced to the core concept behind how containers work and the concept of continuous development and delivery with Jenkins. Learners are given practical experience of deploying containers and building clusters to serve a complete solution of a service or services.
What languages will you learn?
- Java, PHP
- Java, C-Sharp, Python, Ruby
How to Apply
2 H5 and 4 O6/H7 grades, to include a language (English, Irish or other language) and maths or equivalent.
If English is not your native language, you must show that your English level is of a suitable standard. For further information please contact a member of the Admissions Team.
Griffith College is accepting the online Duolingo English Test (DET) as valid proof of English proficiency. Please see here for further details.
How to Apply
Applicants under 23 years of age:
Applicants under 23 years of age on 1st January must apply through the CAO system. Please consult the CAO website for information on important dates for applications.
- Dublin - GC430
- Cork - GC230
Applicants over 23 years of age (Mature students):
If you are 23 years of age on or before the 1st January of the year you want to enter, you may apply as a mature student, and you will be asked for a copy of your passport. A member of the College’s admissions team will be in touch to discuss your course entry requirements.
Applicants that are under 23 years on 1st January will be asked for a copy of their passport, Leaving Certificate results / FETAC qualifications or equivalent and must meet the minimum entry requirements for the programme
Please note that not all study modes may be offered at all times; for confirmation, refer to the Intake dates on the Overview tab.
Study Mode: Full-Time
Study Mode: Part-Time
Study Mode: Full-Time
Please refer to our Non-EU Tuition Fees section.
Non-EU students: a Student Services and Administration fee of EUR200 is payable each academic year in addition to the fees quoted below.
An Academic Administration Fee of EUR250.00 and a 2% Learner Protection Charge is applicable each academic year in addition to the fees quoted. The fees below relate to Year 1 fees only.
Flexible payment options
Students wishing to pay their fees monthly may avail of our direct debit scheme. Please view our Fees information page for more information and assistance.
Is your company paying for your course?
They will need to complete a Griffith College Sponsorship Form and send this to the Student Fees Office:
- Post: Student Fees, Griffith College Dublin, South Circular Road, Dublin 8
- Email: [email protected]
- Post: Student Fees, Griffith College, Wellington Road, Cork
- Email: [email protected]
2% Learner Protection Charge
All QQI accredited programmes of education and training of 3 months or longer duration are covered by arrangements under section 65 (4) of the Qualifications and Quality Assurance (Education and Training) Act 2012 whereby, in the event of the provider ceasing to provide the programme for any reason, enrolled learners may transfer to a similar programme at another provider, or, in the event that this is not practicable, the fees most recently paid will be refunded.
QQI Award Fee
Please note that a QQI Award Fee applies in the final year of all QQI courses. To find the relevant fee for your course level, please see the Fees page.
Graduates of the BSc (Hons) in Computing Science can pursue further study options here at Griffith College, in the form of an MSc in Computing Science (offered on a full/part-time basis), or at other institutions worldwide. On the Master's programme at Griffith College, some of the modules cover professional course material (granted by CISCO, Microsoft, Sun Microsystems Inc. etc.) which provides students with sufficient knowledge to undertake professional qualifications, should they wish to do so.
Other study options at Griffith College include a range of Postgraduate Diplomas in Networking, Software Development and Information Management, Master of Science in Network Security, Master of Science in Cloud Computing and Master of Science in Big Data Management & Analytics.
Past graduates of the BSc (Hons) in Computing Science are currently working in a variety of exciting roles such as assistant software project leaders, computer technology consultants, MIS (Management Information Systems) personnel, software engineers, systems analysts, applications programmers etc., across a wide range of industry sectors. The career opportunities are many and varied and having solid industry work experience from the six-month work placement has given students an advantage in their careers.
The BSc (Hons) in Computing Science course duration is 3 years for full-time students and 4 years for part-time students.
The BSc (Hons) in Computing Science course is available in both full-time and part-time study modes.
Graduates of the programme can pursue careers in various sectors, including software development, web development, systems analysis, network administration, IT consultancy, and more. Potential job roles include software engineer, web developer, systems analyst, network administrator, IT consultant, and project manager, among others.
The fees for the programme can be found on the Griffith College website. As fees may change over time or vary depending on factors like nationality or study mode, it is advisable to check the course page or contact the admissions office for the most up-to-date information.
Griffith College typically offers various payment options for tuition fees, such as payment in full, payment by instalments, or payment through a sponsor. It is recommended to contact the admissions office or the finance department for specific details regarding payment options.
Griffith College offers a variety of services to support learners on campus, including access to computer labs, a library, study spaces, and Wi-Fi. Additionally, students have access to academic support services, career services, counselling services, and various clubs and societies to enhance their overall learning experience.