PTT推薦

[心得] Utah MSD一年就讀心得

看板studyabroad標題[心得] Utah MSD一年就讀心得作者
haohaohao945
(haohao)
時間推噓38 推:38 噓:0 →:1

大家好,之前分享過夫妻同時轉領域申請學校的經驗,來更新一下目前的感想。
不知不覺到美國也一年多了,更新一下就讀這個Program的心得,給還有考慮轉碼的申請人參考(雖然因為現在就業市場寒冬,應該想來的人越來越少),有問題的話歡迎站內信交流。另外如果有人知道有職缺的話也麻煩拉我一把(今年12月畢業)

背景
NTU土木工程學士+碩士
畢業後4年系統廠+1年外商PM
只有大一修過一堂必修的計算機程式,基本上入學前程式能力=0


學校介紹
University of Utah,位於猶他州鹽湖城,離機場、市區都算近,開車15分鐘,大眾運輸有公車、輕軌、火車,如果是猶他大學學生持學生證搭乘大眾運輸都是免費,所以班上不少學生是搭乘大眾運輸通勤上下學,不一定要買車。
學校海拔大概1300公尺,附近都是山,當地人很喜歡戶外活動像是爬山、攀岩。11-4月的時候會下雪,造就附近很多滑雪場,如果學生購買ikon pass會有大概6折的優惠,附近
有6個雪場都可以使用,適合喜歡滑雪的朋友。

Program介紹
全名Master of Software Development,是隸屬在CS department底下的一個新program,我是第六屆。由5個CS的教授負責主持,所有的課都會由這幾個教授輪流授課。相對MSCS,MSD是開給非CS background的學生,所以班上同學都是來自不同科系,不少人都有工作經驗,都是來轉領域的,我這屆一班45人,平均年齡27歲,由於班上很多是當地人工作之後想要轉換跑道,所以相較於其他學校的CS、SE碩士班,我們班上只有一半是國際學生,好處是有比較多講英文的機會。

Program規劃總共4學期,包含Summer要上課,所以總計16個月,學費部分總計大約57000美元。畢業要求10門課,因為班上同學幾乎都是0基礎,所以4學期的課都是一開始就安排好了,不需要選課,也因為課程設計是有順序的,所以只能Fall入學。整個16個月都會跟這40幾個人一起上課,為了讓教學上更順利,入學的時候每個人會發一台全新的筆電,我這屆發的是Macbook Pro 13' with M2 chip,只要順利畢業,電腦就可以帶走不用還給學校。

另外系上提供一個彈性是雖然表定是16個月,但是如果你畢業找不到工作或是想多修一些CS進階課程,最多可以讓你延長一學期(詳細操作方式需詢問系上Advisor)。

上課方式教授都會到現場上課,並且同步用Zoom直播,讓有些不方便到學校的同學可以遠端上課,下課後老師也都會把課程錄影上傳到學校課程網,如果上課沒聽清楚可以回家看影片複習。

課程介紹

第一學期有三門課,課表規劃比較特別,週一到週五早上都要上課,但不像傳統上課是三門課分散在不同天,而是1-5周每天都上第一門課,6-10週都上第二門課,11-15週上第三門課,讓學生有一定的基礎之後再進行下一堂課。

1. Introduction to Software Development:使用C++上課,從基礎的程式開始講解,每天都有作業,主要就是練習當天上課的內容,並且每份作業都需要跟教授或是TA進行code review,會看你的coding style,期末作業用C++寫一個小遊戲,例如貪食蛇、flip
bird。

2. Computer Programming:這堂課改用Java,開始加入OOP的概念,期中作業要用Java搭配JavaFX寫一個混音器程式,讓大家練習GUI跟OOP。後半學期會教基本的Web開發,包含Html, Css, JavaScript,期末作業是寫一個網頁聊天室程式,用JavaScript寫前端,發送Client的request,再用Java寫一個可以multithreads的Server處理request並回傳訊息到對應的聊天室頁面。

