Second year computer science course on operating systems. We introduce principles that underlie the design and function of modern operating systems with reference to some currently available operatings systems. The course includes a number of practical programming projects. Topics include: basic computer orgranisation; process and thread; scheduling; synchronisation; memory management; file systems; input/output.

This course gives an introduction to formal methods, focusing in particular on logic, verification and transformation of functional programs, and state-based formal specification using Z. The course aims to cover:
  • Propositional logic
  • Predicate logic
  • Sets, relations and functions
  • Simple functional programming
  • Elementary program verification
  • State and operation specification in Z

Module Description

This module will provide an introduction to fundamental concepts of computer programming in the C language, which is particularly relevant to programming embedded systems and for electronic engineers.

Module Aims

After completing this module, students will be expected to be able to:

1. Demonstrate an understanding of the basic principles and concepts that underlie the procedural programming model.

2. Explain and make use of high-level programming language features that support control, data and procedural abstraction.

3. Analyse and explain the behaviour of simple programs that incorporate standard control structures, parameterised functions, arrays, structures and I/O.

4. Implement, test and debug simple programs that use the features listed above.

 

Outline Syllabus

  • Underlying principles of procedural programming

  • The imperative programming model; state, sequentiality and destructive assignment.

  • Abstraction: separating internal and external views; control, data and procedural abstraction.

  • A model of memory: variables; static and dynamic memory; the execution stack

  • Programming in a high-level procedural language

  • Identifiers and keywords

  • Expressions and types: well-typed expressions; operator precedence and expression evaluation

  • Statements and control flow: simple, compound and control statements; the assignment statement; selection and repetition

  • Functions: definition, and call; local variables, scope and existence; parameters, formal and actual parameters, parameter passing

  • Lists and dictionaries: declaration and initialisation; accessing elements

  • Input and output: console and file I/O

Learning & Teaching Methods

20 hours of lectures, 20 hours of laboratory, 2 hours revision lectures

Assessment

100% Coursework 

Module Description

This module will provide an introduction to the basic principles and concepts that underpin procedural programming. It will make use of a high level programming language (i.e. Python) supporting control, data and procedural abstraction. Students will also learn to analyse simple programs, incorporate standard control structures, write functions, arrays structures and I/O, as well as debugging simple programmes.

Learning Outcomes

After completing this module, students will be expected to be able to:
1. demonstrate an understanding of the basic principles and concepts that underlie the procedural programming model.
2. explain and make use of high-level programming language features that support control, data and procedural abstraction.
3. analyse and explain the behaviour of simple programs that incorporate standard control structures, parameterised functions, arrays, structures and I/O.
4. implement, test and debug simple programs that use the features listed above.


Outline Syllabus

  • Underlying principles of procedural programming
  • The imperative programming model; state, sequentiality and destructive assignment.
  • Abstraction: separating internal and external views; control, data and procedural abstraction.
  • A model of memory: variables; static and dynamic memory; the execution stack
  • Programming in a high-level procedural language
  • Identifiers and keywords
  • Expressions and types: well-typed expressions; operator precedence and expression evaluation
  • Statements and control flow: simple, compound and control statements; the assignment statement; selection and repetition
  • Functions: definition, and call; local variables, scope and existence; parameters, formal and actual parameters, parameter passing
  • Lists and dictionaries: declaration and initialisation; accessing elements
  • Input and output: console and file I/O

Learning & Teaching Methods

Lecturers & Laboratories

Assessment

This course is 50% Exam and 50% Coursework


Module Description
The module will provide an introduction to data modelling and the design and implementation of relational databases, exemplified using SQL. Students will prepare a relational schema from a conceptual model using the entity-relationship model. They will understand the notions of relation, key and normal forms in database design. Students will demonstrate data definition in SQL and retrieve information using SQL SELECT, leading to a relational database management system to build a database.

Learning Outcomes
After completing this module, students will be expected to be able to:

1. Prepare a relational schema from a conceptual model developed using the entity-relationship model.
2. Employ the notions of relation, key and normal forms in a relational database design.
3. Create a relational database schema in SQL that incorporates key, entity integrity, and referential integrity constraints.
4. Demonstrate data definition in SQL and retrieve information from a database using the SQL SELECT statement.
5. Use a relational database management system to build a database.

Outline Syllabus
Underlying principles
  • The relational model of databases

Fundamentals of Relational Database Systems
  • entity-relationship modelling
  • mapping conceptual schema to a relational model
  • relational algebra: operations developed for relational databases

Relational Database Design
  • functional dependency
  • normal forms and normalisation

Structured Query Language
  • data definition
  • keys
  • entity integrity constraints and referential integrity constraints
  • query formulation
Module Description

The aim of this module is to introduce the essential hardware and low level software components of a digital computer system along with relevant theoretical concepts. The operation of these components and other concepts is further explored in weekly problem solving classes.
Upon completion of this module, students should have a good conceptual and practical understanding of the nature and architecture of a digital computer system.

Learning Outcomes

After completing this module, students will be expected to be able to:

  1. Understand the nature and architecture of a digital computer.
  2. Interpret and manipulate binary representations of data as well conversion between binary, denary and hexadecimal notations.
  3. Design and understand state machines and simple logic circuits.
  4. Identify and explain the purpose and function of the components of a computer system.
  5. Explain the principles and purposes of operating systems.
