Topics:
A. Architectural Fundamentals
1. Definition of architecture
2. Distinction between Architecture and organization
3. RISC and CISC architectures
4. General purpose Machines
5. Classification of Computers and their instructions
6. Effect of architecture on implementation
7. Performance metrics and methods
B. Arithmetic
1. Integer arithmetic
2. Fixed Point Arithmetic
3. Floating Point Arithmetic Floating Point
C. Processor Internals Design
1. Instruction formats
2. Registers
3. Data Paths
4. Control Units
5. Buses
6. Data types and encodings
7. Addressing modes
8. Operand specification
9. Microprogramming
D. Pipelining
1. Hazards
2. Implementation
3. Dealing with branches and exceptions
F. Branch Instructions
1. Delayed branch
2. Branch prediction
3. Multiple pre-fetching
G. Memory System
1. RAM
2. Memory Hierarchies
3. Caches
4. Virtual memory and TLB’s
5. Performance analysis
H. I/O System
1. Pooling
2. Memory-mapped I/O
3. Programmed I/O
4. Interrupt handling
5. DMA
6. I/O Processors
7. Format change and Error control
References:
1. William Stallings, Computer Organization and Architecture, (seventh edition), Prentice Hall, 2005.
Chapters: 2, 4, 7.2-7.6, 9, 10, 12, 13, 16, 17
2. Heuring, V. P. y Jordan, H. F., Computer Systems Design and Architecture, (second edition), Addison
Wesley, 2003.
Chapters: 3, 4, 5, 6, 7 and 8.
3. Hennessy J. and Patterson, David A., Computer Architecture: A Quantitative Approach (3rd Edition)
Morgan Kaufmann, 2002.
Chapters: 2, 5, Appendix A
4. Hennessy J. and Patterson, David A., Computer Organization & Design: The Hardware/Software
Interface, Third Edition, Morgan Kaufmann, 2004.
Chapters: 3, 4, 5, 6, 7, 8
Topics:
Mathematical Foundations
A. Logic and Proofs
1. Truth tables and tautologies
2. Proof Methods
3. Mathematical and Structural Induction
4. Axiomatic method
B. Set theory
1. Venn Diagrams
2. Set Algebra
3. Countability
C. Probability theory
1. Axioms
2. Random Variables
3. Conditional Probability and Bayes Theorem
Computing Models and Computability Theory
A. Regular languages
1. Deterministic Finite State Automata (DFA)
2. Regular Expressions
3. Equivalence of Finite Automata and Regular Expressions
4. Non-deterministic Finite State Automata (NFA)
5. Equivalence of DFA and NFA
6. Pumping lemma and Applications
B. Context-free languages
1. Push Down Automata (PDA)
2. Context-Free Grammars (CFG)
3. Equivalence of PDA and CFG
4. Pumping lemma and applications
C. Turing Machines and Church-Turing Thesis
1. The Simple Turing Machine
2. Variants of the Turing Machine
3. Church-Turing Thesis and Universal Computing Models
4. Universal Turing Machines
D. Decidability and The Halting Problem
1. Decidable languages
2. The Halting Problem (Proof) and applications
3. Undecidable problems
E. Complexity Theory
1. Complexity measures
2. Complexity classes (Space/Time)
3. The classes P and NP and the P=NP Question
4. NP-completeness and NP-hardness
5. Polynomial-time reducibility
6. Examples of NP-complete problems (Proofs)
7. Cook’s theorem
References:
1. Michael Sipse r, “Introduction to the Theory of Computation”, Second Edition, MIT Press, 2005.
Part One: Automata and Languages sections 1, and 2
Part Two: Computability Theory
Sections 3, 4, and 5
Part Three: Complexity Theory
Sections 7, and 8
2. John E. Hopcroft, Raj eev Motwani, and Jeffrey D. Ullman, “Introduction to Automata Theory,
Languages, and Computation”, Third Edition, Addison Wesley, 2006.
Chapter 1, section 1.5
Chapter 2, sections 2.2, 2.3 and 2.5
Chapter 3, sections 3.1, 3.2 and 3.4
Chapter 4, sections 4.1, 4.2, and 4.3
Chapter 5, sections 5.1, 5.4
Chapter 6, sections 6.1.2, 6.2, 6.3, 6.4
Chapter 7, all sections
Chapter 8, sections 8.1, 8.2, 8.4, 8.5
Chapter 10, sections 10.1, 10.2, 10.3, 10.4
Chapter 11, section 11.2
3. http://www.dartmouth.edu/~chance/teaching_aids/books_articles/probability_book/book.html
Chapters 1 to 4.
Topics:
A. Searching
1. Linear and Binary Search Algorithms
B. Sorting
1. Comparison-based sorting
2. Optimality of n log n comparison-based sorting
C. Lists
1. Vectors (variable-sized arrays)
2. Linked Lists
3. Stacks
4. Queues
5. Priority Queues (List Implementation)
D. Sets
1. Trees and Balanced Trees
2. Dictionaries and Hashing
3. Heaps and Priority Queues
4. Disjoint Sets
E. Directed and Undirected Graphs
1. Adjacency list and Adjacency Matrix Representation
2. Graph Traversal: Depth-First and Breadth-First
3. Shortest Paths Algorithms
4. Spanning Trees
5. Connected Components
F. Algorithm Design Techniques
1. Greedy Method
2. Divide and Conquer
3. Dynamic Programming
4. Backtracking
5. Branch and Bound
G. Matrices
LU Decomposition
H. Algebraic methods
Fast Fourier Transform
I. String Algorithms
References :
1. A.V. Aho, J.E. Hopcroft, J.D. Ullman. The design and analysis of computer algorithms . Addison-
Wesley, 1974.
Chapters: 3, 4, 5,10
2. T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduction to Algorithms . MIT Press. Second
Edition, 2001.
Chapters: 1,3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 34, Appendix
3. R. Sedgewick. Algorithms . Addison-Wesley. Second Edition, 1988.
Chapters: 1, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 29, 30, 31, 32, 42
4. R. Sedgewick, P. Flajolet. An introduction to the analysis of algorithms . Addison-Wesley, 1996.
Chapters: 1, 2, 4, 5