WM145-24 Software Development and Security
Introductory description
Fluency in the process of software development is a prerequisite to the study of much of the remainder of this programme. In order to use computers to solve cyber security problems effectively, students must be competent at reading and writing programs in multiple programming languages. In addition, they must be able to design and analyse algorithms, select appropriate paradigms, and utilize modern development and testing tools. This module brings together those fundamental concepts and skills related to the software development process. As such, this module provides a foundation for other software-oriented aspects of the programme: programming languages for cyber security, data science for algorithms and complexity in the cyber context, and the cyber context of software engineering. This module focuses on the cyber context of the entire software development process, identifying those concepts and skills that should be mastered in the first year of the programme. This includes the design and simple analysis of algorithms, fundamental programming concepts and data structures, and basic software development methods and tools. A significant feature of the module is the use of group development projects. A single programming language and development environment will be used to exemplify the abstract concepts being developed. There will necessarily be some significant proportion of the module's independent study time being spent gaining familiarity with the language and its associated environment.
Module aims
1 – Collaborate on the development of a software component to a well-defined problem.
2 - Analyse the behaviour of a program in response to various combinations of interesting inputs.
3 - Utilise standard algorithms and data structures in the solution to well defined problems.
Outline syllabus
This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.
Outline content
The content of this module will be taught from a cyber security perspective.
- algorithms and design
- fundamental programming concepts
- fundamental data structures
- secure software development
- development methods
Learning outcomes
By the end of the module, students should be able to:
- 1 – Collaborate on the development of a software component to a well-defined problem.
- 2 - Analyse the behaviour of a program in response to various combinations of interesting inputs.
- 3 - Utilise standard algorithms and data structures in the solution to well defined problems.
Indicative reading list
Kernighan, Brian W., and Dennis M. Ritchie, "The C programming language", 2 Ed, Prentice Hall
(1988)
Kochan, Stephen G., “Programming in C”, 4 Ed, Addison Wesley (2014)
Sommerville, Ian, "Software Engineering", 10 Ed, Pearson (2015)
Subject specific skills
1 – Collaborate on the development of a software component to a well-defined problem.
2 - Analyse the behaviour of a program in response to various combinations of interesting inputs.
3 - Utilise standard algorithms and data structures in the solution to well defined problems.
Transferable skills
Problem solving, teamwork
Study time
Type | Required |
---|---|
Supervised practical classes | 18 sessions of 3 hours (22%) |
Private study | 62 hours (26%) |
Assessment | 124 hours (52%) |
Total | 240 hours |
Private study description
Independent development activity between workshops
Costs
No further costs have been identified for this module.
You do not need to pass all assessment components to pass the module.
Assessment group A3
Weighting | Study time | Eligible for self-certification | |
---|---|---|---|
Coursework | 100% | 124 hours | Yes (extension) |
Feedback on assessment
Written feedback for each assignment
Verbal feedback during tutorial sessions
Solutions provided to tutorial questions
Summative feedback on assignments
Courses
This module is Core for:
- Year 1 of UWMA-H651 Undergraduate Cyber Security