EEL-5737/4736 - Principles of Computer Systems Design

Course, University of Florida, ECE Department", 2023

Course Description

This class provides a broad introduction to the main principles and abstractions for engineering hardware and software systems, and in-depth studies of their use on computer systems across a variety of designs, be it in operating system, a client/server application, a database server, or a fault-tolerant disk cluster. This is a 3-credit course.

Course Pre-Requisites / Co-Requisites

Digital design (EEL4712 or equivalent); introduction to programming or data structures/algorithms (EEL4834 or equivalent), or instructor approval. Programming in a high-level language

Textbook

“Principles of Computer System Design”, Jerome E. Saltzer and M. Frans Kaashoek, Morgan Kaufmann, first edition, 2009, ISBN number: 9180123749574

Course Objectives

The design of hardware and software in computer systems ranging from personal devices to large-scale distributed, networked computers is an increasingly complex undertaking and requires understanding not only of individual sub-systems, such as the micro-processor, but also the interactions among sub-systems. This class provides a broad introduction to the main principles and abstractions for engineering computer systems, and in-depth studies of their use on computer systems across a variety of designs, be it an operating system, a client/server application, a database server, or a fault-tolerant disk cluster. Design/programming assignments and a project will be assigned in this class. These entail an exploration of a topic related to the design of a computer system through implementation of a prototype. The assignments and project will require significant software programming using the Python high-level language.

Course Schedule:

  • Week 1: Systems and complexity, fundamental abstractions, naming introduction/Chapters 1, 2
  • Week 2: Names and layers, Unix file system case study/Chapter 2/Quiz #1
  • Week 3: Client/service modularity, NFS case study/Chapter 4
  • Week 4: Virtualization abstractions, virtual links/Chapter 5/Quiz #2
  • Week 5: Memory modularity, virtual memory/Chapter 5/Quiz #3
  • Week 6: Virtual processor threads/Chapter 5/Exam #1
  • Week 7: Designing for performance, scheduling/Chapter 6/Quiz #4
  • Week 8: Network properties, network layers/Chapter 7/Quiz #5
  • Week 9: Network case studies, fault tolerance/Chapters 7, 8/Quiz #6
  • Week 10: Redundancy/Chapter 8/Quiz #7
  • Week 11: Atomicity/Chapter 9/Exam #2
  • Week 12: Atomicity, logs/Chapter 9
  • Week 13: Class project review and discussion
  • Week 14: Logs, atomicity locks/Chapter 9/Quiz #8
  • Week 15: Transactional memory, course review for final exam/Chapters 2, 4, 5, 6, 7, 8, 9