Book scheme
The 1A and 1B students have all been given (on year-long loan) a copy of various text books. Please set them reading from these books as appropriate for your supervisions.
The list below shows the books for each year group and suggestions of which reading you might set for supervisions. If you do something different then please let me know and I'll update the pages. Remember that its really important to 'close the loop' on any reading that you set. Some ideas for how to do this are to ask the students to write brief notes on what they read as part of the supervision work, or to ask students to summarise what they read verbally in supervision (warn them first!).
Part 1A
Paulson, L. ML for the working programmer
- Foundations of Computer Science, Supervision 1: Chapter 1 "Standard ML", Chapter 2 "Names, Functions and Types", Chapter 3 pages 69–80 "Lists"
- Foundations of Computer Science, Supervision 2: Chapter 3 pages 82 onwards "Lists" (also deals with sorting and polynomials), Chapter 4 pages 123–154 "Trees"
- Foundations of Computer Science, Supervision 3: Chapter 5 "Functions and Infinite Data"
Silberschatz, Operating systems concepts (3 of them have copies of this)
- Operating Systems, Supervision 1: Chapter 1, write notes on "What is an Operating System and what problems does it solve?", "What are the main roles of an Operating System"
Tannembaum, Modern operating systems (the other 3 of them have copies of this)
- Operating Systems, Supervision 1: Chapter 1, write notes on "What is an Operating System and what problems does it solve?", "What are the main roles of an Operating System"
Cormen, Leiserson, Rivest and Stein, Introduction to algorithms
- Algorithms, Supervision 1: Read Chapter 1 and 2, Chapter 3 (skim 3.1 for a revision of summations and thoroughly read 3.2), Chapter 4 (4.1 to 4.3)
- Algorithms, Supervision 2: Read Chapter 17 (17.1 - 17.3). Also read Chapter 6 from "Algorithms by Dasgupta and Vazirani"
- Algorithms, Supervision 3: Chapters 11, 12 and 13
- Algorithms, Supervision 4: Chapter 14 (14.1 - 14.3), Chapter 19 and 20.1
Harris, Digital design and computer architecture
- Group session 3: Chapter 2, combinatorial logic, k-maps, static hazards
Kolman, Discrete Mathematical Structures
Part 1B
Bacon, J. & Harris, T. (2003). Operating systems: distributed and concurrent software design
- Concurrent and Distributed Systems, Supervision 1: Chapter 9 and Sections 10.3-10.6. This spans the structure of concurrent systems/software, implementations of semaphores and usage of semaphores
Goetz, B. (2006). Java Concurrency in Practice
- Concurrent and Distributed Systems, Supervision 2: Chapter 16 about the Java Memory Model.
Silberschatz, A., Korth, H.F. & Sudarshan, S. (2002). Database system concepts. McGraw-Hill (4th ed.)
- Databases, Supervision 2: Chapter 6 (Relational Algebra, TRC and DRC)
- Databases, Supervision 3: Chapter 8 (Section 8.3 on functional dependencies and normal forms, 8.4 on closure and Armstrong's axioms, 8.5 on decomposition algorithm and 8.6 on multivalued dependencies)
Paar, Ch. & Pelzl, J. (2010). Understanding cryptography. Springer
Peterson, L.L. & Davie, B.S. (2011). Computer networks: a systems approach. Morgan Kaufmann (5th ed.)
- Computer Networking, Supervision 2: Performance (Section 1.5)
- Computer Networking, Supervision 3: Error detection (Section 2.4), Routing (Section 3.3)
- Computer Networking, Supervision 4: Reliable transmission (Section 2.5)
- Computer Networking, Supervision 5: UDP (Section 5.1), TCP (Section 5.2) and TCP congestion control (Section 6.3)
Mitchell, J.C. (2003). Concepts in programming languages. CUP
- Concepts in Programming Languages, Supervision 1: Chapter 3 (Lisp) and Chapter 5 (Algol family)
- Concepts in Programming Languages, Supervision 2: Chapter 10 (Concepts in OO) and Chapter 11 (Simula/Small talk)
Russell, S. & Norvig, P. (2010). Artificial intelligence: a modern approach. Prentice Hall (3rd ed.)
- Patrick Winston's lectures for Introduction and Search
- Andrew Ng's lectures for gradient descent / perceptron / neural network
Shirley, P. & Marschner, S. (2009). Fundamentals of Computer Graphics
- Graphics, Supervision 1: Chapter 2
- Graphics, Supervision 2: Chapters 5 and 6
- Graphics, Supervision 3: Chapters 10 and 12
- Graphics, Supervision 4: Chapters 21 and 22
Hennessy, J. & Patterson, D. (2006). Computer architecture: a quantitative approach. Elsevier (4th ed.)
- Computer Design, Supervision 1: Introduction chapter, computer architecture trends
- Computer Design, Supervision 2: Chapter II, Appendix A & B, pipelining, addressing mode
- Computer Design, Supervision 3: Appendix C, memory hierarchy
- Computer Design, Supervision 4: Parallel Computer Architecture (different book): cache coherent protocol
Papadimitriou, Ch.H. (1994). Computational complexity. Addison-Wesley
Appel, A. (1997). Modern compiler implementation in ML. CUP
- Compilers, Supervision 2: Sections 1.3 and 4.2
Hennessy, M. (1990). The semantics of programming languages
- Semantics, Supervision 1: Chapter 2
- Semantics, Supervision 2: Chapter 4, Sections 1 and 4