• 沒有找到結果。

未來研究

在文檔中 摘要 (頁 86-107)

第五章 結論與未來展望

5.2 未來研究

本研究有關程式設計概念的試題診斷評估知識屬性的精熟統計分析成果並沒有 十分顯著,有兩個原因如下:

1.題型設計之難易度。

2.人工判別方式的解題能力評估不易掌握。

但仍可觀察出學生精熟與不精熟的知識屬性之間的階層關係。

基礎程式設計技能,是往後相關專業的學習基礎,本研究建議學生們要訓練及培 養自我導向的學習能力,要提昇程式設計的技能,唯有學習者在學習過程得到充分的 實際操作練習,並建議教師們進行程式設計課程規劃時,能夠將程式設計課程規劃成 以有趣入門的分組競賽課程,提供學生足夠的實際操作練習,針對學生弱點單元,準 備大量的試題練習,並將學生分組,採用競賽式的方式進行,透過有趣的競賽,不僅 激發學生的榮譽感,協作互動學習,同時可以提昇整體的學習成效。

本研究採用規則空間模型(RSM)分析方法來呈現學生的先備知識的認知結構,未 來仍有相當大的空間可以延伸本研究之不足,例如

1. 可以針對物件導向(Object Oriented)進階知識概念的設計進行後續研究。

2. 可以從題型設計(建立題庫等)的方向上思考,以建立完善的測驗題型。

3. 若能取得跨校際的實驗對象進行後續的研究,相信研究結果資料分析可以提供全 國程式設計的教師們更多的訊息。

4. 可以發展出一套標準的程式設計概念的測驗試題,搭配相對應的屬性定義,提供 教師們作教學前診斷班級的學習模式,來規劃教學課程內容。

解釋名詞

1. B/S 架構

B/S ( Browser/Middle-ware 「 AP-Server 」 /Server 「 DB-Server 」 )結構即 瀏覽器、應用伺服器和資料伺服器結構。 它是隨著 Internet 技術的興起,對 C/S (Client/Server) 結構的一種改進的結構。 在這種結構下,用戶端工作界面是通過 WWW 瀏覽器來表現,極少部分商業邏輯在前端(Browser)運算,主要商業邏輯在 應用伺服器端或資料伺服器運算,形成所謂三層 3-tiers 架構。 這樣就大大簡化了 客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本。

以目前的技術看,建立 B/S 結構的網路應用,並通過 Internet/Intranet 模式下 資料庫應用,相對易於把握、成本也是較低的。 它是一次性到位的開發,能讓不 同的人員,從不同的地點,以不同的接入方式(比如 LAN,WAN,Internet/Intranet 等)

連結和操作共同的數據庫;它能有效地保護數據平台和管理連結權限,伺服器資料 庫也很安全。 特別是在 JAVA 這樣的跨平台語言出現之後, B/S 架構管理軟體更 是方便、快捷、高效率。

2. 馬氏距離

馬氏距離是由印度統計學家馬哈拉諾比斯(P. C. Mahalanobis)提出的,表示數據的協 方差距離。它是一種有效的計算兩個未知樣本集的相似度的方法。與歐式距離不同 的是它考慮到各種特性之間的聯系(例如:一條關於身高的訊息會帶來一條關於體 重的訊息,因為兩者是有關聯的)並且是尺度無關的(scale-invariant),即獨立於測 量尺度。對於一個均值為\mu = ( \mu_1, \mu_2, \mu_3, \dots , \mu_p )協方差矩陣為

\Sigma的多變量向量x = ( x_1, x_2, x_3, \dots, x_p ),其馬氏距離為 D_M(x) = \sqrt{(x - \mu)^T \Sigma^{-1} (x-\mu)}.\,

馬氏距離也可以定義為兩個服從同一分布並且其協方差矩陣為\Sigma的隨機變量

\vec{x}與 \vec{y}的差異程度:

d(\vec{x},\vec{y})=\sqrt{(\vec{x}-\vec{y})^T\Sigma^{-1} (\vec{x}-\vec{y})}.\,

引用文獻及參考資料

一、中文部份

[1]. 王鼎中、丘聖光、林淑玲、梅文慧、林美娟(2008)。創新程式設計課程與教學模 式之研發。中華民國第二十四屆科學教育學術研討會論文發表。

