資訊工程系?!那是在念什麼?

張經略老師

         說到「資訊工程」,多數人第一個想到的可能是「寫程式」,因此,就讓我們從寫程式談起吧!
         要寫程式前,我們必須先有一個與電腦溝通的語言,就好像人與人間使用相同的語言溝通一樣, 其中與人類所講的語言較為相近者,稱為高階程式語言,包括Java、Pascal、C、C++、Fortran、Basic等,每種語言各有其優點、弱點與適用的場合。我們對電腦講了高階語言後, 還需要有「翻譯」的動作才能真正讓電腦聽懂,這個工作是由「編譯器(compiler)」來完成的,但編譯器可不只是做翻譯的工作,它還會把我們對電腦講的話做些適當的「最佳化」,以提升效率。
         我們給電腦的任務被編譯器翻譯成電腦聽得懂的指令後,便會被「中央處理單元(CPU)」執行,通常,電腦中同時會有多項任務需要由中央處理單元執行,而「作業系統(operating system)」 則會安排每項任務使用中央處理單元的時間與順序,以確保所有的工作都能即時進行。為了爭取效率,中央處理單元還會盡可能地將須執行的指令平行處理。此外,電腦還需要有儲存資料的空間, 這包含了暫存器、快取記憶體、主記憶體、硬碟等等,每種儲存空間各有其特性、不同的容量、速度與耗能,其妥適管理也是一個重要的課題。
         叫電腦完成一件任務的方法往往有很多種,有些方法省時、有些則很緩慢,在解決小規模的問題時,或許還看不太出差異,但當問題的規模龐大時,我們常常必須發展快速的方法才能讓電腦在合理的時間內完成任務。不過, 有些任務確實沒有快速解決的方法,這時我們就要另闢他徑,例如,要找出象棋或圍棋的最佳下法,便需要所謂的啟發式演算法(heuristic algorithm),此等方法雖然找到的或許是次佳的下法,卻也極具價值。
         電腦與電腦之間的溝通也是一大課題,其中要解決的問題五花八門,例如:我們要怎麼樣在電腦間傳送資訊?一台電腦講的話能被另一台聽懂嗎?如果要傳遞的資訊有特殊的性質,例如即時播放的比賽, 要怎麼傳送才能減少延遲?如何確保資料傳輸的保密性與防偽?如何由網路上的電腦合力完成一件任務?此外,龐大的電腦網路必然產生龐大的資料量,例如,「全世界的網頁」、「所有Facebook上的朋友關係」 都是一堆大到看不完而且還在快速成長的資料,其他如DNA序列則是自然存在的龐大資料,為了分析此種大量資料、甚或對未來將產生的資料做出有用的預測,我們便需要許多資料探勘(data mining)的方法了。
         由於資訊工程領域的多樣性與快速演進,本文不可能將所有本系精彩的課程與師生專長的領域一一列出,只能聊舉數例以饗讀者,其他尚有諸多未被本文提及的領域,如電腦視覺、電腦圖學、虛擬實境、 超大型積體電路、電子設計自動化、內嵌式系統、手機軟體、軟體工程、人機互動、自然語言處理、智慧型代理人、基因晶片、多媒體網路、數位學習等,期待您與我們一同探索!
         加入本系大家庭的您,將不是「會寫程式」而已,而是會寫「好的程式」。所謂「好的程式」是包含效率高、可讀性高、錯誤少、容易維護、充分發揮程式語言優點、安全性高等要件,要寫出好的程式 ,需要足夠的練習,並精熟資料結構、演算法、程式語言等知識,同時更需要良師益友的相互切磋,這些都是本系期待與您共享的,掌握這些核心優勢的您,將會有鶴立雞群的程式設計能力, 將來不論要踏入業界還是學界,都能順順利利。

程式設計冬令營D1

程式設計冬令營D2

程式設計冬令營D3

程式設計冬令營D4

程式設計冬令營D5

元智資工的特色介紹