?

注重計算思維的程序設計課程研究性教學探討

2016-12-21 11:54徐晶周彩英盧雪松楚紅
電腦知識與技術 2016年28期
關鍵詞:研究性教學計算思維程序設計

徐晶+周彩英+盧雪松+楚紅

摘要:培養計算思維是培養復合型創新人才的重要內容之一。該文結合我校非計算機專業程序設計課程教學的實際,以C語言程序設計課程為例,整合教學內容,對基本語法的問題式教學、基本控制結構的案例教學及模塊化設計的任務驅動教學等研究性教學法進行探討,旨在培養學生的計算思維能力,進一步提高學生的創新能力。

關鍵詞:計算思維;程序設計;研究性教學

中圖分類號:G424 文獻標識碼:A 文章編號:1009-3044(2016)28-0150-03

1 背景

1.1 計算思維

“計算思維”一詞早在2006年美國卡內基梅?。–MU)的周以真教授就給出了定義,其本質是抽象和自動化。周教授強調計算思維不僅屬于計算機科學家,而應是每一個人的基本技能。[1]2010年我國九校聯盟會議也發表聲明指出,培養復合型創新人才的一個重要內容就是要潛移默化地培養學生養成一種新的思維方式——計算思維。[2]

1.2 研究性教學

高等教育的任務是培養具有創新精神創新能力的高級專門人才。研究性教學作為一種開放式教學模式,是本科院校培養人才的重要途徑。2000年以來,教育部先后出臺“關于加強高等學校本科教學工作提高教學質量的若干意見”等文件,都明確提出積極推動研究性教學,提高大學生的創新能力。[3]各高校積極將研究性教學理念融入到教學改革中,積極探討研究性教學的理論與實踐模式。

由此可見,在當今信息技術時代,培養學生的計算思維能力是培養具有創新能力的人才的必要條件。在積極實踐研究性教學改革過程中,不斷滲透計算思維的思想,培養學生計算思維能力,是一項非常有意義的重要任務。

2 我校計算機基礎教學的現狀

為應對高校計算機基礎的教學改革,我校對計算機基礎課程的教學做了改動,非計算機專業學生第1學期先行開設大學計算機基礎課程,第2學期開設程序設計課程。這樣使新生在了解計算思維的概念后,能有意識地使用計算思維去思考問題、去解決一些基本問題,同時對后續開設的程序設計課程有一定的鋪墊作用。

我校在研究性教學初步實踐的基礎上,現已在18個專業全面開展研究性教學改革,計算機公共課教學也在此列中。將研究性教學改革應用于程序設計課程,正好解決了目前非計算機專業程序設計課程教學過程中尷尬局面,其一是教學過程中偏重語法講解,內容多、晦澀難懂;其二實驗課時少,學生編程能力和調試能力差等。

程序設計課程正好也是訓練學生計算思維能力的一個重要平臺。因而,如何在程序設計課程的研究性教學中訓練學生的計算思維能力,又如何利用學生的計算思維能力促進程序設計課程的教學改革,則是我們計算機公共課教學工作者要積極思考并付諸實踐的重要課題。

3 注重計算思維的程序設計課程研究性教學探討

我們在非計算機專業開展注重計算思維的程序設計課程(以《C語言程序設計》課程為例)研究性教學,是以培養創新人才為目標,激勵和引導學生主動發現問題、分析問題和解決問題,在以教師為主導、學生為主體的探究過程中運用計算思維的方法獲取知識、訓練思維、培養能力。

根據計算思維和研究性教學的特點,我們從本校實際情況出發,實施C語言程序設計課程研究性教學以課堂研究性教學為主,且又不僅僅局限于課堂中,輔以學生自主探究、合作學習、網絡自測、觀看視頻。對教學內容進行整合,將課程內容分為幾個階梯式的程序設計階段,依次是語法基礎、基本控制結構、模塊化程序設計等。教學過程中,根據具體教學內容靈活運用適合于研究性教學的方法和手段,如問題式教學法、案例教學法、任務驅動教學法等,激發學生的學習興趣,注重解決實際問題的程序設計思想與方法,注重計算思維能力的培養。

3.1 基本語法的問題式教學,培養計算思維能力

問題式教學通過提出一系列問題來組織教學內容,把問題貫穿于教學過程的始終。古人云“學起于思,思源于疑”,問題、疑問是思維的“啟發劑”。我們首先要創設問題情境,激活學生思維;交流討論,啟發學生反向思維;解決疑問,學會計算思維的方法。

C語言的基本語法、基本控制結構本身就蘊含著重要的計算思維。[4]我們通過不斷設問、反問,來逐步分析、挖掘、探索C語言語法的知識內涵,讓學生領悟語法定義的目的、形式和使用方式。這樣讓學生既學到了C語言基本語法,又有利于在使用過程中少犯錯誤,即使出現語法錯誤也能快速找出癥結所在。

