CS110Notes

CS110 Tutorial at Stanford

Hosted here, but it will be taken down when I graduate.


After my graduation, the notes are hosted here on Leedehai at Github. Stars are appreciated!!
_____ _____ __ __ ___ / ____| / ____| /_ | /_ | / _ \ | | | (___ | | | | | | | | | | \___ \ | | | | | | | | | |____ ____) | | | | | | |_| | \_____| |_____/ |_| |_| \___/

Course title: Principles of Computer Architecture

Spring 2017, offered by J. Cain

Author: L. Haihong (@Leedehai)

Caveat: no warranty, but feedback on factual errors are welcome!

Index

Introduction
[HTML][Markdown]

Topic 1 Filesystem (1): cp, "the three tables", find, intro to system calls
[HTML][Markdown]

Topic 1 Filesystem (2): file systems, layering, more on system calls
[HTML][Markdown]

Topic 2 Multiprocessing (1): fork(), waitpid(), reaping
[HTML][Markdown]

Topic 2 Multiprocessing (2): execvp(), "the trio", shell
[HTML][Markdown]

Topic 2 Multiprocessing (3): pipes, redirection
[HTML][Markdown]

Topic 2 Multiprocessing (4): signals, signal handlers, signal masking
[HTML][Markdown]

Topic 2 Multiprocessing (5): paging, virtual memory, scheduler, context switch
[HTML][Markdown]

Topic 3 Multithreading (1): POSIX C pthread, race conditions
[HTML][Markdown]

Topic 3 Multithreading (2): C++ thread, mutex
[HTML][Markdown]

Topic 3 Multithreading (3): dining philosophers problem, deadlocks, permission slips, condition_variable_any, lock_guard
[HTML][Markdown]

Topic 3 Multithreading (4): semaphore, reader-writer problem, myth-buster
[HTML][Markdown]

Topic 3 Multithreading (5): concurrency patterns, ice-scream-parlor
[HTML][Markdown]

Topic 4 Networking (1): sever, client, sockets, server-side multithreading
[HTML][Markdown]

Topic 4 Networking (2): HTTP, networking system calls and data structures
[HTML][Markdown]

Topic 4 Networking (3): networking API, MapReduce
[HTML][Markdown]

Topic 4 Networking (4): non-blocking I/O
[HTML][Markdown]

Topic 4 Networking (5): event-driven programming
[HTML][Markdown]

Appendix A - Principles of Systems Design: abstraction, modularity and layering, naming and name resolution, caching, virtualization, concurrency, client-sever request-response
[HTML][Markdown]

Lab solutions (maintained by instructor)

Lab 1: File Systems and System Calls
Lab 2: Multiprocessing and Unix Tools
Lab 3: Parallel Programming
Lab 4: assign3 Redux and Threads
Lab 5: Read-Write Locks, Event Barriers
Lab 6: Threads vs Processes
Lab 7: ThreadPools and Networking

KOB = "knock on the blackboard" = "this is important" (for the purpose of course reviewing, not necessarily for learning)

LICENSE: Creative Commons Attribution Share Alike 4.0 (CC-BY-SA-4.0), not applicable to lab solutions.