close

記得發表我在CMU第一學期上課的心得之後已經過了一年了,現在才有空補上半年前的第二學期的心得。沒錯CMU的生活就是這麼忙碌,比起很空泛的說CMU很累,還是趕快來看一下我第二學期上了哪些課好了。

18740 - Modern Computer Architecture

按照慣例,三堂課的排序是從最雷的開始的。這堂課真的雷到我很傻眼,遠遠超越上學期的18847G(現18647)。為此我還特地在FCE(教學意見調查)寫了滿滿一段去噴他,原文會附在本文的最後。看完這堂課在選課系統上面的描述,會很自然地以為這堂課是要教我們用Verilog設計Modern Computer Architecture,結果六個作業中只有其中一個用到Verilog,對此老師在最後一堂課解釋他們怕作業叫我們寫Verilog會把人嚇跑所以他們更換了作業的模式。

六個作業有三個是要我們執行一支紅米手機跑Benchmark然後紀錄畫Excel,整個對人生沒什麼幫助的作業。至於為什麼會出現紅米手機呢?因為這堂課有得到美國聯發科和蘋果的贊助,聯發科借用每人一支紅米手機,蘋果則是贊助期末成績表現前三高的同學Airpods。

想必大家看過那種醬油廠商贊助唱歌比賽的綜藝節目,可以想像整個節目會因此變調。這堂課也是,常常會安排那兩家贊助商公司的員工來到課堂給大家上課,但因為都是講自家技術,會變成很虛無飄渺的科普演講,對於想要提升自身專業能力的學生來說幫助其實非常有限,更別說贊助商也沒有提供正職招募的幫助了。期中考之後有將近八成的課堂時間是給贊助商公司員工"宣傳",占比幅度已經遠遠超越醬油商贊助的唱歌節目了。

課程內容也很扯,到了期末不知道是不是因為沒東西上了,居然開始上Computer Network、Deep Learning加速跟Cloud Computing,而且都是很快速的帶過。這個設定真的很怪,沒有學過的同學不可能透過這種快速帶過的方式了解這些領域;對有學過的同學來說也是在浪費他們的時間。更別提這些東西跟Computer Architecture領域的關係真的很遠而且系上都有針對這些領域另外開課。

以上所有的缺點在這堂課的考試中被無限放大,期中考的時候是考3小時,40題非選擇題;期末考前老師說他們發現大家上次好像寫不完,這次會調整,結果考出來是4小時,50題非選擇題。考試內容更包含了前述Deep Learning加速、Computer Network、Cloud Computing(而且是考Map Reduce的操作),甚至還有贊助商紅米手機的設計細節問題。真的不了解這樣的考試結果要如何反映學生在Computer Architecture領域的學習成果。

更無奈的是,僅管填寫FCE反映以上問題,21Fall開課課表顯示這堂課依然會正常開設。總之希望對於Computer Architecture有興趣的讀者不要上當。

18642 - Embedded System Software Engineering

雖然課名有Embedded System,但是整個課程架構基本上是圍繞著Software Engineer的領域。不過我絕對不會因為這樣就不推這堂課,相反的我會說這堂課真的很不錯。評分是採Check list制,也就是說所有作業跟出席都符合要求的話就會A了。如果要用一句話概括這堂課,我會說他就是ECE的通識課。

Coding作業大概都一天以內就可以完成,不過會讓大家練習peer review,簡單的說就是交作業之後要跟其他同學分組互相給建議。讓大家提前習慣產業活動。

課程內容都已經提前錄影,每個禮拜按照進度看完寫一些習題,課堂上會針對大家有問題的地方講解。

還有一些作業真的很像大學的通識課,比方說找一個safety事件進行分析。這種作業每一兩個禮拜會出現一次,數個小時就可以完成。

因為遠距教學取消了考試,改成交一份整理課堂重點的報告,讓這堂課輕鬆了更多(這堂課如果要考試應該會有點可怕,因為就像大學通識課一樣細節很多)

總結來說我會覺得這堂課就是負擔不重又有收穫的一堂好課(很多Guest Session的來賓都是以前這堂課的學生,他們也都表示這堂課所學在產業都有很大程度的應用),在開課黑洞ECE來說應該是前幾名的了。

