Software Engineering has undergone a shift in emphasis from the traditional, process-oriented approach to more lightweight approaches where the emphasis is on the programmer, and the development of flexible, maintainable code. This masters programme aims to provide the industrial software engineer with the foundational skills necessary to apply these new developments in their own work.
This masters programme is especially geared at industry-based software engineers and so is not suitable for new graduates.
This programme is aimed at professional, experienced software developers who wish to advance their knowledge in specific areas of the software engineering and computer science fields. Participants should be computer science graduates who are actively involved in software development at a technical level, and keen to raise their skills to a higher level. Class sizes are small, and all participants are professional software developers, thus creating a unique learning environment where the collective knowledge of the class is greater than that of any individual participant. The learning environment is greatly enhanced by the exposure of participants to other experienced software developers working in different domains and company cultures, using divergent sets of tools, techniques and processes. Participants learn through traditional lectures, in-class discussions, group and individual assignments and term papers, as well as through an individual software engineering project co-designed with, and supervised by, a UCD academic specialised in the software engineering field.
-Synthesise current trends in software methodology and appreciate the value of individual practices in different contexts
-Make use of software design patterns and principles during software development, and apply refactoring techniques appropriately
-Apply best practices in the development of high performance software systems, and understand how to measure and assess software performance
-Appreciate where software agents can be used, and construct and test software systems using agents
-Apply network analysis and machine learning appropriately to a broad range of problems that arise in the software engineering domain
- Identify current software research relevant to their professional practice and learn to apply this in the context of an individual software project.
-Understand how large-scale software systems are deployed and apply sound engineering principles to maintaining them.
-Demonstrate an understanding of knowledge-based techniques, and synthesize understanding of knowledge-based techniques with previous industrial experience.