程式的頭腦?
星期五 group meeting 的時候
老闆提到他在應數課發現寫程式對於物理系大一生很困難
就算是很間單的問題 也給了他們程式語言的參考資料
大部分的人都還是沒辦法寫出來
這其實一點也不意外
當年我們大一下學期應數也是給我老闆教的
那個時候有辦法把老師出的程式作業寫出來的也沒幾個
更別提我們那時候大一上學期還有上過計算機程式
我一直都很關心這個問題
關心的理由當然不是因為我心懷大志
而是當大家一直來問你程式怎麼寫的時候 你自然就會關心了
那個時候我提倡把大一上學期的計算機程式移到大二或大三
我認為在大二或大三才學寫程式會讓同學有比較充足的動機
不會像我們在大一上就學計程 大部分的人是學了跟沒學一樣
後來經過系學會、課程委員會等等的努力 還真的就移了
但也因此引發另一個問題
當大一大二要用簡單的程式的時候 就會面臨寫不出來的窘境
我原本沒考量過這個問題
一方面我覺得物理系大一大二用到程式的機會很少
另一方面我認為即便沒學過 class pointer 這些東西
對於一些簡單的計算 大家應該還是有辦法用程式寫出來
直到星期五老闆的感嘆
跟同一天晚上有位 B97 同學跟我說寫 20 行的程式對他來說都很困難
身為當初提倡改動計算機程式課程的始作俑者之一
我覺得好像應該來想一下這個問題
物理系的學生到底需要什麼?
顯然地 程式對我們而言是工具
但程式和扳手或是剪刀不同 他不是那種你一拿到手就知道該怎麼用的工具
(就像可能有些人拿到扳手也不知道該怎麼用)
我們會真實遇到的狀況常常是這樣:
有一個問題 你知道該怎麼解決(演算法已知)但需要花很多時間
所以要藉由程式協助 然後你發現你不知道該怎麼寫
通常這個時候大家都會覺得是因為不會程式語言
我猜想這就是物理系原本的程式教育的盲點
大一的計算機程式教了我們什麼?
主要都是在教 C++ 的語法
簡單的部分包括 operators, control statements
比較複雜的則有 array, pointer, class
舉例來說 我們在大一應數課學了 LU decomposition
要大家用手算也都沒有問題
可是當老師要我們寫一個程式來做一樣的事 卻就變得很困難
但這個程式從頭到尾會用到的語法都已經教過了
我再舉幾個簡單的例子
這些問題一定都是你知道要怎麼做的
但如果要你寫個程式來做同一件事
你會不會覺得不知道要怎麼開始?
有趣的地方就是 我們並不是不知道要怎麼解決這些問題
只是不知道要怎麼用程式完成
我的感覺是 寫程式的腦袋跟我們平常習慣用的腦袋很不一樣
人腦其實比我們想像中還要強大很多
很多人腦一瞬間的想法 換成程式的指令就需要寫很多行
我覺得這是我們系上程式教育的一個很大的問題
我們通常是語言導向的教學
先告訴我們某個語法要怎麼用 然後給我們例子
但很少有教我們如何用程式實現一個已知的數學方法
既然我們是要把程式當作工具
理想上的情形應該是我們先知道我們要做什麼事情 才去查需要的語法才對
我最近在思考準備一系列的課程 可能六到八堂課
把這一段很多人缺乏的從演算法到實做的銜接補起來
主要的對象應該是系上的學弟妹
課程的目標就是讓大家以後不會有「不知道要怎麼開始寫程式」的這種感覺
不過要自己開課好麻煩 系上的空間實在不怎麼 student-friendly...
如果有很多人有興趣再來看看要怎麼弄好了
老闆提到他在應數課發現寫程式對於物理系大一生很困難
就算是很間單的問題 也給了他們程式語言的參考資料
大部分的人都還是沒辦法寫出來
這其實一點也不意外
當年我們大一下學期應數也是給我老闆教的
那個時候有辦法把老師出的程式作業寫出來的也沒幾個
更別提我們那時候大一上學期還有上過計算機程式
我一直都很關心這個問題
關心的理由當然不是因為我心懷大志
而是當大家一直來問你程式怎麼寫的時候 你自然就會關心了
那個時候我提倡把大一上學期的計算機程式移到大二或大三
我認為在大二或大三才學寫程式會讓同學有比較充足的動機
不會像我們在大一上就學計程 大部分的人是學了跟沒學一樣
後來經過系學會、課程委員會等等的努力 還真的就移了
但也因此引發另一個問題
當大一大二要用簡單的程式的時候 就會面臨寫不出來的窘境
我原本沒考量過這個問題
一方面我覺得物理系大一大二用到程式的機會很少
另一方面我認為即便沒學過 class pointer 這些東西
對於一些簡單的計算 大家應該還是有辦法用程式寫出來
直到星期五老闆的感嘆
跟同一天晚上有位 B97 同學跟我說寫 20 行的程式對他來說都很困難
身為當初提倡改動計算機程式課程的始作俑者之一
我覺得好像應該來想一下這個問題
物理系的學生到底需要什麼?
顯然地 程式對我們而言是工具
但程式和扳手或是剪刀不同 他不是那種你一拿到手就知道該怎麼用的工具
(就像可能有些人拿到扳手也不知道該怎麼用)
我們會真實遇到的狀況常常是這樣:
有一個問題 你知道該怎麼解決(演算法已知)但需要花很多時間
所以要藉由程式協助 然後你發現你不知道該怎麼寫
通常這個時候大家都會覺得是因為不會程式語言
我猜想這就是物理系原本的程式教育的盲點
大一的計算機程式教了我們什麼?
主要都是在教 C++ 的語法
簡單的部分包括 operators, control statements
比較複雜的則有 array, pointer, class
舉例來說 我們在大一應數課學了 LU decomposition
要大家用手算也都沒有問題
可是當老師要我們寫一個程式來做一樣的事 卻就變得很困難
但這個程式從頭到尾會用到的語法都已經教過了
我再舉幾個簡單的例子
這些問題一定都是你知道要怎麼做的
但如果要你寫個程式來做同一件事
你會不會覺得不知道要怎麼開始?
- 有一疊班上同學的考卷,要照座號排好。
- 玩圈圈叉叉。
- 給定函數 f(x),問在 0 到 1 之間的解。
- 給定函數 f(x),估計其在在 0 到 1 之間的積分值。
- 六個人搭三艘相同的船,共有幾種搭法?
有趣的地方就是 我們並不是不知道要怎麼解決這些問題
只是不知道要怎麼用程式完成
我的感覺是 寫程式的腦袋跟我們平常習慣用的腦袋很不一樣
人腦其實比我們想像中還要強大很多
很多人腦一瞬間的想法 換成程式的指令就需要寫很多行
我覺得這是我們系上程式教育的一個很大的問題
我們通常是語言導向的教學
先告訴我們某個語法要怎麼用 然後給我們例子
但很少有教我們如何用程式實現一個已知的數學方法
既然我們是要把程式當作工具
理想上的情形應該是我們先知道我們要做什麼事情 才去查需要的語法才對
我最近在思考準備一系列的課程 可能六到八堂課
把這一段很多人缺乏的從演算法到實做的銜接補起來
主要的對象應該是系上的學弟妹
課程的目標就是讓大家以後不會有「不知道要怎麼開始寫程式」的這種感覺
不過要自己開課好麻煩 系上的空間實在不怎麼 student-friendly...
如果有很多人有興趣再來看看要怎麼弄好了
酷弊了!!!
回覆刪除你可以找修哥當助教XDDD
我一定要參加這系列課程!!!
「當大家一直來問你程式怎麼寫的時候 你自然就會關心了」
回覆刪除這超好笑!!