**Digital Integrated Circuits: 10 Hours
**

** **

**
**
[1] Introduction to digital integrated circuits:

[2] MOS transistor: Structure and operation, output and transfer characteristics, n- channel vs. p-channel transistors, enhancement vs. depletion mode, channel length modulation.

[3] 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.

[4] CMOS inverter II: Dynamic operation of the inverter, source of capacitance, optimising the charging and discharging current to design the propagation delay.

[5] CMOS Combinational logic: Transmission gate and CMOS Schmitt trigger, transistor rules for pull up and pull down networks.

[6] Alternatives to CMOS logic: ratioed and ratioless design, pseudo-NMOS and dynamic logic CMOS. Comparison with conventional static CMOS.

[7] Sequential CMOS logic: CMOS implementation of flip-flop and counters.

[8] CMOS based memory: Static random access memory (SRAM) and Dynamic RAM memory cell.

[9] MOSFET based memory: Programmable Read Only Memory (PROM), Erasable PROM (EPROM), Electrically Erasable (E2PROM) and Flash memories.

[10] Introduction to ASIC: Types of ASIC, field vs. mask programmable, delay time scaling and capacitance.

**Microprocessor Organisation and Design: 10 Hours
**

** **

**
**
[1] 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.

[4] Assessing and understanding microprocessors performance. Definition of performance. Performance metrics. Benchmarks. Examples.

[5] 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.

[8] 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
**

** **

**
**
[1] Software development lifecycle: stages; methodologies.

[2] 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).