Introduction to Computer System

By ICS Team, based on lectures by Danfeng Shan, Hao Li, and others.

These are the course notes for COMPSCI 400727: Introduction to Computer System at Xi'an Jiaotong University.

Here is the official course description:

Info

This course is inspired by the CMU-15-213 curriculum and delves into the intricacies of computer hardware, guiding students through the step-by-step process of how C code is translated into X86_64 assembly and executed on the CPU. The course is structured with increasing levels of complexity:

It begins with data representation, introducing the fundamental concepts of assembly language, followed by an exploration of memory structure and the significance of cache design. The course then covers CPU pipelining and strategies for program optimization to enhance performance. Additionally, we will examine how a C program transitions into machine-readable machine code, including the process of linking. Finally, the concept of virtual memory will be introduced.

As an introductory course to systems, it offers both depth and breadth, serving as a prerequisite for future research in computer architecture and network systems.

Disclaimer: Beta

These notes have not been proofread. They likely contain errors.

If you’re an ICS student at XJTU, in any case of dispute, the official course lectures are the correct source of truth.

Corrections

As of the Spring 2025 semester, this textbook is still being actively maintained and updated.

If you see any parts that needs to be corrected, please open a Github issue here.

Source and Changelog

The source for the textbook and a log of all changes are available on Github.

License

Creative Commons License

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Acknowledgements

The design of this textbook is inspired by many outstanding courses. We would like to express our gratitude to the following courses that have provided us with valuable inspiration:


© 2025. ICS Team. All rights reserved.

Part 1


© 2025. ICS Team. All rights reserved.

Chapter 1


© 2025. ICS Team. All rights reserved.

Chapter 2


© 2025. ICS Team. All rights reserved.

Part 1


© 2025. ICS Team. All rights reserved.

Chapter 1


© 2025. ICS Team. All rights reserved.

Chapter 2


© 2025. ICS Team. All rights reserved.

ICS Labs


© 2025. ICS Team. All rights reserved.

Lab 0: How to Start


© 2025. ICS Team. All rights reserved.

Lab 1 Data Lab


© 2025. ICS Team. All rights reserved.

Lab 2: Bomb Lab


© 2025. ICS Team. All rights reserved.

Lab 3: Attack Lab


© 2025. ICS Team. All rights reserved.

Lab 4: Cache Lab


© 2025. ICS Team. All rights reserved.

Lab 5: Optimization Lab


© 2025. ICS Team. All rights reserved.

Lab 6: Linker Lab


© 2025. ICS Team. All rights reserved.

Contributors

Core Developers

We would like to express our heartfelt thanks to all the contributors who have helped improve XJTU-ICS! Your efforts and collaboration make this project better every day 🌟.

Special thanks to XJTU-ICS Team Members. Big shout-out to them 🚀:

You can view the full list of contributors and their contributions here.

If you feel your contributions are not listed, please feel free to open a pull request to add yourself. Your work is greatly appreciated 🎉!

How to Contribute

We welcome contributions from everyone! If you're interested in contributing to XJTU-ICS, please follow these steps 👀:

  1. Fork the repository to your own GitHub account.
  2. Clone the forked repository to your local machine.
  3. Create a new branch for your changes.
  4. Make your changes and commit them with clear and concise commit messages.
  5. Push your changes to your forked repository.
  6. Open a pull request to the main repository.
    • Since Rule Set is in use, you must contribute with a PR.

If you are curious about how to set up a textbook with mdBook, we have also provided a detailed tutorial for you to start.


© 2025. ICS Team. All rights reserved.