MEng Computing Degree Programme
Over the summer of 2005 I graduated from an MEng Computing degree in the Department of Computing at Imperial College London. This is a 4 year course leading directly to a Masters degree, with a 6 month industrial placement from April-October 2004. The degree is accredited by the British Computer Society (BCS) and the Institution of Electrical Engineers (IEE). It also leads to the award of Associateship of the City and Guilds of London Institute. This overview includes only the courses I took and was examined on.
Year 1, October 2001-June 2002
Hardware (Digital Systems) (Duncan Gillies, Derek Brough)
Construction of basic logic gates from transistors. Construction of DQ-flip flops. Combinatorial and sequential circuit design, including sequencing and output logic. Basic 32-bit processor design.
Declarative Programming I (Tony Field)
Use of the functional programming language Haskell.
Programming I & II (Susan Eisenbach, Michael Huth, Alessandra Russo)
Use of the Java programming language, general abstract data types with dynamic and static implementations.
Logic (Ian Hodkinson)
Use of first order predicate logic and graphics representations. Including natural deduction.
Reasoning (Krysia Broda)
Formal and informal reasoning about the correctness of applications. Application to common algorithms such as mergesort, Warshall's algorithm and string searching.
Computer Systems (amalgamation of Architecture I, Operating Systems I, Intel x86 Programming) (Naranker Dulay, Derek Brough)
Data type representations, including IEEE floating point standards. Base 2, 8 and 16 manipulation. Operating system concepts - segmentation, paging, process and memory management, concurrency. Intel x86 assembler, addressing modes.
Mathematical Methods & Graphics (Stefano Luzzatto, Oskar Mencer)
Matrices, complex numbers, partial differentiation, vector algebra, dynamical systems. Application to graphics: manipulation of scene data, texture mapping, z-buffering, projection, distortion effects, signal-processing, anti-aliasing techniques, VRML.
Discrete Mathematics (Philippa Gardener)
Theory relating to sets, relations and functions. Graph concepts. Algorithm average case/worst case analysis and big-O notation.
Databases I (Marek Sergot, James Jacobson)
Relational databases and normal forms. DBMS concepts including transactions, locking, serialisability, serialisation graphs, system recovery.
Group Research Project on Bioinformatics
Groups of 3. Research a topic selected by the department and produce an informational website about it. My group was required to research Bioinformatics.
Year 2, October 2002-June 2003
Algorithms, Complexity and Computability (Margaret Cunningham)
Turing Machines, Graph Search Algorithms, Complexity Theory and Classes (P, NP, NPC).
Architecture II (Wayne Luk)
Single and Multi-cycle Datapaths, Contruction of an ALU from Repeated Units, MIPS Architecture and Instruction Format, Performance Comparisons, Memory Hierarchy, Caches.
Compilers (Paul Kelly, Naranker Dulay)
Deterministic & Non Deterministric Finite Automata, Tokenising, LL, LR and LALR parsing, construction of LL parsers by hand, Code Generation, Optimisations, Loop Invariant Code Hoisting, Dataflow Analysis, Register Allocation with Graph Colouring, Haskell and Java compiler implementation.
Statistics (David Hand)
Probability, Estimation, Hypothesis Testing, Discrete and Random Variables.
Operatings Systems II (Julie McCann)
Structure of an Operating System, Processes and Threads, Minix System Structure, substantial 4-week long Operating Systems Laboratory (modification of the Minix OS kernel), File Systems, Disk Service Algorithms, Distributed File Systems, Security.
Software Engineering - Design I (Emil Lupu, Alessandra Russo)
UML Diagrams, System Design, Assignment of Responsibility, Implementation from UML, Formal Specification Methods, Design Patterns.
Artificial Intelligence I (Derek Brough)
State Spaces, Robotic Vision, Two Player Games, Game Trees, Intelligent Search Strategies, Contraint Satisfaction Problems, Natural Language Processing.
Concurrent Programming (Jeff Magee)
Process Modelling in FSP, Use of LTSA, Implementation of Process Models in Java, Deadlock, Process Synchronisation.
Networks and Communications (Peter McBrien)
Applications, Types of Data, Channnels (and Theoretical Capacity of), Bit Rate and Throughput, Network Topologies, Broadcast Networks and Point-to-Point, Connection-Oriented and Connectionless Communication, Data Compression/Encoding Schemes, Error Detection and Correction, Error and Flow Control, Medium Access Control (Slotted Transmission, Carrier Sensing, Token Passing), Switching (Packet and Circuit), Routing and Internetworking, Analogue-Digital/Digital-Analogue Conversion, Modulation and Encoding Schemes, OSI Model, TCP/IP Model, IPv4, IPv6, ARP, 802.x Family (Focus on Ethernet, Token Ring), FDDI, Transport Syntax (ASN.1, ISO8825), Security (Cryptography, Digital Signatures, Key Escrow, Firewalls).
Software Engineering - Design II (Ian Harries, Jim Cunningham, David Hand)
Database Websites and E-commerce: HTML, HTTP, web-based scripting languages.
Human Computer Interaction: Reasons for user-centered design and scientific experiment, Usability Engineering, Evaluation Methods, Experimental Design and Statistical Factor Analysis, Dialogue Design, Elements of Windowing Models, Norman's Stages of Action, Task Analysis.
Experimental Design: Good practices for statistical data gathering.
Small Group Project: Online Database-Driven Game
Groups of 3. Design and implementation of a database-driven web-based game to support multiple players.
Year 3, October 2003-June 2004
Advanced Computer Architecture (Paul Kelly, Jeremy Bradley)
Parallel computing, cache coherency protocols, queuing theory related to highly parallel computing, cache architectures, dynamically and statically scheduled pipelines, EPIC architectures, symmetric multithreading ("hyperthreading"), code optimisation.
Advanced Databases (Julie McCann, Peter McBrien)
Components of a DBMS, physical and logical query optimisation, entity-relationship modelling, schema integration, relational and temporal databases, XML.
Distributed Systems (Morris Sloman)
Remote Procedure Calls, CORBA, Java Remote Method Invocation (RMI), Name and Directory Services, Security, Service Management, Time Synchronization
Multimedia Systems (Theodore Hong, Ian Harries)
Lossless and lossy compression for images, video and audio, DCT, LZW, IFS, block-based motion estimation, sub-optimal search strategies, MPEG Video and Audio formats, QuickTime, JPEG, CD specifications, analogue and digital television, media format overview, network delivery (priority, QoS, differing application requirements), SMIL.
Organisations and Management Processes (John Woodley, Mike Brocklehurst)
Role of management within an organisation, business strategies, innovation, decision making, team building and team effectiveness, cash flow, profit and loss accounts and balance sheets.
Robotics (Ian Harries, Keith Clark)
Actuators, sensors, shaft encoding, grey-coding, teleo-reactive control programs, subsumption architectures, vector summing. Substantial practical part.
Simulation & Modelling (Tony Field)
Discrete-event Systems Modelled Using Event and Process Techniques, Mathematical Modelling, Queuing Theory.
Software Engineering - Methods (Michael Huth)
Modelling in Alloy, Ethical Behaviour and Dilemmas, Application Testing.
Group Project on Digital Television Transmission over IP Multicast
A project working with 5 others to produce a system to broadcast Digital Television over a local area network using IP v4 Multicast. Winner of the 2004 David Howarth Project Prize.
Industrial Placement, April- September 2004
- Placement at Celoxica Ltd.
- 6 months working with the Handel-C language and reprogrammable devices.
- Responsible for new additions to products.
- Took a product from prototype to release.
- Attended a conference in Santa Clara, California.
Year 4, October 2004-June 2005
Advanced Issues in Object Oriented Programming Languages (Sophia Drossopoulou)
Operational Semantics and Type Systems of L1, L2, C++ and Java. Implementation issues of C++ and Java, including multiple inheritance and the Java verifier.
Computer Vision (Guang-Zong Yang)
Introduction to vision sysetms, image processing and edge detection, edge based segmentation and active contours, region based segmentation, colour and texture, relaxation labelling, hough transform, perceptual grouping, shape recognition, fourier methods (including 2D transform), image registration, computational and photometric stereo, motion and optical flow, modelling.
Custom Computing (Mike Flynn [Stanford], Wayne Luk, Oskar Mencer)
Architectural considersations for system-on-chip design. Provably correct hardware transformations with Ruby. FPGA architectures.
Distributed Algorithms (Jeff Magee, Jeff Kramer)
Synchronous and asynchronous algorithms for distributed systems. Leadership election, clocks in asynchronous systems, modelling with LTSA and temporal logic.
Multi-agent Systems (Keith Clark, Ulle Endriss)
Agent communication languages and techniques, message passing, Qu-Prolog, game theory for multi-agent systems.
Network Security (Naranker Dulay, Emil Lupu)
Cryptographic techniques and implementation issues, flaws found in cryptographic systems, public and symmetric key systems. Key management and distribution, firewalls, access control, wireless security including GSM, Bluetooth and 802.11a/b/g.
Program Analysis (Herbert Wiklicky, Igor Silveroni)
Types of program analysis, lattice theory, monotone frameworks for generic analysis. Control-flow analysis in functional languages.
Software Engineering - Environments (Susan Eisenbach, Michael Huth)
Maintenance of existing code, agile development methods including extreme programming, Crystal, SCRUM. Formalisation issues and tools for pre & post conditions and invariants in object oriented languages.
Individual Project (Supervised by Prof Wayne Luk, Dr Paul Kelly)
Implementation of a meta-programming language for the transformation and design-space exploration of the Handel-C high-level hardware description language. Distinguished project and prize finalist, 2005.