陳浩強 吳紅燕 許龍珠 梁振
摘要:文章以培養(yǎng)學生計算思維能力的方法策略為出發(fā)點,提出了以問題為主導的計算機程序設計課堂教學思想。這種教學思想著重訓練學生圍繞問題展開學習的思維模式,培養(yǎng)學生在面對問題、分析問題、解決問題和預防問題的決策能力和行動能力。文章對以問題為導向的教學思想在實際教學中可能出現的問題提出了一些建議和措施。對教學過程中幫助學生構建良好的知識應用能力有非常重要的意義,為計算思維的“落地”實施提供了一個思路。
關鍵詞: 計算思維;計算機程序設計;教學思想
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)26-0123-02
Abstract:In order to train students' ability of computing thinking, this paper puts forward the problem-based classroom teaching idea of computer programming. This kind of teaching thought focuses on training students' thinking mode of learning around problems, and cultivating students' decision-making ability and action ability in facing, analyzing, solving and preventing problems. This paper puts forward some suggestions and measures for the possible problems in the practical teaching of the problem-oriented teaching thought. It is of great significance to help students build a good knowledge application ability in the teaching process, and provides a way for the "landing" implementation of computing thinking.
Key words:computational thinking; computer programming; teaching thought
計算機程序設計基礎課程是教育部規(guī)定的公共基礎課,無論是否計算機專業(yè)都必須開設,是大學計算機基礎教學系列中的核心課程,主要講授程序設計語言的基本知識和程序設計的技術與方法[1]。
隨著計算機和計算機應用技術的不斷發(fā)展和普及,高校公共課計算機程序設計課程面臨的情況也發(fā)生了較大的變化。學生們已經不再是普遍零基礎的狀態(tài),對于計算機的陌生感和新鮮感也越來越少。雖然學生對計算機技能的掌握還有較大的差異性,很多的學生能快速掌握常用軟件的技能技巧,于是也越來越傾向于把計算機程序設計課作為純粹的考試課程。甚至有不少對計算機領域不甚熟悉的老師們也愈加傾向于把計算機課程當作是純粹的工具軟件學習[2]。
本文從問題出發(fā),針對學生的認知規(guī)律進行了以問題為教學核心的一些嘗試,獲得了不錯的效果。
1 以問題為主導的教學思想
當前高校計算機相關課程的教學,已經從單純的知識學習轉向以計算思維為總的培養(yǎng)目標[3]。作者認為計算思維的培養(yǎng),就是在通過程序設計解決問題的過程中進行最為恰當。計算思維的能力體現也應該是落實在解決問題上[4]。從“問題”這一思路來看,程序設計課程的最大特色就是“基礎知識—分析問題—解決問題”得到了非常充分的體現。這個過程需要根據已有知識對問題建立模型并多層次、多角度分析。從思維模式方面看,程序設計也是一個在不斷重復的思考訓練的過程,非常接近計算思維的重要特點。[2]從這個角度看,程序設計相關的課程更加適合對計算思維進行一系列有效訓練。
作者從“問題”這個關鍵點入手進行了課程設計,把問題作為教學的主導關鍵詞。在以問題為主導思想的教學活動中,強調發(fā)現問題、分析問題、解決問題、總結問題,在總結問題的環(huán)節(jié)還會不斷強調“預防問題”的重要性[5]。通過科學的、不斷重復的編程解決問題思考訓練,能使學生深刻體會計算機程序設計解決問題的特點,從而進一步形成計算思維。
在以“問題”為主導的教學實踐過程中,作者在基礎知識的學習前,先把實際項目的具體問題需求拋出給學生思考和討論,讓學生明確地意識到,接下來的基礎知識都是在為解決這些問題做準備。中間穿插的例題,都可以被認為是大問題分解出來的一個個小問題,是基礎知識在問題中的體現。這些問題同樣可以按照 “問題提出-問題分析-問題實施-問題總結”這一流程展開。學習完成這些例題(問題)后的總結中,可以按實際生產環(huán)境中大的軟件項目的一部分帶入思考,也可以把人文思政相關的內容穿插導入。
比如以程序設計課程中常見的問題“求一維數組最大值、最小值”為例。
可以先請同學們描述一下平時生活中有哪些類似的場景,自己是如何解決這個問題的,然后把這個問題解決的過程細化,分解成一個個步驟(子問題):先把第一個數作為“最大值”,再把后面的數據和這個“最大值”逐個比較,如果某一個數比“最大值”還要大,那就把目前為止真正的最大值作為“最大值”記錄下來,直到最后,就能得到最大值;
那么解決問題就需要逐個訪問數組的每一個元素、需要一個保存“最大值”的變量、需要在逐個訪問數組元素的時候進行比較,根據需要修改“最大值”,最后還需要輸出這個最大值。最大值能夠求解出來,最小值同樣可以以類似的步驟求得。接著就可以把這些子問題的解決方案,按程序設計語言的語法規(guī)則進行描述得到代碼,運行測試。
在總結的時候,要求同學們回顧整個問題得到解決的過程,反復查看各個子問題以及它們是如何被組合在一起的。
主導思想進行了一系列調整,例題就變得充實起來,可以把相關的系列基礎知識以點帶線連成一片。既能讓學生體會到基礎知識在解決實際問題中的有效作用,也能把相關的思考分析過程、調試技術在問題過程中的作用充分展示。在總結回顧問題的過程里,還可以利用程序設計自頂向下的設計特點讓學生體會到全局—局部思考方式。進一步可以引入日常工作、生活中可能遇到的類似事例,讓課堂變得輕松活躍。
面向問題的教育教學總體目標是希望學生面向任何問題,能根據現有知識合理地解決它的一系列子問題,然后逐個攻克這些子問題,從而完成這個大問題。換句話說,就是讓學生能夠具備獨立發(fā)現問題、解決問題的能力,并且可以把這種能力靈活運用到日常生活中去。
2 教學中可能出現的問題
在作者開展以“問題”為主導的教學活動以來,也遇到了一些問題,主要包括以下幾個方面。
2.1 可能會造成以教師為主導的情況
這個問題是因為“問題”的全過程都需要老師進行鋪墊、引導和展開,老師就是事實上的主導。要想緩解這個問題,需要教師根據自己的教學經驗充分利用當前主流的MOOC、翻轉課堂等教學手段,需要老師按照學生的認知規(guī)律安排教學。老師要努力讓學生也能積極參與進教學環(huán)節(jié),盡量避免老師臺上講,學生木然聽的情況。作者就經常設計互動環(huán)節(jié),對于無法回答的學生,也可以請他們邀請“外援”給出相應問題的“線索”。這也是一個“有意義的學習經歷[6]”中的重要部分,是學生開始時懼怕,但事后又覺得喜聞樂見的。
2.2一個普通的問題,可能會變得“復雜”起來
當問題、子問題一個個被提出、展開和總結的時候,問題就會變得比較“復雜”,對教學時間占用較多;甚至引起部分學生對問題的懼難心理。
這是以問題為主導的教學圍繞著問題精講的特點,解決思路是適當安排知識的先后邏輯,抓大放小?;A知識可以少講、在實際問題中講,甚至可以不講,也可以以作業(yè)的方式布置給學生,老師盡量在“問題”(應用例題)中講解基礎知識的用法和特點。
為了不讓“問題”場景變得過于復雜,授課參考材料的安排應該盡可能以學生實際使用的教材為基礎進行展開,這樣的安排也有利于同學們課余學習和深入思考。
另外,作者也特別強調把問題變成“故事”的思考方式:解讀問題可以變成講故事、分析問題可以變成講故事、解決問題也可以變成講故事、查閱程序代碼也一樣可以變成講故事。作者在介紹問題的全程,盡可能用樸素自然的語言去描述,中間盡可能穿插該問題在生活中的類似場景,從而把“問題”分析過程變得比較形象化。
除了老師自己按“講故事”的方式描述問題,作者還要求學生在遇到問題的時候要盡可能第一時間使用“講故事”的思考方式,以有邏輯的、形象化的故事代替嚴謹卻稍顯枯燥的邏輯推理。只要“故事”講得好、講得通,就是比較容易長久留存在記憶里的信息,程序設計也就不再那么“復雜”和“枯燥”[7-8]。
基于這個“講故事”的思考方式,結合程序設計解決問題的特點,作者常常把程序設計課比喻為“刑事偵查”課,深得學生們的贊同。
2.3 只有美好的過程,考核怎么辦?
這個解決也同樣可以適用“問題”為主導的教學思路,那就是把各種考核也當成是一個個問題,按照“問題”的解決四步推進,先把這個問題分解為一個個子問題:怎么考、考什么、要不要考好、怎么才能考好、需要準備哪些、怎么推進……能提出合適的子問題,那就可以一步步解決了。
而且,事實上當前各大高校積極不斷地深耕教學改革,已經充分考慮到過程考核占比的問題,不少高校的計算機程序設計課程考核已經優(yōu)化培養(yǎng)方案,適當提高了過程考核的比重。即使過程考核占比不足的情況下,教師也能制定一個過程占主導的平時成績策略,讓課堂教學過程更具有吸引力。
3 結束語
本文提出的以問題為主導的程序設計課程教學思想,著重把精力放在引導學生發(fā)現問題、分析問題、解決問題并進行一系列總結分析。事實上,以問題為導向的教學過程本身,也是計算思維的一種應用。是把培養(yǎng)學生計算思維能力的這個目標作為了問題,在平常的教學活動中充分利用比較成熟的教學思想、教學技術和教學手段朝著完成這個目標進行的教學設計。
以問題為主導的計算機程序設計課程教學活動以對學生多次重復進行思維訓練的方式讓學生逐漸養(yǎng)成習慣,以求達到本能情況下就能拿來使用的目的,這與計算思維的運用特點不謀而合。[4]以問題為主導的程序設計課堂教學活動可以讓計算思維這一目標以比較自然的方式往前推進,又便于融入人文思政元素,不失為一種切實可行的教學思路。本文是在作者在多年軟件開發(fā)經驗、不斷進行計算思維訓練的基礎上形成的一些想法,也在實際教學活動中進行了一部分實踐嘗試和探索,希望能對高校計算機程序設計課程的教學提供些許思路。
參考文獻:
[1] 教育部高等學校計算機基礎課程教學指導委員會.高等學校計算機基礎教學發(fā)展戰(zhàn)略研究報告暨計算機基礎課程教學基本要求[M].北京:高等教育出版社,2009.
[2] 陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學,2011(1):7-11,32.
[3] 鮑潔.新時期大學計算機教育改革前沿動向——第八屆全國高等學校計算機教育改革與發(fā)展高峰論壇(計算機基礎教育部分)綜述[J].計算機教育,2013(7):17-20.
[4] 趙蔚,李士平,姜強,等.培養(yǎng)計算思維,發(fā)展STEM教育——2016美國《K-12計算機科學框架》解讀及啟示[J].中國電化教育,2017(5):47-53.
[5] 周艷麗.基于“問題主導”的翻轉課堂教學模式在醫(yī)用高等數學的探究[J].教育教學論壇,2020(13):254-255.
[6] 賀利堅.一種融入課程思政的理工類專業(yè)課教學設計方法[J].計算機教育,2019(11):7-10,15.
[7] 劉列斌.大腦記憶規(guī)律在英語詞匯教學中的運用[J].安徽工業(yè)大學學報(社會科學版),2004,21(2):85-86.
[8] 王雪莉.記憶心理學與外語教學——利用記憶機制提高外語課堂教學效果[J].北京第二外國語學院學報,2002,24(3):16-20.
【通聯編輯:唐一東】