Module Description

The aim of this module is to cover fundamental mathematics for Computer Scientists. It does not assume A-level mathematics, and the emphasis and delivery will be on understanding the key concepts as they apply to Computer Science.

Additional support is provided by the Talent Development Centre. Participants not having AS or A level mathematics should take a diagnostic test to see whether they would benefit from this extra support.

Learning Outcomes

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

1. Apply propositional logic to simple problems
2. Use counting methods including permutations and combinations
3. Apply the basic notions of sets, and illustrate answers through Venn diagrams
4. Use methods of probability on simple problems
5. Solve problems in linear algebra using vectors and matrices


Outline Syllabus

Propositional Logic:
Propositions and logical operators. Truth tables. De Morgan's laws. Algebraic rules and inference. Logical identities, Tautologies and Contraditions

Combinatorics:
Fundamental Principle of Counting. Ordered and unordered selections. Selections with and without replacement. Permutations and combinations. Counting methods.

Sets:
Set notation and basic concepts. Definition of sets through propositions. Set intersection, union and complementation. Venn diagrams. Cardinality. Cartesian products. Sample spaces and events.

Probability:
Experiments and outcomes. Sample space, events, relative frequency and probability. Mutual exclusivity and independence. Counting methods. Conditional probability. Mean and variance. The binomial distribution.

Vectors and Matrices:
Basic definitions. Addition and multiplication of matrices, multiplication by scalars. Inversion of 2x2 matrices. Applications. Transformations of the plane. Solving simultaneous equations in two unknowns.

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 the fundamentals of object-oriented programming using Java. Students will analyse, write and explain Java programs using a range of control structures. They will define classes and use objects of those classes. Students will study inheritance and polymorphism and perform file-based I/O, event handling and some simple graphical components.

Aims

The aim of this module is to provide an introduction to the fundamentals of object-oriented programming using Java.

Learning Outcomes

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

1. Analyse, write and explain Java programs that utilise primitive and reference types and make use of a range of control structures including iteration, recursion and exception handling.

2. Analyse, write and explain programs that define classes and use objects of those classes.

3. Analyse, write and explain programs that utilise inheritance and polymorphism.

4. Analyse, write and explain programs that use parts of a platform API to perform file-based I/O, event handling and display of simple graphical components.

Syllabus
  • Introduction to Object-Oriented Programming
  • Primitive and reference types (Classes, Objects and Arrays)
  • Inheritance and Polymorphism
  • Flow of Control (iteration, try-catch blocks, recursion)
  • File I/O
  • Event Handling and Graphical Components
  • Dealing with Collections of Objects (Lists and Maps)
  • Miscellaneous
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
Aims

The aim of this module is to provide students with an introduction to the principles and technology that underlie internet applications and the techniques used in the design and construction of web sites.

Learning Outcomes


1. Design and construct interactive Web pages using HTML, CSS and JavaScript.
2. Address usability and accessibility issues in relation to web site design.
3. Describe the characteristics of protocols such as HTTP.
4. Describe internet security issues and current solutions.

Syllabus

The World-Wide Web
The Internet, Browsers, Web servers and the HTTP protocol

-Creating Web Pages and Websites
XHTML, HTML5 and CSS
Client-side scripting with JavaScript
Incorporating usability and accessibility principles in web site design

-Security and Encryption
Symmetric and asymmetric key algorithms
Digital signatures and digital certificates

course image by Hal Gatewood on Unsplash


Module Description
This module introduces the four layers of the TCP/IP internetworking module which includes applications, transport protocols, internetworking protocols and network access. Laboratory sessions will give extensive experience working with each of these layers and configuring network devices. The module will use the Cisco CCNA exploration Network Fundamentals course which is the first of four Cisco courses that can be used to obtain a Cisco CCNA qualification.

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

1. Configure network devices with appropriate settings
2. Design IP sub-networks
3. Propose, and describe, suitable protocols for use with networked applications.
4. Explain the principles of Ethernet and IP networking

Outline Syllabus
  • Client/server communication and intermediary network devices
  • The OSI and TCP/IP networking models
  • Application layer functionality and protocols
  • OSI transport layer
  • OSI network layer
  • IPv4 addressing
  • OSI data link layer
  • OSI physical layer
  • Ethernet
  • Planning and cabling networks
  • Configuring and testing a network