- To consolidate proficiency in imperative programming and software development
- To further develop object oriented programming and object oriented design methods
- To provide knowledge of simple data structures and algorithms
- To introduce concurrent programming techniques
- To instil understanding of the concepts and benefits of advanced software engineering methods
- To give further practical experience of the use of UML in software engineering
- To give practical experience of developing a substantial software engineering team project
- To enable the deployment of patterns in software engineering
Pre-requisites: Knowledge of Java programming and software engineering at undergraduate level.
Linked course(s): F21SF Software Engineering Foundations .
Location: Dubai, Edinburgh.
- Data structures: stacks, queues, lists, priority queues, binary trees
- Algorithms: searching (linear and binary) and sorting
- Advanced object oriented design techniques
- Thread based programming: thread creation and interaction, shared variables and synchronisation
- Methodologies in software engineering practice; Unified Modelling Language; design patterns;
- Project planning and management in software engineering;
- Comparison of agile and plan driven approaches
Learning Outcomes: Subject Mastery
Understanding, Knowledge and Cognitive Skills Scholarship, Enquiry and Research (Research-Informed Learning)
- Skill in the use of UML notation and translation of UML designs to working programs
- Understanding of basic data structures and algorithms and ability to critically evaluate their appropriateness and limitations for a range of moderately complex problems.
- Demonstration of skill in design and implementation of practical GUI based and theaded applications
- To demonstrate a critical understanding of modern software engineering practice and be able to evaluate the strengths and weaknesses of current software engineering methods and techniques
- To be able to choose appropriate metrics to measure software quality and quantity in a modern software engineering environment
- To be able to choose a suitable software development environment and development methodology for specific software development tasks and justify the choice
Learning Outcomes: Personal Abilities
Industrial, Commercial & Professional Practice Autonomy, Accountability & Working with Others Communication, Numeracy & ICT
- Appreciation of use of methodology to ground system analysis, design and development
- Understanding of different programming paradigms and their inter-relation
- Practice in working in a group, choosing a methodology, reaching a consensus, and working with others to a deadline
- Taking responsibility for own work, taking responsibility in the development of resources, critical reflection on development process and work undertaken by self.
- Effective appreciation of professional standards in modern software engineering practice.
- Showing initiative, creativity and team working skills in collaborative software development
SCQF Level: 11.