The University of Southampton

ELEC2205 Electronic Design

Module Overview

This module aims to introduce students to a range of electronic devices and from this to provide an opportunity for then to explore the design process, to make mistakes and learn from them in a benign environment.

Conventional laboratory experiments are useful mainly to assist understanding or analysis: because they are of necessity stereotyped; they are of limited usefulness when a circuit or system must be designed to meet a given specification.  The majority of engineering tasks fall into this latter category, and therefore require design or synthesis skills that are distinct from the understanding of underlying engineering principles.  This is additional to the analysis skills emphasized in the course so far.  This module includes design assignments that have been devised to provide a bridge between 'conventional' experiments and the project work in the third and fourth years, (which in turn provide a bridge to 'real' projects in industry).  The exercises have real deadlines and concrete deliverables and students are encouraged to be creative, develop imaginative solutions and to make mistakes.

All three assignments have a common format:

•  Customer orientated rather than proscriptive specifications are given

•  Design work carried out, bringing academic knowledge to bear on practical problems

•  Laboratory sessions are used for construction and verification of designs

•  Allow students to demonstrate their communication skills in writing individual and group reports.

The differences between the assignments are in:

•  Complexity

•  Size of team

•  Assessment credit

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed the module, you will be able to:

A1. Demonstrate a knowledge and understanding of the principles of operation of a range of electronic devices.

A2. Demonstrate a knowledge and understanding of the problems associated with designing practical circuits and systems.

Intellectual Skills

Having successfully completed the module, you will be able to:

B1. Synthesise simple circuits and systems.

B2. Design simple digital IC’s

B.3 Appreciate the problems in dealing with uncertain and possibly ambiguous specifications.

Subject Specific Skills 

Having successfully completed the module, you will be able to:

C1. Demonstrate familiarity with the advanced use of function generators, oscilloscopes and complex devices such as logic analysers and spectrum analysers.

C2. Construct and test a range of circuits.

C3. Integrate and debug hardware and software systems. In particular appreciate the special problems that occur when both domains are combined,

C4. Understand and interpret technical literature and data sheets.

Employability/Transferable/Key Skills

Having successfully completed the module, you will be able to:

D1. Write formal reports in a clear, technical style.

D2. Address problems associated with personal and group time management in a problem solving environment.

D3. Demonstrate an awareness of team structure and dynamics, together with an appreciation of individual responsibilities working both as a pair and in a larger grouping.

Syllabus

•  Effective use of laboratory equipment: oscilloscopes, spectrum analysers, network analysers, sensitive meters and component testers, sources

•  Synthesis vs analysis

•  Effective use of design resources, Matlab, Spice, ModelSim etc.

•  Designs optimised to meet multiple criteria: phone antennae

•  Design of consumer devices: iStuff examples

•  EMC

•  Manufacturing techniques, RoHS, WEE

•  Commercial models, outsourcing, fabless design etc.

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Specialist LabD2 Integrated circuit design exercise, D3 Analogue circuit design exercise and D4 System design exercise63
LectureSupporting lectures10

Assessment

Assessment methods

MethodHoursPercentage contribution
D2 Integrated circuit design exercise-30%
D3 Analogue circuit design exercise-20%
D4 System design exercise-50%

Referral Method: There is no referral opportunity for this syllabus in same academic year

Share this module FacebookTwitterWeibo

ELEC2204 Computer Engineering

Module Overview

This module looks at the how computer systems are designed and constructed, focussing on microcontrollers but also looking at how they fit into the context of other types of computer (e.g. DSP and desktop processor). It considers how data is processed and manipulated, communication via buses. It also looks at operating systems (including real-time systems), performance and benchmarking, and factors that affect the power consumption of systems. We also look at multicore and GPU processing, and development toolchains (how to get from C to optimised machine code).

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Define and describe the component parts of computer systems
  • Describe the importance of the different design decisions made in processor and system design
  • Discuss the fundamental differences between types of embedded and desktop computer systems

Subject Specific Intellectual

Having successfully completed this module, you will be able to:

  • Relate an instruction set to a data-path design
  • Choose appropriate topologies and interfaces based on application requirements and system properties
  • Process high-level code into machine code, describe the optimisation process

Subject Specific Practical

Having successfully completed this module, you will be able to:

  • Build a simple embedded system and write software for it to demonstrate different input/output techniques
  • Measure the performance of simple systems in domain specific environments
  • Implement an operating system on an embedded device

