學業篇
課程導覽
資訊工程,對很多人而言都是個聽起來很熟悉又其實很陌生的名詞。相信大家一想到資 訊系就不免聯想到跟電腦有關。的確, "Computer Science" 就是在探討關於電腦的 學問, "Information Engineering" 則是跟實踐這門學問有關。因此,系上的課程就分成了 硬體、軟體跟數學三大部份。硬體是電腦的身驅,軟體是電腦的靈魂,而數學則是建立這些 架構的主要理論。
近年來由於資訊科技領域的突飛猛進,為了因應環境的變化,提升學生的競爭力,系上 的課程經過幾次變革,朝著「必修少,選修多」的方向修改,讓學生可以在自己有興趣的領 域發展。不過不論環境再怎麼變遷,基礎仍然是很重要的。因為應用層面的技術可能時時刻 刻都在發展、演變,不久可能就失去它的功用。熟知基礎的理論可以讓我們很快的接受新的 技巧跟工具,使我們具有能夠"變" 的能力。所以系上的必修課教的都是最基本但也是最重 要的概念。
系上大學部的選修課程都是跟研究所一起選修的,也就是說大學部的學生可以接觸到跟 研究生一樣的課程。我想,這對於大學部的學生是一種挑戰也是一種機會。除此之外,選修 課程跟必修一個很大的不同是課程常常會有更動,也就是說常常會出現新的課程可以選,也 會有舊的課程就從此不開了。而且很多選修課常常會發現早一年選修或晚一年選修都有不同 的收穫跟心得,遇到的困難也都不一樣。有個完整的選修計畫我想對學習有蠻大的幫助的。 以下就對系上的課程做一些整理跟說明,也許對於新生而言,還不需要決定要選修什麼 課,但我想多了解系上開課的狀況對了解資訊系在做些什麼跟往後真的要選課的時候有很大 的幫助!
大一必修課程部份
- 微積分(Calculus)
微積分為一個基本又很powerful 的數學工具,為一個理工學院的學生必備的知識,以後 許多的課程如機率、數位電子學等,都必須要利用微積分這種基本的工具。 - 普通物理學(General Physics)
這門課教授基本的物理觀念,對資訊系的學生而言最有用的是可藉此學習基本的電磁學。 - 計算機程式設計(Introduction to Computer Programming)
這門課主要是介紹程式語言的基本概念、思考模式,以及一些程式實作──利用教導 C 這個程式語言。由於以後可能有相當份量的程式設計量,所以這是一個開始培養程式設 計能力很重要的課程。 - 計算機概論(Introduction to Computer)
有點像是進入電腦領域的大門,從電腦硬體的構造、各樣的應用軟體、網路表現,到程 式運作、資訊領域的走向等等,介紹裡面的名詞及原理。 - 物件導向程式設計(Object-Oriented Software Design)
這門課程在下學期,主要是教有別於上學期C 的另一種程式思考模式──物件導向。在 這門課裡會用 JAVA 來引導學生學習。 - 資訊系統原理(Information Systems)
這門課以教導 UML (Unified Modeling Language) 的方式來學習怎麼設計或實作資訊系 統。是對學習大型軟體開發很重要的一門課。
大二必修課程部份
- 數位電子學(Digital Electronics)
主要在學習基本電路的特性,各種電路元件如電阻、電容、電晶體等,基本邏輯運算概 念,和其與電晶體的關係。 - 線性代數(Linear Algebra)
在數學上也是一門重要的學科,最重要的是矩陣相關的運算。對資訊系來說也有相當多 的領域會運用,如數值的處理、虛擬實境等。 - 離散數學(Discrete Mathematics)
為許多學科的基礎數學知識,如演算法、線性代數、邏輯設計等等。包括了代數、組合 數學、圖論等。對電腦的很多領域關係都相當密切、重要。 - 計算機組織與組合語言 (Computer Organization and Assembly Languages)
組合語言可說是一種按照電腦行事方式設計的一種語言,與先前所學的程式語言不同, 這種語言是機器較能看得懂的語言。所以熟悉組合語言後,對於電腦這種機器裡面是如 何做事,會有更清楚的概念。 - 機率(Probability)
實用與理論並重的一門課,顧名思義,這門課就是在教機率。可用於大量資料的統計分 析,對於統計或是網路的領域都是相當重要的工具。 - 系統程式(System Programming)
這門課教的是在 UNIX 環境下寫 C 語言程式,著重在如何與作業系統的核心打交道, 也簡單介紹 UNIX 運作方式,讓我們更瞭解作業系統本身與寫出更有效率的程式。 - 資料結構與演算法(Data Structure and Algorithms)
一門可說是資訊系非常重要的課。簡單地說,這門課在教你如何在面對不同需求時、碰 到不同問題,設計出處理資料的方式、解決問題的方法。這門課會有很大的程式撰寫量, 大一的程式設計只是大略教一個語言的字彙與文法;這門課要教的是如何利用程式來解 決生活中各種問題,將程式語言當作一種工具、媒介。
大三必修課程部份
- 數位系統設計(Digital System Design)
利用數位電子學所學到的元件,以及離散數學裡代數的觀念,達到我們想要的功能,如 加法器等。 - 作業系統(Operating Systems)
作業系統可說是電腦的靈魂、連接機器與其它軟體的橋樑。所以要了解電腦整體的運作, 當然一定要了解作業系統的設計理念。 - 數位電路實驗(Digital Circuit Lab.)
等於是將大二的數位電子學做個實際的應用。運用以前所習知識,利用各種晶片及其他 電路裝置,根據邏輯與晶片特性來組合製造出一些成品,如加法器、平交道紅綠燈等。 - 編譯程式設計(Compiler Design)
一般我們所學的程式語言,是無法寫好之後直接拿給電腦看的,必須先透過一個翻譯, 把我們所寫的程式碼翻譯成電腦看得懂的格式(或是說機器碼),之後再把這個機器碼拿 給電腦看,電腦才會依照上面的指示來幫我們做事,而這個翻譯,就是我們所說的編譯 器。 這門課簡單來說,就是教我們如何去寫一個編譯器,課中主要教的,都是一些程式碼處 理的演算法和資料結構。 - 計算機網路(Computer Networks)
這門網路課,即是以 OSI 的七層網路通訊協定架構為基礎,加以解釋網路在各個層次上 所可能遇到的問題與解決方法,並加上未來可能發展的趨勢與日新月異的網路知識 - 自動機與形式語言(Formal Languages and Automata Theory)
這門課比較特殊,是用類似數學的角度,探討電腦的設計方式與運作原理。學了這門課, 可以對電腦運算的模式,演算法的定義等等很多重要的概念有相當的了解。 - 計算機結構(Computer Architecture)
到更高階,也就是電腦核心的製造原理,軟體與硬體的介面設計,硬體效率的提昇等等方面加以介紹。 - 計算機系統實驗(Computer System Lab.)
- 計算機網路實驗(Computer Network Lab.)
以上兩個課程是二選一的必修課,都著重在應用的實作上。是理論跟實作合併的一個學 習的好機會。
大四必修課程部份
- 資料庫系統(Data Systems)
資料庫,簡單來說就是將一堆跟「周遭環境」有關的資料放在一起,經由某些特殊的資 料管理方式,使需要這些資料的人,經由某種特殊的處理程序,就可以得到想要的相關 資訊,這課程主要在教導 database 的觀念、各種資料模型的詳細介紹, design 及實作的相關理論。 - 專題研究(Special Project)
根據三年的所學,在有興趣的領域,跟著系上的教授學習做研究的方法。
//=================================================================
一、如果我對電腦沒有基礎,適不適合讀資工系呢?
高中生的電腦課程一般是教基本的電腦應用,例如Excel、Powerpoint、網路等,與資訊工程系方面常用的工具如演算法、 C++等不大相同。系上60%以上的學生是經由大學聯考進入本系,大多數學生都沒有電腦基礎,進來系上後也都適應的很好。
系上較重視數學、物理等科目,而教科書內容及撰寫程式皆為英文,因此對學生的英文能力也有一定的要求; 原則上只要對電腦有興趣,資工系絕對是你最佳的選擇。
二、資訊工程系與資訊管理系有何差異?
就學院上的差異,資訊工程系屬電機資訊學院,資訊管理系屬管理學院。就課程上的差異,資訊管理系的課程一半與管理相關, 重視在資料庫中上層的運用,使資料庫系統運用到企業中,例如銀行;資訊工程系的課程非與管理有關,而是在學一些核心課程, 例如作業系統、編譯器等;重點在於設計或修改資料庫或作業系統後再賣給企業界, 幫助解決企業界財務分析或電腦設計上等類的問題。就學生出路的差異,資訊管理系的學生多在企業界的資管部門, 很少直接參與產品製造的公司。資訊工程系的學生多在廣達、華碩、威盛等產品製造公司或是作系統晶片, 繪圖晶片、及網路多媒體公司;5%-10%的學生會成立一個工作室或合開公司。
三、為什麼要選擇台大資工?
完整均衡的通識教育
我們認為大學部同學不應將自己的學習領域侷限在只跟本科系課程有所相關的部份,而應該積極地吸收有關不同學科的知識。 台大在各個學科都有最好的師資,而身為台大的一份子,台大資工系的同學可以從這10個學院, 共54個在各領域執牛耳的科系開授的課程中,獲得各種學科的相關知識及資源。除了資工系的電腦相關課程外, 同學們更可以在經濟、財金、心理、歷史、戲劇等領域中發展自己的其他興趣,成為一個全方面的人才。
進入台大資訊系,能感受自由的學習風氣。本系不僅有資訊學門之專門學科,同時也開授許多與電機相關的基礎課程。 資訊工程系與電機系的各項研究亦有密切的互動。進入台大電資學院的資訊工程系, 同學們將接受的是資訊電機領域整合的全方面訓練。利用在軟體上的專長與對電機領域的知識, 台大資訊系學生在未來帶領台灣進入知識經濟時代的IC設計產業中,亦將扮演舉足輕重的角色。
九、我的分數可上台大電機系或台大資訊工程系或是其他科系,要如何來選擇科系?
重要的是要瞭解自己的性向。基本上,電機系與資訊工程系的學生之間有密切的互動。譬如說, 電機系的學生會來資訊工程系讀研究所或任教;而資訊工程系的學生會到電機系讀研究所或任教。 某些課程如CAD(COMPUTER AIDED DESIGN)可能在資訊工程系或在電機系的計算機組都有開課。 多試著瞭解自己的性向,如果你對數理工程方面有興趣,選擇資訊工程系絕對錯不了。
十、讀資訊系將來的出路如何? 資訊科的研究在研究些什麼?
徐讚昇教授:出路?就是出路很好! 大概就是兩個方向,一個是做研究,一個是就業或創業。 不過你也可以兩個都做!當然不是說兩個平行在做,那會很辛苦, 是例如在業界也可以進行有關的研發工作,或者是工作一段時間存了一點錢之後,再回去念書或研究。 先工作再回去唸書是ok的,只要不要太老,我覺得只要小於40歲其實都不算太晚。 在業界工作常常要加班到深夜,這是滿普遍的現象,辛苦是辛苦,不過做自己喜歡而且覺得值得的工作,還是可以樂在其中的。 至於研究方面,就是要看出某項技術或理論不足的地方,然後再想辦法補救看怎樣才能更好, 例如程式語言從以前到現在歷經了許多代,許多種截然不同的語言被發展出來,不停的在翻陳出新, 而我也不認為它會很快的趨向穩定,這中間還有很多路要走。資訊科學就是一直有新的東西在出現, 一切都是很難在預先想像的,像以前web很慢,很難用,誰都沒想到現在的世界會變成這樣, 那現在無線網路的技術又慢慢風行了起來,之後還會有很多可以發展的空間。 這些不停出現的新的東西都是研究的好題材,是很寬廣而無限的。
劉邦鋒教授:念資訊系出來之後通常有兩條路可以走,一種是走入業界,另一種是投入學術研究的工作, 不過這兩者在大學四年其實還沒什麼差異,主要的分歧是在研究所以後才決定的。 如果要進入產業界,通常是在念 master 的時候才會決定要研究的技術走向,建立好準備踏入業界的基礎; 這時候要加強的是設計軟體的實務經驗、做大型 project 的能力還有要有與公司接觸的經驗, 了解公司內部開發軟體的運作方式。如果是要從事學術研究,通常會念完 Ph.D., 而也是在攻讀 master 的時候確立鑽研的學術方向,並且在這段時間與指導教授學習該領域的課題。 而在這六年的大學生涯中(現在大部份的學生都會繼續讀研究所,所以這裡指的六年包括研究所兩年), 不管是要走業界還是走學術,都要把基礎科目給學好, 例如 programming、algorithms、computer architecture、system 等方面的基礎科目都要好好學, 而不是只會使用別人寫好的 app 就好了。而在大學部裡, 一些比較重要的基礎課程如離散數學、algorithms 等都要學得非常好, 另外關於系統的部分如 OS、system programming、compiler、architecture 和 assembly language 等也都是很重要的基礎入門學科,要學得很強。不管以後走什麼方向,這些東西都是很重要的。 現在的學生常常有一個現象,就是學生都只會玩 app,卻沒有辦法自己寫出一個程式做到一樣的事, 例如我問一個學生怎樣把 wav 檔轉成 mpeg 格式,他可以告訴我用某某軟體怎樣使用可以做到, 但是問他要怎麼寫程式來做到這一件事,他卻答不上來;或者很多學生知道用什麼軟體去 show 圖, 但是要他寫一個卻沒辦法。但是我們資訊系出來的學生不能只是這樣, 應該要對整個 computer system 的原理、構造都要有足夠的認識,這是資訊系的學生在大學中所要努力的方向。