20155303 2017-2018-1 《信息安全系統設計基礎》課程總結
目錄
- 1、每週做業及實驗報告連接彙總
- 2、關於博客
- 自認爲寫得最好一篇博客是?爲何?
- 做業中閱讀量最高的一篇博客是?談談經驗。
- 做業中與師生交互最多的一篇博客是?談談收穫。
- 3、代碼託管
- 給出statistic.sh的運行結果,說明本學期的代碼量目標達到沒有?
- 代碼驅動的學習作到沒有?
- 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得。
- 實踐上有什麼經驗教訓
- 4、開學初問題的回顧
- 總體評價一下第1周做業中本身提出的問題是否是抓住了學習重點
- 回答一下第1周做業中本身提出的問題
- 5、課堂項目實踐
- 課堂實踐連接
- 課堂實踐對提升應用能力有幫助嗎?
- 你有什麼項目被加分,談談你的經驗。
- 6、課程收穫與不足
- 本身的收穫(投入,效率,效果等)。
- 本身須要改進的地方。
- 若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議。
- 7、給本身和學弟學妹的建議
- 8、問卷調查
- 你平均每週投入到本課程學習時間有多少?
- 每週的學習效率有提升嗎?
- 學習效果本身滿意嗎?
- 課程結束後會繼續一週至少一篇博客嗎?
- 你以爲這門課老師應該繼續作哪一件事情?
- 你以爲這門課老師應該中止作哪一件事情?
- 你以爲這門課老師應該開始作什麼新的事情?
- 9、寫在最後
- 附:二維碼
1、每週做業及實驗報告連接彙總
返回目錄
html
2、關於博客
自認爲寫得最好一篇博客是?爲何?程序員
做業中閱讀量最高的一篇博客是?談談經驗。面試
- 閱讀量最高的是課後練習:C語言實現Linux命令——od這篇博客。起初這是一項課下做業,要求實現
od -tc -tx1 *.txt
的功能,目的在於讓咱們區分文本文件和二進制文件的概念,較易實現。後來想到od命令還有其餘選項,順便作了拓展,最後再進行「潤色」,嚴格模仿Linux下的輸出格式。在拓展的過程當中,考慮到須要封裝函數,用到了windows下光標移動的方法。但移植到Linux下又出了新的問題,由於Ubuntu下沒有windows內核dll的支持,因此windows.h中的方法在Linux下均沒法使用。在老師的指點下,瞭解到curses.h庫函數的功能相似於windows.h,所以進行了後續的學習。經驗就是,「問題驅動學習」,要有鑽研的精神,知識都是在深挖的過程當中慢慢掌握的;同時應該在博客中詳細記錄本身的思考過程,這些對其餘同窗不失爲重要的參考。
做業中與師生交互最多的一篇博客是?談談收穫。正則表達式
- 交互最多的是進程與fork()、wait()、exec函數組,這也是我寫博客以來
修改次數最多的一篇博客。在與老師討論的過程當中,一點一點學會如何以更加明晰的思路向初學者展現知識的框架和內涵。在修改的過程當中更加體會到老師的不易,都說給學生一碗水,老師至少須要一桶水的儲備,教會他人,每每比教會本身更困難。雖然目前的版本仍不使人滿意,但在迭代的過程當中收穫滿滿。
返回目錄
算法
3、代碼託管
給出statistic.sh的運行結果,說明本學期的代碼量目標達到沒有?shell
- 本學期的代碼量目標已完成。代碼集中爲課後習題、遇到問題時的驗證過程以及五次實驗。
代碼驅動的學習作到沒有?編程
「代碼驅動」與「問題驅動」是本學期學習的主要方式。尤爲對於許多精細知識的學習,好比教材第二章,遇到不懂的問題敲代碼驗證就能對「信息=位+上下文」有更加深入的理解。windows
加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得。數組
- 照搬代碼每每不能獲得實質性的提升,而針對不一樣的需求對代碼稍做修改卻能夠幫助咱們深入理解代碼。好比C語言模擬od命令,對已有的-tx代碼稍做修改就能實現-td/-to等選項,也加深了對代碼的理解。
教材實踐上有什麼經驗教訓?緩存
- 學習新的知識時,能夠先看書,熟悉書上的知識點;若是時間緊張,先敲代碼作練習不失爲一種不錯的選擇。在調試代碼、運行代碼、修改代碼的過程當中,對知識點也就理解透徹了。
返回目錄
4、開學初問題的回顧
總體評價一下第1周做業中本身提出的問題是否是抓住了學習重點?
- 大多數問題缺少對一章內容的總體把握,在沒有通讀整章的狀況下,提出的問題老是不着重點。
回答一下第1周做業中本身提出的問題
- 『第1章 計算機系統漫遊』:一個可執行程序是如何一步步產生的?
- 預處理->編譯->彙編->連接,由今生成可執行文件。
- 『第2章 信息的表示和處理』:如何利用計算機的算術運算特性保證運算結果的精度?
- 例如經過規格化,能夠保證運算數據的精度。浮點的規格化是爲了使浮點數尾數的最高數值位爲有效數位。當尾數用補碼錶示時,若符號位與小數點後的第一位不相等,則被定義爲已規格化的數,不然即是非規格化數。一般,採用向左規格化(簡稱左規),即尾數每左移一位,階碼減1,直至規格化完成
- 『第3章 程序的機器級表示』:不一樣的數據結構,分配和訪問方式有何異同?
- 許多實際的計算機系統對基本類型數據在內存中存放的位置有限制,它們會要求這些數據的首地址的值是某個數k(一般它爲4或8)的倍數,這就是所謂的內存對齊。
- 『第4章 處理器體系結構』:五階段處理器流水線具體指什麼?
- 取指階段->譯碼和寫回階段->執行階段->訪存階段->更新PC階段
- 『第5章 優化程序性能』:如何在理解現代處理器的原理上,提升代碼性能?
- ①選擇一組適當的算法和數據結構;②編寫出編譯器可以有效優化以轉換成高效可執行代碼的源代碼,如充分理解優化編譯器的能力和侷限性。
- 『第6章 存儲器層次結構』:如何經過改善程序的時間局部性和空間局部性來提升應用程序的性能?
- ①經過按照數據對象存儲在內存中的順序,以步長爲1的來讀數據,從而使得程序的空間局部性最大;②一旦從存儲器中讀入了一個數據對象,就儘量多地使用,從而使程序中的時間局部性最大。
- 『第7章 連接』:連接的具體過程是怎樣的?在生成可執行目標文件的過程當中起什麼做用?
- 爲了構造可執行文件,連接器須要完成如下兩個任務:符號解析和重定位。驅動程序運行連接器。將各類.o文件以及一些必要的系統目標文件組合起來,建立一個可執行文件。
- 『第8章 異常控制流』:進程是如何工做的?如何在應用中建立和操縱進程?
- 進程是一個執行中程序的實例,每次用戶經過向shell輸入一個可執行目標文件的名字,運行程序時,shell就會建立一個新的進程,而後在這個新的進程的上下文中運行這個可執行目標文件。
- 與進程相關的有一些函數,如fork()、getpid()、exit()、wait()等,
- 『第9章 虛擬內存』:虛擬內存是如何體現計算機系統軟硬件結合的優勢的?
- 它將主存當作是一個存儲在磁盤上的地址空間的高速緩存,在主存中只保存活動區域,並根據須要在磁盤和主存之間來回傳送數據,經過這種方式,高效的使用了主存。
- 它爲每一個進程提供了一致的地址空間,從而簡化了存儲器管理。
- 它保護了每一個進程的地址空間不被其餘進程破壞。
- 『第10章 系統級I/O』:C的標準I/O庫與Linux I/O有什麼關係?
- 標準I/O默認採用了緩衝機制,好比調用fopen函數,不只打開一個文件,並且創建了一個緩衝區(讀寫模式下將創建兩個緩衝區),還建立了一個包含文件和緩衝區相關數據的數據結構。
- 低級I/O(Linux系統的I/O)通常沒有采用緩衝,須要本身建立緩衝區,不過在Linux系統中,都是有使用稱爲內核緩衝的技術用於提升效率,讀寫調用是在內核緩衝區和進程緩衝區之間進行的數據複製。
- 『第11章 網絡編程』:如何開發簡單的迭代式Web服務器?
- 迭代服務器:服務器在同一時刻只能響應一個客戶端的請求
- 併發服務器:服務器在同一時刻能夠響應多個客戶端的請求
- 在實驗三中,實現了迭代服務器和併發服務器。具體能夠參考相關實現。
- 『第12章 併發編程』:如何利用線程級並行性使得程序在多核機器上更快運行?
- 能夠經過編寫並行程序,具體包括任務並行和數據並行兩種方式。
- 任務並行:是指將有待解決的問題須要執行的任務分配到各個核上完成。
- 數據並行:是指將有待解決的問題所須要處理的數據分配到各個核上完成,每一個核在所分配的大體至關的數據集上執行相同操做。
返回目錄
5、課堂項目實踐
課堂實踐連接
課堂實踐對提升應用能力有幫助嗎?
- 本學期隔週即進行一次課堂實踐,我認爲這是對學習內容的很好的檢測方式,也對同窗們的學習起到了很好的督促做用。不過課堂實踐畢竟時間有限,不可能對兩週所學內容面面俱到,因此還需課下多下功夫。
你有什麼項目被加分,談談你的經驗。
- 截至上次公佈成績,有如下幾個方面被加分:
- 博客。包括暑假期間自學寫的博客,以及一些優秀做業;
- 微課。這學期利用課餘時間跟幾位同窗一塊兒作一些輔助教學的工做,雖然微不足道,但讓咱們真切體會到了老師的不易;
- 密碼技術競賽。從暑假中期開始準備初賽,到學期初進入複賽修改完善做品,再到11月下旬參加決賽,雖然說結果並不盡如人意,只拿了三等獎,但準備的過程對團隊的每一個成員來講都是一種歷練;此次比賽每一位隊員都各盡所長,也讓團隊的凝聚力大大加強,能夠說意義遠遠超過了比賽自己;
- 還有一些是課堂實踐的加分;
- ......
返回目錄
6、課程收穫與不足
本身的收穫(投入,效率,效果等)。
- 本學期所學內容較上學期而言,更多且更雜,任何一個模塊都能拿來細細探討分析;在課程難度增大的狀況下,投入的時間和理解程度卻不盡人意,有不少課後練習都沒有完成,還有一些章節也沒來得及仔細研究。還須要多讀不少遍才能真正把這本書理解掌握...
本身須要改進的地方。
- 合理安排時間,分清緩急輕重,知識老是學不完的,因此應該學會抓住重點。
若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議。
- 從這兩個學期的結對狀況來看,我認爲這種方式是很是有必要的。尤爲是實驗,一我的的知識儲備也許不足以解決遇到的全部問題,每每在探討的過程當中才能摸索到正確的解決方案。
- 並且結對也是一個互補的過程,隊員可以在這個小團體內發揮本身的長處,兩個或三我的協做能夠獲得更好的效果。
- 在平時的學習中,不少同窗並無切實貫徹結對的政策,多是由於平常的學習較爲簡單,並不須要另外一我的跟本身的思惟來碰撞。參考其餘課程的結對狀況,也許能夠按期佈置一些大型做業,難度不必定很大,但最好要求多樣化一些,爲同窗們創造發揮長處的機會,與他人合做完成。
返回目錄
7、給本身和學弟學妹的建議
若是從新學習這門課,怎麼作才能夠學的更好?
- 多閱讀課本內容涉及到的相關書籍,好比《Understanding.Unix-Linux.Programming》、《The Art of Debugging with GDB, DDD and Eclipse》、《UNIX.Linux下curses庫開發指南》等,一方面改善單一的思惟方式,另外一方面也算「廣」與「專」並重。
- 合理安排時間,「今日事今日畢」,抓住平時零碎的時間,遇到問題隨時記錄在書上相關的位置,隨時查詢求解。
返回目錄
8、問卷調查
你平均每週投入到本課程學習時間有多少?
- 單週大概20多小時,雙週較爲輕鬆,通常用來補充上一週沒有徹底掌握的知識,五、6小時便可。
每週的學習效率有提升嗎?
- 有提升,尤爲是在單週學習任務比較重的狀況下,逐漸學會了如何抓住知識的重點。
學習效果本身滿意嗎?
- 基本滿意,但也只侷限於針對這門課程現有的考覈而言。做爲一本IT行業招聘必然會參考的書籍(聽說),其重要性不言而喻,所以以我如今對這本書淺薄的理解程度,只能說掌握了一點皮毛,想真正掌握仍是遠遠不夠的。
課程結束後會繼續一週至少一篇博客嗎?
- 寫博客的過程也是整理思路的過程,若是是專業方面的知識,我仍是比較傾向於在博客中分享的。也算做往後的學習參考。
你以爲這門課老師應該繼續作哪一件事情?
- 使用藍墨雲輔助教學,這可讓教學的過程更加多元化。其中的不少功能也很是貼合這門課程學習的須要,值得保持下去。
你以爲這門課老師應該中止作哪一件事情?
你以爲這門課老師應該開始作什麼新的事情?
①課堂筆記除了讓他人回答本身的問題以外,建議要求本身對本身的問題進行回答,以加深對課堂內容的理解。畢竟別人仔細回答了,知識是別人的;如果本身提完問題就丟,其實並無徹底發揮這個問題的價值。
②後面的實驗難度比較大,尤爲是用到實驗箱的部分。所以,建議老師在實驗前先大體講解這次實驗的思路,讓同窗們在實驗時有的放矢。
③不定時抽取一些同窗當面檢查程序,問一些代碼中的問題,以考察理解程度。
返回目錄
9、寫在最後
首先,想對婁老師一直以來的悉心指導與嚴格要求道一聲感謝:謝謝您對教育事業的奉獻精神,多少個週末節假日仍留在學校工做,爲同窗們講課;謝謝您一年以來不厭其煩的指導,帶咱們一步一步走上正確的學習道路;謝謝您在專業經驗、學習方法、甚至是生活態度等各個方面的分享,無論是爲師仍是爲人,您都爲咱們樹立了榜樣。
轉眼博客園的園齡已經一年多了,回想第一篇博客《路行至遠,砥礪前行————淺談對師生關係的見解以及對將來學習生活的展望》仍記憶猶新。值得欣喜的是,在一年來的學習過程當中,個人收穫早已超過預期;這段師生關係帶給個人,也毫不僅僅是兩本書中的知識而已。我很榮幸能遇到婁老師,能接觸到這樣一種學習模式,拓寬了視野,增加了知識。從一開始對一週一篇博客這種新模式的抵觸,到逐漸接受適應並習慣;從有時課堂實踐發揮不佳心情低落,到實踐前更深刻的學習,更充分的準備,我想很難有哪一門課要求本身從外到內作出如此大的改變,須要克服懶惰,須要調整心態,甚至須要在不斷的摸索中找到屬於本身的學習方法。蛻變成功就能倍感輕鬆,拒絕改變只能持續痛苦。
直到我進入16級博客園班級,才意識到一年的時間就要過去了。這雖然是結束,同時也是新的開始。老師已經爲咱們指明瞭一條專業學習的道路,能走多遠就取決於本身了。接下來我會帶着對專業的熱情繼續拓展本身的視野,時常以更高的標準審視本身,嚴格要求,不斷前進;同時會盡力協助婁老師作一些力所能及的事,以求能有更多的同窗從這種學習模式中受益。
最後,想起婁老師曾分享過一篇資深技術專家陳皓對IT從業者的建議,其中幾點我深有感觸,與你們共勉:
- 客觀地審視本身。找到本身的長處,不斷地在本身的長外上發展自我。知道本身幾斤幾兩才能清楚本身適合幹什麼。否則,目標設置得太高本身達不到,反而讓本身難受。在職場上,審視本身的最佳方式,就是隔三差五就出去面試一把,看看本身在市場上可以到什麼樣的級別。若是你超過了身邊的大多數人,你不妨選擇得激進一些冒險一些,不然,仍是循序漸進地來吧。
- 肯定本身想要什麼。若是不肯定這個事,你就會糾結,不知道本身要什麼,也就不知道本身要去哪裏。注意,你不可能什麼都要,你須要極端地知道本身要什麼。所謂「極端」,就是本身不會受到其它東西或其它人的影響,不會由於這條路上有人退出你會產生懷疑,也不會由於別的路上有人成功了,你會羨慕。
- 注重長期的可能性,而不是短時間的功利。20-30 歲應該多去經歷一些有挑戰的事,多去選擇能給本身帶來更多可能性的事。多去選擇能讓本身成長的事,尤爲是能讓本身開闊眼界的事情。人最懼怕的不是本身什麼都不會,而是本身不知道本身不會。
- 儘可能關注本身會獲得的東西,而不是本身會失去的東西。由於不管你怎麼選,你都會有得有失的。(絕大多數人都會考慮本身會失去的,而不是考慮本身會獲得的。)
- 不少事情能作到什麼程度,其實在思想的源頭就被決定了,由於它會絕大程度地受到思考問題的出發點、思惟方式、格局觀、價值觀等因素影響。這些纔是最本源的東西,甚至能夠定義成思惟的「基因」。就程序員而言,編碼能力很重要,可是技術視野、技術洞察力,以及如何用技術解決問題的能力更爲重要。
返回目錄
附:二維碼
返回目錄