Try   HackMD

2017q3 Homework1 (作業區)

tags: sysprog2017

(按右上方 之後再按左上方 ,即可編輯本頁)

作業要求

  • 請依照各作業需求,自 GitHub 網站 fork 個別專案,並將連結貼於下方「作業區」
  • 程式碼縮排有明確要求,務必遵守,這是團隊合作必要的準備,詳情見 phonebook 裡頭的 astyle 段落
  • 分項作業請建立個別新的 HackMD 頁面,作為開發紀錄
    • 如:「開發紀錄(phonebook) / github 連結」,特別留意 "/" 前後各有一個空白,敬請配合
    • 每份作業共筆的標題固定為 2017q3 Homework1 (phonebook),其中 "phonebook" 更換為對應的作業名稱,注意:後者是小寫
    • 共筆內容的第二行則為 contributed by < 你的GitHub帳號名稱 >
    • 中文、英文之間要有空白;文字訊息請避免用圖片來表示,否則不好搜尋和分類
    • 共筆示範
    • HackMD 教學和作業原則
  • 請學員於 9 月 30 日(五)中午前填寫課程「表單」,讓我們及早認識你。

作業區 (GitHub / HackMD)

  1. 儘管已花時間探索 b3k 程式的運作,但卻沒有具體分析輸入數值的範圍
  2. Git commit Add files via upload 是非常糟糕的內容,請嚴格依據 如何寫好 Git Commit Message 改寫,不要變更 coding style (注意協作!)。善用 git commit --amend 更動既有的 git commits
  3. 沒有正面闡述「Balanced Ternary 的設計要解決什麼類型的問題?」
  4. 缺乏應用案例探討
  5. 請發信清楚解釋 時間都去哪兒了?

  1. 沒有對 k3b 修改或做實驗,為什麼?
  2. 只有複製貼上,Ptt 鄉民可能誤會你是文組TM學生
  3. 距離完整的技術報告太遠了
  1. 文字訊息不要用圖片表示
  2. 附上 cache-test 之結果示意,然後呢?你的解釋是什麼?
  3. 「猜測優化是因為 malloc 大小改變造成,既然大小改變會影響效能,那減少 malloc 的次數是否也會造成影響?」 => 如何設計實驗來驗證你的想法,光憑感覺做事,根本就不算理工專業人員的態度!
  4. 為何使用 mmap 系統呼叫後,速度可提升呢?需要解釋並且思考反例
  5. 說好的 BST 呢?
  6. 請發信清楚解釋 時間都去哪兒了?

  1. 發文不附上 GitHub 程式碼 (當然要附上你的修改),不禮貌,怎麼對得起 Ptt 鄉民呢?
  2. 提到「影響後來量子電腦的設計,利用 ternary 作為基本數值單位的 qutrit 同樣也受到廣泛的討論」,為何不解說?又,這與量子電腦何關?
  3. 當提到「轉換出看似不同的balanced ternary,在轉換時可以設定規則,如:可不進位就不進位(0.1⎯⎯⎯0.1¯),或者是可進位就進位(1.T⎯⎯⎯⎯1.T¯),避免兩套標準同時存在」時,為何不以實際存在的案例 (如 IOTA) 做說明呢?show me the code!
  4. 缺乏運算描述和比較
  5. 沒有正面闡述「Balanced Ternary 的設計要解決什麼類型的問題?」
  6. 缺乏應用案例探討
  7. 請發信清楚解釋 時間都去哪兒了?

電腦故障了嗎?還是被駭客攻擊了?


  1. 發文不附上 GitHub 程式碼 (當然要附上你的修改),不禮貌,怎麼對得起 Ptt 鄉民呢?
  2. 缺乏運算描述和比較
  3. 沒有正面闡述「Balanced Ternary 的設計要解決什麼類型的問題?」
  4. 缺乏應用案例探討
  5. 「我猜這應該也是計算機界後來沒有採用 3 位元運算的原因之一吧」這種描述該在技術報告出現嗎?你只能考上成大不可恥,可恥的是,來這裡卻看不到顯著成長。理工人怎麼可以用「猜」的呢?
  6. 請發信清楚解釋 時間都去哪兒了?