Syllabus

  • Processor architectures
  • Embedded vs desktop systems; microcontroller vs microprocessor (vs  DSP)
  • Memory systems, cache, file systems
  • Interfacing and I/O
  • Computer arithmetic and ALUs
  • Operating systems (inc. real-time) vs freestanding C
  • Performance and benchmarking, power consumption, power modes
  • Multicore and GPUs
  • Development toolchains, compilation and optimisation

Learning & Teaching

Learning & teaching methods

There will be 36 hours of lectures, 2 x 3-hour labs, and a number of tutorial sessions (schedule to be advised).

ActivityDescriptionHours
Lecture36
Tutorial12
Specialist Lab6

Assessment

Assessment methods

MethodHoursPercentage contribution
2 x 3-hour labs-10%
Design task, approx 500 words-10%
In-class tests-5%
Exam2 hours75%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2213 Interaction Design

Module Overview

In recent years there has been an increasing recognition of the important role played by the human-computer interaction in the success of computer systems.

This course aims to gives students an understanding of how the study of human-computer interaction affects the design of interactive systems, hardware and software and improve students' awareness of the issues that determine the usability of an interactive computer system.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed the module, you will be able to demonstrate knowledge and understanding of:

A1.  How different disciplines (human factors, cognitive psychology, engineering, graphics design, etc.) influence the design of interactive systems

A2.  How users interact (dialogue) with system.

A3.  The classification of input/output devices and techniques

A4.  How to design, prototype and evaluate a user interface

Intellectual Skills

Having successfully completed the module, you will be able to:

B1.  Describe the main concepts (conceptual model, metaphors and paradigms) that influence human-computer interaction

B2.  Explain the main theories of cognition and how these are used when designing interactive systems

B3.  Classify the different input/output devises as to their effect on human-computer interaction.

B4.  Describe the process of designing for interaction and why a user centred approach is preferred.

Practical Skills

Having successfully completed the module, you will be able to:

C1.  Design a solution interacting with a computer system.

C2.  Choose appropriate methods of evaluating an interactive system.

C3.  Evaluate a design for interacting with a computer system.

Syllabus

  • User Psychology
  • Hardware (input/output) devices
  • Models and Metaphors
  • Interaction styles, Graphical User Interface (GUI) and windowing systems
  • Design methodology
  • Accessibility
  • Guidelines, standards and metrics
  • Evaluation
  • Advanced Interfaces

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
LectureLectures are used to present theoretical and practical aspects of developing interactive systems. During the lectures there may be quizzes and discussion with plenary feedback. Participation, while not compulsory, is encouraged. 22
TutorialTutorials will be used to work through examples illustrating the practical application of the techniques discussed in the lectures.10

Assessment

Assessment methods

MethodHoursPercentage contribution
Coursework-50%
Exam2 hours50%

Referral Method: By set coursework assignment(s)

Share this module FacebookTwitterWeibo

COMP2212 Programming Language Concepts

Module Overview

The aim of this module is to introduce students to the fundamental concepts underlying all programming languages, to introduce a broad range of programming language styles and features, and to provide the theoretical foundation that they will need in order to be able to make informed judgements about programming languages.

Aims & Objectives

Aims

  • Understand the main conceptual features of modern programming languages 
  • Understand common features of type systems and type discipline in various programming languages
  • Distinguish between families of languages (imperative, OO, functional, declarative) and within families (dynamically typed vs statically typed, call by name vs call by value, etc)
  • Use diverse programming language primitives for concurrency
  • Understand diverse approaches to formal semantics of programming languages

Syllabus

  • Compiled vs. interpreted languages  
  • Imperative, functional and declarative languages
  • Scope and binding
  • Type systems 
  • Type inference
  • Reasoning about programs
  • Contextual equivalence
  • Programming language semantics: operational, denotational and axiomatic semantics
  • Threading and thread safety 
  • Reasoning about concurrent programs
  • Concurrency primitives in modern programming languages

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Lecture36
Tutorial12

Assessment

Assessment methods

MethodHoursPercentage contribution
Coursework-25%
Exam2 hours75%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2211 Software Engineering Group Project

Module Overview

This module aims to give students experience of working in a team, and of the problems of communication and scale in software engineering. It will consolidate and integrate the techniques and concepts introduced in earlier modules and demonstrate the need for a professional approach to all aspects of software development. Students will adopt an agile methodology, which puts the user at the heart of building, refining and delivering their software system.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • The professional development of a prototype software system from defined requirements
  • The selection and use of appropriate programing languages and software development tools for a software project
  • Planning and execution of a professional software test strategy
  • Realistic estimates of the cost in time and effort required for a large software project
  • Teamwork and time management

