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).