ELEC513/COMP513: Complexity in modern systems

Instructor
Lin Zhong, lzhong AT rice.edu; Office: DH3046
Office hours: Wednesday 4:00-5:00pm, or by appointment
Google Calendar
Lectures
Wednesday 12:30pm-2:30pm; Abercrombie A121.
Grader
Min Hong Yun and Wenqiu Yu

Grading
  • Assignment:   60%
  • Participation:  20%
  • Presentation: 20%

A modern computer is a system with enormous complexity in both software and hardware. The course presents the principles for managing such complexity using examples from modern computing systems. It covers emergent issues from system complexity such as energy efficiency, bug finding, and heterogeneous hardware. It also covers designing experiments and writing systems papers. The course consists of lectures, student presentation of classic papers, and in class discussion.

Each year ELEC513 features a different topic regarding the complexity of modern computer systems. For 2017, the topic is the complexity of large software systems, specifically the Linux operating system. The lectures will cover the fundamentals for analyzing software systems, limitations of human mind (psychology and philosophy), and systemized knowledge of building complex software systems. Class assignments include reading papers, presenting ideas and one project about analyzing a subsystem of the Linux kernel.


Introduction

01/11: Lecture note

Reading assignment:


Part 1: Fundamentals: complex computers vs. limited human mind

How large are modern computers?

01/18: lecture notes

Reading assignment:

Writing assignment for discussion:

  • Is there an instance where the implementation (internals) of an articial object (preferrably in computing) that came be less complex? Describe the instance, how you measure the complexity, and why it became simpler. (write a few paragraps and prepare for classroom discussion next time)

Discussion about things becoming ``simpler''

Complexity beyond large size

01/25: Interconnection (lecture notes)

Reading assignment:

Media we discussed

02/01: Other aspects of complexity (lecture notes)

Reading assignment: no reading assignment this week

02/08: Drivers for complexity (lecture notes)

Reading assignment:

02/15: Evolution process of complexity growth (lecture notes)

Reading assignments:

Reading for your leisure:

03/01: (Quantifying complexity: lecture notes)

Reading assignments:

Reading for your leisure:

03/07: Makeup lecture (Case studies of quantifying by decomposing: lecture notes)

03/08: (Limits of human mind: lecture notes)

Reading assignments:

Reading for your leisure:

  • Thinking: fast and slow by Daniel Kahneman (winner of Nobel Prize in economics for the work done in collaboration with Tversky who passed away before the award)

Preparing for coming student presentations

03/22: (Limits of human mind: lecture notes)

Reading assignments:

Reading for your leisure:

Preparing for coming student presentations


Part 2: Principles, rules, hints for managing complexity in computer systems

04/05:Preparing for coming student presentations


Part 3: Course Project: Analyzing Linux Kernel

Books

Examples

Evolution: Study Temporal Relationships

Architecture and Coupling: Study Spatial Relationships

Interesting visualization

Useful Tools

Candidate Linux Subsystems


ADA Syllabus Statement

Any student with a documented disability needing academic adjustments or accommodations is requested to speak with me during the first two weeks of class. All discussions will remain confidential. Students with disabilities will need to also contact Disability Support Services in the Allen Center.

Any student with a disability requiring accommodations in this course is encouraged to contact me after class or during office hours. Additionally, students will need to contact Disability Support Services in the Allen Center.

If you have a documented disability that will impact your work in this class, please contact me to discuss your needs. Additionally, you will need to register with the Disability Support Services Office in the Allen Center