Course Overview

This fully online diploma provides a focused programme of study in the area of software design and development, providing an insight into technical skills and modern industry techniques. Computer programming and design are taught in the diploma, as well as a number of important software engineering methodologies.

NUI Galway IT Online Programmes http://www.nuigalway.ie/itonline/

Applications and Selections

 

Applications are made online via the Postgraduate Applications Centre (PAC). Code: GYE16

Who Teaches this Course

Requirements and Assessment

The Diploma in Software Engineering is delivered entirely using online learning technology so students can study when and where they want according to a paced learning cycle. Course materials are easy to follow and are accompanied by continuous assessment exercises, research/review questions and recommended course textbooks.  Modules are delivered one at a time, over an eight-week period via asynchronous online technologies using web-supported learning.

The programme facilitators provide a recommended outline of study for each of the eight-week modules to ensure students keep on track. Each module is individually assessed by online examinations and assignments.  All assessments and examinations take place within the eight-week period.

Key Facts

Entry Requirements

This degree is open to Honours degree graduates (Level 8) in Science, Engineering, or other relevant disciplines, and to other graduates with three or more years of relevant experience, and to those otherwise satisfying the MSc entry standards. An IELTS score of 6.5 or equivalent international qualification will be required, if applicable. See www.nuigalway.ie/itonline for details.

Additional Requirements

Duration

1 year, Part time Online

Next start date

August 2018

A Level Grades ()

Average intake

15

Closing Date

Next start date

August 2018

NFQ level

8

Mode of study

Online

ECTS weighting

30

Award

Diploma in Software Engineering, NUI Galway

CAO

PAC code

GYE16

Course Outline

This programme is part-time and runs over one year. You will study one online module every eight weeks. This is an ideal programme for students who wish to:

  • Update their software development and ICT skills
  • Engage with an interesting and challenging curriculum in a flexible, online environment
  • Improve their employability opportunities by re-skilling in the area of software development

Rather than being a general-purpose award in computing, the intention of this diploma programme is to provide a coherent and complementary set of in-depth modules which bring the student up-to-speed on relevant software development tools and techniques. A full list of Core and Elective modules is available on www.nuigalway.ie/itonline

Modules for 2017-18

Curriculum information relates to the current academic year (in most cases).
Course and module offerings and details may be subject to change.

Glossary of Terms

Credits
You must earn a defined number of credits (aka ECTS) to complete each year of your course. You do this by taking all of its required modules as well as the correct number of optional modules to obtain that year's total number of credits.
Optional
A module you may choose to study.
Required
A module that you must study if you choose this course (or subject).
Semester
Most courses have 2 semesters (aka terms) per year.

Year 1 (30 Credits)

Optional CT611: Computer Architecture and Operating Systems


15 months long | Credits:

MCT611, Computer Architecture and Operating Systems, is the first module in the MScSED programme. The emphasis is on the operation of the various computer sub-systems and the tasks and responsibilities of an operating system. Students will start with an overview of the role of computers in society today. Students will explore the structure and operation of the various system components, including the central processing unit (CPU), system buses, and internal/external memory. In the second part of this module, students will apply their acquired knowledge to the design of an operating system (OS). Topics to be covered include OS architectures, input/output (I/O) management, memory management, processes & process management, device management, file management, and OS security. Students will be presented with an overview of the significant operating systems. On completion of this module, students will have a solid understanding of the structure and interaction of computer system components, and how an operating system provides vital services to the computer user.

Learning Outcomes
  1. Identify the various types of computer systems e.g. Desktop, Laptop, Embedded
  2. Identify the various types of Operating system e.g. Windows, MAC, Linux
  3. Describe the architecture and organisation of a computer and its components
  4. Describe and apply various programming techniques to access components efficiently
  5. Give details both about instruction sets and addressing modes
  6. Describe the general architecture of an OS
  7. Identify the various OS components and their purpose
  8. Understand the basic relationship between the OS, Device Drivers and User Applications
  9. Explain the basic security issues with an OS
  10. Explain the implementation of core features in the modern OS
  11. Understand some simple concepts of distributed systems and networking
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT611: "Computer Architecture and Operating Systems" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT618: Object Oriented Design


15 months long | Credits:

This module will build on the knowledge acquired by students in their software engineering module, and provide a comprehensive introduction to the field of Object Oriented Design and the Unified Modelling Language (UML). Students will be introduced to the various object oriented analysis and design techniques which have developed over time, and will learn the industry-standard notation, UML (Unified Modelling Language). This industry standard notation is covered from its original inception, through its various constituent models, and on to its practical use in systems development (Note: this module is based on UML2, the latest version of the UML notation, approved in 2004). The application of UML is explored from analysis through design and on to final system implementation, highlighting the strengths of object orientation as an approach to systems development where the one notation is used throughout. Students will develop object oriented analysis and design models using Computer Aided Software Engineering (CASE) tools, similar to those developed in the software engineering module. The challenges of progressing seamlessly from system inception, through analysis, solution design and technical implementation will be addressed, while maintaining a focus on the delivery of a quality system within timescale and budget.

