跳到主要內容區

電腦圖像背後的線性代數 & Python 程式設計入門 - 外文系四年級 楊浄

banner

課程名稱►電腦圖像背後的線性代數      授課教師►數學系 許瑞麟老師
課程名稱►Python 程式設計入門           授課教師►資工系 陳培殷老師
心得分享者►外文系四年級 楊浄


修課動機:
我是文學院學生,原本就讀中文系,在大三時轉到外文系,以為轉系會解決我心中對未來的疑惑,但其實不然。外文系的專業科目偏理論,難以有實際產業連結與應用,必須要和其他領域做結合才能發揮最佳效果,所以外文系學生經常跨領域輔系或是雙主修。當時我抉擇是要從事「計算語言學、自然語言處理」工作或是「語言治療」,但不論哪一條路對我而言都是跨領域,而且都是跨到我比較不擅長的科目­­­­­­—數學或是生物,讓我一直處於猶豫的情況。我在大四上曾經聽聞朋友推薦模組化課程,當時就對學校開設這一系列的暑期密集課程印象深刻。大四下學期時,我決定先選擇電資(偏向「計算語言學、自然語言處理」)這一條路,我請教許多電機和資工的朋友,走程式軟體這一條路需要修習什麼課程,我獲得的資訊是必須學程式語言、線性代數和機率統計等。之後,我在社群軟體看到模組化課程的課程資訊,其中有好幾門課符合我的需求,我馬上將搶課的時間記錄在我的行事曆上。今年暑假,雖然沒有成功選到所有我想修的課程,不過我依然有修到兩門我想修的課程,一個是電腦圖像背後的線性代數,另一個是Python程式設計入門。自此,模組化課程像是一把鑰匙,讓我成功開啟一道通往該領域的門,而上課時間密集緊湊,讓我不得不放下其他事務專心投入學習。
 
課程概要和授課風格:
電腦圖像背後的線性代數
電腦圖像背後的線性代數是一星期五天的密集課程,由數學系許瑞麟教授上課。每天早上從九點到十二點四十分(3小時40分鐘),第二天開始就會有複習的小考。考試方式是開書考,而內容主要是前一天上課的觀念題(若考試時真的不清楚題目或是解題方法,可以請助教幫忙)。課堂上有好幾位助教,有任何觀念不理解的皆可以請教他們。評分方式包含每天的小考、發問與課程結束後報告(課程重點整理和心得)。許老師從線性代數的基礎一步一步開始教,課程內容涵蓋全域座標系統 (global coordinate)和局部坐標系統(local coordinate)的線性轉換(linear transformation)、向量線性相依和線性獨立的觀念、以及六個線性轉換(伸縮、鏡射、旋轉、側推、投影及反線性轉換)的矩陣運算與相對應的圖像改變。最後課程還教到轉置矩陣(transpose and adjoint matrix)、特徵值特徵根和矩陣對角化等
這一門課程適合沒有修過但是想修線性代數的同學,不過我認為還是需要多一點數學(向量和矩陣)的背景知識基礎。由於我已經很久沒有接觸數學,課程第一天差點直接退選。許老師上課以投影片和簡單補充例子為主,在上課前投影片就會上傳至moodle以方便同學下載。
 
Python 程式設計入門
Python 程式設計入門是由資工系教授開設的,一星期五天的密集課程,每天早上從九點到十二點四十分(3小時40分鐘)。課程時間約三個小時,中間有一次的休息,十二點到十二點四十是小考時間。課程安排是從Python最基礎的運算式與語法教學開始,之後逐漸加入一些應用題目去做計算,例如: 班上學生分數排名統計換算和攝氏華氏溫度計算程式或是學習一些經典程式題目,例如:費式數列和河內塔。費氏數列計算與河內塔是利用程式遞迴方式解題,將一個大問題拆解成一層一層的小問題,利用前面已經解決的小問題堆砌出最後答案。
課堂中,陳老師會一個一個觀念解釋,而逐步講解的優點是讓同學們在自己操作時能清楚理解邏輯架構。當解說完一題結束,老師會留大約十分鐘時間給同學們實際用電腦打出可執行的程式,若有任何疑問都可以請助教指導。我認為這一門課適合沒有基礎的同學來修,雖然對初學者仍然有挑戰,但適當的進度及壓力反而能促使自己更快上手。透過課堂練習和每天的回家作業能讓學生迅速了解程式的概念和擁有基本撰寫程式能力。
 