[2]. 余嘉元(1995)。運用規則空間模型識別解題中的認知錯誤。心理學報卷。

[3]. 余民寧(1993)。IRT學理與應用-試題反應理論中獲得有關測驗理論的重要資訊 (http://www.edutest.com.tw/e-irt/irt.htm)載自教育測驗出版社。

[4]. 余民寧(2002)。教育測量與評量-成就測驗與教學評量。心理出版社。

[5]. 李峰、余娜、辛濤(2009)。小學四、五年級數學診斷性測驗的編制——基于規則 空間模型的方法。心理發展與教育。

[6]. 李小蘭(2008)。知識空間理論與規則空間模型在漢語聽力理解技能測驗編制中的 應用。

[7]. 李咏吟(1989)。教學原理。台北:遠流。

[8]. 何昱穎,張智凱,劉寶鈞(2009)。程式設計課程之學習焦慮降低與學習動機維持–

以 Scratch 為補救教學工具。數位學習科技期刊,第二卷第一期,P11-32。

[9]. 吳紅耘、皮連生(2005)。試論與課程目標分類相匹配的學習理論。課程‧教材‧

教法,第6 期.P21-26。

[10]. 肖少白(2001)。發現學習理論與教學改革。外國中小學教育第五期。

[11]. 何侃(1999)。發揮學生主體作用的教學策略(布魯納的學習動機觀及其啟示)。

安徽教育學院學報,哲社版,02,75-76頁。

[12]. 林寶山(1990):教學論。台北:五南。

[13]. 周弦,謝深泉(2007)。基於知識空間理論的自適應測試系統的設計。

[14]. 周文忠(1999) 。在全球資訊網建構教學理論與設計模式。88 學年度師範學院教 育學術論文發表會論文集。

[15]. 涂金堂(2003)。認知診斷評量的探究。「南師學報」第 37 卷第二期教育類,

P67 - 97

[16]. 孫波,傅騫,曲朝霞(2004)。基於"擴展知識空間理論"的自適應測評過程研究。

中國電化教育。

[17]. 徐士昕,陳建勳,楊坤原(2003)。應用知識空間設計線上適性測驗選題機制。

中原大學資訊工程系。

[18]. 黃小平(2007)。規則空間模型在口腔內科學分數報告中的應用研究。教育學原理。

[19]. 張新仁(2003)。學習與教學新趨勢。心理出版社。

[20]. 張玉燕(1996)。建構導向的教學經營-以自然科為例。國教月刊 J43 卷 1)2 期,

7-17 頁。

[21]. 張春興(民83)。教育心理學-三化取向的理論與實際。台北:東華。

[22]. 傅騫,孫波(2004)。在知識空間理論與專案反應理論對比研究。

[23]. 葉重新(2004)。教育研究法。心理學出版社。

[24]. 劉啟亮(2008)。規則空間模型在初中生化學知識學習診斷與補救中的應用研究。

教育學原理。

[25]. 劉旨峰(2007)。運用互動式演算法動畫模擬輔具改善學生程式設計之問題解決能 力。中央大學學習與教學研究所論文。

[26]. 劉佩雲(2000)。自我調整學習模式之驗證。劉佩雲,教育與心理研究,第 23 卷,

第 1 期.P173-205。

[27]. 游寶達,翁仲銘(2001)。融入學習理論於網路多媒體環境之建構探討。國立中正 大學資訊工程研究所

[28]. 塗冬波,漆書青(2009)。認知診斷計量模型的開發及應用。江西師範大學心理 學院。

[29]. 談成群,謝深泉,陸捷(2007)。知識元件及其在知識空間構造中的應用研究

。電腦工程與科學,第29卷第8期,123-126頁。

[30]. 錢能,劉端陽,丁維龍(2005)。程式設計課程教學的新方法——融ACM/ICPC方式

於程式設計課程教學。

[31]. 戴海崎、張青華(2004)。規則空間模型在描述統計學習模式識別中的應用研究。

心理科學(期刊)。

[32]. 蘇家賢 (2001)。網路超媒體暨互動式演算法動畫對演算法學習成效影響之研 究。銘傳大學資訊管理研究所碩士論文。

