Learning Outcomes
After completing this module, students will be expected to be able to:
1. Demonstrate an understanding of the principles of software engineering
2. Demonstrate an ability to carry out software requirements specification, object-oriented analysis and design, and software testing
3. Demonstrate an understanding of object orientation and relate object-oriented models to corresponding object-oriented programming constructs
4. Represent the outcome of each stage in the software lifecycle using standard modeling notations
5. Demonstrate a basic understanding of architectural styles and design patterns
6. Demonstrate an understanding of software reliability issues
Outline Syllabus
- Introduction to software engineering
- Lifecycle models
- Software modeling notations
- Requirements analysis and specification
- Principles of software design
- Functional and non-functional requirements and the need to verify and validate them through a variety of techniques
- Principles of object-oriented design
- Introduction to design patterns and architectural styles
- Validation and testing, including unit testing, and testing against requirements
- Software reliability and quality
- Evolution and maintenance
- Configuration management processes and tools
Learning Outcomes
After completing this module, students will be expected to be able to:
Outline Syllabus
- Java Language
- Review of inheritance, abstract classes and interfaces
- Exceptions
- Generics
Application Programming and APIs
- The Collections framework
- User interface programming with AWT and Swing, event handling
- Relational database interfacing with JDBC
- Object serialization and object databases
Data structures and algorithms lie at the heart of Computer Science as they are the basis for the efficient solution of programming tasks. In this module, students will study core algorithms and data structures, as well as being given an introduction to algorithm analysis and basic computability.
The module will give students core algorithmic skills that are required for Years 2 and 3 of the Computer Science degree schemes.
Learning Outcomes
After completing this module, students will be expected to be able to:
1. Demonstrate an understanding of core data types such as stacks, queues, trees, and graphs.
2. Implement core data types in Java and write programs that make efficient use of them.
3. Reason about the time and space complexity of programs.
4. Demonstrate knowledge of commonly used algorithms.
5. Explain the main concepts of computability and how some problems have no algorithmic solution.
Syllabus
Data types
Abstract data types
Lists, stacks, queues, trees, sets, graphs
Algorithms
Divide and conquer
Sorting and searching
Algorithms: binary search trees, minimum cost spanning trees, shortest paths, parse trees
Algorithm analysis: time and space complexity
Basic computability, incomputable functions and the halting problem
Module Description
The aims of this module are to extend the principles of SQL database modelling laid down in the first year, to describe the field of Information Retrieval, to introduce the concept of NoSQL databases and hence to compare the strengths and weaknesses of all three approaches to information access.
Learning Outcomes
Outline Syllabus
Learning & Teaching Methods
Assessment
The aim of this module is to provide an understanding of the principles that underlie the design of web applications, and to provide practical experience of the technologies used in their construction.
Learning Outcomes
After completing this module, students will be expected to be able to:
1. Design and implement HTML and JavaScript form-based input systems.
2. Write Java Server Pages (JSPs) and Java classes that implement key web application components (e.g. a shopping basket for an on-line shop).
3. Use appropriate techniques to manage session state.
4. Design and implement data models, databases and data bound classes to support web applications.
Syllabus
Overview of E-commerce technologies
Client side: HTML, Java Applets, Javascript, Cascading Stylesheets
Server side: Web servers
Serving dynamic content
Java servlets, Java Server Pages (JSP)
XML
Web-based User Interface Design
HTML form elements
Designing form-pages
Using JQuery
Limitations of HTML forms
JavaScript and the Document Object Model
Example JavaScript input components
JSP and Java Servlets
The servlet API and Lifecycle
A hello-world servlet
Servlet input and output streams
Reading parameters and posted data
Session tracking with URL encoding and Cookies
Techniques for dynamic generation of HTML
Enhancing web applications with Ajax
Databases for web applications
Data modelling for e-commerce applications
XML
Reasons for using XML
Syntax of well-formed XML documents
Validating XML with DTDs
Designing XML document structures
(2) C++ Standard Template Library, and (3) inheritance, function overriding and exceptions.
Learning Outcomes
After completing this module, students will be expected to be able to:
1. Explain the basic concepts and features of C++.
2. Describe the underlying memory model and explain the role of the execution stack and the heap.
3. Write object oriented programs that incorporate basic C++ features such as pointer, reference, inheritance, function overriding, operator overloading, exceptions, etc.
4. Make effective use of the C++ Standard Template Library.
Outline Syllabus
Overview
- paradigms: procedural + object-oriented vs purely object-oriented
- pointers and references
- C++ functions: call by value and call by reference
- class definition
- memory management
- the C++ Standard Template Library
A model of memory
- static and dynamic memory
- the execution stack: existence of local variables, parameter passing
- the heap: dynamic memory allocation
- memory management in C++
C++ language features
- pointers: declaring and using pointer variables, the operator *
- references: declaring and using reference variables, the operator &
- functions: call by value and call by reference, function overloading
- arrays: array identifiers, static and dynamic arrays, arrays as parameters, arrays as results
- class definition: private and public members
- inheritance
- function overriding (polymorphism)
- operator overloading
- constructors, destructors, copy constructors and the assignment operator
The projects are based on typical industrial scenarios and incorporate the concepts of specifications, design, and implementation. Within the project, students will learn about sustainability, project and time management, design, legal issues, health and safety, data analysis and presentation, team reporting, company organisagtion, and self evaluation.
Module Directory
1. Describe the processes involved in project management and produce a project management plan.
2. Use project management tools and techniques.
3. Explain and justify their team's finished product.
4. Report and reflect on their individual contribution to the team's effort.
5. Demonstrate an understanding of professional, legal and ethical issues that affect the work of professionals in their discipline.
6. Demonstrate the ability to research and use system development tools.
7. Produce a Curriculum Vitae, and cover letter.
The module consists of two parallel strands:
- The major strand will consist of team project, which will be based on a simple but realistic development scenario chosen to maximise the students' experience within a collaborative group environment.
- The project will be on a topic directly relevant to the students' degree course and will typically involve developing a product through the specification and design stages.
- The second strand consists of a series of professional development lectures including topics such as project management, legal and ethical issues, accounting, entrepreneurship, communication skills (including change management), project-risk analysis and control, and careers guidance.
The aim of this module is to give students an opportunity to manage a project from beginning to end under the guidance of an individual supervisor. Projects are offered by academic members of staff and cover a wide range of topics from computer science and electronic engineering. Professional development elements such as risk analysis, project management, ethics and intellectual property (IP) are embedded in the project structure.
On completion of the module students will be able to;
1.Apply an appropriate design methodology to achieve a product defined by a specification.
2. Use Gantt charts and time management techniques to plan and manage a project over a period of six months or more.
3. Locate and read references and produce summaries and critical analysis of them. Be aware of peer review as a means of the quality assurance of written work.
4. Record plans, ideas, results, and reflections in a log book as defined in the project guidebook.
5. Work as an individual to specify, design, construct and test a system to meet a project requirement.
6. Demonstrate oral and written communication skills through the writing of the initial and final report, through the midpoint second assessor oral examination, through the preparation and presentation of a poster at the Project Open Day, and by providing a working demonstration of the project product at the Presentation, Demonstration, and Oral Examination (PDO).
7. Present and discuss ideas informally with academic supervisors.
8. Plan an employability strategy in light of current knowledge regarding graduate employment.
9. Define and discuss the role of an engineer in society particularly related to professional ethics.
10. Plan and report on the aspects of risk within their specific project.
11. Explain the meaning of Intellectual Property and ways in which IP can be protected.
Outline Syllabus
This is a triple module in which individual students work under a project supervisor to produce a final product starting from a project description provided by the supervisor. Projects are allocated at the end of the second year.
Working space is provided for students and regular weekly meetings are held with supervisors. In parallel with the independent project work students receive a weekly lecture on topics in support of their project work.
The aim of this module is to give students an opportunity to manage a project from beginning to end under the guidance of an individual supervisor. Projects are offered by academic members of staff and cover a wide range of topics from computer science and electronic engineering. Professional development elements such as risk analysis, project management, ethics and intellectual property (IP) are embedded in the project structure.
On completion of the module students will be able to;
1.Apply an appropriate design methodology to achieve a product defined by a specification.
2. Use Gantt charts and time management techniques to plan and manage a project over a period of six months or more.
3. Locate and read references and produce summaries and critical analysis of them. Be aware of peer review as a means of the quality assurance of written work.
4. Record plans, ideas, results, and reflections in a log book as defined in the project guidebook.
5. Work as an individual to specify, design, construct and test a system to meet a project requirement.
6. Demonstrate oral and written communication skills through the writing of the initial and final report, through the midpoint second assessor oral examination, through the preparation and presentation of a poster at the Project Open Day, and by providing a working demonstration of the project product at the Presentation, Demonstration, and Oral Examination (PDO).
7. Present and discuss ideas informally with academic supervisors.
8. Plan an employability strategy in light of current knowledge regarding graduate employment.
9. Define and discuss the role of an engineer in society particularly related to professional ethics.
10. Plan and report on the aspects of risk within their specific project.
11. Explain the meaning of Intellectual Property and ways in which IP can be protected.
Outline Syllabus
This is a triple module in which individual students work under a project supervisor to produce a final product starting from a project description provided by the supervisor. Projects are allocated at the end of the second year.
Working space is provided for students and regular weekly meetings are held with supervisors. In parallel with the independent project work students receive a weekly lecture on topics in support of their project work.
The aim of this module is to give students an opportunity to manage a project from beginning to end under the guidance of an individual supervisor. Projects are offered by academic members of staff and cover a wide range of topics from computer science and electronic engineering. Professional development elements such as risk analysis, project management, ethics and intellectual property (IP) are embedded in the project structure.
On completion of the module students will be able to;
1.Apply an appropriate design methodology to achieve a product defined by a specification.
2. Use Gantt charts and time management techniques to plan and manage a project over a period of six months or more.
3. Locate and read references and produce summaries and critical analysis of them. Be aware of peer review as a means of the quality assurance of written work.
4. Record plans, ideas, results, and reflections in a log book as defined in the project guidebook.
5. Work as an individual to specify, design, construct and test a system to meet a project requirement.
6. Demonstrate oral and written communication skills through the writing of the initial and final report, through the midpoint second assessor oral examination, through the preparation and presentation of a poster at the Project Open Day, and by providing a working demonstration of the project product at the Presentation, Demonstration, and Oral Examination (PDO).
7. Present and discuss ideas informally with academic supervisors.
8. Plan an employability strategy in light of current knowledge regarding graduate employment.
9. Define and discuss the role of an engineer in society particularly related to professional ethics.
10. Plan and report on the aspects of risk within their specific project.
11. Explain the meaning of Intellectual Property and ways in which IP can be protected.
Outline Syllabus
This is a triple module in which individual students work under a project supervisor to produce a final product starting from a project description provided by the supervisor. Projects are allocated at the end of the second year.
Working space is provided for students and regular weekly meetings are held with supervisors. In parallel with the independent project work students receive a weekly lecture on topics in support of their project work.
The aim of this module is to introduce the students to more advanced programming constructs and techniques.
Learning Outcomes
After completing this module, students will be expected to be able to:
1. Demonstrate an understanding of the programming constructs and techniques introduced to this module; and
2. Use these constructs and techniques in the design and implementation of programs
3. Critically reflect on program designs.
Outline Syllabus
. Java Review
. Threads and synchronisation
. File I/O, sockets and client/server
. JSON and web services
. Collections
. Streams
. Recursion and program optimisation
. Design patterns
. Introduction to functional programming in Haskell
. Miscellaneous
Aims/ Learning Outcomes
The aim of this module is to introduce the students to formal languages and compilers.
After completing this module, students will be expected to be able to:
1. Demonstrate an understanding of formal languages
2. Describe formal languages using BNF notation
3. Explain the link between finite state automata and regular expressions
4. Describe the syntax and semantics of basic programming language elements
5. Demonstrate an understanding of the structure of compilers and their main components
6. Implement key parts of a compiler for a simple language
Syllabus
Introduction to formal languages
-Regular and context-free grammars
-Backus-Naur Form notation (BNF)
-Finite state automata
-Introduction to compilers
-Syntax and semantics of basic programming languages elements
-Lexical analysis
-Parsing
-Static analysis
-Code Generation
This course provides a strong foundation to understand the fundamental problems in NLE and also equips students with the practical skills to build small-scale NLE systems. Students are introduced to three core ideas of NLE: a) gaining an understanding the core elements of language--- the structure and grammar of words, sentences and full documents, and how NLE problems are related to defining and learning such structures, b) identify the computational complexity that naturally exists in language tasks and the unique problems that humans easily solve but are incredibly hard for computers to do, and c) gain expertise in developing intelligent computing techniques which can overcome these challenges.
The aim of this module is to introduce key ideas and techniques used in the design and implementation of natural language engineering applications. We will primarily cover statistical methods, and will look at the use of such methods in applications.
Learning Outcomes
After completing this module, students will be expected to be able to:
1. Describe and formalize how language problems can be solved computationally.
2. Understand and implement techniques for language modelling, speech tagging, and syntactic parsing.
3. Understand and implement techniques for computational semantics and discourse processing.
4. Understand, implement and use algorithms such as Viterbi decoding, and basic supervised classification.
5. Understand how NLE techniques can be used to design and implement applications such as text summarization, sentiment analysis and writing quality prediction.
Outline Syllabus
Language models
Topic classification
Part-of-speech tagging
Syntactic parsing
Lexical semantics
Discourse processing
NLE applications such as text summarization, sentiment analysis, and identifying writing quality
The aim of this course is to provide students with a working knowledge of modern software development techniques for large software systems.
Learning Outcomes
Upon completion of this course students will be able to
1. Understand the issues involved in large-scale software development and how they can be managed with modern practices, techniques and tools
2. Make effective use of modern tools and techniques for the cooperative development of software including version control, ticketing systems, build tools, etc.
3. Make effective use of modern bug prevention and detection techniques as well as refactoring techniques.
4. Make use of modern practices and techniques for the effective development of software within teams
Syllabus
The course will focus on powerful technologies such as:
1. agile software development,
2. extreme programming
3. working effectively in teams,
4. revision control systems,
5. unit and acceptance testing,
6. integrated development environments,
7. build tools,
8. ticketing systems,
9. refactoring.