一整個學期在家中度過,跌跌撞撞上完了本學期的課程,涉及的五門計算機學院課程中,軟體構造是最花時間的,可能實驗、知識理解起來沒有編譯原理、計算方法困難,看起來應用也沒有大資料的課程那麼有針對性,但還是感覺本課分外有用,起碼是給我這個外行人全面地展示了軟體構造的樣貌。在這裡總結一下這門課程。
教了什麼
這門課顯然是一門新課,工大2016級才新開的,但是據說是以mit為模板,感覺是很有模有樣的。有興趣查了一下mit的課程,它的前身是6.005 mit class elements of software construction,它的目標根據課件來看有這幾個:(1) ability to design medium-scale programs
(2) understanding oop concepts & design decisions (3) proficiency with basic quality assurance techniques for functional correctness (4) fundamentals of concurrency and distributed systems (5) practical skills
而cmu課程的目的則有四個: (1) concepts of design for complex systems, (2) object oriented programming, (3) techniques for robustness, including testing and static and dynamic analysis for programs (4) concurrent software
總的來說這是一門工程性質的課,與數理一類的科目有很大的不同。雖然不是計算機學院的,但是我感覺這類的課程很有存在的必要,而且私以為實驗可以更有趣一點,以提高課程的趣味性,不過要求寫時刻表雖然也算蠻鍛鍊了。
學到了什麼
在之前研究工大有哪些課值得蹭的時候就看中了這門,尤其是因為有很多部落格資源在描述這門課(後來才發現是課程要求),為了改變自己程式設計半吊子的狀態就選了這門課。在課程建議裡面,這門課更是被定義為了和計算機系統、資料結構和演算法一樣的高度,上完這門課之後感覺對我的幫助確實很大。以下幾個方面感覺對我而言用處最大:
作為一門一學期的大課,給人的感覺和其他的計院課程不太相同,以往上的計算機系統、機器學習乃至資料結構演算法等等都會有智商告急的時候,但是這門課更要求的是對整個體系的理解和實踐的練習。講義裡提到了一句話:we who cut mere stones must always be envisioning cathedrals. 我們切割石頭的人心裡也必須要想著大教堂。我感覺哪怕這件事情很簡單,但是它搭建的是乙個殿堂,那也是有意義了。
最後答疑老師說課時未來要縮短還是非常驚訝的,畢竟是一門新課,而且是一門重課。可能課改也是很重要的一部分吧。在查這課背景時還看見了mit老師對於為什麼6.001的語言從scheme變成了python,是因為現在的程式設計師需要更加需要的是快速上手新專案的能力,所以6.001選擇了有機械人library的python。之前老師也說過學校需要保證大家能夠順利對接社會,所以課改可能也不可避免吧。
哈工大軟體構造lab3總結
軟構的課程已經結束一段落了,如今回顧起來,收穫頗豐。這篇部落格主要是回顧一下lab3自己出現的一些問題,總結一下教訓,幫接下來需要做實驗的同學們避避坑。第一點 不要拖延症,不要拖延症,不要拖延症。不要開始的時候覺得時間還很長,不抓緊。拖延症晚期的同學要注意!不要等最後一周的時候才開始寫 這樣會導致你...
哈工大軟體構造lab3
3.1 待開發的三個應用場景 首先請列出你要完成的具體應用場景 至少3個,1和2中選一,3必選,4和5中選一,鼓勵完成更多的應用場景 行星系統 原子系統 社交網路 分析你所選定的多個應用場景的異同,理解需求 它們在哪些方面有共性 哪些方面有差異。他們都具有軌道,中心物體,軌道物體等屬性,但是各自具體...
哈工大軟體構造實驗lab6
3.1 adt設計方案 設計了哪些adt 各自的作用 屬性 方法 給出每個adt的specification 可選 以類圖形式給出多個類之間的關係。梯子類 public class ladder public vectorgenerator int t,int k,int mv,int h 猴子產生...