[33]. 龔偉,曾曉紅(2007)。基於知識空間理論的電腦應用技能測評策略研究。四川理 工學院學報(自然科學版)。

二、英文部份

[34]. Dimitrios Kalles(2008). Students working for students on programming courses.

Computers & Education 50 , P91–97.

[35]. Jacqueline P. Leighton & Stephen M.Hunka(2000).Exploring the Logic of Tatsuoka's Rule-Space Model for Test Development and Analysis. EducationalMeasurement:

Issues and Practice.

[36]. Enis Dogan & Kikumi Tatsuoka(2007).An international comparison using a

diagnostic testing model:Turkish students’ profile of mathematical skills on TIMSS-R.

Springer Netherlands Volume 68, Number 3,P263-272.

[37]. Greg C. Lee &Jackie C. Wu(1999). Debug It- A debugging practicing system.

Computers & Education 32 , P165-179.

[38]. Huang, C.-J., Chen, C.-H., Luo, Y.-C., Chen, H.-X., & Chuang, Y.-T. (2008).

Developing an Intelligent Diagnosis and Assessment E-learning Tool for Introductory Programming. Educational Technology & Society, 11 (4), P139–157.

[39]. H.M. Deitel & P.J. Deitel(2005).C++ How to Program。Pearson Education.

[40]. Jorma Sajaniemi & Pauli Byckling & Petri Gerdt(2007). Animation Metaphors for Object-Oriented Concepts. Electronic Notes in Theoretical Computer Science 178 , P15–22.

[41]. John Passmore(2007).The Philosophy of Teaching。Psychological Publishing.

[42]. Kirsti Ala-Mutka & Toni Uimonen & Hannu-Matti Järvinen(2004). Supporting Students in C++ Programming Courses with Automatic Program Style Assessment.

Journal of Information Technology Education Volume 3, 245-262.

[43]. Jorma Sajaniemi (2002). PlanAni A System for Visualizing Roles of Variables to Novice Programmers. Department of Computer Science University of Joensuu, Finland [44]. Lawrence, A. W. (1993). Empirical studies of the value of algorithm animation in

algorithm understanding. Unpublished Ph.D. dissertation, Department of Computer Science, Georgia Institute of Technology.

[45]. Lawrence, A. W., Badre, A. N., & Stasko, J. T. (1994). Empirically evaluating the use of animations to teach algorithm. Proceedings of the IEEE Symposium on Visual Languages, 48-54.

[46]. Menucha Birenbaum & Kikumi K. Tatsuoka & Yaffa Gutvirtz(1992). Effects of Response Format on Diagnostic Assessment of Scholastic Achievement. Applied Psychological Measurement 16, P353-363.

[47]. Ronit Ben-Bassat Levy & Mordechai Ben-Ari & Pekka A.Uronen(2003). The Jeliot 2000 program animation system. Computers & Education 40 , P1–15.

[48]. Walter Savitch(2008).Ablolute C++。Addison Wesley.

[49]. Y.Daniel Liang(2007).Introduction to programming with C++.

三、網站部份

[50]. 認知診斷測驗的一種編制方法:規則空間模型(RuleSpace Model)(2010.04.08):

http://blog.sina.com.cn/s/blog_659b4a020100hrrt.html

[51]. C++學習筆記 繁體中文電子書版:http://xyz66.com/SAI/SAI2550.htm [52]. C++語言常見問題解答:

http://fanqiang.chinaunix.net/a4/b2/20010427/130508_b.html

[附錄 1]

982 程式設計-紙筆題(甲班)

測驗題 作答區

一、是非題

1. 請寫出下列布林運算式結果以(True 或 False)表示 (4%) count = 0 ; limit <=10 ;

a. (count==0) && (limit <20) b. count ==0 && limit <20 c. (limit >20) || ( count <5) d. !(count==12)

2. 假定 string1 的值為"miniscule",string2 的值"minimum",且 string3 的值為"miniature", 請判斷下列布林運算式之結果 以

(True 或 False)表示 (5%) a. string1 > string2

b. string1 > string2 && string2 > string3 c. string1.substr(0,4) == string2.substr(0,4) d. string1 > “maximum”

