Software Engineering, Algorithm Design and Analysis
This course provides an introduction to software engineering, algorithm design and analysis. The main topics include: Software design in UML: use cases, class modelling, objects and links, aggregations and dependencies, activity diagrams, state-charts; Principles of good software design, software development lifecycle, the role of design and modelling in software development; Software verification and validation; Project management and planning; Case studies and software horror stories. Abstract data types, design patterns, algorithmic issues, complexity theory, the application and implementation of common data structures in Java.
The major aims of this part of the course is
- to understand the role of software development in the software life-cycle
- Produce static and behavioural models of software programs
- Specify and verify software systems
- Decompose problems and develop software architectures
- Implement software models in a structured and efficient way.
Algorithm Design and Analysis
Understanding the underlying motivation behind common abstract data types or data structures is essential for making intelligent decisions when implementing programming solutions. The study of algorithms help in a wide range of problem solving.
This course is a component of the University of London's Computing and Information Systems Degree Programme. It is offered externally at SBCS. Further information about the course schedule can be found on the SBCS Website.
The following outline is given as a guide only. The order that the topics are delivered may vary.
|1||Software Engineering. What makes a good system. The difficulty of building software. Survey of options available to software developers/engineers.|
|2||Software Development Process. Waterfall model, Iterative models, Agile models.|
|3||Use Cases, User Requirements, User Stories|
|4||Class Diagrams, Identification of classes|
|6||More about class diagrams, aggregation and composition, inheritance|
|7||State MAchine Diagrams|
|9||Product Quality, validation and verification, testing techniques.|
|11||Problems and Algorithms, Big-O notation|
|12||Abstract Data Types, arrays, lists, stacks, trees, queues, sets, hash tables|
|13||Sorting, Searching, Traversal|
|14||Divide and Conquer, Recursion|
|17||P = NP?|
|18||String Matching, Boyer-Moore, Knuth-Morris-Pratt|