Georgia Tech Computer Science 修課體驗 (心得篇1)
歡迎追蹤柯基業報報,加入獲得美國生活、科技業、省錢小撇步的最新消息唷!
2024全新更新: 加入Telegram群組索取獨家加密貨幣統計工具和我們一起討論財經吧
本文將延續前一篇總結,介紹我在Georgia Tech Computer Science 的前兩學期的一些選課,修課心得,希望對您有幫助的話可以幫忙拍手以及推廣。下一篇的連結在此。
課程心得
CS 6250 Computer Network
難度:中間偏易
涼甜度:甜、小涼
Instructor: Mostafa Ammar
這堂課內容不難,主要教一些比較深入的網路知識,如果之前有修過電腦網路導論之類的課程會覺得很簡單,如果沒有修過還是可以修因為老師教的節奏不快。
內容涵蓋有Inter domain routing, Congestion Control, MPTCP, Video Streaming。唯一比較困擾我的地方是老師只會寫板書並且比較藝術一點,但老師都有放回放在網路上因此有好不少。
有幾次小考,內容都不難,只需要熟悉上課老師的筆記和平常的作業就可以
有3個project,據說每年的內容都有變化。主要要熟悉mininet的一些config。其中一次比較難的是要模擬Prefix Hijack Attacks,結合上課BGP Inter domain routing的知識,但總體來說難度都還可以接受。
這門課非常搶手,建議要選的話必須把它放置在Survey的第一個才有比較大的機率選上。
CSE 6242 Data and Visual Analytics
難度:普通
涼甜度:普通甜、不涼
Instructor: Polo Chau, Mahdi
這門課有兩個lecturer,我個人認為Mahdi教的我比較聽得懂。這是一門非常雜的課,基本上任何和Data Science相關的東西都會涵蓋,也正是因為涵蓋的東西太廣,基本上內容都不深。
功課的部分就是這門課的重頭戲,雖然只有4份但每份真的超級多,包含SQL、Javascript d3、AWS、GCP、pyspark、Hadoop/Azure、Databricks、PageRank、Random Forest、Sklearn等等。可以看到這些功課把前後端都包了,其中前端package d3尤其對新手來說有些困難,這邊有作業的demo影片。我算是除了分散式系統的東西都碰過一些,但每次還是花超過15小時在一個作業,個人心得是如果是非常不熟悉python的人想必相當痛苦,建議有一定得程式基礎再來修。
除了功課,還有一個學期初就開始的Project,要繳交期初、期中和期末報告,規範也是落落長且必須要涵蓋大數據和UI。我自願在piazza上加入5個美國人的隊伍做了一個Blockchain的Information Board,算是這個課程我感到比較有趣的部分,將課堂上學到的d3,實際應用bootstrap和大量blockchain 的database做了一個簡單的網站。然而每周一次的開會和進度報告也是有些loading。
這門課的評價真的非常兩極,我認為它對於想入門Data Science或履歷缺關鍵字的人來說非常的適合,可以一次補充好多大公司搶手的關鍵字,但是實際上教的東西卻又太淺,然後loading不輕,需要謹慎思考再選。
CS 6301 Advanced Software Engineering
難度:中間偏易
涼甜度:甜甜甜、偏涼
Instructor: Alessandro (Alex) Orso
這門課非常的難搶,因為名額很少又真的又涼又甜,又還算實用…主要就是在教任何軟體工程可能會碰到的東西,如github、Restful API、testing、CICD、android testing、debuging、還有一些軟體的架構等等。
老師學期初就把整個班分成幾大組,然後每個組都有 backend, frontend, mobile, DevOps,各組之間要學習不同區塊的整合與開發。主題是Pomodoro Timer,整個學期就是圍繞在完成各自的部分最後整合成一個程式來進行,每周都有要完成的milestone,都不會到太困難。我選到的是mobile,然後整學期其實很少和其他組別做溝通,結果就造成最後要整合時為了配合backend我們的code幾乎要全部打掉重練,也算是學到一個很重要的教訓。
整體下來我覺得還蠻實用的,但是有時候總覺得老師說話挺催眠的,最後CICD的部分又挺複雜的沒聽很懂,收穫最大的可能就是專題和組員吧!
CS 4400 Introduction to Database Systems
難度:容易
涼甜度:甜、適中涼
Instructor: Mark Moss
這門課是大學部的課程,不含database implementation,A、B兩班加起來有5–600人,雖然人數超多,但這老師教的是真的好,如果去看Rate my professor會有大量的好評。
期中前真的是非常的基礎,老師會手把手教你怎麼寫出一個query,然後到怎麼有規劃的設計data scheme,怎麼有條理的建立Entity以及Entity之間的各種複雜關係,最後期末可以寫出nested query。
總共有6次小考,每次小考都有練習題可以練習,實際考試和練習題十分相近,只要多加練習就可以輕鬆拿分。小考的內容我認為也是非常有意義,當考過之後就知道某些關係細節的地方該怎麼思考。
然後還有一個專題,老師會給一個情境(我們是類似airbnb的架構,有顧客、有房產、有雇主、有房屋資訊等等),Phase1要你設計出這個情境的Enhanced Entity Relationship Diagram,Phase2要你用MySQL implement 出來,Phase3要你寫出Stored Procedures。最後Optional 的Phase4 是搞出這個database的web前端。Project的故事蠻龐大的,因此需要花一點時間討論並實作。
最後有個期末考,同學可以自行選擇要做Project Phase4或者考期末考,期末考就是一次考全部,我們評估Phase4要花的時間太多了,最後考了期末考,也不難(複習所有小考就足以)。
整體而言,我認為這門課非常適合完全沒有學過database的人得來修,有學過的想來簡單拿學分畢業也不錯。若是沒有和美國人組隊經驗的人,我非常建議趁這堂課和美國人組隊,一來這堂課不難,遇到雷的還能自己完成,二來,討論Enhanced Entity Relationship Diagram的時候能訓練用英文有邏輯的表達較為複雜的關係。三來,台灣人能和美國人組隊的機會大概也就是這個Master了,和他們組隊也能提早知道他們和亞洲人的不同。
CS 8803BC Blockchain and Cryptocurrencies
難度:難
涼甜度:不甜、不涼
Instructor: Vladimir Kolesnikov
課程主要圍繞著比特幣的原理來做講解,會從最基本的hash、signature ,到Merkle Proof、共識機制、區塊鏈原理、比特幣交易機制、冷熱錢包,再到MPC、Zero Knowledge Prove。
這門課非常注重securtiy的嚴謹證明!偏偏老師不太會教,也不太會聽取學生的建議,所以其實還蠻痛苦的。適合對區塊鏈非常有興趣的人且不排斥看一大堆證明的人來修。我個人如果沒有多看幾次回放是沒辦法理解的。
作業蠻困難的,與上課的內容有些出入。通常都是假設一種情境,問你這個算法是不是安全的或者要怎麼攻擊及漏洞在哪,或是怎麼樣可以獲取最大利益。例如你是miner 有兩個鏈可以mint,要怎麼分配電腦資源來挖礦之類的。
有N個考得非常細的多選題小考,需要真的完全融會貫通才能答對。例如問你one way function 是不是存在等等問題。然後還有期中考,考得難度稍微比功課容易一點而已,也是需要對課程內容有非常詳細的理解才能獲取高分。
這門課最有趣的莫過於project了,一開始會學怎麼寫簡單的solidity,後面的project 助教會實際開一個鏈 Buzz 讓我們在智能合約上做操作,還發生了非常有趣的盜取私鑰事件
除此之外還有期末presentation和paper report等等。各組會挑一個相關的主題,從defi、AMM、NFT、Bitcoin privacy、layer 2 公鏈等等都有人提到。
沒錯,這個8803甚麼都有,老師也不是很會教,我對區塊鏈是相當有熱情的,花在這科的時間比重也不少,最後才勉強在邊緣拿了A。要修的人要慎思,但是不可否認的,涵蓋的內容比我想像的還要多且廣,學完也會對blockchain的未來更有自己的想法。
CS 7641 Machine Learning
難度:普通,作業很多
涼甜度:甜、不涼
Instructor: Mahdi Roozbahani
ML可以參考課程網站。這個老師和CSE6242的老師是一樣的,所以調性也很像,大概就是作業超大份,寫完就高分,有一整學期的project。我認為Mahdi教的還算清楚,人也非常nice,不過困難的地方比較多會簡單帶過,如果有疑問再去討論區討論。
ML作為多個specializations的核心科目,主要帶過了多數基礎的數學、分類、分群、降維算法。ML 算是非常數學的課程,作業多數是要求你把數學寫成程式,並教你解釋為何結果會是這樣。每年作業也會有小幅變動,我們這屆是
- A Lot of Math: Linear Algebra, Optimization, Maximum Likelihood, Information Theory
- Kmeans, DBScan, EM Algorithm, GMM
- Image Compression, PCA, Regression, Naive Bayes Classification, Feature Reduction
- NN, CNN, Random Forest, SVM
每周都有簡單的5題小考,小考主要測驗概念上的東西(數學幾乎沒有),大抵上每周有跟上進度就可以輕鬆拿分。Project 的部分需要繳交期初、期中、期末報告,大多數組別會找個題目套一些上課教的演算法分析結果,寫成report就可以。
大體而言還是學到蠻多東西的,作業因為都有autograder可以線下打分,所以分數都蠻可控的,算是一門好課
CS 6515 Intro to Graduate Algorithm
難度:普通偏難
涼甜度:普通甜、不涼
Instructor: Gerandy Brito
這門課也是多個specialization的必修科目之一,Brito 是個來自古巴的數學系帥老師,上課風格偏有趣,但是語速較快而且有些口音。因為名為Graduate Algorithm,所以有些基本的演算法如bfs, dfs, dijkstra 老師就會當已知。老師上課習慣寫自己的板書,有時候思緒會有些跳躍,我自己有時候不太能跟上。
前半學期教了SCC, Network flow, max flow min cut, Linear Programming, DP on trees等等,算是蠻實用且易理解的主題。後半學期主要都在教randomize的演算法(演算法只有機率性是正確的,但我們可以知道正確的機率,只要執行夠多次就可以確保有一定的信心能得到最佳解),從這邊我就聽得霧颯颯,後面還有3SAT, TSP等等NP-hard問題。由於Brito 是數學系出身的,notation也是很多,我個人認為沒有這麼直觀。
手寫作業蠻多的有7次,但好像都憑老師心情決定要出多少,會提供latex的template,每個作業的最後一題都是偏難的應用題,建議組隊來應對(老師允許討論但不能照抄),自己修應該蠻痛苦的。
最後還有期中期末考,考前老師會出多選練習題,實際考試也差不多題型,其中多了DP的手寫應用題,總之老師會在考前公布題型。我認為作業跟考試關聯性不大,重要的還是觀念上的東西,需要花點時間練習一下。
我認為前半學期收穫比較大,有些思路面試還能用上,後半學期就是懵懵懂懂地度過,一起修課的同學後面多半覺得講的不太清楚,內容又難。
CSE 6240 Web search and Text Mining
難度:普通偏難
涼甜度:甜、不涼
Instructor: Srijan Kumar
大推,非常好的老師,聽說曾經得過年度教學獎,上課的講義準備得非常完整且清楚,lecture能把很難的東西講得很易懂。整學期會把Network Graph的特徵以及算法跟模型講解清楚,還有包含google 搜尋引擎在使用的Page Rank。後半學期會帶到recommendation system,還有目前各種的機器學習演算法(GCN, Collaborative Filtering, …)。老師最後還邀請了幾個業界的research scientist來演講,整個學期學到的東西還不少。
前半學期的loading 比較重,有5次程式作業,會大量使用networkx這個package,程式作業難度都不高,但需要對上課內容有一定的了解,後半的作業會build 一些Machine Learning 的Model,基本上上課有跟上都能寫出來。
後半學期都圍繞在小組project上,老師的要求較為嚴謹,一定要用ACM的latex模板下去寫,我們這組做了一個stock的分類演算法,最後大家都要分別做presentation,整體還是挺有趣的。
因為老師上課非常有條理,回答問題時不管難易也都回答的很詳細,所以上課時學生還蠻踴躍發問的,我認為整體上課氛圍挺好的,如果對於Network Graph有想深入了解,千萬不能錯過這堂課。
CETL 8797 Oral Communications for International Graduate Students
Instructor: Ruth Schowalter
這門課是專門開給國際學生的口說課程,本堂課是需要站起來高度互動的課程。Ruth是非常有經驗的口說老師,他會在每堂課開始前進行一些小伸展跟小遊戲以放鬆各位的心情。她說歷年來主要課堂上都以台灣人、中國人、韓國人、印度人為主,課堂上她也會盡量配對來自不同文化的人來交流(但基本上課堂上都會對話到)。
老師在學期初會個別和所有同學進行口說測驗,然後告訴我們可以改變的方向。其中有子母音發音、有沒有正確表達-ed, -s、syllable stress、sentence stress、intonation、pausing、focus words 等等。而這些也正是課堂中主要老師會教學的一些方向。
接下來的課程,老師會一直強調講英文是有音樂性的,該在哪邊加重、該在哪邊停頓、該在哪邊大聲小聲都需要培養感覺。除此之外,老師也很強調 improvisation,常常會丟出問題要你馬上回答,培養大家天馬行空,敢說英文的語感,還有美國的culture的日常應對,最後有幾堂課教學如何巧妙利用手勢來更有說服力的表達自己。
這門課除了課堂互動,只有非常非常少量的功課(例如準備自我介紹、3分鐘投影片等等),整體來說是個非常輕鬆有趣的課程,也是少數我會很想去上課的課,因為是小班制且同學間都要非常頻繁的表達自己的想法,因此最後其實認識蠻多來自不同國家的朋友的。雖然學期最後,我不認為我的口說有很顯著的進步(因為課後缺乏練習),也是我認為較可惜的部分(我認為應該有適量功課XD),但至少我已經知道將來要怎麼樣進步了:)
如果想要得到最即時的更新與互動,歡迎追蹤我的IG Corgitechus、Facebook 、Medium或者支持我。
2024全新更新: 加入Telegram群組索取獨家加密貨幣統計工具和我們一起討論財經吧
您的支持是我繼續產出的最大動力!!