e. string3.substr(0,4) == “min1” || string1 == string2 3. 是非題 (正確者,請以T表示;錯誤者,請以F表示) (6%)

a. 所有變數在使用前一定要先宣告

b. 所有變數在宣告時一定要給定一個資料形態。

c. C++程式中,變數number和NuMbEr 是相同的。

d. 宣告幾乎能在一個C++ 函數內任何地方出現。

e. modulus運算子(%) 只用於整數運算數中使用。

f. 算術運算元 *,/,%,+ 和 – 全部的執行優先順序是相 同的。

二、選擇題 (選擇題請寫出正確答案,說明選擇該選項之原因,否則不予計分) 4. 下述陣列宣告中,請選出錯誤的選項 (2%)

a. int x[4] = {11, 23, 33, 43, 51};

b. int x[] = {17, 22, 41, 25};

c. const int SIZE=4 ; d. int x[SIZE] ;

5.下列四組宣告的變數中,那一組變數全部是有效變數名稱?

(2%)

a. int data2, x_1, 25;

b. float %change, ABC123;

c. int RATE, 3x, _acb;

d. int sum, bigBonus, x9y;

6. 下列選項為描述「變數名稱的長度」,請選出正確答案 (2%) a. 最長為 256 個字元 b. 最長為 128 個字元 c. 最長為 32 個字元 d. 無限制

7. 根據下列程式碼,請選出正確的輸出結果。 (2%) cout << “Hi there,”;

cout << “ Lois Lane” << endl ; a. Hi there,Lois Lane

b. Hi there, Lois Lane

c. Hi there, Lois Lane d. Hi there, Lois Lane 8. 定義一函式如下: (2%) void tripler(int & n) { n = 3*n; }

下列敘述中,請選出正確的函式呼叫(function call) (複選):

int a[3] = {4, 5, 6} , number = 2;

a. tripler(a[2]);

b. tripler(a[3]);

c. tripler(a[number]);

d. tripler(a);

e. tripler(number);

9. Call by value(參數以數值方式傳遞式): (2%) int main() {

int x = 5;

foo(x);

cout << “x = ” x << endl;

}

void foo(int x) { x++;

cout << “y = ” << x << endl;

}

以上程式中,請選出正確輸出為何?

(a) x= 5 (b) y= 6 (c) y= 6 (d) x= 5 y= 6 x= 5 x= 6 x= 5 10. Call by Address (2%)

int main() { int x = 5;

foo(&x);

cout << “x=” << x << endl;

}

void foo(int *x) { (*x)++;

cout << “y=” << *x << endl;

}

以上程式中,請選出正確輸出為何?

(a) x= 5 (b) y= 6 (c) y= 5 (d) 以上皆非 y= 6 x= 6 x= 6

11. Call by reference (2%) int main() {

int x = 5;

foo(x);

cout << “x = ” << x << endl;

}

void foo(int &x) { x++;

cout << “y = ” << x << endl;

}

以上程式中,請選出正確輸出為何?

(a) x= 5 (b) y= 6 (c) x= 6 (d) 以上皆非 y= 6 x= 6 y= 6

三、簡答或輸出結果題

12. 根據下列程式碼,請選出正確的輸出結果。(2%) for (int i=1;i<2;i++)

for (int j=1;j<2;j++)

cout << i << "*" << j << "=" << i*j << "\n";

13. 請在下述前置詞空白處填入專為輸出入用的前置詞 (1%)

#include < >

14. 請寫出下列程式碼的輸出結果 (2%) int a = 15 ;

int b = 7 ;

a/b =>___________

a%b =>___________

15. Call by value & Call by reference (3%) int a = 10, b = 20;

int &x = a;

x++;

cout << "a="<< a << endl; // →此時 a 的值為何 ? _______

int *y;

y = &b;

(*y)++;

cout << "b="<< b << endl; //→此時 b 的值為何 ? _______

y = &a;

(*y)++;

cout << "a="<< a << endl; // →此時 a 的值為何 ? _______

16. 請寫出下列輸出結果為何? (4%) void function(int &m)

