◆張敏 李軍
作者:張敏,西安翻譯學院計算機科學技術教研室講師,主要研究方向為圖形圖像處理和數據庫優化;李軍,西安翻譯學院計算機科學技術教研室工程師,主要研究方向為計算機網絡(710105)。
C語言程序設計課程具有理論性和實踐性強的特點。在教學實踐中,由于學生初學計算機語言,而C語言靈活性較大,所以學生雖然能夠掌握理論知識,但是在實際操作環節比較弱,成為學生學習C語言程序設計課程的瓶頸問題。為了提高學生的實踐操作和動手能力,培養學生的計算思維,在近些年的教學中也對任務驅動教學法進行嘗試,實驗證明,以任務驅動為導向的程序設計課程教學,提高了學生的學習興趣,增強了學生的動手能力,增加了實踐經驗,使學生與社會接軌。
任務驅動教學法的內涵 任務驅動教學法是以建構主義學習理論為指導的一種教學法,具有能夠激發學生學習興趣,有利于培養學生實踐能力、創新精神和合作意識等特點。程序設計課程教學注重培養學生的計算機應用能力和信息素養,因此特別適用這種教學方法。
任務驅動教學法的特征 任務驅動教學法是一種探究式教學模式,旨在對學生的創新能力和獨立分析問題、解決問題的能力進行培養,教學工作以完成一個具體任務為主線,教師教學過程簡單,學生學習任務明確,方便學生對知識點的掌握。學生帶著任務學習,勢必有一種完成任務的緊迫感和學習動力,從而促使學生盡力在有限的學習時間內完成知識的學習,并在一定理論基礎上完成操作任務。這樣將具體任務與教學內容進行有機結合,從而使學生在完成任務的同時掌握教學內容,實現知識的學習和應用的有效結合。在掌握了一定知識的基礎上讓學生自己去解決問題,又培養了學生發現和解決實際問題的動手能力,調動學習積極性和主動性[3]。
2006年3月,美國卡內基·梅隆大學計算機科學系周以真教授在美國計算機權威期刊Communications of the ACM上提出“計算思維”的概念和詳細定義。2013年,周教授在接受中國信息技術教育雜志社劉向永記者訪談時對計算思維進一步做了詮釋,隨后國外的眾多研究者對“計算思維”進行了積極且深入的探討和研究,這些學者涵蓋計算機教育界、社會學界以及哲學界等各個領域,其中也包含各種學術團體。
基于計算機技術和Internet技術的飛速發展,培養大學生計算機綜合能力,提高大學生使用程序語言解決問題的能力,是當今大學生計算機基礎教育的核心點之一。根據《中國高等院校計算機基礎教育課程體系2008》的規定,高校程序設計基礎課程的學習目標是:
1)學習問題求解的思路和方法,即算法;
2)理解計算機是如何具體實現算法的,即如何才能有效利用計算機編程。
因此,在程序設計課程教學任務中,不僅要使學生掌握程序語言的語法規則來編寫程序,更重要的是掌握算法思想與問題求解的思路,而計算思維正是使學生掌握使用計算機科學對問題進行求解的一種思維方法和能力。
任務驅動教學法使程序設計的理論知識任務化 傳統的程序設計課程教學中,往往注重學生理論知識的教學,但學生很難將枯燥的理論與實踐相結合。任務驅動教學將學生解決具體問題的能力的培養作為教學重點,在教學過程中將理論教學的知識點容納在任務中,學生在完成任務前需要掌握一定的理論知識,在完成任務的過程中更深入地掌握所學理論知識,并能夠在問題的解決過程中得到很好的利用。
任務驅動教學法促進程序設計課程的實踐教學 國家教育部門提出引導一批普通本科高校向應用技術型高校轉型,旨在培養高級應用型人才。應用型本科具有鮮明的技術應用性特征,需以應用型人才培養為核心設置課程,針對地方經濟需要和學院特點,在學生學習理論知識的同時,還要掌握更多實踐能力。在課程教學中,除了掌握一定了理論基礎知識外,希望學生能得到更多“實戰”機會,增強實踐動手能力,將來更快適應工作崗位。
任務驅動教學法在學生給出任務解決方法后,學生積極動手去完成自己的任務,從而鍛煉動手能力和實踐能力,在學習了理論知識后能夠在實踐中得到驗證,這正契合了應用型人才的培養要求。
任務驅動教學法培養學生的計算思維 在任務驅動教學中,教師的教和學生的學都以完成一個具體任務為主線。教師提出問題,以任務的形式發送給學生;學生在接收到任務后對問題進行分析,最后得出解決問題的辦法,從而調動主動性和積極性,在問題解決中給出自己的看法,在同一個任務的不同解決方法中選擇最佳方法。多次的問題解決的嘗試,使學生具有了實際問題的解決的能力,培養了學生的創造性思維和程序設計的計算思維。
任務驅動教學法實施步驟 任務驅動教學是教師、學生、任務三者的積極互動過程。實施任務驅動教學法的第一步就是設計任務,這是此教學法得以實現的重要環節。任務的設計應遵循典型性、實踐性、針對性和系統性原則。而啟發引導工作是任務實施的關鍵,在任務實施過程中要引導并鼓勵學生在掌握理論知識的前提下主動思考,大膽探索。最后需要教師和學生一起總結任務完成過程中的問題,采用互評和自評的方式來發現問題,從而提出改進策略,使任務驅動法的效果更好地體現。
任務驅動教學法在C語言程序設計課程教學中的應用
1)任務提出及涵蓋知識點。
問題:將n個元素的無序序列調整為有序序列(使用簡單選擇排序算法)。
知識點:簡單選擇排序,循環程序嵌套。
解決此任務的方式:分組討論,寫出算法思想、撰寫程序代碼。
2)任務分析及實施
任務分析:
輸入:待排序序列r[n]
功能:簡單選擇排序
輸出:升序序列r[n]
簡單選擇排序的算法思想:假設將待排序元素進行升序排序,簡單選擇排序的基本思想是:將整個序列劃分為有序區和無序區,初始時有序區為空,無序區含有n個元素;在無序區中找到值最小的元素,將它與無序區中的第一個元素交換;不斷地重復上述過程,直到無序區只剩下一個元素。
給出一個簡單選擇排序的過程示例。
Source: (46 33 67 82 10 46 9)
Select Sort:
(9) 33 67 82 10 46 46
(9 10) 67 82 33 46 46
(9 10 33) 82 67 46 46
(9 10 33 46) 67 82 46
(9 10 33 46 46) 82 67
(9 10 33 46 46 67) 82
Result: (9 10 33 46 46 67 82)
程序代碼:由于一維數組作為參數,形參數組和實參數組共用同一段內存單元,對形參數組的修改即是對實參數組的修改,因此為了觀察排序的結果,在調用函數SelectSort之前和之后分別輸出數組r[n]的值。程序如下:
#include
#de fine N 7
void SelectSort(int r[ ], int n);
int main()
{
int i, r[n] = {46,33,67 ,82 ,10 ,46, 9};
printf(“排序前的序列是:”);
for(i=0;i printf(“%5d”,r[i]); printf(“
”); SelectSort(r,N); printf(“排序后的序列是:”); for(i=0;i printf(“%5d”,r[i]); printf(“
”); return 0; } void SelectSort(int r[ ],int n) { int i, j, index, temp; for(i=0;i { index=i; for (j=i+1;j if (r[j] index=j; if (index !=i) { temp=r[i];r[i]=r[index];r[index]=temp; } } } 3)效果總結與評價。將任務驅動教學法運用于程序設計課程中,學生在任務解決的過程中學習了枯燥的理論知識,學習興趣得以激發。同時,學生能將理論應用于問題的實現,在鞏固理論知識的同時將其應用于實際問題的解決中,鍛煉了實踐能力。任務驅動教學法對構建教學情境、提高教學效率起到很好的作用。 實踐證明,在向應用技術、技能型院校轉型的驅動下,在程序設計課程中應用任務驅動教學法符合課程體系改革中注重實踐教學的要求。有效地運用任務驅動教學法,能夠使學生對理論知識更容易理解和掌握,并能將算法思想輕松地轉換成程序設計語言,提高了C語言程序設計課程的學習效率。同時培養了學生的動手能力和實踐能力,使學生更容易與社會接軌,從而達到應用技術、技能型人才培養的要求。■ [1]李占宣.任務驅動教學法在數據庫教學中的應用[J].教育探索,2010,10(12):52-53. [2]劉向永,周以真.計算思維改變信息技術課程[J].中國信息技術教育,2013(6):5-12. [3]董榮勝.計算思維與計算機導論[J].計算機科學,2009,36(4):50-52.5 總結