3. Data Structures and Algorithms:這堂課繼續用Java,會講解各種資料結構及演算法,以及Time complexity的概念,作業除了要求我們寫出code的部分外,還要對各種不同資料結構或是演算法計時來驗證。因為還是第一學期,考量到我們都還是菜雞,這堂課沒有講得很深入,可能還是需要自己另外找時間上一些額外的課程像是CS61B以及搭配刷題來更加熟悉各種資料結構及演算法。

第二學期,這學期還是每天早上上課,但是恢復成傳統3門課同時進行的模式,我覺得整個work load不算小,會開始有一些同學跟不上課程進度上課上得很掙扎,最後休學。

1. System 1(Computer Arch + Operating Systems):這堂課就介紹作業系統與CPU架構,涵蓋Assembly code, system call, process, scheduler, memory page, lock等觀念,會搭配一些作業來讓學生了解系統如何運作,像是自己寫一個Unix shell,讓我們練習fork、pipe、file descriptor的使用方法;也有用memap寫function來實現malloc、以及用mutex寫function來模擬openmap並比較performance。

2. System 2(Computer Networks + Security):這堂課大致分成三大部分,第一部分先講networks相關知識,從各個網路層級的運作方式開始,也會實做一些作業像是用Java寫一個DNS resolver、用最短路徑演算法模擬router routing的方式。第二部分會講一點密碼學跟network security,從常見的加密方式原理開始,帶到private key、public key、signature、certificate等如何在現實中應用,最後會有一個簡化版TLS protocol的作業。第三部分是computer security,介紹基本的攻擊方式,像是buffer overflow、code injection、DoS,以及在現實中要如何預防。這門課跟上一門課是我個人覺得收穫最多的兩堂課。

3. Software Engineering:主要介紹軟體開發的流程,從design pattern、
documentation到unit test等環節。這堂課的作業是一個為期一整個學期的project,隨著課程不斷更新,增加新的功能。內容是用C++開發一個簡易版的"語言",最終成為一個
command line tool,使用者依照著這個語言的規則輸入指令,它會輸出對應的計算結果。

第三學期Summer有兩門課,每週二三四早上上課,雖然比前兩學期少了一門課,但是因為Summer也比一般學期少了三週,所以沒有感覺節奏變輕鬆。
即使summer有課,系上還是同意學生實習,因為課程都會錄影,可以下班後自己補課。我自己暑假很幸運地找到一家在加州的實習,但因為每週要上40小時的班,下班時間跟週末幾乎都花在補課跟寫作業。個人覺得如果有實習的話,加上上課整體loading蠻大的,不過為了增加履歷大家還是咬個牙撐一下吧。

1. Database Systems and Applications: 這堂課會教SQL,作業用MySQL,會從畫Entity relation開始帶你了解database的架構、建立table、如何查詢。期末作業會加入C#,
使用scaffolding及LINQ,並帶入MVC概念,用C#與ASP.Net來控制MySQL寫一個簡易版的課程網系統(Canvas),有professor、student兩種user,可以登入系統後管理課程、作業及成績。

2. Data Analytics and Visualization: 講解一些統計觀念,用python中的numpy、
padas進行數據分析,並用plt來視覺化數據。接著老師會帶著學生操作pytram進行一些基本的training。最後期末作業是要自己想一個題目用D3.js做出視覺化的呈現。
這堂課由於同時還要上班,加上我覺得老師自己對於一些統計的原理也不是非常了解,上課的節奏有點奇怪,我自己覺得沒有學得很好。

最後一學期實際上只剩下一堂課有正式課程,Capstone project不用上課,只需要每週固定跟老師meeting討論進度。除此之外,我申請擔任下一屆的課程TA,協助新來的同學盡快跟上進度。這學期主要的生活就是寫作業、寫project、做TA、投履歷。

1. Application System Design:上課教學使用kotlin,作業是花整學期寫一個類似小畫家的app,隨著課程的演進,會不斷增加feature到你的app中。

2. Capstone Project:自己想一個專案,每個人都會被指派到一個教授review你的專案,需每周安排時間與教授meeting確認專案進度,整個作業的難度要求是每週至少需要花20小時的程度,然後要做一個學期,大概就是一個需要花300小時才能完成的專案。
除了做專案外,系上提供另外一個方案是Capstone internship,簡單來說是可以用實習來替代做專案,看起來很友善,但問題是根據我們學校CPT的規定,現在CPT不適用fully
remote的工作,至少需要hybrid,加上學校規定除了summer外,不能離開Utah實習,也就是說只能做in-state on-site/hybrid internship。Fall internship已經相對比較少了,加上Utah的職缺又少一些,所以國際學生最後一學期要找到capstone internship的難度不低。我自己是找不到,選擇寫project,順便當一學期TA賺點學費回血。後來發現即使是On Campus job,只要跟軟體開發相關,也可以拿來當作Capstone internship。

感想
除了上述課程外,教授會請已經成功找到工作的畢業校友或是鹽湖城周圍相關Tech
company的工程師來分享業界的現況。雖然資源不像NEU這種轉領域名校這麼多,但是可以感覺到教授很認真的想要幫你打好基礎,有任何困難也非常願意幫助你,常常在下課後留在教室給大家問作業的問題,Summer這學期甚至有一個教授每週三會額外花一小時帶大家看cracking the coding interview,討論面試與解題的技巧。

我覺得整體來說,因為沒有選涼課的空間,這個program對於轉領域的學生work load算比較大的,前兩學期可能會忙到沒有時間刷題,會是需要考量的因素之一,不過就我自己而言,我會偏好這種先打好基礎的課程規劃。

目前最後一學期除了當TA省學費、多練練英文,就是邊進行Capstone project邊慢慢找工作。謝謝大家看到這邊,如果大家覺得有我有可能可以勝任的工作機會,也麻煩拉小弟一把,我對工作地點沒有特別要求,公司可以sponsor就好,感謝。






--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 67.169.248.4 (美國)
PTT 網址

Victormark10/22 13:57大推,感謝分享!

j12331710/22 14:14

much011210/22 14:32

bencer328310/22 14:50學校海拔1300 太酷了!

unmolk10/22 15:17

aflexdreamer10/22 19:04

zzz2765847910/22 20:09

kings4510/22 20:29推推推

ppoy6548210/22 20:46推!

TaipeiAKuo10/22 22:30

LincolnBoy10/22 23:13推 感覺滿棒的

Siika10/22 23:21這種區域型學校還是得找當地公司吧

cocokan10/23 00:27

Vanced10/23 00:39

chipnndale10/23 00:51大推,感謝分享

hsu76100110/23 01:40課程內容不錯耶 蠻有安排的

philip0922710/23 04:32市場好的時候應該會是蠻好的轉碼program ,今年只能

philip0922710/23 04:32說真衰

dickenson10/23 04:34推推,謝謝分享!

jerrywei2410/23 05:29Utah其實蠻多金融公司在那裡有IT部門…樓主可以試一下

pornstar10/23 07:31有去現場看Malone跟Stockton 嗎?

airphonse10/23 08:30推推!

icecreamdog10/23 08:43推 台灣籃球 NCAA 小將黃以喆也在猶他大學 UU好學校

myth35610/23 10:43推推 超級詳細

missyapple10/23 10:52推用心分享

※ 編輯: haohaohao945 (67.169.248.4 美國), 10/23/2023 11:05:10

gagalala10/23 11:17課程規劃很讚欸 適合轉領域的人

hololover10/23 13:02

Car1eano10/23 13:50

imandylin210/23 15:24推推

nullife10/23 15:30推課程規劃

MIKEmike0710/23 16:24推用心分享

ejnfu10/23 23:45推分享

ctl10/24 02:22推分享, 祝你找工作順利!

ibon10/24 02:48推!助找工作順利,今年真的不好找

NTUEECSman10/24 15:26祝找工順利

chhtwhc10/25 01:28

shinningyu10/25 09:30

zinga10/25 11:55讚 推!!!

irvingnumber10/25 12:51牛尾聽了也想去