臺大特色課程系列報導-理學院-學物理寫程式 學程式寫物理

一門課要讓學生學到東西,就要先了解學生學過什麼,才能知道該給學生什麼內容,給的不夠,學生覺得無趣且沒有充分學習;給的太多太深,學生無法吸收甚至放棄。此外,學生在學習低階課程時,會發展出學習模式,影響他們學習高等課程的態度與方法。這兩個與課程相關的學習面向,對處於銜接人生不同階段的大一新生來說更是如此,對於理工醫農等科系的學生,銜接高中和大學的基礎課程有微積分、普化、普生和普物。

這些年因高中課程改革與入學方式改變,大一生入學時,學過的物理和我們這些大學教授當年唸高中時所學過的物理比較起來,深度與廣度都下降很多。此外,許多學生在高中學習物理,為準備升學考試,多將時間花在解題,看到題目會列式和解答,但對其中的內涵與整體性(即所謂的物理圖像),並無太多的感覺;上大學之後,隨課程難度、廣度與抽象度大幅增加,學習就很容易「卡住」---也就是方程式或公式看得懂,也可以用來解選擇題或計算題,但就是無法對其中的物理圖像有深刻的認識,更不用說,利用物理圖像建立更好的直覺,來創造性地應用這些物理知識。這也造成當他們未來修習較高等的科目時,需要花更多的時間學習;因缺少物理圖像和直覺,而更容易遇到學習困難和挫折。

對於理工科系大一學生,普通物理就是銜接高中與大學的關鍵課程,依照上述的理念,自103學年度起,石明豐教授對於物理系「大一普通物理」,在教學內容和方法都做了很大的改變,兩屆修課的同學都有很多正面的迴響,以下為詳細作法:

●讓學生撰寫物理模擬程式,處理較高等或困難的物理問題●

