版本 ea1b2fb080c365861d92b8598774f6eb06b634ee
Changes from ea1b2fb080c365861d92b8598774f6eb06b634ee to c758ed472601898d4e2e96f371b50f658d71844f
---
title: 課程進度與開放資源
categories: system programming, linux, performance, security, compiler, kernel
toc: no
...
- Instructor: [Jim Huang](/User/jserv) (黃敬群) `<jserv.tw@gmail.com>`
* [Facebook 粉絲專頁](https://www.facebook.com/JservFans) (不要擔心提了笨問題,這就是專門和學生互動的)
- 討論區: [https://www.facebook.com/groups/system.software2016/](https://www.facebook.com/groups/system.software2016/)
- 課程信箱: `<embedded.master2015@gmail.com>`
進階電腦系統理論與實作 (Fall 2016)
------------------------------------------------------
* 第 1 週 (Sep 23): 誠實面對自己:不是這門課程很操,是你過去欺騙了自己
- [課程簡介和注意須知](https://docs.google.com/presentation/d/15F6sTm9WN6Efc5pjP8HkUVCfNbjqK859-7vYJy81kAc/edit#slide=id.p)
- [21 世紀的系統軟體](https://hackmd.io/s/r1srX7Za): 「需求」層次: 正確 → 安全 → 可讀 → 優雅 → 利他; Benchmark / Profiling; 運算模式的巨變; Deep Learning 背後的資訊建設: GPU; 軟體品質和安全議題
- [你所不知道的 C 語言](http://hackfoldr.org/dykc/): 本週進度為「指標篇」和「物件導向程式設計篇」
- [重新理解數值](https://hackmd.io/s/SkKZBXZT): integer overflow; 邏輯和算術的差異; 運用 bit-wise operator; Count Leading Zero
- [Programming Small](https://hackmd.io/s/S1rbwmZ6): 在小處下功夫,不放棄整體改善的機會
- [本學期作業說明](https://hackmd.io/s/B1DmtJfT)
- [隨堂測驗](https://hackmd.io/s/r13u0Af6)
- [作業](https://hackmd.io/s/H1B7-hGp) (截止日: Sep 29)
* [phonebook](https://hackmd.io/s/S1RVdgza), [raytracing](https://hackmd.io/s/B1W5AWza), [compute-pi](https://hackmd.io/s/rJARexQT), [clz](https://hackmd.io/s/B1LHefQ6)
* [W1-QA](https://hackmd.io/s/Hka2UE8a) (只有選修課程的學生需要完成這項)
* 第 2 週 (Sep 30): 並行 + 演算法分析
- [第 1 週作業回顧](https://hackmd.io/s/HydMPmjT)
- [concurrency](https://hackmd.io/s/H10MXXoT): Concurrency (並行) vs. Parallelism (平行); POSIX Threads; Thread Pool; Lock-free Thread Pool; 對 Linked-List 排序; Producer-Consumer Problem
- [Algorithm Complexity Analysis](http://discrete.gr/complexity/)
- [隨堂測驗](https://goo.gl/forms/mGZvzTbCbJfBkgwr1): 題目: 將 [Linked List Bubble Sort](http://faculty.salina.k-state.edu/tim/CMST302/study_guide/topic7/bubble.html) 裡頭的排序演算法從 recursive bubble sort 更換為 recursive merge sort
- [作業](https://hackmd.io/s/HykJUcnT): (截止日: 08:00AM Oct 7)
* [introspect](https://hackmd.io/s/BkhIF92p), [phonebook-concurrent](https://hackmd.io/s/rJsgh0na)
* [W2-QA](https://hackmd.io/s/Sk29RMbC) (只有選修課程的學生需要完成這項)
* 第 3 週 (Oct 7): 重新理解電腦結構
- [第 2 週作業回顧](https://hackmd.io/s/HkUy3wVC)
- [Computer Architecture](https://hackmd.io/s/H1sZHv4R) ([NOTE](https://paper.dropbox.com/doc/Computer-Architecture-Notes-NfGP1aZt2pAkgTcFeiEmc))
- [Modern Microprocessors A 90 Minute Guide!](http://www.lighterra.com/papers/modernmicroprocessors/) (必讀)
- [SIMD Programming Introduction](https://goo.gl/Rc8xPE)
- [在計算機裡頭實踐演算法](https://hackmd.io/s/HyKtIPN0)
- [作業](https://hackmd.io/s/Sy-ch58A): (截止日: 08:00AM Oct 14)
* [mergesort-concurrent](https://hackmd.io/s/rJ-GWtJ0), [software-pipelining](https://hackmd.io/s/ry7eqDEC)
* [W3-QA](https://hackmd.io/s/r1M_l_NA) (只有選修課程的學生需要完成這項)
* 第 4 週 (Oct 14): 作業系統概念的實踐
- [2016 年秋季班分組表(第一次)](https://hackmd.io/CYMwbADAHATAhmAtAVmQRiQFjqxAjYTTRYePZGAYwE4BmSsGIA==?view)
- [灰姑娘真能穿玻璃鞋跳舞?工程師提出解答](http://archive.eettaiwan.com/www.eettaiwan.com/ART_8800676444_676964_NT_557e5885.HTM)
* 1697 年《鵝媽媽的故事》和 1812 年《格林童話》都提到灰姑娘,而灰姑娘穿什麼材質的玻璃鞋,能夠承受她的體重,讓她舒適地走路和跳舞?
- [第 3 週作業回顧](https://hackmd.io/s/S1Bj65p0)
- Operating System Concepts
- [案例探討: 強化 server-framework 效能](https://hackmd.io/s/rJFnrj6A)
- [隨堂測驗](https://goo.gl/forms/pDbtYxeoJHNvmBz32): [題目](https://hackmd.io/s/S1jWCna0)
- [作業](https://hackmd.io/s/Sy_O7uCA): (截止日: Oct 20)
* server-framework, 回顧既有的作業
* 第 5 週 (Oct 21): 為什麼你該理解編譯器
- [淺談 Microkernel 設計和真實世界中的應用](https://embedded2016.hackpad.com/-Microkernel--xeGzRmcbT20)
- [回顧 SIMD 和計算機組織](https://hackmd.io/BwFgnATArARgbFAtBOAGAjIkB2AhpsVAZiMXQBMJsJzUIAzIuAYyA===) + [案例分析:轉置矩陣](https://hackmd.io/s/ryTASBCT)
- [編譯器和最佳化原理](https://embedded2015.hackpad.com/C-DWAUb7NnQF0)
- [動態連結器](https://embedded2015.hackpad.com/C-VESe3UsncpM)
- [作業](https://hackmd.io/s/rk7H0Pw1g): (截止日: Oct 27; 下方擇一,並且 Week4 的專題要繼續作)
* [jit-compiler](https://hackmd.io/s/SJ7AZJv1e), [rubi](https://hackmd.io/s/SyWEhlDJx)
* 第 6 週 (Oct 28): 你所不知道的記憶體
- [回顧第一次分組成果](https://hackmd.io/s/rkKY7RJex)
- [2016 年秋季班分組表(第二次)](https://hackmd.io/s/r1-e1Jgll)
- [羅輯思維: 怎樣成為一個高手](https://www.youtube.com/watch?v=4JhlfRAzVKY): 從 12:08 開始
- [Memory Allocation](https://hackmd.io/s/B1SRlfeee)
- [How a Rogue Optimization Breaks C11 Memory Consistency](https://goo.gl/B68s9X)
- [How a Rogue Optimization Breaks C11 Memory Consistency](https://goo.gl/B68s9X)
- [DTrace for Linux 2016](http://www.brendangregg.com/blog/2016-10-27/dtrace-for-linux-2016.html): BPF tracing 是 Linux 效能分析最後一塊拼圖
- 稽核日: Nov 4
* 第 7 週 (Nov 4) 數學總複習:線性代數, 離散數學, 機率統計, 工程數學
- 稽核日: Nov 11
* image-processing
* 第 8 週 (Nov 11): Virtual Machines and Secure Coding + 第二次分組成果報告
- 稽核日: Nov 18
* 第 9 週 (Nov 18) 第二次分組成果報告
## Computer Systems: A Programmer's Perspective
* [CMU 官方網站](http://csapp.cs.cmu.edu/)
* 推薦閱讀: (和本課程高度相關)
- [Machine-Level Representation of Programs](http://csapp.cs.cmu.edu/2e/ch3-preview.pdf)
- [Processor Architecture](http://csapp.cs.cmu.edu/2e/ch4-preview.pdf)
- [Optimizing Program Performance](http://csapp.cs.cmu.edu/2e/ch5-preview.pdf)
- [The Memory Hierarchy](http://csapp.cs.cmu.edu/2e/ch6-preview.pdf)
- [Linking](http://csapp.cs.cmu.edu/2e/ch7-preview.pdf)
- [Exceptional Control Flow](http://csapp.cs.cmu.edu/2e/ch8-preview.pdf)
- [Virtual Memory](http://csapp.cs.cmu.edu/2e/ch9-preview.pdf)
- [System-Level I/O](http://csapp.cs.cmu.edu/2e/ch10-preview.pdf)
- [Concurrent Programming](http://csapp.cs.cmu.edu/2e/ch12-preview.pdf)