Undergraduate Course: Informatics 2C - Introduction to Software Engineering (INFR08019)
|School||School of Informatics
||College||College of Science and Engineering
|Credit level (Normal year taken)||SCQF Level 8 (Year 2 Undergraduate)
||Availability||Available to all students
|Summary||This course gives an overview of the engineering of software systems. It introduces the main activities and concerns of industrial and commercial software engineering, and enables students to go beyond programming towards software engineering in their own work.
The aim is to understand and execute the process of building software systems. The process will entail capturing requirements as use-cases, modelling the system using class and sequence diagrams, implementing the system using Java and running requirements-based tests and system level tests. Beyond the construction process itself, some important surrounding concerns are
introduced including: satisfying non-functional requirements, building good human interfaces, and considering various software licensing models.
The core topics covered, all at introductory level, in this course are:
* Software engineering as a discipline: history, professionalism, ethics
* Software engineering activities: requirements capture; design; implementation; testing, debugging
and maintenance; software process management.
* Modelling in UML (use cases, class diagrams, sequence diagrams).
* Design principles and their influence on maintainability of software.
* Software configuration management.
* Verification, validation and testing.
* Software usability and HCI issues.
* Economic and social aspects of software ownership, patents and licensing.
* Software quality assurance.
Some further topics will also be covered, depending on topicality and lecturer's expertise. These might include, for example:
* Model-driven development: how to use UML for construction, not just description, of systems
* Software in the world: embedded systems, web services, cloud computing, autonomous computing and other means of delivering functionality
* Agile software development.
Information for Visiting Students
Course Delivery Information