課堂心得:
電腦圖像背後的線性代數
修這堂課對我來說已經不只是開啟我進入線性代數的大門,而是讓我下定決心選擇我的未來方向。
我清楚知道我當時有兩條路,可是因為害怕所以一直拿不定主意,當初選模組化的課程不諱言就是抱著試試看的心態。上課的第一天,我就非常忐忑不安,因為我已經脫離數學很久了<而且數學一直是我高中前學科中的罩門之一。果不其然,第一天的三個小時課程,我感受到我的臉色越來越慘淡。依稀記得我在內心大喊,開始懷疑自己到底是哪一個環節出現了問題,為什麼有許多的觀念,明明高中都有學過,可是儘管我絞盡腦汁還是不明白向量、空間和線性組合等觀念的連結。第一和第二天的課程,我勉強的撐過去,但第二天的晚上,我直接在朋友面前落淚,我內心非常掙扎。當時我需要準備考英文檢定,同時上模組化的課程,而模組化課程的數學內容對我來說相當吃力,因此我非常挫折。那個時候我的朋友建議我和老師談談看,於是隔天下課後,我畏畏縮縮的去找許老師。老師很用心開導我,但同時很直接的跟我表明,假如我無法撐過去並放棄其他瑣碎的事情,那倒不如還是待在我原來的圈子就好,想要突破就必須付出心力或是犧牲一些事情。老師的一番話像是給我打了一劑強心針,我開始調整我的時間安排,心態也做了改變。我將那一個星期所有的心力留給線性代數,能學習多少就盡量吸收。在課堂或是下課後,老師和助教都非常願意幫我釐清觀念或是解題方法。同時,課程以外的時間,如果遇到問題,我就會麻煩電機系的朋友教我。就這樣我跌跌撞撞的完成了這五天的課。對我來說,這五天的課程艱辛且一度讓我想放棄,但經過五天的經歷,我正式開啟跨領域到理工的大門。我在新的學期繼續學線性代數和更多其他電資相關的課程,而暑期模組課程則使我這個學期再去接觸線性代數不會如此震撼了。我也慢慢理解線性代數的運作原理以及應用,原來當初暑假許老師上的內容其實是最基本的,只不過當時我掌握度非常低。幸好我當初選了模組化的課程,讓我先體驗一下短暫陣痛,雖然很痛但是撐過後會發現自己有所成長,真的很有成就感。
 
Python 程式設計入門
撰寫程式是一種非常受歡迎的社會趨勢。由於許多領域都需要資訊處理的能力,學習程式成為學生必備的技能。我因為想從事自然語言(資訊)方面的工作,所以必須學會寫程式。當時我正關注模組化的課程,一看到模組化課程有開設Python的課程,就認為這是一個進入程式世界的好機會。這一堂課原本是寒假開設的,但因為疫情關係延期到暑假。我自己學習一項新的技能是需要有人引領,而這個密集課程就是設計成由教授引領學生來學習撰寫程式。
學習程式是一個既有趣又痛苦的過程。剛開始接觸的時候,我以為跟數學是息息相關的,但我發現基礎程式與數學的關係並不是很緊密。反而發現程式的邏輯和數學的邏輯是不大相同的,我花了一點時間了解以及適應程式的邏輯,當稍微理解程式的邏輯和概念後,我覺得是一項很特別的訓練,它訓練我的思考邏輯和耐心。當自己寫出來的程式跑出正確結果會有一種成就感,反之,寫不出來或是卡住時,自己會非常懊惱,會想盡辦法找出解決方法。
Python是很好入門的高階程式,它包含了很多函式和套件,所以越來越多領域的開發使用Python。雖然暑假課程結束後,我比較少接觸Python而轉而學習C++,兩者除了些微的語法不同,基本思維模式多多少少是類似的。我推薦給要學程式且將程式作為應用,Python是一種相對容易上手的程式語言,但是如果跟想要訓練更清晰的邏輯思維,可能就要選擇嚴謹性相對較高的語言,例如:C++。
這一堂課算是一張進入程式世界的入場券,經過這五天的洗禮,我學習到新的觀念並理解基本程式的操作和數學計算關聯性不強,但是和個人整體的邏輯思考息息相關。寫程式對我來說和學習外語一樣,只是和電腦溝通需要更緊密的思維邏輯否則電腦無法依據指令執行。由於我即將跨領域到AI的研究所,需要從事語音或圖像處理,為了做研究,我在新的學期去修了電機系計算機概論。我喜歡寫程式的過程,它讓我的思維邏輯更加縝密,雖然我現在尚未抓到寫程式的全部要訣,可是我相信持續練習就可以進步。因為模組化課程,讓我檢視自己對寫程式的興趣。上完程式的基礎課程,心中有不小的成就感,同時更增進我朝向未來的目標的動力。

關鍵字 #成大模組化 #線性代數  #python  #程式  #跨領域


bottom

瀏覽數: