英國布里斯托大學CS Conversion碩士課程介紹

Apr. 27, 2023

如果你對布里斯托大學(University of Bristol)的CS課程有興趣,可以看看。

本文是申請英國大學CS Conversion課程的系列文之二,第一篇是英國CS Conversion(轉專業)碩士申請。布里斯托大學是我最後決定就讀的學校,這裡會詳細介紹我在2020~2021所參與的課程心得與課程評價。英國碩士班的學制分為三學期,如果你打開課程規畫網站,會發現Teching Block 1、2,表示該課程是在第一學期和第二學期開設。

請特別注意:我所提供的課程資訊可能已過時,個人是分享2020/2021的資訊。

2020/2021與最新課程的差異

我比較了最新年度的課程資訊,發現原本的Software Engineering and Group Project變成Overview of Software Engineering、多了Summer Team Project。應該是原本必修的團隊專案被獨立出來,作為60學分的大專案,可以讓學生在個人專案(MSc Project Computer Science)和團隊專案做選擇。

Introduction to Computer Science

這門課主要是讓我們更了解電腦科學的一些領域,也是給大家了解60學分的大專案可以怎麼做。我們那時候是分組進行,每一組由一個老師來帶領,他會給幾篇歷屆學長姊的論文,請大家每個人選一篇來寫摘要、並且報告給整組的同學聽。畢竟是只有10學分的課,並不困難,我覺得確實藉由閱讀論文和聽同學報告有更認識這門學科,而且這份報告也可視為之後要寫論文的暖身,試試自己的英文寫作(還有報告會用到口說)在老師眼中有沒有太大的問題。

Programming in C

整個課程中唯一一門30學分的課,算是很硬。課程可以分成兩部分,前半部介紹C語言的基本語法,其中pointer的概念是比較困難的,尤其是第一次接觸的學生,會不太容易理解;後半部分,著重在介紹資料結構,我們會實際用C語言去做各種資料結構,例如:linked list、hash table、graph等等,也會有一些演算法,但比例比較少。這門課以作業的成績為主,也會有很多作業,雖然每個禮拜都在為寫作業苦惱,但我覺得很紮實。老師教學的方式和課程安排,我覺得是所有課程中最好的。我現在工作,有時候還會把上課的講義拿出來讀,很紮實又實用的一門課。我會建議確定入學的學生可以先去上哈佛大學開的CS50課程,他們也是教C語言,可以幫助你熟悉C語言。我也有保留當時老師上課的所有錄影,如有需要的同學,可以寫信向我詢問。

Overview of Computer Architecture

我發現這門課的老師和我這屆已經不同了,但課程大綱差不多。這門課比較困難的是後面在上assembly language的部分。我們那時候有學怎麼寫簡單的assembly language,考試也有考。比較可惜的是,這門課和C語言一起開在第一學期,原本立意應該是可以透過C語言去了解系統,兩者相輔相成,但老師並沒有給我們這樣的訓練。我自己參考了大學部的Imperative and Functional Programming,前半部的C語言部份比較有提到和系統間的關係。我也有大學部這門課程的資料,需要的同學一樣可以寫信向我詢問。

Object-Oriented Programming with Java

作為第二學期最主要的程式課,我給它偏差的評價。這門課在我們這屆幾乎是自學的方式進行,老師給的課程錄影很顯然是從大學部的課堂上擷取出來的,所以連貫性很差。課程進行的方式,像是利用每周的作業讓大家去自學,雖有每周和老師討論的時間可以提問,但在沒有足夠基礎下,也很難問出問題。看授課老師到現在還是同一位,只希望他有吸取我們的教學回饋並有所改善。我那時候自己花很多時間讀Java的書,根本沒什麼在看老師提供的錄影,就當成是自學完利用每周作業去練習。大學部的Java課Object-Oriented Programming and Algorithms I看起來就很有規劃,到MSc就被魔改。我也有大學部這門課的資料,有需要的同學自行與我詢問。

Overview of Software Tools

這門課前半部份主要介紹一些工具,例如:Git、Shell Scripting、不同語言的Build Tools,還有SQL語法,我覺得算蠻實用的;後半部介紹網路開發的御三家:HTML、CSS、JavaScript,這部分個人覺得實用性比較低,算是師父領進門,畢竟像JavaScript本身就能當作一門課來學,這一點點的介紹只是讓大家有個基本概念。因為我們第二學期有另一門團隊共同開發的課,是以開發網路應用程式為主,所以這些基本的網路開發工具能提供基礎,但實際上要完成小組開發專案,還是要靠個人深入去了解相關技術。對於課程有興趣的同學也可以先上課程網站瀏覽內容。

MSc Project Computer Science

最後要介紹的課程是個人的專題(案),也就是在第三個學期開始,個人要完成的論文。我記得大概在第二學期中半段開始,大家就要選擇論文的指導老師和決定你要做的題目,也可以自己想題目,看看有沒有老師對你的題目有興趣,主動指導你。簡單來說,過程是雙向開放的,你可以選擇有興趣的老師和題目,也可以提出自己的計畫、讓老師主動來媒合。雖然說一直是到第二學期才決定論文題目,但就我們這屆的經驗,很多熱門的題目或老師(特別是金融科技相關的題目)很早就有同學去預訂了,所以有想法的同學可以在第一學期或甚至入學之前,就認真的規畫自己的專案,盡早去找相關領域的老師,詢問指導的意願。這個論文大概會寫15000字左右,但字數不是重點,重點是能不能將自己的專案呈現好。原本應該是有口頭報告自己的專案,但我們那年因為疫情就沒有安排了,我自己覺得很可惜,無法了解大家的成果。

結語

布里斯托大學的CS課程很紮實也蠻硬的,有許多的作業和考試、也會有一些要分組和別人討論、實作的課程。尤其是第一學期大家普遍都念的蠻辛苦的,所以我會建議有餘力的同學可以在課程開始之前先找C語言的資源自修。我另外會給將來的學弟妹三個建議:

  1. 課程的進度是最重要的,盡力從每一次的作業和考試中多學到一些知識。找到好的讀書夥伴也可以幫助你降低念書的痛苦,彼此也能討論。
  2. 無論最後你決定要做什麼樣的專案,很顯然課程無法給你完整的技能或訓練,所以你要盡早開始學習課程以外你所需的技能,例如:前後端開發技能、App開發技能、遊戲開發技能、機器學習或AI相關技能等等。
  3. 如果你很明確一畢業就要找工程師的工作,那不可避免的就是要刷題,我建議可以從第二學期開始,一來是第一學期應該難有餘力去做這件事、二來是C語言那門課如我前面所述,會教大家資料結構和一些演算法,可以有這些觀念之後再去刷題,比較知道自己在解什麼。

上述三點的優先順序應該是由上而下,先顧好課程內容,評估自己的能力和時間,再向外學習。當然大家都來英國一趟了,整天關起門來念書也有些浪費了,出門走走、旅遊也很重要。如果大家關於課程內容還有什麼問題,歡迎寫信給我。

comments powered by Disqus