電腦故障了嗎?


  1. 已提及應用案例 IOTA,但是沒解釋具體運作機制和設計考量,hash function 的安全議題詳見 Cryptographic vulnerabilities in IOTA
  2. 缺乏論述,技術報告的結構性太低
  3. 說好對 k3b 的程式碼修改呢?
  1. hash function 的設計考量呢?比較其他實作了嗎?djb2 的特性為何?
  2. Git commit Use dj2b hash function for hash table 不明確,請嚴格依據 如何寫好 Git Commit Message 改寫,不要變更 coding style (注意協作!)。善用 git commit --amend 更動既有的 git commits
  1. 已觀察 Harley 數值分佈,但「此區域經過觀察,得知其為一種 hash function ,可以將經過前項處理產生的33種可能數值轉化至最高5個位元,並透過查表對照相應的clz值」如何得知?
  2. 提及「更改對應的表格,就可以便於計算其他數值(例如 CTZ )」時,為何不給予對應程式碼呢?show me the code!
  3. 為什麼沒有修改程式碼?
  4. 請發信清楚解釋 時間都去哪兒了?

  1. 已分析 Radix economy
  2. 已列出真值表
  3. 既然寫出「所以
    sum=xy,carry=x&y
    這套在 ternary 行不通」,那後續呢?是否要推導對應的代數呢?
  4. 「Balanced Ternary 的設計要解決什麼類型的問題?」
  5. 說好的應用案例呢?
  1. 已探索到 alignment
  2. 引入 memory pool,但是缺乏量化數據的解讀
  3. 回答問題時,沒有用數理專業,都該有數據和資料模型
  4. 應該更換符合現實的姓名資料庫 (這是你該做的功課)
  5. Git commit Implement memory pool 不具體,並未提及設計概念,還有引入後的效應,請嚴格依據 如何寫好 Git Commit Message 改寫,不要變更 coding style (注意協作!)。善用 git commit --amend 更動既有的 git commits
  1. 不該用一句話來描述效能,要從「分佈」來看,而且你學過的機率統計去哪了?請用電腦科學背景的專業描述,如 probability density function (PDF)
  2. 列出「CLZ 應用場合」很好,但是 show me the code!

  1. 「高效率呈現」用語不精確
  2. 除了複製貼上,你做了哪些思考?
  3. 請發信清楚解釋 時間都去哪兒了?
  1. 連照著解說影片的描述都還沒完全符合,電腦被駭客攻擊了嗎?
  2. 趕快跟上進度,我等你

  1. 已有應用案例並闡述實際解決的問題,但是 show me the code
  2. 缺乏技術報告應有的結構
  3. 已動手設計一個簡單的 balanced ternary 系統,很好,但是你該如何驗證呢?閱讀 Unit Testing C Code 並挑出可行的方案。注意:coverage 是關鍵,該如何達到?
  1. 已引入 linear probing 改善以 hash 為基礎的查詢機制,但是碰撞能否透過統計模型初算和分析呢?
  2. 需要進一步思考 locality 和 Cache-conscious programming
  3. 需要替換成更符合現實的 data set,像是後續的 prefix-search 裡頭的各國城市資料 (9 萬筆以上)
  1. 已用 C11 _Generic
  2. 應該用機率統計術語來解讀各種 clz 的「分佈」
  3. 「應用場合」已列出程式碼,很好。但是「在 ARM v5 架構下使用 clz 指令可以減少 9 到 18 個 cycles」這怎麼算出來呢?參閱 手機裡頭的 ARM 處理器 講座
  4. 「應用場合」的 Integer Square Root 需要 show me the code!

  1. 已分析 k3b 程式碼,但缺乏輸入值範圍的分析,並探討如何加大有效範圍
  2. 缺乏應用案例和分析具體解決的問題
  1. 探討 memory leak,但是問題本身往往就是開發習慣不好。參閱 你所不知道的C語言:技巧篇
  2. 缺乏問題探討
  3. Git commit Fix bug in opt anddelete executable file 光是標題就很難懂,又缺乏詳細的訊息,你到底在解決什麼問題?工程師可不是只改程式碼,而該清楚又考量到後續維護,趕快脫離 "code monkey"。請嚴格依據 如何寫好 Git Commit Message 改寫,不要變更 coding style (注意協作!)。善用 git commit --amend 更動既有的 git commits
  1. 應用案例提及 H.264 使用的編碼 Exponential-Golomb coding(指數哥倫布編碼)中,解碼時先計算 clz 決定該值編碼的長度,很好,但是 show me the code!
  2. 缺乏必要的分析,而且該拿出機率統計的背景來。不然距離文組TM實在不遠

  1. 說故事很不錯,但這是一篇技術報告,缺乏結構
  2. 「這幾天看了一些資料,我覺得研究方向還沒真的出現」,然後呢?
  3. 「不過應該要研究加法器 來實際看看省了多少資源比較科學」,你連「資源」都沒定義,談「科學」就太遠了,請用專業術語
  4. 請發信清楚解釋 時間都去哪兒了?

  1. 已闡述 Balanced ternary 的正負值和四則運算分析
  2. 技術報告不要夾帶感情,像是「令人讚嘆」,你私下找 seafood 就好
  3. 「當能在真空管時代所佔的優勢」為何?
  4. 「電晶體相較真空管穩定且在半導體製程上實現及微縮」的具體描述?用你的專業背景 (數位邏輯 + 電子電路 + 普通物理) 來回覆
  5. 關於 IOTA 的描述很亂,這是技術報告!
  6. 需要解說 ripple adder
  7. 「浮點數表示較 Binary 的 IEEE754 精確」很重要,但 show me the code!
  1. 為何參考資料都是中文材料?你怎不把過去的教科書拿來翻閱呢?
  2. 還沒達到前一季的基礎,好多路要走

  1. 看不到你的思考
  2. 別忘了文組TM學生也會 Google 搜尋呀,你要拉開彼此的差距
  1. 下一次會更好
  2. 請發信清楚解釋 時間都去哪兒了?
  1. 你的思考呢?
  2. 趕快跟上進度,我等你

  1. 已有初步資料整理,但缺乏思考!
  2. 還是沒正面回應要解決的問題
  1. 「findname 的時間大幅降低,但 append 的時間增加,因為多了建立 hash table 的時間」,然後呢?你就停下來嗎?這樣的電話簿能用嗎?
  2. 請發信清楚解釋 時間都去哪兒了?

  1. 為何不依據指定要求去 fork GitHub repository 呢?快改
  2. 列出「electronics上的一張ternary的電路圖」,然後呢?為何不解說?
  1. 「更改find()函式的測試方式成從randomlist.txt中取値後求平均」的意義為何?在統計上的意義又是什麼?請用機率統計術語和方法分析
  2. 缺乏 hash 實作和設計考量的分析
  3. 沒有回答指定問題
  4. 請發信清楚解釋 時間都去哪兒了?
  1. 「recursive 一定要作到c=3才會得出解」,然後你為何不改善?
  2. 「看起來load的速度是沒辦法加速」,不要憑感覺說話,你是理工背景的學生嗎?
  3. 「我們可以看到雙b效能最好」這樣的描述很可愛嗎?我們要看技術報告

  1. 看不到你的思考
  2. 程式碼是給你改的,不是給你欣賞的
  3. 請發信清楚解釋 時間都去哪兒了?
  1. 沒有完成度可言
  2. 趕快跟上進度,我等你

  1. 不要只會複製貼上,你的思考呢?
  2. IOTA 那段描述太籠統,而且你的分析呢?
  1. 技術報告不要帶情感,所以不要寫「不過受到很多刺激感覺滿興奮的」,這句話跟你的 seafood 說
  2. 缺乏 BST 實作議題的檢討,如 locality
  3. 沒有回覆指定提問
  4. 請發信清楚解釋 時間都去哪兒了?
  5. 為何不依據指定要求去 fork GitHub repository 呢?快改。記住:團體合作重視紀律和溝通
  1. 「每種方法執行時間都是超小的數, 不知道是不是用錯計時的函式了」,然後呢?
  2. 缺乏思考

  1. 缺乏思考,趕快脫離文組TM
  2. 請發信清楚解釋 時間都去哪兒了?

  1. 缺乏思考,趕快脫離文組TM
  2. 請發信清楚解釋 時間都去哪兒了?

  1. 已參閱給定的教學影片
  2. 「目前不了為什麼是批准前面 2 筆,而不是更多 / 猜測是 3bits 是 1bit 記目前交易arrive , 2bit 記先前兩筆批准交易做驗證,繼續往看找答案」 => Tangle 白皮書有解釋
  3. 已修改 k3b,但沒有處理輸入值範圍和對應的調整議題
  1. 「到這裡已經有點不太理解,因為我一開始預期的是宣告固定矩陣大小 realloc 取代一直 malloc 的過程,append() 時間應該要減少,而 cache-miss 應該要差不多,因為資料存放的大小不變」 => 沒有從計算機組織和結構的觀點去解讀
  1. 已提出疑惑「recurcive 版只做 4 (c=0~c=3)次 if ,binary 做了5次,但 cycle 還是比較少」,有從 branch predictor 和對應的 latency 去思考嗎?

  1. 不要說「根據維基百科的定義」,把最初的源頭找到
  2. 提及 IOTA 時,仍沒有清楚說 balanced ternary 特性以及 show me the code
  3. 趕快脫離文組TM
  • 「結果顯示成功!」,真的嗎?你的眼睛真沒問題嗎?
  • 請發信清楚解釋 時間都去哪兒了?

  1. 看不到你你思考的痕跡
  2. 是不是走錯教室了?
  1. 缺乏對於 hash 的分析 (見上方討論)
  2. 需要一致的程式碼縮排和風格,
  3. Git commit Add files via upload 不明確,請嚴格依據 如何寫好 Git Commit Message 改寫,不要變更 coding style (注意協作!)。善用 git commit --amend 更動既有的 git commits
  4. 請發信清楚解釋 時間都去哪兒了?

  1. 已列出 IOTA 中以python 實作 ANY、full adder 以及 ripple-carry adder 的程式碼列表,但沒有 IRI 的部分
  2. 「效率更好的加法器應為 Carry Lookahead ,然其在 Balanced ternary 實作上結構複雜」 => 著手實驗了嗎?
  3. 「在上方程式法第 21 行處可看出,IOTA 使用於 Transaction 的 Hash Function 為 Curl,是 IOTA 團隊為了解決問題而建立的新 Hash Function」 => 描述正確嗎?
  4. 光有程式列表,但沒有實際測試和評估,怎知道實際狀況?
  1. 已分析 hash function 實作效益
  2. 缺乏 data set 更換和擬定分析策略
  1. 缺乏數學模型的解釋,應該用機率統計的專業探討
  2. 說好的應用案例呢?

  1. 缺乏思考
  2. 對照 IRI 程式碼來分析
  1. 「發現是malloc()消耗相當多時間」,然後呢?
  1. 缺乏數學模型的解釋,應該用機率統計的專業探討
  2. 說好的應用案例呢?

  1. 給定的 k3b 程式需要做哪些更動,才符合期望呢?
  2. 如果我們需要大於 (十進位的) 3280 當作新的合法輸入範圍,該修改哪些程式段落呢?
  3. Curl hash function 已過時,請改用 Kerl
  4. 論述不足以涵蓋數值系統和 Keccak 特性
  1. 應該用統計觀點來回答問題
  2. possion distribution

說好的應用呢?



Error: GitHub 帳號和 HackMD 開發記錄不匹配,請及早修正

  1. 程式碼是寫給你修改的,不是給你欣賞用!
  2. 提出實驗方法並動手
  1. 使用 mmap,有了初步實驗結果,很好,但缺乏解讀和分析

說好的進度呢?







「所以應該」?這是理工人說的話嗎?






針對數值分佈,作出解釋了嗎?
需要更多實驗










  1. 已實作 BST,後續如何再改善呢?
  2. data set 很關鍵,及早替換成符合現實分布的版本
  1. 已有應用場景