示例問題:將華氏溫度轉換成攝氏溫度。轉換公式:C=5.0/9*(F-32),其中F為華氏溫度。

講解示例,首先設問“如何告訴計算機所要完成任務?”,當然用符號表示(即符號化),這是一次抽象的過程。再問“直接輸入轉換公式,計算機能識別公式中的符號嗎?”,演示發現系統會報錯,無法識別F和C。接著問“怎樣讓系統接受未知的數據?”及“在C語言中如何“介紹”新數據?”,此時讓學生去自學、討論數據對象的命名規則及基本數據類型,并帶著問題“為何不能將形如int、1st、W.Join作為對象名(用戶標識符)?int和Int在有何區別?”去思考。通過討論最終確認,使用“float F,C;”來聲明兩個實型變量F和C。這又一次的抽象使學生不僅學到了知識,而且還體會計算思維的確定性和形式化。

聲明變量后,設問“能運行并得到正確結果嗎?答案是多少?”,此時讓學生手算或心算,有人發現F的值未知,無法計算。但教師演示系統卻未報錯,提問“為什么?”學生帶著好奇,教師道出原因,讓其進一步了解變量的含義。為得到正確結果,需要先為F賦值,設問“怎么賦值?”,學生回答“F=50”,教師給予肯定的同時反問,這樣系統每次運行得到的結果會怎樣?讓學生發現這樣的程序不具備通用性,由此引出C語言的輸入輸出庫函數。

以問題為中心的教學示例中,將學生思考、討論和教師講解、點評有機地結合起來,師生在互動中學習、探究,教師引導學生積極主動地獲取知識,學生通過基本語法的學習也培養了計算思維能力。

3.2 三種控制結構的案例教學,強化計算思維能力

案例的選取是案例教學中的關鍵因素,[5]選取的案例所反應的知識點要豐富,具有針對性、啟發性和擴展性,應由簡單到復雜。針對結構化程序設計思想中的順序、選擇和循環三種結構,通過抽象問題、分組討論、集中討論和總結反思等環節,使學生在案例分析的過程中體會計算思維的特征,強化計算思維能力。

案例1,已知三條邊長,求三角形面積。[6]

學生課前準備案例時,收集或查找各種計算三角形面積的方法。在小組討論時每位學生給出不同的解題思路,相互間指出問題,比較哪種算法描述更簡潔。課堂教學時采用集中討論,每組推選代表簡述討論結果,由教師和其他組學生給予評價。教師在教學過程中不斷啟發學生、鼓勵學生,同時給出總結,比如該案例使用海倫公式計算是較方便的方法,使用語言描述算法時注意的語法規則。如果有小組提出“三邊能否構成三角形”問題,則應大力表揚,促使學生提高思維的縝密性和嚴謹性,同時順理成章地引入分支結構。

案例2,比較兩位學生的成績,輸出最高分。如果人數擴展到3人、N人,如何找出最高分?

案例第1問解決思路非常清晰簡潔,使用1次雙分支結構即可,至少兩種描述方法:if-else和switch-case結構。當比較人數擴展到3人時,和學生探討出多種描述算法,既可以使用嵌套的分支結構,也可兩次使用分支結構。通過討論可以開闊學生的思路,又促使學生主動思考,鼓勵思維的多樣性。案例的最后一問是難點,教師應給予指點,讓學生帶著問題“N個成績如何存儲?使用N個簡單變量可行嗎?N個成績需要比較多少次?”去查資料、思考,有思路也有困惑?!癗個成績比較N-1次找出最高分”答案是肯定的,但數據存儲是難點。一種思路是用數組,引入數組的概念,為下一章做好鋪墊;另一種思路依舊用簡單變量,但用N個簡單變量是不現實的,引導學生縱向思考,每次存放一個成績,重復N次即可,引入循環結構。解決方案是用兩個變量,擂臺思想,循環N-1次就能找出N個中的最高分。

通常我們設計的教學案例都不是很復雜,讓學生努力一下能解決,但是要具備多樣性和擴展性,讓學生從不同角度認識問題,用不同方式描述算法,用不同方法實現問題求解。用程序設計語言描述、解決問題,正是將人的日常思維轉換到計算機思維的過程。

3.3 模塊化設計的任務驅動教學,提高計算思維層次

任務驅動教學是一種建立在建構主義學習理論基礎上的教學模式,[7]它以教師為主導、學生為主體,教、學雙方都圍繞若干項任務展開,在求知欲的驅動下,學生采用自主探究和協作學習方式,根據對任務的理解,運用共有知識和已有經驗提出解決方案、完成特定任務。

