Skip to content

Leedehai/CS110Notes

Repository files navigation

CS110Notes

CS110 Tutorial at Stanford

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

           _____    _____   __   __    ___      
          / ____|  / ____| /_ | /_ |  / _ \     
         | |      | (___    | |  | | | | | |    
         | |       \___ \   | |  | | | | | |    
         | |____   ____) |  | |  | | | |_| |    
          \_____| |_____/   |_|  |_|  \___/  

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.

About

1st time TAing for CS110 at Stanford: Principles of Computer Systems? - Stars are appreciated :)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published