Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ghazariann/SJTU-computer-system-fundamentals
https://github.com/ghazariann/SJTU-computer-system-fundamentals
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/ghazariann/SJTU-computer-system-fundamentals
- Owner: ghazariann
- Created: 2023-12-07T04:56:09.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2023-12-07T05:30:20.000Z (7 months ago)
- Last Synced: 2024-02-15T04:11:51.095Z (4 months ago)
- Language: C
- Size: 16.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Lists
- awesome-se - ghazariann-2021
README
# SJTU Computer System Fundamentals
## Course Overview
This repository encompasses materials for the expansive topic of Computer System Fundamentals, as covered by three courses at Shanghai Jiao Tong University (SJTU): Assembly Language (SE2307), Computer Organization (SE2316), and Computer Systems (SE2317). The content mirrors the structure and depth of similar course offered at ([CMU](http://www.cs.cmu.edu/afs/cs/academic/class/15213-f17/www/schedule.html))
## Textbook Overview
The course follows the textbook "Computer Systems: A Programmer’s Perspective," which offers fundamental insights into the architecture and operation of computer systems.
- **Chapter 1**: A Tour of Computer Systems
- **Part I: Program Structure and Execution**
- Chapter 2: Representing and Manipulating Information
- Chapter 3: Machine-Level Representation of Program
- Chapter 4: Processor Architecture
- Chapter 5: Optimizing Program Performance
- Chapter 6: The Memory Hierarchy
- **Part II: Running Programs on a System**
- Chapter 7: Linking
- Chapter 8: Exceptional Control Flow
- Chapter 9: Virtual Memory
- **Part III: Interaction and Communication between Programs**
- Chapter 10: System-Level I/O
- Chapter 11: Network Programming
- Chapter 12: Concurrent ProgrammingEach chapter's concepts are reinforced through practical homework assignments found in the `homeworks` folder of this repository. These assignments are complemented by my handwritten solutions and notes, further enhancing the learning experience.
## Key Resources
- **Book**: "Computer Systems: A Programmer’s Perspective". This book, included in the repository, is supplemented with my personal notes to enhance understanding.
- **SJTU Course Schedule**: [SJTU ICS Course](https://ipads.se.sjtu.edu.cn/courses/ics/2021/schedule.shtml)
- **Video Playlist**: A series of instructional videos complementing the course material ([ICS-CMU](https://www.youtube.com/watch?v=4CpHpFu_KYM&list=PLbY-cFJNzq7z_tQGq-rxtq_n2QQDf5vnM&index=1&ab_channel=%E5%BE%90%E6%B1%9))## Labs Overview
### 1. Manipulating Bits
A foundational lab focusing on bit-level manipulations and understanding binary representations.### 2. Defusing a Binary Bomb
This lab challenges students to defuse a "binary bomb" by reverse-engineering binary files.### 3. The Attack Lab: Understanding Buffer Overflow Bugs
A hands-on lab for students to learn about buffer overflow vulnerabilities and how to exploit them.### 4. Y86-64 Simulator
Involves building a simulator for the Y86-64 instruction set, providing deep insights into its functionality.### 5. Y86-64 Assembler
This lab delves into the Y86-64 architecture, requiring students to write an assembler for the Y86-64 instruction set.### 6. Architecture Lab: Optimizing the Performance of a Pipelined Processor
Focuses on the design and optimization of a pipelined Y86-64 processor, including benchmark program performance optimization.### 7. Tiny Shell
Students create a simple Unix shell to understand process control and signaling.### 8. Cache Lab: Understanding Cache Memories
A lab designed to demonstrate the significant impact cache memories have on C program performance.### 9. Web Proxy
In this lab, students develop a concurrent web proxy to log requests.### 10. Malloc Lab: Writing a Dynamic Storage Allocator
Students write their own version of malloc, free, and realloc routines in C, gaining deep understanding of dynamic storage allocation.**Note**: In each lab, I have focused on implementing the core parts of the codebase, primarily marked as 'TODO'.
## Acknowledgements
A special thanks to the faculty and teaching assistants at SJTU for their guidance and support throughout these courses. Their dedication has been instrumental in providing a comprehensive and practical understanding of computer systems.