將任務驅動教學法應用于程序設計課程教學的后半期,此時學生已具備一定的程序設計基礎知識和計算思維能力,教師把精心準備的小系統(如一元多項式運算系統、基本算術運算測試系統、矩陣運算系統及小規模信息處理系統)的開發任務,分配給每個協作小組,也可讓小組(或組長)從若干任務中挑選。

每個小組接到不同任務后,結合系統設計要求,采用自頂向下、逐步細化、模塊化的方法,設計系統的總體結構,包括系統的基本處理流程、組織結構、模塊劃分、功能分配、接口設計和數據結構設計等。比如一元多項式運算系統,其設計要求是實現一元多項式的加、減、乘、除運算。從表面上看系統應由1個主模塊和4個子模塊組成,起主導作用的教師要引導學生運用計算思維的關注點分離、抽象和分解的方法進行分析。為了能進行運算,首先要輸入一元多項式,運算結束后要輸出一元多項式,增加輸入、輸出兩個子模塊。在實現四種運算時,引導學生使用計算思維的約簡、嵌入、轉化等方法,將其轉化成合并同類項、降冪排列、刪除系數為0項等問題,又需增加4~5個功能模塊。在任務驅動下,協作小組成員通過參考書、網絡等自主檢索、探究、思考、討論,對每個模塊進一步細化,確定每個模塊的具體功能,畫出系統的組織結構圖和基本處理流程。在設計數據結構時,小組成員討論是從已會的一維、二維數組中選擇,還是從未學的結構數組、鏈表中選擇,既要考慮能便于數據的處理,又要考慮組內成員的水平,因為每個系統需組內成員分工協作才能完成。組長此時可以協調,先用一維數組實現,后期也可在素質較高的學生帶領下使用鏈表等實現,這樣小組成員相互協作、相互啟發、共同提高,體現團隊合作的理念。

每位成員領取分解的任務后,根據共同確定的數據結構和模塊接口的描述,對具體子模塊進行詳細設計,給出詳細的算法描述。然后,分組討論每位成員的算法可行性,以及與其他子模塊之間的調用關系,如遇到解決不了的問題,教師可參與討論,給予一定指導,調動大家的積極性。算法確定后,每位學員根據算法編寫代碼并寫出設計報告。協作小組成員再集中交流各自完成的情況,由組長集成系統代碼,組員一起參與調試過程,發現問題解決問題,共同進步。每位學員按照報告模板提交各自的設計成果,采用答辯的形式在班級討論課上進行匯報。答辯過程中,教師和其他學生可以提出看法和觀點,教師應對答辯學生的講述和提出異議的觀點進行正誤的分析,因為學生為了完成這項任務都是深思熟慮的,教師及時地分析總結歸納,不僅使學生對所學知識的鞏固,而且進一步擴展學生的計算思維能力。

采用任務驅動教學法不再強調系統開發的成功與否,而是強調學生在系統設計過程中的收獲。每位學生通過對具體問題分析、討論、解決,不斷訓練自己的計算思維能力,通過以小組方式進行一個小規模系統的設計,將學生的計算思維能力提高了一個層次。

4 結語

在程序設計課程研究性教學過程中不斷滲透計算思維的思想,更加利于學生對知識的掌握,同時利于提高計算思維能力,推動學生創新能力的進一步發展。我們從學校實際出發,提出整合教學內容,對基本語法的問題式教學、基本控制結構的案例教學及模塊化設計的任務驅動教學等研究性教學法進行探討,以期使教師能夠擺脫教材束縛,將理論與實驗課時、課內和課外充分利用,更好地發揮教學的自主性,促進學生的計算思維能力的提高。

參考文獻:

[1] Jeannette M.Wing.Computational Thinking[J].Communications of the ACM,2006,49(3):33-35.

[2] 何欽銘,陸漢權,馮博琴. 計算機基礎教學的核心任務是計算思維能力的培養[J]. 中國大學教學,2010( 9):5-9.

[3] 徐風生. 研究性教學的理論探討與實踐[J]. 高等理科教育,2012(6):44-48.

[4] 徐新海,林宇斐. 注重計算機思維的啟發式C語言語法教學[J]. 計算機教育,2014(9):1-4.

[5] 唐芳. 案例教學法與任務驅動教學法的比較[J]. 順德職業技術學院學報,2011(10):36-37

[6] 周彩英. C語言程序設計[M]. 北京:清華大學出版社,2011.

[7] 牟琴,譚良,周雄峻. 基于計算思維的任務驅動式教學模式的研究[J]. 現代教育技術,2011(6): 44-49.

猜你喜歡
研究性教學計算思維程序設計
基于Visual Studio Code的C語言程序設計實踐教學探索
從細節入手,談PLC程序設計技巧
水質工程學課程群研究性教學改革與實踐
研究性教學理念下的普通心理學教學改革
高職高專院校C語言程序設計教學改革探索
程序設計課程中計算思維和應用能力培養問題研究
PLC梯形圖程序設計技巧及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合