Digital Integrated Circuits: 10 Hours
 Introduction to digital integrated circuits:
 MOS transistor: Structure and operation, output and transfer characteristics, n- channel vs. p-channel transistors, enhancement vs. depletion mode, channel length modulation.
 CMOS inverter I: structure and operation regimes of the NMOS and PMOS transistors and their relation to the voltage transfer characteristic of the inverter, transistor matching and designing the VTC.
 CMOS inverter II: Dynamic operation of the inverter, source of capacitance, optimising the charging and discharging current to design the propagation delay.
 CMOS Combinational logic: Transmission gate and CMOS Schmitt trigger, transistor rules for pull up and pull down networks.
 Alternatives to CMOS logic: ratioed and ratioless design, pseudo-NMOS and dynamic logic CMOS. Comparison with conventional static CMOS.
 Sequential CMOS logic: CMOS implementation of flip-flop and counters.
 CMOS based memory: Static random access memory (SRAM) and Dynamic RAM memory cell.
 MOSFET based memory: Programmable Read Only Memory (PROM), Erasable PROM (EPROM), Electrically Erasable (E2PROM) and Flash memories.
 Introduction to ASIC: Types of ASIC, field vs. mask programmable, delay time scaling and capacitance.
Microprocessor Organisation and Design: 10 Hours
 Introduction. Computer abstractions and technology. The changing face of computing. Embedded microprocessors. Instructions: language of the computer.
[2-3] MIPS Instruction Set Architecture. Arithmetic instructions. Load and store instructions. Instruction formats. Decision making instructions.
 Assessing and understanding microprocessors performance. Definition of performance. Performance metrics. Benchmarks. Examples.
 Building a 32-bit arithmetic logic unit for the MIPS architecture.
[6-7] Simplified implementation of the MIPS datapath. Single-cycle datapath implementation. Multi-cycle approach. Control signals. Control unit implementation. Examples.
 Enhancing CPU performance with pipelining. Pipelined datapath. Pipeline control. Dependencies. Forwarding. Stalling. Branch hazards.
[9-10] Exploring memory hierarchy. Direct mapped cache. Memory organization. Decreasing miss ratio with associativity. Example implementation: 4-way associative cache. Virtual memory. Making address translation fast. Modern microprocessors systems. Examples.
Algorithmic Programming & Software Design: 20 Hours
 Software development lifecycle: stages; methodologies.
 Introduction to traditional analysis and design: process modelling with DFDs, data modelling with ERDs; introduction to Object Oriented concepts: classes, methods, encapsulation, inheritance, polymorphism; introduction to UML
[3-5] OO Analysis and Design: Functional modelling: use cases; Structural modelling: CRC cards, class diagrams, object diagrams; Behaviour modelling: sequence diagrams, behavioural state machine diagrams.
[6-7] Analysis of algorithms: characterisation of problem data-size and program running time; big-O notation; recurrence relations; asymptotic behaviour; typical running times.
[8-9] Recursion: problem decomposition; base cases; implementation examples; run-time tracing; program efficiency issues: iteration versus recursion.
[10-13] Data structures: revision of simple data-types and pointers; abstract data-types: implementation and use of singly linked lists, doubly linked lists, stacks, queues, trees, binary trees binary search trees;
[14-15] Searching: directed and controlled scanning and implications of data ordering; hashing: hash functions and collision handling
[16-18] Sorting: elementary sort algorithms: selection, insertion, bubble; implications of initial ordering of data; quick sort; merge sort; priority queues, binary heaps and heap sort. Use of pattern design for sort algorithms.
[19-20] Numerical algorithms: implementation of algorithms to solve numerical problems (to be briefly introduced for a lab exercise).