缺點是上課要開鏡頭,而且是晚餐時間,吃飯很不方便

17214/17514 - Principle of Software System Construction (推薦程度五顆星)

如果有什麼東西是只有在這裡才學的到的,那應該就是這堂課了。至少在我在台灣念的大學好像沒有看到教Design Pattern的課。這堂課主要是用Java讓大家學習Design Pattern跟培養Software Engineering的好習慣。感覺上是假設大家要學過基本Java語法再來上,但是我完全沒寫過Java也來了,最可怕的是到期末我對Java的熟悉程度已經超越我用了好幾年的C++,Lambda Function, 繼承、多形的觀念都是到這堂課才完整的了解並且實作,光是三個多月可以讓人完整學會一個語言這點就已經很值回票價了。

最經典的應該是從零開始製作一個GUI遊戲的作業,課程方只提供之中會用到的圖片跟一些偏門的helper function(如Json parsing)。整整一個月的時間都在寫這個作業,從使用UML工具規劃設計、遊戲系統的邏輯到最後把遊戲系統接上GUI。將整個Software Engineering的流程與Observer Pattern的應用發揮到淋漓盡致。

還有一點是Github,很多課會讓人以為會用git add, commit, push就是會用Github了,但是這堂課甚至有安排完整的主題是讓大家知道如何用Github和其他人合作,也有安排對應的分組作業讓大家練習。經歷過這些之後我終於敢在履歷上跟別人說我會用Github了。

雖然這堂課的內容可以讓人學到很多,但是也會有相應的缺點。首先最直觀的是loading真的很重,這堂課是我在CMU 9堂課中唯一有用到late day的,而且用到剩下1天。再來就是評分標準,因為是教design的課,所以作業不能只是output對或是功能對,設計的優劣是會被評分的。考試的時候甚至可能要猜對他們在考的design pattern是什麼,不然用錯pattern分數可能會非常低(例如答案對可能只得到20%的分數)。

不過這些缺點對我來說是瑕不掩瑜啦,想要把code寫好真的要考慮上一下這堂課。但同時也要考慮一下loading,因為這堂課不是抽一點時間學就會學好的,一定要給他專門的時間才可以。

 

以上是我在CMU ECE第二學期上的三門課,希望對在煩惱選課的人有幫助。感謝大家的收看~

 

文末附件:我對18740的FCE原文 (當然是英文的,不是個人想炫...)

I will not say covering something beyond the scope of MCA like Cloud Computing, Deep Learning, Computer Network in class is bad. However, covering these materials in the exam is definitely a bad idea. I understand that an architect should know some detailed algorithm to design accelerators. But I cannot understand why testing the knowledge which is not directly related to computer architecture like map-reduce in the exam is necessary. I strongly suggest that you should expect the students interested in learning DL, CC, Computer Network to take those courses instead of taking computer architecture and having a little taste to those disciplines.
The bad smell of this course started from accepting the sponsor from MTK and Apple, especially MTK. After the first midterm exam, guest sessions occupied more than half of the courses and some of them are merely for the guest to promote what they are doing and the corporation reputation. It was really exciting that we can use a real phone to work on the assignments. However, most of the assignments are only about profiling and understanding what MTK did and how to use their tools. Not to mention that their detailed design became some of the problems in the final exam. It sounds like we must learn something about MTK because we are taking the course accepting their sponsor.
The mismatch of the course objective during the registration and what we really acquired is probably the only thing that is more disappointing than our daily life messed by COVID-19. I remembered that when I registered the course, the course objective says that we can learn to design some modern architectures with verilog, but in fact, there is only one assignment related to verilog. In the last class, professors said students might not be comfortable writing verilog while taking the MCA course. It does not make sense to me because it is mentioned in the course objective that students should expect to write verilog to work on the assignments. Professor Shen mentioned that each course costs about 200 dollars in the first class. Then I would like to ask, does such high tuition really pay for the courses mismatch with the course objective?
I sincerely hope that ECE department and the course staffs can look back and check what was going wrong in this course instead of changing the course name and course number but keeping the same contents in the future semesters. Please elevate the course quality to match the high standard of Carnegie Mellon.

arrow
arrow

    N.Hu 發表在 痞客邦 留言(0) 人氣()