Outline Syllabus
  • Introduction to computer organisation and architecture & brief history of computer systems
  • Radix (number base) conversion & binary arithmetic
  • Binary floating-point and characters/symbols standards
  • From transistors to logic circuits
  • Boolean algebra & Karnaugh maps
  • State machines & sequential logic
  • Computer instructions and interrupts
  • Memory and cache operations
  • External memory and I/O modules
  • Overview of operating systems and memory management


Module Description


This module extends the principles of SQL database modelling laid down in the first year. It introduces the concept of NoSQL databases and compares the strengths and weaknesses of all three approaches (SQL, IR and NoSQL paradigms)

Learning Outcoumes


After completing this module, students will be expected to be able to:

1. Understand SQL database modelling and normalisation;
2. Appreciate the principles of Information Retrieval;
3. Apply and evaluate IR in a practical context;
4. Discuss differences between models such as SQL, IR and NoSQL.

Outline Syllabus


  • SQL Database Design Principles
  • Entity Relationship Modelling
  • Normalisation
  • Modelling in a Realistic Scenario
  • Principles of Information Retrieval
  • Term Weighting Models
  • Word Frequency, Stemming and Stoplists
  • Inverted Indexing, TF*IDF and OKAPI
  • Implementation of Phrase and Wildcard Searches
  • Performance Evaluation in a Practical Task
  • Introduction to NoSQL Databases
  • Comparison of SQL, IR and NoSQL paradigms


Learning & Teaching Methods


Lectures, Laboratories and Classes

Assessment


This module is 70% Exam and 30% Coursework
Module Description

This module provides an introduction to three fundamental areas of artificial intelligence: search, knowledge representation and learning. These underpin all more advanced areas of artificial intelligence and are of central importance to related fields such as computer games and robotics. Within each area, a range of methodologies and techniques are presented; emphasis is placed on understanding their strengths and weaknesses and hence on assessing which is most suited to a particular task. The module also provides an introduction to the philosophical arguments about the possibility of a machine being able to think. It concludes with a brief overview of systems based on interacting intelligent agents.

Learning Outcomes

After completing this module, students will be expected to be able to:

1. Explain and criticise the arguments that have been advanced both for and against the possibility of artificial intelligence.
2. Explain and implement standard blind and heuristic search procedures, demonstrate an understanding of their strengths and weaknesses and of how they may be applied to solve well-defined problems.
3. Explain the operation of standard production system interpreters, and demonstrate an understanding of their relative merits.
4. Explain the operation of a range of established machine learning procedures and demonstrate an understanding of the types of problems for which they are appropriate.
5. Demonstrate an understanding of the agent-oriented approach to artificial intelligence, and explain how a multi-agent system of purely reactive agents may be built using a subsumption architecture.

Outline Syllabus

. Introduction
What AI is and is not
The debate about whether AI is possible

. Solving problems by searching
State space representation
Search trees and graphs
Blind search strategies - depth first, breadth first and iterative deepening
Heuristic search - greedy search and A* search
Hill climbing
Game playing - minimax search
Means ends analysis
Implementing search

. Using knowledge to solve problems
The importance of domain knowledge
Rule based systems
Forward chaining rule interpreters
Backward chaining rule interpreters

. Acquiring knowledge - machine learning
Decision tree induction
Neural networks - back propagation
Clustering - k means algorithm
Reinforcement learning - Q algorithm
Genetic algorithms

. Intelligent agents
Reactive v. deliberative agents
Subsumption architectures for purely reactive agents
Many modern electronic devices are high speed and are widely used in computer, communication, radar and various other electronic systems. The speed of these devices and systems using them can be so high that it is impossible to ignore the fundamental aspects of electromagnetic waves in their design and operation, which include circuit layouts, interconnections, antennas as well as regulatory aspects designed to ensure that devices and systems do not radiate interference. After introducing the basics of vector calculus and laws of electromagnetic fields and waves, the module converges toward the treatment of transmission lines and waveguides, matching, and mechanisms by which structures can radiate either intentionally or unintentionally.

Learning Outcomes

1. understand basics of vector calculus and their applications to electromagnetics fields and waves ;
2. explain basic electromagnetic laws in words and mathematical forms
3. evaluate electromagnetic properties of basic transmission lines and waveguides;
4. solve simple problems relating to transmission line matching and standing waves;
5. describe radiating waves in free-space and other media;
6. explain properties of a basic antenna in transmission and reception;
7. evaluate qualitatively techniques for achieving electromagnetic compatibility.

Outline Syllabus

. Vector calculus operators and their interpretation in relation to Maxwell's equations.

. Review of capacitance and inductance and the concept of storage of electric and magnetic field energy.

. Maxwell equations and free-space electromagnetic waves. Polarization. Waves in media. Metallic conductors and skin depth.

. Basic transmission lines and waveguides: coaxial, twin-wire, metallic and optical waveguides, and their electromagnetic properties

. Telegraphy equations, and analysis of transmission lines as the limit of discrete ladder networks.

. Waves on transmission lines. Characteristic impedance. Standing waves and their relation to impedance termination and matching criteria. Basic modes in rectangular waveguides.

. Radiation and antennas. Radiation from a short dipole. Radiation from a slot. Reciprocity. Antenna gain and basic link calculations.

. Electromagnetic compatibility. Unintended radiation. Balancing and shielding of currents. Isolation of power lines.

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.

Module Definition

This module introduces students to more advanced programming constructs and techniques and build on their knowledge from the first two years. This will include a review of Java, Threads and synchronisation, File I/O sockets, client/server, JSON and web services.

Aims

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