WM245-18 Programming Languages for Cyber Security
Introductory description
Programming languages are the medium through which programmers precisely describe concepts, formulate algorithms, and reason about solutions. In the course of a career, a cyber professional may work with many different languages, separately or together. If developing software, they must understand the programming models underlying different languages and make informed design choices in languages supporting multiple complementary approaches. The cyber professional is likely to need to learn new languages and programming constructs. They therefore must understand the principles underlying how programming language features are defined, composed, and implemented. The effective use of programming languages, and appreciation of their limitations, also requires a basic knowledge of programming language translation and static program analysis, as well as run-time components such as memory management.
This module enables students to develop insight into the significant differences between different programming paradigms. Object oriented programming, functional programming and event driven programming are given special emphasis. Students develop solutions under these different paradigms to embed theoretical concepts into professional practice.
Module aims
1 – Evaluate the relative merits of different programming paradigms to address cyber security problems.
2 - Develop small-scale programs that employ the idioms of a programming paradigm in a conventional manner.
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.
- object-oriented programming
- functional programming
- event-driven and reactive programming
- type systems
- program representation
- language translation and execution
- syntax analysis
- compiler semantic analysis
- code generation
Learning outcomes
By the end of the module, students should be able to:
- 1 – Evaluate the relative merits of different programming paradigms to address cyber security problems.
- 2 - Develop small-scale programs that employ the idioms of a programming paradigm in a conventional manner.
Indicative reading list
Aho, A. V., Lam, Monica S., Sethi, R. and Ullman, Jeffrey D., “Compilers: Principles, Techniques, and Tools”, 2 Ed, Pearson (2013)
Bird, Richard, “Thinking Functionally with Haskell”, Cambridge University Press (2014)
Friedman, Daniel P. and Wand, Mitchell, “Essentials of Programming Languages”, 3 Revised Ed, MIT Press (2008)
Subject specific skills
1 – Evaluate the relative merits of different programming paradigms to address cyber security problems.
2 - Develop small-scale programs that employ the idioms of a programming paradigm in a conventional manner.
Transferable skills
Problem solving
Study time
Type | Required |
---|---|
Supervised practical classes | 18 sessions of 2 hours 30 minutes (25%) |
Private study | 45 hours (25%) |
Assessment | 90 hours (50%) |
Total | 180 hours |
Private study description
Independent activity between workshops, following up on activities initiated in previous workshops or preparing for upcoming 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 A1
Weighting | Study time | Eligible for self-certification | |
---|---|---|---|
Assignment | 100% | 90 hours | Yes (extension) |
Assessment group R
Weighting | Study time | Eligible for self-certification | |
---|---|---|---|
Assignment | 100% | Yes (extension) |
Feedback on assessment
Written feedback for each assignment
Verbal feedback during tutorial sessions
Summative feedback on assignments and practical tests
Courses
This module is Core for:
- Year 2 of UWMA-H651 Undergraduate Cyber Security