{

cout << "虛擬參數m:" << m << endl; →此時輸出 ________

m = 6;

cout << "更改過虛擬參數m:" << m << endl; →此時輸出 _______

}

int main() {

int n = 5;

cout << "實際參數n:" << n << endl; →此時輸出 __________

function(n);

cout << "呼叫後的實際參數n:" << n << endl; →此時輸出 ______

return 0;

}

17. 請用另一種表達方式表達相同的下列運算式 (3%) a. count +=2

b. change %= 100 c. amount *= cnt1 + cnt2

18. 請用另三種不同的方式寫出整數變數 x 加 1 的 C++程式敘 述,如下: x++

(3%)

19. 請用 C++程式語言敘述完成下列工作 (2%) a. 宣告兩個整數變數 sum 及 x

b. 設定變數 x 的值為 1 c. 設定變數 sum 的值為 0

d. 將變數 x 的值加至變數 sum 中,並將結果指定給變數 sum

e. 列印出 ‘’’The sum is : ’及變數 sum 的值 20. 請寫出下列程式之輸出結果 (2%)

char symbol[3] = {'a', 'c', 'b'};

for (int index = 0; index < 3 ; index++) cout << symbol[index];

21. 請寫出下列程式碼的輸出結果 (2%) char a,b,c;

a= ‘b’;

b=’c’;

c=’a’;

cout << a << b << c << ‘c’;

22. 請寫出下列程式碼的輸出結果 int n=4 ;

int valueProduced = 2*(++n)-- ; cout << valueProduced << '\n' ; cout << n << '\n' ;

23. 假設 min 函式被定義為 (3%)

int &min(int &a, int &b) { return a < b ? a : b ; }

請問如果int a = 1 , b = 3 , c = 9 ,則連續執行兩次 min(a,b) += c 後,a,b,c 的值分別為何?

24. 假設程式已宣告此 #include <string> ,請寫出下列程式之輸出 字串 (2%)

string s("Nice to meet you.");

string sub = s.substr(5);

cout << "1. " << s << endl;

cout << "2. " << sub << endl;

25. 假設程式已宣告此 #include <string> ,請寫出下列程式之輸出 字串 (2%)

string s = "I met this girl last week, and we've been chatting back and forth. ";

string s2 = "I like her, JJ.";

s.replace( 31, s.length() - 31, s2 );

cout << s << endl;

26. 請完成下列程式輸出結果

(3) 下列程式需輸出由 9 至 1 的整數值 (需改寫程式) (3%) for (int x=9;x>=1;x -=2)

cout << x << endl;

(4) 輸出 2 至 21 的奇數整數值 (需改寫程式) (3%) int counter = 2;

do {

cout << counter << endl;

counter += 2;

} while (counter <21);

(3) 請寫出輸出結果 (3%) int c=1;

int product=3;

while (c<=5) {

product *=c;

c++;

}

cout << product << endl;

27. 寫出下列程式輸出結果 (1) int x=1 ; (3%)

while (x<=10) { x++ ;

}

cout << x << endl;

(2) for (double y=.1 ;y !=0.5 ;y+=.1) (3%) cout << y << endl ;

(3) int n; (3%) cin >> n;

switch (3) {

case 1 :

cout << "The number is 1" << endl ; break;

case 2 :

cout << "The number is 2" << endl;

break;

case 3 :

cout << "The number is not 1 or 2" << endl;

break;

}

28. 請畫出主程式與 swap 副程式執行到最後的記憶體關係圖,

並請畫出pointer 的指標線段。(預設系統配置記憶體起始位址

0x22ff74,swap 副程式起點由同學自行設定或以程式模擬) (10%)

#include <iostream>

using namespace std;

void swap(int *,int *);

int main(void) { int a=60,b=20;

cout << "交換前... a=" << a << ", b=" << b << endl;

swap(&a,&b);

cout << "交換後... a=" << a << ", b=" << b << endl;

system("pause"); return 0;

}

void swap(int *p1,int *p2) // swap()函數的定義 { int tmp=*p1;

*p1=*p2;

*p2=tmp;

}

29. (1)請寫出下列變數值或位址。(10%)(假設起始位址 0x22ff74) a=____________ &a=___________ b=____________

在文檔中 摘要 (頁 86-107)