Machine learning is an exciting field studying of how intelligent agents can learn from and adapt to experience and how to realise such capacity on digital computers. It is applied in many fields of business, industry and science to discover new information and knowledge. At the heart of machine learning are the knowledge discovery algorithms. This subject builds on previous data analytics subjects to give an understanding of how both basic and more powerful algorithms work. It consists of both hands-on practice and fundamental theories. Students learn important techniques in the field by implementation and theoretical analysis. The subject also introduces practical applications of machine learning, especially in the field of artificial intelligence.
This subject teaches students how to design, develop and evaluate data structures and algorithms to meet predefined quality characteristics of functionality (suitability) and usability (understandability, learnability, operability, compliance). Software solutions are implemented using C++. Concepts, theories and technologies underlying the methods and techniques are introduced and explained as required.
Successfully designing and developing information systems is complex and difficult. A number of techniques and approaches have been developed but there are no 'silver bullet' solutions to the problems that plague IT development projects. This subject introduces students to a number of different methodologies and provides them with the skills they need to identify their strengths and weaknesses in key areas. These issues are of critical importance to those wishing to successfully manage software projects.
This subject introduces students to the fundamentals of effective database systems. Students are taught how data is structured and managed in an organisation in a way that can be used effectively by applications and users. They also learn to use the language SQL for effective data retrieval and modification. This subject teaches students to appreciate the significance and challenges of good database design and management, which underpin the development of functional software applications.
This subject provides students with the practical knowledge and skills that are necessary to effectively measure and control the quality of software products. It covers software quality assurance and management principles and practice together with systems and software testing approaches.
Algorithms are the heart of computer science and information technology. This subject moves beyond the basic material that introduces algorithms and data structures and looks at some of the more complicated algorithms, how to implement them and what they can be used for. Alongside this the subject delves into practical concerns of methods for dealing with apparently intractable computational problems, tools for selecting and evaluating algorithms and communicating effectively algorithmic strategies.
It is challenging to develop a large program of a few thousand lines and even more challenging to develop a system of millions of lines of code, which cannot afford to fail. The early stages of development must balance problem exploration and design with convergence toward an implementable solution. Developing large, complex systems, that must work perfectly, requires software engineering practices to ensure the development happens in a controlled manner. Developing the professional discipline to use and maintain all the necessary practices is best done through experience, for little else convinces us of their need than our failings. The focus of this subject is to experience and understand the longer-term consequences of selected and configured software development methods, tools, and resources, then to consider, decide and implement improvements.
Advanced Data Analytics for Cybersecurity combines big data capabilities with threat intelligence to help detect, analyse and alleviate the insider threats, as well as targeted attacks from external bad actors and persistent cyber threats. It includes a number of IT areas, such as statistical methods for identifying patterns in data and making inferences, and other intelligent technologies that derive cybersecurity issues from data. Advanced Data Analytics for Cybersecurity introduces learners to the machine learning technologies for cybersecurity and the most common approach to standard process for data analytics. This subejct offers practice in the advanced technologies of data analytics in cybersecurity, identifying security risks, threats and vulnerabilities to the corporate computers and networks.
The key focus of this subject is to equip students with IT security policy development and human security management. This includes legal and ethical issues in the context of security management and audit. The subject provides students with the foundations required to apply cyber safety and security, and security management at a corporate level. Students conduct security assessments with business operational constraints using professional methods and strategies. The subject enables students to examine both business and security operations procedurally, and to develop contingency planning, risk assessment, risk management and compliance standards for various businesses.
This subject introduces students to the techniques for ensuring data privacy, while allowing organizations to collect, store, analyse, and share personal or confidential data. Various privacy models can be used to develop techniques to develop defences against privacy attacks. Data anonymization and other statistical approaches to privacy and differential privacy are explored.
This subject covers the emerging topics in professional and industrial cybersecurity fields, especially the contemporary IT security theories and practical skills by series of guest lectures and workshops. Students develop a professional understanding of Cybersecurity through investigating emerging threats and vulnerabilities of web applications and systems, cutting-edge privacy and ethical issues, and analysing the latest system security approaches. Current trends and challenges in Cybersecurity are explored through studying professional practice and reviewing research literature. Students apply contemporary requirements elicitation, analysis, modelling, specification, and validation techniques to real project in small teams.
Cryptographic techniques have been developed to preserve data confidentiality and ensure data integrity. They are indispensable in cybersecurity and are used to ensure, for example, the security of wireless networks, online payment systems, and cryptocurrencies. This subject engages with the principles of cryptography, including symmetric/asymmetric ciphers, cryptographic hash functions, message authentication codes, and digital signatures. This subject also introduces popular applications of cryptography and cryptographic designs in blockchain. Students analyse cryptographic techniques, use popular cryptographic tools, and practice attacks on cryptography
This subject provides basic skills in Java programming and software design, with no assumed knowledge of programming. It covers the topics of object-oriented (OO) programming concepts, data flow, control flow, arrays, and the basics of sorting and searching algorithms. The subject teaches and illustrates a design process using a set of design notations and design rules, and shows how to develop a correct, readable and reusable solution from a problem specification.
This subject teaches students how to design, develop and evaluate software systems to meet predefined quality characteristics of functionality (suitability) and usability (understandability, learnability, operability, compliance). Software solutions are implemented using Java or Python. Concepts, theories and technologies underlying the methods and techniques are introduced and explained as required. Students apply all that they have learned to develop and implement the architecture of a business system.
This subject teaches students current industry practices to design, develop and evaluate software architecture meeting predefined quality characteristics of functionality (suitability, security), usability (operability), efficiency (time behaviour, resource utilisation) and maintainability (changeability, testability). Concepts, theories and technologies underlying the methods and techniques are introduced and explained as required. Students apply the industry practices that they have learned to develop an architecture of a business system.