(作業同時放置於網頁http://tcjd71.wix.com/vpython#!blank/l7s8m,也提供給其他系或大學的普物教學使用)

將傳統的紙筆計算習題數量減少,改採用自行設計的一系列物理模擬程式作業,針對普物課程裏:(a)單以方程式難以理解,而需要利用三維動態圖像來了解的物理,或是(b)列出方程式後,需要以較高等或繁複的數學來解,而常讓學生迷惑於解數學而非學物理,等兩部分,讓學生在物理模擬程式作業中,學習建立模型,將模型由方程式轉化為電腦程式,而解出該物理問題,並在電腦的虛擬世界中,以三維與動態的方式呈現出來,加深學生對此物理的認知與了解,從而建立動態的物理圖像。

現代的物理研究(其他科學或工程研究也大致如此),主要區分為實驗、理論、與模擬和計算等三部分,其中模擬和計算牽涉到以程式描述物理模型,然而現今的中學生對於非考科的程式,並沒有太多心思學習,以致到了大學高年級或研究所,當需要用到程式來進行專題或研究時,要從頭學起,然而程式語言越早接觸,則會有較好的體會。因此在實務上,這門普物課裏設計了上下學期共24個物理模擬作業(如附件),由最基礎的「利用迴圈來模擬自由落體」開始,循序將程式語言中的要素,如邏輯判斷、資料型態、函式、物件導向、類別、矩陣向量式運算、插斷等,融入普物各章節中較高等的部分,由學生寫物理模擬程式作業將其呈現出來,如此,學生可以在作業中學習物理並同時學習程式,讓學生由較低層次的解習題,進階到跨領域學習與創造性地應用所學的物理。

●舉辦物理專題競賽,激勵學生發揮創意與更高層次的應用所學●

(學生專題作品選輯http://tcjd71.wix.com/vpython - !blank/xfdhs)

學生在中學時,因為考試為重的情形,並不太會使用工具,也不會處理較大且複雜的問題,所以絕大多數的學生,會解習題和考試,但並沒有處理複雜物理問題與建立物理模型的能力。

藉由物理模擬程式作業,先熟悉中等規模的問題,再由專題來練習處理較大的問題,並利用程式等工具,來為他們將來的物理專業學習和研究,奠定基礎。

實際作法上,則是到學期末,學生們已有足夠的物理和程式基礎後,以四週的時間,進行物理模擬程式的專題,處理更複雜的問題,學生也藉由這項專題,更能掌握物理模擬方法和程式設計這兩項工具。他們的專題自選題目,所做的研究五花八門,除了各種教科書上或科普書籍上所寫的物理現象外,更包括如倒骨牌接龍、打水漂、與迴旋踢的力學等,這些日常生活中會看到的現象,學生藉此專題自行將其中的物理弄清楚。此外,也邀請電機系程式設計課的同學一起參與物理模擬程式專題,最後由電機系和物理系各派出四組代表同學,進行物理模擬PK大賽,讓學生們能互相觀摩創意。很難想像,才在三個月前,他們之中超過90%的人都還不會寫程式,而此時已可以寫出複雜的物理模擬程式。在過程中,除了程式的撰寫,他們更需對所要模擬的物理建立模型,並且學習將自己建立的物理模型寫成程式,這樣的物理學習方式,是非常深入的,效果遠非一般在紙上解題所能達到的。

●製作課程影片,讓學生在家可以學習和複習●

(全部影片https://www.youtube.com/user/mfshih/playlists)

這是一門強調做中學的課,所以課堂中,只講述觀念和如何建立模型,其他細節的推導則讓學生回家觀看影片。多數的物理現象發生在三維空間,並會隨著時間改變,單單是讓學生憑空想像有其難度,有些物理現象的視覺化、圖像化雖然可以藉由實驗獲得,但也有很多是做不到的,例如理想氣體方程式、或三維空間中的電磁場。這門課將物理觀念,以自行錄製的影片、動畫或三維動態電腦模擬呈現,著重在以圖像和直覺的方式說明各種物理現象,並將這些物理所用到的數學及方程式推導出來,進一步呈現物理現象和公式後面代表的抽象意義。學生的程度、理解能力和速度不同,回家看影片,學生還可以依照自己的步調學習,在課堂上課時,再就影片中不了解處提問,且每一週的影片也會配合當週的物理模擬程式作業,作一些相關課題的介紹。

這樣的學習和上課方式,學生們普遍的反應是非常的「操」,但是學到的東西卻非常的豐富,以質和量來說,等同於一門普物課和一門入門的程式設計課。多數學生認為這樣的上課和學習方式非常值得,也有少數同學不認同這樣的教學,覺得物理課為什麼還要寫程式,對此,我們將來會更努力和學生溝通,讓他們了解,他們在中學的學習方法,對升學考試有用,但是對他們的物理學習和將來的生涯會造成很大的阻礙,紙筆計算或是程式模擬與計算,都是呈現物理學問的工具,然而他們將來會遇到的複雜問題,其中絕大多數單以紙筆是不可能勝任的,廣泛的利用工具來學習與研究,才可長可久。

●上學期(中括號內是程式語言的進度)●

1. 自由落體與拋體運動 [print, while];2. 受空氣阻力且觸地會反彈的球 [module, if, nested structure];3. 彈簧連接兩球 -- 虎克定律和簡階運動 [tuple, list, for];4. 錐動(三維)擺 [function, polymorphism];5. 碰撞 [function, passing parameters];6. 克卜勒定律 [dictionary, class];7. 進動和地球自轉軸的進動週期 [vpython: frame];8. EIT光致透明 [empty class, list representation];9. 一維晶體 [numerical calculation and array];10. 理想氣體 -- 壓力和平均自由徑[random variables and histogram];11. 能量均分定理 [more on class];12. 絕熱過程和自由膨脹 [interrupt callback, keyboard control]。

●下學期●

1.電隅極和電四極所產生之電力線;2. 電位和電力線;3. 非理想電容的電位、電場、和電容值;4. 漂移速率和電阻;5. 雙生子謬論;6. 磁井和極光;7. 電感和互感的計算;8. 電容、電感、電阻的組合電路模擬;9. 光的折射與彩虹;10. 透鏡成像和像差;11. 光繞射和傅利葉轉換;12. 物質波穿隧效應的模擬和計算。