Learning Outcomes
  1. Discuss and explain general concepts related to Object Orientation and particularly Object Oriented Analysis and Design
  2. Gather a clear set of requirements from clients for a software system
  3. Analyse a business’ requirements, and develop an object oriented domain model from those requirements, clearly identifying the domain classes
  4. Progress from the domain model to an object oriented application model for those requirements, clearly identifying the application artefacts required
  5. Evaluate the potential for reuse in the design of a system solution: from patterns to commercially available components
  6. Produce an object oriented design model for the proposed system solution
  7. Prepare relevant UML implementation models for this system solution
  8. Evaluate issues related to the implementation of the proposed system wrt resource usage, security, maintenance and performance
  9. Compare the Unified Process with agile process approaches
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT618: "Object Oriented Design" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT619: Object Oriented Programming


15 months long | Credits:

MCT619, Object-Oriented Programming, provides detailed coverage of Object-Oriented (OO) programming principles. It focuses on programming in Java, an OO language that is modern, vendor-independent, and widely used in industry. Recognising that programming requires skill as well as knowledge, this module places emphasis on the practical aspects of developing significant Java programs using a professional development environment. Students also gain practical experience of program design, testing, and debugging. Specifically in this module, students learn how to model objects in software, define classes describing categories of objects, and make appropriate use of concepts such as inheritance, composition, encapsulation, polymorphism, abstract classes, and interfaces. As well as learning basic Java syntax and how to express OO concepts in Java, practical topics such as applets, graphics, data storage, multi-threaded programming, and exception handling are addressed.

Learning Outcomes
  1. Describe in detail Object-Oriented Programming concepts (e.g. classes, inheritance, composition, modularity, polymorphism)
  2. Analyse and interpret complex Object-Oriented programs written in Java
  3. Develop Object-Oriented solutions to programming problems, implement them in Java, test and debug them
  4. Write code to demonstrate knowledge of array structures, files, applets, graphical programs, multi-threaded programming, and exceptions
  5. Evaluate and justify decisions made in programs (e.g. selection of data types, choice of decision and repetition structures, use of inheritance or composition)
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT619: "Object Oriented Programming" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT620: Distributed Systems


15 months long | Credits:

This Distributed Systems module brings together many of the different strands of study in the MSc in Software Engineering & Database Technologies programme: database applications, software engineering, middleware, architecture, and Java programming. It challenges students to combine these into a powerful technical platform for complex modern problem solving. The course aims to balance a practical understanding of various programming concepts with a higher-level architectural facility for engineering Distributed Systems. Right from the start, this balance should be obvious: in Week 1, students will deploy a simple Web application to a cloud platform. They will follow with a critical analysis of that cloud platform thereby building their practical, critical and analytical muscle for designing and building these systems. Students will become very familiar with the common challenges of building Distributed Systems - and over the weeks they will build an evaluative framework which they can apply to nearly any Distributed Systems scenario. This framework will be built on principles that have stood the test of time so it is unlikely to change much as new approaches and technologies evolve. This foundation framework should see students through a career and not just through the 'next big thing'. Over the following weeks students will spend time on a number of important evolutions in Distributed Systems including relational & non-relational database systems, Web Services and Java EE. They will also get an appreciation of legacy systems like CORBA, RMI and RPC, right down to Sockets.

Learning Outcomes
  1. Describe in detail Object-Oriented Programming concepts (e.g. classes, inheritance, composition, modularity, polymorphism)
  2. Analyse and interpret complex Object-Oriented programs written in Java
  3. Develop Object-Oriented solutions to programming problems, implement them in Java, test and debug them
  4. Write code to demonstrate knowledge of array structures, files, applets, graphical programs, multi-threaded programming, and exceptions
  5. Evaluate and justify decisions made in programs (e.g. selection of data types, choice of decision and repetition structures, use of inheritance or composition)
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT620: "Distributed Systems" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT621: Artificial Intelligence


15 months long | Credits:

Artificial Intelligence (MCT621) is an introduction to some of the fundamental concepts and techniques in Artificial Intelligence (AI). The module begins by examining the concept of AI and as well highlighting some important real-world applications of AI. It then presents search strategies currently employed in AI research. This is developed further by the examination of the functional programming language Prolog. The second half of the module looks at Knowledge Representation and Machine Learning. It also deals with the topic of uncertainty in AI. Finally, the module finishes by examining future directions of AI research and associated philosophical dilemmas.

Learning Outcomes
  1. Define Artificial Intelligence
  2. Use Predicate Calculus and outline the reasons for using Predicate Calculus
  3. Describe various search techniques, explaining the advantages and disadvantages of each
  4. Demonstrate the value of heuristics in a search
  5. Construct Prolog programs
  6. Create representations (e.g. demonstrate how to represent objects, actions, events and situations; discuss how to reason about knowledge; and justify the selection of appropriate representations for a given application)
  7. Explain the relevance of uncertainty to AI and outline approaches to handle uncertainty
  8. Provide Machine Learning techniques appropriate for a range of different applications
  9. Explain various applications of Artificial Intelligence, their strengths and limitations, and their position in relation to current research
  10. Outline the philosophical underpinnings of Artificial Intelligence
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT621: "Artificial Intelligence" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT623: Graphics Programming


15 months long | Credits:

Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT623: "Graphics Programming" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT609: Fundamentals of Programming


15 months long | Credits: 5

In MCT609, Fundamentals of Programming, students will receive a solid introduction to the art and science of computer programming. The emphasis is on the fundamentals of problem solving and program construction, with the high-level “C” language used as the vehicle for doing this. Upon successful completion, students will be capable of developing and maintaining useful software of reasonable size and complexity. The module is suitable for students with no previous experience of computer programming as well as those with moderate previous knowledge or knowledge of languages other than C. It will provide students with a solid foundation in the key concepts of functional programming, as well as an appreciation of object-oriented programming. The emphasis is on applied problem-solving skills as well as on the theoretical concepts underlying the programming activity. Although the module focuses specifically on the C language, students who have successfully completed it will typically find learning other high-level languages relatively easy, having learned the important skills and concepts of programming in this module.

Learning Outcomes
  1. Design and develop well-structured, modular, maintainable software programs using the C language
  2. Understand and modify C programs written by other people
  3. Design and develop C programs of substantial size, involving multiple source files and libraries imported from other programmers
  4. Design and develop C programs of substantial algorithmic complexity, involving multiple nested control structures and multiple dimensioned arrays
  5. Make competent use of pointers and dynamic memory allocation for flexible data storage
  6. Make use of data structures and understand their relevance to object-oriented programming
  7. Develop C programs that make use of disk files for persistent data storage
  8. Transfer the principles of programming using C to other high-level programming languages
Assessments
  • Continuous Assessment (100%)
Teachers
The above information outlines module CT609: "Fundamentals of Programming" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT610: Software Engineering


15 months long | Credits: 10

MCT610, Software Engineering, will provide students with the fundamental software engineering knowledge necessary to develop and deliver quality software products. It emphasizes a holistic and process based approach to the development of software systems, encompassing technology, business, organizational and human concerns. The module discusses various software components (technology) and the diverse issues impacting their development (process, project and people) and quality. Fundamental software process, project management, and product development skills are developed in this module. The challenges of successfully completing software development projects will be addressed practically, empirically, and theoretically. Upon successful completion, students will have a much greater understanding of software systems development from many perspectives. This understanding, combined with the practical product, process, and project management techniques learned, will equip the student to further develop their knowledge and skills in the field of software systems development both educationally and professionally.

Learning Outcomes
  1. Evaluate the successes and failures of the Software industry
  2. Define and evaluate the importance of software engineering education and an agreed Code of Ethics for the future development of the discipline
  3. Appreciate the importance of Requirements & Quality management to Software Engineering
  4. Compare various software engineering process approaches and understand when to use them
  5. Model an unambiguous, prioritized set of requirements for a software system using an appropriate approach
  6. Initiate a software project (including scoping, estimation of effort and scheduling project tasks)
  7. Analyse approaches to managing people and teams in software projects
  8. Outline the evolution of analysis and design approaches from Structured through OO & UML
  9. Create a high level UML design for a case study from a requirements model
  10. Evaluate the usefulness of Design Patterns
  11. Evaluate approaches to Software Configuration Management (SCM) and Change Control
  12. Design a test strategy and risk management strategy for a software project
  13. Describe the changes in software development in the past two decades
  14. Explain SWEBOK and SEEK and how they categorize the knowledge requirements of software engineers
  15. Distinguish between software engineering licensing and certification
  16. Define and outline the main components of the IEEE/ACM Code of Ethics for Software Engineers and the importance of ethics
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT610: "Software Engineering" and is valid from 2014 onwards.
Note: Module offerings and details may be subject to change.

Optional CT5114: Distributed Systems and The Cloud


15 months long | Credits: 5

Distributed Systems and the Cloud brings together many strands of study: database applications, software engineering, middleware, architecture, and Java programming. Students will deploy a simple Web application to a cloud platform. They will follow this with a critical analysis of that cloud platform thus building practical, critical and analytical skill for designing and building these systems. Students will become very familiar with the challenges of building Distributed Systems by building an evaluative framework that can be applied to almost any Distributed Systems scenario. Students will spend time on a number of important evolutions in Distributed Systems including relational and non-relational database systems, Web Services and Java EE - gaining an appreciation of legacy systems like CORBA, RMI and RPC, and Sockets.
(Language of instruction: English)

Learning Outcomes
  1. Create a Cloud deployment environment
  2. Evaluate the core design goals of any Distributed System
  3. Demonstrate the relevance of MapReduce & Hadoop to parallel processing of ‘Big Data’
  4. Analyse the role of the Database in Distributed Systems design and evaluate alternatives to Relational Database Management Systems (RDBMS)
  5. Apply the technologies and concepts of Distributed Systems to real problems
Assessments
  • Department-based Assessment (100%)
Teachers
The above information outlines module CT5114: "Distributed Systems and The Cloud" and is valid from 2017 onwards.
Note: Module offerings and details may be subject to change.

Optional CT5115: Modern Javascript Programming


15 months long | Credits: 5

Modern Javascript Programming exposes students to the Javascript language in a variety of modern contexts. A prerequisite is successful completion of at least one other programming module, preferably C/C++ or Java
(Language of instruction: English)

Learning Outcomes
  1. Use HTML5 and CSS; web servers; document layout; common tags (elements); hyperlinks; tables; forms; images; CSS styles, layouts, and classes.
  2. Explain the use of Javascript in a client-side web context e.g. apply event-driven programming; simple animation; and design ‘single-page’ web apps.
  3. Develop RESTful web services using node.js; emphasis on ‘raw’ node.js as well as focusing on a leading framework/technology stack (including database) e.g. Mongo-Express-Angular-Node (the “mean” stack).
  4. Develop single-page webtech-based standalone apps using e.g. Nodewebkit (Windows/Mac/Linux) and Cordova (iOS/Android); integration with server using Ajax and Websockets; common plugins.
  5. Use callbacks and promises in development.
Assessments
  • Continuous Assessment (100%)
The above information outlines module CT5115: "Modern Javascript Programming" and is valid from 2017 onwards.
Note: Module offerings and details may be subject to change.

Why Choose This Course?

Career Opportunities

The software industry includes businesses involved in the development, maintenance and publication of computer software, as well as software services such as training, documentation, and consulting. At the heart of this industry is the activity of actually building and producing computer software, which is the emphasis of this diploma. Opportunities for software developers are excellent within Ireland and internationally.

Who’s Suited to This Course

This is an ideal programme for students who wish to:

  • Update their software development and  ICT skills
  • Study in a flexible, on-line environment
  • Engage with an interesting and challenging curriculum
  • Improve their employability by re-skilling in the area of software development
  • Develop key professional skills of critical thinking,  problem-solving and communications skills

Learning Outcomes

 

Work Placement

Study Abroad

Related Student Organisations

Course Fees

Fees: EU

€4,450 p.a. 2017/18

Fees: Tuition

€4,226 p.a. 2017/18

Fees: Student levy

€224 p.a. 2017/18

Fees: Non EU

€8,350 p.a. 2017/18


A fees scholarship of up to 30% may be available for students who wish to upskill for the purposes of re-employment.  Students must be registered as unemployed and in receipt of one of the following: 

  • Job-seekers Benefit
  • Job-seekers Allowance
  • One-parent family allowance
  • Disability allowance
  • Community Employment Scheme
  • Carer’s Allowance
  • Signing for social insurance contribution credits

Please download the 2017_18 Fees Scholarship Form CALPD for more information.

Find out More

 Aisling Monahan 

Course Coordinator
Centre for Adult Learning and Professional Development
NUI Galway
Tel: 091 495698
Email: aisling.monahan@nuigalway.ie

Majella O’Dea 
Academic Coordinator 
Centre for Adult Learning and Professional Development
NUI Galway
Tel: 091 495 041
Email: majella.odea@nuigalway.ie


What Our Students Say

Neil

Neil Keane |   Past Student

This course enabled me to acquire valuable skills in topics such as Project Management, Distributed Systems, Object Oriented Programming and Design while all the time continuing my professional career without interruption. I found the teaching approach used, which involved the practical application of each week’s learning in the form of discussions and assignment an excellent way to learn. Importantly, as the course was delivered online, it gave me the freedom to establish a study routine at a time and place that suited me, my family and my work. By achieving a third level qualification in Software Engineering, I accomplished a long held personal & professional goal. Further, having achieved the Diploma has allowed me a distinct advantage in my workplace. Not only for the practical skills that I can apply to my work, but also because I am recognised by my manager as having had both the motivation and initiative to continue developing myself professionally.