Subject Specific Intellectual

Having successfully completed this module, you will be able to:

  • Anticipate and apply strategies to cope with the difficulties of professional software development
  • Critically evaluate the use of software tools in all phases of a software development
  • Anticipate and apply strategies to cope with the interdependence and conflict inherent in a group project

Transferable and Generic

Having successfully completed this module, you will be able to:

  • Handle some of the conflict inherent in a group project
  • Make critical judgements of your own and other people's work
  • Take responsibility for scheduling and running group meetings

Subject Specific Practical

Having successfully completed this module, you will be able to:

  • Develop, deliver and test a significant prototype software system
  • "Pick up" and use new software tools and environments without formal training

Syllabus

There is a little formal teaching on the unit. Students will exercise and develop skills in the following areas:

  • software production methodology, design, implementation and testing
  • the value and limitations of software tools in all phases of software development
  • teamwork and time management
  • ability to "pick up" and use new tools and environments without formal training
  • planning and execution of a professional software test strategy
  • realistic estimates of the cost in time and effort required for a large project
  • responsibility for scheduling and running group meetings

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Lecture36
Tutorial12

Assessment

Assessment methods

MethodHoursPercentage contribution
Group Project-100%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2210 Theory of Computing

Module Overview

This module aims to provide a broad and stimulating introduction to the theory of computing.

Aims & Objectives

Aims

Aim

Having successfully completed this module, you will be able to:

  • Ascertain and prove whether or not a given language is regular
  • Ascertain and prove whether or not a given language is context-free
  • Use the reduction technique to show that a problem is undecidable
  • Analyse the complexity of a given algorithm or problem
  • Use polynomial-time reduction to reason about the complexity class of a problem

Syllabus

  • Automata theory
    • Finite state automata, regular expressions and regular languages
    • The pumping lemma for regular languages
    • Closure properties of regular languages
    • The Myhill-Nerode theorem
    • Context-free grammars and pushdown automata
    • Closure properties of context-free languages
    • The pumping lemma for context-free languages
  • Computability theory
    • Turing machines, recursively enumerable and recursive languages
    • Church-Turing thesis
    • Limitations of algorithms: universality, the halting problem and undecidability
  • Computational complexity theory
    • Complexity of algorithms and of problems
    • Complexity classes P, NP, PSPACE
    • Polynomial-time reduction
    • NP-Completeness and Cook's theorem
    • PSPACE-Completeness

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Lecture36
Tutorial12

Assessment

Assessment methods

MethodHoursPercentage contribution
In-class tests -70%
Exam1 hour30%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2208 Intelligent Systems

Module Overview

This module aims to give a broad introduction to the rapidly-developing field of artificial intelligence, and to cover the mathematical techniques used by this module and by other artificial intelligence modules in the computer science programme.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed the module, you will be able to demonstrate knowledge and understanding of:

A1.  The principal achievements and shortcomings of AI.

A2.  The difficulty of distinguishing AI from advanced computer science in general.

A3.  The main techniques that have been used in AI, and their range of applicability.

A4.  Likely future developments in AI.

A5.  Basic differential and integral calculus.

Intellectual Skills

Having successfully completed the module, you will be able to:

B1.  Assess the claims of AI practitioners as they relate to `intelligence'.

B2.  Assess the validity of approaches to model intelligent processing.

B3.  Assess the applicability of AI techniques in novel domains.

Subject Specific Skills

Having successfully completed the module, you will be able to:

C1.  Select appropriately from a range of techniques when implementing intelligent systems.

Syllabus

  • Introduction to AI
    • Flavours of AI: strong and weak, neat and scruffy, symbolic and sub-symbolic, knowledge-based and data-driven.
    • The computational metaphor. What is computation? Church-Turing thesis. The Turing test. Searle's Chinese room argument.
  • Calculus
    • Differentiation - standard rules; Newton's method for finding roots; partial differentiation; integration - standard integrals; integration by parts; numerical integration.
  • Search
    • Finding satisfactory paths and outcomes; chosen from: depth-first and breadth-first, iterative deepening, evolutionary algorithms, hill-climbing and gradient descent, beam search and best-first. Finding optimal paths: branch and bound, dynamic programming, A*.
  • Representing Knowledge
    • Production rules, monotonic and non-monotonic logics, semantic nets, frames and scripts, description logics.
  • Reasoning and Control
    • Data-driven and goal-driven reasoning, AND/OR graphs, truth-maintenance systems, abduction and uncertainty.
  • Reasoning under Uncertainty
    • Probabilities, conditional independence, causality, Bayesian networks, noisy-OR, d-separation, belief propagation.
  • Machine Learning
    • Inductive and deductive learning, unsupervised and supervised learning, reinforcement learning, concept learning from examples, Quinlan's ID3, classification and regression trees, Bayesian methods.
  • Key Application Areas, selected from:
    • Expert system, decision support systems
    • Speech and vision
    • Natural language processing
    • Information Retrieval
    • Semantic Web

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Lecture36

Assessment

Assessment methods

MethodHoursPercentage contribution
Coursework-50%
Exam2 hours50%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2207 Distributed Systems and Networks

Module Overview

The aims of this module are two-fold: to teach the theory and practice of distributed systems, and to provide a solid grounding in the fundamentals of all major aspects of computer network technology.

The networking aspect of the module will expose students to the principles of layered communication protocols, the architecture of the Internet, and the principles of how the components of the TCP/IP layered model are designed and operate. The distributed systems aspect will expose students to the principles and practice of distributed systems, from distributed system models and distributed algorithms to different programming paradigms for distributed systems to distributed transactions.

Students should gain a clear understanding of the technologies covered in terms of the underlying fundamental principles.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Principles of communications protocols
  • The Internet architecture and layered TCP/IP networking model
  • Link, network and transport layer principles and functions
  • Network services, design, operation and security
  • Principles of distributed systems: models, algorithms
  • Distributed system paradigms: client-server programming, remote invocation, indirect communication
  • Distributed transactions

Subject Specific Intellectual

Having successfully completed this module, you will be able to:

  • Explain the fundamental concepts underlying networks and distributed systems
  • Design and analyse simple networks and the protocols they use
  • Assess network systems and technologies
  • Choose between alternative paradigms and technologies for solving problems in distributed systems

Subject Specific Practical

Having successfully completed this module, you will be able to:

  • Build and operate simple networks
  • Build a client-server solution in Java
  • Build a distributed objects solution in Java

Syllabus

The topics to be covered will include:

  • Internet architecture
    • The TCP/IP layered model
    • Protocols, design principles, standardisation, IETF
    • Naming and addressing
  • Link-layer
    • Transmission theory and protocols
    • Ethernet networks, switches
    • Wireless networks
  • Network layer
    • Routing, link state and distance vector algorithms
    • Subnet, site and ISP routing perspectives
    • IPv6
  • Network services
    • Quality of service (QoS)
    • IP multicast, reliable multicast
    • Host configuration, service discovery, zero-configuration networking
    • DHCP, DNS
  • Transport layer
    • TCP, UDP
  • Network design and operation
    • Infrastructures; enterprise/campus, ISP/home networks
    • Network monitoring and management, SNMP
    • Virtual network environments
  • Applications
    • Web/HTTP, Email/SMTP
    • (Linked) open data
  • Network security
    • Authentication and encryption, PKI
    • (Distributed) denial of service attacks
  • Introduction to distributed systems
    • Issues, challenges
    • Distributed system models
  • Time in distributed systems
    • Clock synchronisation, logical clocks
  • Client-server programming
    • Sockets
  • Distributed objects
    • RPC/RMI
    • Java RMI
  • Indirect communication
    • Group communication
    • Publish-subscribe
    • Message queues
  • Distributed algorithms
    • Mutual exclusion
    • Leader election
    • Reliable/ordered multicast
    • Consensus
  • Distributed transactions

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
LectureStandard lecture slots.36
TutorialOptional tutorial slot, for (for example) further examples, assisting students with their self-study exercises or module assessments.12

Assessment

Assessment methods

MethodHoursPercentage contribution
Exercise 1-10%
Exercise 2-10%
Coursework-30%
Exam1.5 hours50%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2204 Computer Networking in Organisations

Module Overview

The aim of this module is to give students a solid grounding in the principles and protocols behind modern data networks, grounding the theory in its application to organisational networks, most specifically a campus enterprise. 

The module material will be underpinned by consideration of data communication technologies, but also include aspects related to network management and operation, and the principles surrounding distributed and cloud computing that are likely to be most important to organisations such as typical enterprise/campus networks.

The more theoretical aspects of the module will expose students to the principles of layered communication protocols, the architecture of the Internet, and the principles of how the components of the TCP/IP layered model, including the link, network and transport layers, are designed and operate.

The more practical aspects will cover network design and operation, including network security and network management and monitoring, as well as models for delivering an IT support service (such as ITIL). 

A campus enterprise network will be used as a case study and a focus for operational discussions in the module. Outsourcing considerations and principles surrounding distributed systems and commercial cloud services will be included. 

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • A1. The Internet architecture and layered TCP/IP networking model
  • A2. Principles and functions of the ink, network and transport layers
  • A3. Network design, services and operation in the context of an enterprise network
  • A4. Network infrastructures, and their management and monitoring
  • A5. Web services, both classic and RESTful
  • A6. Cloud computing; software/platform/infrastructure as a service
  • A7. Distributed computing and algorithms
  • A8. Network security; IPsec, VPNs, malware, denial of service attacks and resilience
  • A9. Delivering a large-scale enterprise (campus) IT service

Subject Specific Intellectual

Having successfully completed this module, you will be able to:

  • B1. Analyse and design simple networks
  • B2. Analyse existing TCP/IP-based network protocols
  • B3. Explain the network protocols and services required to operate an enterprise network
  • B4. Critically evaluate the design of an existing enterprise network
  • B5. Explain how a wide range of services (web, cloud, etc) apply to an enterprise environment
  • B6. Read and understand high-level articles on emerging networking technologies

Subject Specific Practical

Having successfully completed this module, you will be able to:

  • C1. Examine and describe network configurations in a LAN environment
  • C2. Design/define the components of an enterprise network
  • C3. Use appropriate tools to manage/monitor an enterprise network
  • C4. Use network security tools, understanding their correct application
  • C5. Describe how to deliver IT services through cloud provider(s)

Syllabus

The topics include:

  • Introduction to networking
    • Organisational networks
    • Link-layer networking
    • Network layer
    • Network services
    • Transport layer
    •  Network design and operation
  • Distributed computing
    • Cloud computing
    • Web services
  •  Network security
    • Firewalls, intrusion detection and penetration testing
    • Securing wireless networks
    • (Distributed) denial of service attacks

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
LectureLectures to cover the subject matter material24
Computer LabAnalysis of Networks36

Assessment

Assessment methods

MethodHoursPercentage contribution
A series of laboratories to practice the practical aspects of networks and security-20%
Exam2 hours80%

Referral Method: By examination

Share this module FacebookTwitterWeibo

COMP2203 Application Scripting

Module Overview

This module aims to prepare for the second semester integrative activity, pulling together the knowledge, understanding and programming skills developed on the part 1of the ITO degree, to further enhance these skills by enabling you to develop a complete system.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • of existing application development tools and programming languages used to solve problems with specific data and functionality oriented towards application domains;
  • the role and use of component-based application development suites and the use of these to solve specific problems in application domains by specialising or generalising existing software solutions;
  • computational resource calculations and the implications of these results for a variety of standard data structures and algorithms, and how these influence design decisions and the selection of appropriate solutions

Subject Specific Intellectual

Having successfully completed this module, you will be able to:

  • Integrate and synthesise knowledge from academic, professional and vocational fields into constructive plans of action
  • use testing and verification heuristics to produce robust programs
  • utilise object-oriented programming in the service of constructing simple robust programs to solve specific problems

Transferable and Generic

Having successfully completed this module, you will be able to:

  • Reflect and think critically as a component of practice, independent learning and professional development
  • Evaluate the outcome of implementing a solution to a problem.

Subject Specific Practical

Having successfully completed this module, you will be able to:

  • Create a project website & supporting database
  • Produce a class/object designs and its implementation in OO-php
  • employ practical knowledge of OO-php to implement algorithms
  • use a common integrated development environment (IDC) for preparing applications software and programmer-centred management of software construction tasks.

Syllabus

Topic

Development of practical skills in web site and database design & implementation:

How to design and implement a website with supporting database in preparation for the second semester project integrating.

Programming  in OO-PHP

Programming in the large.

Modelling: Model View Controller, in an OO environment

Looking after the code: Using an Integrated Development Environment, debugging, testing, and making the application accessible, using bug trackers, using a code repository, looking after dependencies, and making it open.

Packaging  the code.

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
LectureThe lectures components provide an introduction to the relevant theory to underpin oo-php development, and the problems that practitioners will encounter in developing large programmes. 33
Specialist LabA variety of case studies is used to support the formally presented theory and may be used for the background to the practical workshops. Practical workshop components involve the consideration of practical problems and the development of actual solutions. 30

Assessment

Assessment methods

MethodHoursPercentage contribution
laboratories-25%
Coursework-%
-25%
Exam1.5 hours50%

Referral Method: By examination

Share this module FacebookTwitterWeibo

Pages