王 磊,葉 軍,韓宇貞
(南昌工程學院 信息工程學院,江西 南昌 330099 )
周以真教授在2006年首次較系統(tǒng)地提出了計算思維的概念,認為計算思維是運用計算機科學的基本概念進行問題求解、系統(tǒng)設(shè)計和人類行為理解等一系列思維活動[1]。而抽象和自動化是計算思維的本質(zhì)和主要特征。2010 年7 月,教育部高等學校計算機基礎(chǔ)課程教學指導委員會在西安會議上發(fā)布了《九校聯(lián)盟(C9)計算機基礎(chǔ)教學發(fā)展戰(zhàn)略聯(lián)合聲明》[2],拉開了以計算思維為導向的計算機基礎(chǔ)課程教學改革的序幕。由此奠定了計算思維能力的培養(yǎng)在大學計算機基礎(chǔ)課程教學中的核心地位[3-4]。C語言程序設(shè)計是理工科專業(yè)大學生繼大學計算機基礎(chǔ)之后的又一門計算機公共基礎(chǔ)課程,該課程是從語言級的層面培養(yǎng)學生的計算思維能力。而作為計算思維培養(yǎng)具體立足點的編程不只是簡單的代碼編寫,更重要的是編程可將學生暴露在涉及運用諸如抽象和分解等計算機科學的概念解決問題的計算思維之中[2]。在應用型本科院校,以計算思維為導向的計算機基礎(chǔ)課程教學改革更要注重運用計算思維解決、分析專業(yè)領(lǐng)域問題能力的培養(yǎng)。體現(xiàn)在C語言程序設(shè)計教學中,就是要注重學生程序設(shè)計方法的培養(yǎng),突出用編程解決專業(yè)領(lǐng)域的實際問題,而不是孤立地掌握程序設(shè)計語言的語法知識點。目前不少同行在C語言程序設(shè)計的教學研究方面作了較多的探索[5-8],如文獻[6]系統(tǒng)總結(jié)了C語言程序設(shè)計課程中各章所涉及的計算思維培養(yǎng)點。文獻[7]從課程的建設(shè)目標、教學內(nèi)容與方法、資源建設(shè)、共建共享等方面闡釋了省級精品資源共享課C語言的建設(shè)與實踐。
程序設(shè)計是運用計算機解決問題的關(guān)鍵環(huán)節(jié),也是計算思維培養(yǎng)的重要方面。計算思維的本質(zhì)是抽象和自動化,在程序設(shè)計中,程序是對實際系統(tǒng)的抽象和建模,抽象的過程就是運用C語言對系統(tǒng)進行建模的過程[6],而自動化過程反映C語言程序設(shè)計的算法流程,反映問題求解的一系列確定的步驟。程序設(shè)計基礎(chǔ)類課程的教學目標是培養(yǎng)大學生的編程能力,將計算思維以程序的方式運用于問題求解之中。但是,由于不同的老師對計算思維融入C程序教學中的理解不同,可能在教學中會導致不同的效果,故梳理出計算思維培養(yǎng)點在C程序設(shè)計各章知識點中的分布是十分必要的,它有助于老師有針對性地進行融入計算思維的C語言教學。根據(jù)我?,F(xiàn)階段使用的孫輝教授主編的《C語言程序設(shè)計》教材及其教學內(nèi)容,基于以計算思維為導向的教學改革并借用了汪紅兵等[4]的提法分析和梳理了各章節(jié)的內(nèi)容、知識點及其對應的計算思維培養(yǎng)點,具體見表1。在課堂教學中應注重主要知識點和計算思維培養(yǎng)點的講授。
在激發(fā)學生的學習興趣、熱情和積極性方面,教師在教學過程中采取以下幾個方面的措施。
(1)在教學班級營造積極向上的學習氣氛。一個教學班級只要有大約10%的人能認真學習,就足以使整個班級的學風呈現(xiàn)出良好的勢頭。
(2)針對部分學生在入校前接觸個人微機較少以及計算機基礎(chǔ)知識較為缺乏這一實際情況,團隊老師應創(chuàng)造機會讓學生在機房做電腦的系統(tǒng)安裝和軟件安裝的實驗并鼓勵學生盡可能依靠電腦和網(wǎng)絡(luò)來解決安裝過程中存在的疑難問題。
(3)幫助學習C語言的學生在其個人電腦中安裝VC等C語言編譯器或者在智能手機上安裝C編譯器APP。目的在于能持續(xù)保持學生對C語言學習乃至用C程序解決實際問題的興奮點并就此加以引導。
(4)利用電話、QQ、微信等即時通信工具以及網(wǎng)絡(luò)教學平臺上的在線答疑欄目及時解答學生在課程學習中遇到的疑難問題和困惑。
(5)利用班級晚自習時間有針對性地進行輔導和答疑。
教師可依據(jù)學生的平時學習情況將學生分為3種類型,即一般學生、 中等學生和優(yōu)秀學生。然后針對不同類型的學生采取分類的輔導措施和方法。計算機基礎(chǔ)課程教學團隊采取的是關(guān)注和鞭策中等學生的策略,這樣可促使更多中等學生向優(yōu)秀學生轉(zhuǎn)化;而對成績優(yōu)秀的學生只需做到能及時解答他們學習過程中存在的疑惑。由于一般類型學生的自覺性較差,教師宜采取一些激勵措施去鞭策他們,以促使他們掌握一些初級的計算思維技能。
客觀上要求不同類型的學生使用不同的學習資源。借助網(wǎng)絡(luò)教學資源平臺提供面向不同層次學生需求的、形式上多樣、數(shù)量上繁多的學習資源,如開設(shè)有教學視頻、常見疑難問題解答、在線答疑、全國計算機等級考試C語言學習、專題講座、程序設(shè)計大賽練習平臺和計算機軟件水平考試學習等欄目。這些豐富的學習資源是對課堂學習的有益補充,它能使不同層次的學習需求得到較好的滿足。
在教學過程中擬構(gòu)建一個3層的以計算思維為導向的C語言教學平臺,如圖1所示,它體現(xiàn)了C語言教學中計算思維培養(yǎng)的3個層次。平臺的第一層是計算思維培養(yǎng)的基本要求,其中的課本練習題能及時鞏固和加深對語法規(guī)則和知識點的理解和掌握。課本練習題需以紙質(zhì)作業(yè)的形式提交給老師,而配套習題集上的選擇題、填空題和程序閱讀題則需通過網(wǎng)上教學平臺提交電子版答案。按時、獨立地完成各類作業(yè)和實驗報告是對所有學生的最基本要求,達到這個基本要求的學生通過期末考試是沒有問題的。平臺第二層中交互式的在線編程練習、以選修課形式開設(shè)的綜合性實驗項目以及等級考試編程題練習則是針對學習成績良好的學生而設(shè)置,以滿足較高的學習需求。而平臺第三層體現(xiàn)了C語言教學中計算思維培養(yǎng)的最高層次,是團隊老師在教學中應努力達到的最高目標,它是為優(yōu)秀學生進一步提升計算思維能力服務(wù)的,包括程序設(shè)計大賽、大學生創(chuàng)新創(chuàng)業(yè)大賽、互聯(lián)網(wǎng)+以及大學生科研計劃訓練項目等,旨在通過教學團隊老師指導挑戰(zhàn)杯大學生創(chuàng)業(yè)大賽項目、互聯(lián)網(wǎng)+大賽項目以及大學生科研計劃訓練項目等,使學習成績優(yōu)異的學生在計算思維能力上獲得更多的提升空間,并且能在上述的全國性大賽上脫穎而出為校爭光。
圖1 C語言教學中計算思維培養(yǎng)的3個層次
教師應通過嘗試各種有效的途徑來夯實學生的語法基礎(chǔ)知識,同時又要避免陷入重語法、輕編程的誤區(qū)。
在教學中應高度重視基本概念、語法規(guī)則和知識點的引入。對每一語法知識點的講解應輔以較多的例題,在課堂上應盡可能做到邊講邊練,如常量,變量,各運算符的運算規(guī)則、優(yōu)先級和結(jié)合性,各類表達式等知識點的講解。使大部分語法規(guī)則和知識點能在課堂上得以接受和消化。課堂教學中應引導學生分清楚哪些語法規(guī)則是人為規(guī)定的,這些規(guī)則是必須要強制記憶的,如各種運算符的符號表示、優(yōu)先級和結(jié)合性,各種數(shù)據(jù)類型的變量在內(nèi)存中所占字節(jié)數(shù),選擇語句、循環(huán)語句以及數(shù)組定義的語法格式等。而又有哪些語法規(guī)則是可以通過理解或類比進行記憶的,如各種數(shù)據(jù)類型的關(guān)鍵字及其表示數(shù)的范圍,選擇語句、循環(huán)語句的執(zhí)行流程,循環(huán)嵌套的規(guī)則等。對于前一類語法知識,必須加大記憶力度和重復的頻次方可牢記在心。而后一種語法知識則需通過一定的理解方可加深記憶。在教學的具體實施過程中應特別注重實驗等實踐教學環(huán)節(jié)的教學,實驗分為驗證性實驗、啟發(fā)性實驗和綜合性設(shè)計實驗三大類,在內(nèi)容編排上以驗證性實驗和啟發(fā)性實驗為主。通過實驗教學環(huán)節(jié)不僅能夠使學生加深和鞏固對語法規(guī)則和知識點的掌握,還可使學生能確實感受和領(lǐng)悟到用計算機求解問題的基本方法和思維模式。
將多種計算思維方法恰當?shù)厝谌隒程序設(shè)計之中是提高綜合編程能力的需要。在教學中采取了如下5個方面的措施以提高學生的綜合編程能力。
(1)在教學過程中注重從問題分析開始到算法流程圖設(shè)計,再到程序設(shè)計完整地講解一些典型的C程序設(shè)計例題,如不定方程求解、定積分求解、簡單的文本加密解密等問題的C語言解決方案。一方面可使學生熟悉運用計算機分析和解決問題的基本過程和思路,另一方面可使學生意識到通過編程能使計算機幫助人們正確、高效地完成一些繁瑣乏味的工作,并使學生能深刻地體會到擁有計算思維方法的重要性,從而提高其學習的自覺性。
(2)在教學過程中須十分注重通過逐步改變條件或增加條件的途徑來拓展課本上的已有例題程序,以提高學有余力同學的綜合編程能力,使其能夠做到舉一反三,觸類旁通。在拓展程序的過程中應考慮抽象、分解、迭代、轉(zhuǎn)換等計算思維技能的有機融入。現(xiàn)列舉兩例給予說明。
第一個例子是課本上求質(zhì)數(shù)例題的程序擴展,從判斷某一個給定的整數(shù)是否為質(zhì)數(shù)開始,然后推廣到找出某個范圍內(nèi)的全部質(zhì)數(shù)及其個數(shù),而確定這個范圍的兩個整數(shù)也可以從鍵盤輸入。再進一步,將判斷質(zhì)數(shù)的方法從質(zhì)數(shù)定義法擴展到采用其他方法判斷質(zhì)數(shù)如篩選法判斷質(zhì)數(shù)以及其他快速判斷質(zhì)數(shù)法。
第二個例子及其擴展闡述如下:
問題a. 輸入一個三位正整數(shù),要求在屏幕上顯示出該整數(shù)的百位數(shù)字、十位數(shù)字和個位數(shù)字。
問題a是在學習第二章(運算符和順序結(jié)構(gòu))時學生應完成的一道編程題,它體現(xiàn)了計算思維技能中的分解。學習了循環(huán)結(jié)構(gòu)的知識后該問題可擴展為:
問題b. 輸入一個不多于6位的正整數(shù),按逆序打印出各位數(shù)字。
問題b, c的思路是通過執(zhí)行一個while循環(huán)并借助于整數(shù)的取余運算(%)和除法運算(/)依次逆序地得到所輸入整數(shù)的各位數(shù)字并求和。在學生掌握以上方法后,還做了如下的一些擴展:
問題d. 求輸入整數(shù)的逆序整數(shù)。
問題e. 從鍵盤上輸入兩個不同的整數(shù),求這兩個整數(shù)范圍內(nèi)的所有回文數(shù)及其個數(shù)。
問題d的思路是通過執(zhí)行一個while循環(huán)以及整數(shù)的乘法運算(*)和加法運算(+)來求得輸入整數(shù)的逆序整數(shù)的。問題e是問題d的進一步擴展。上述問題中融合進了抽象、分解、迭代、再組合等計算思維方法。
(3)講解編程例題時注重采用多種方法來解決同一問題。例如,已知不同存期的銀行利息率,從鍵盤上輸入本金和存期,求存期到后的本息和。此編程題的關(guān)鍵是由存款期限得到對應的銀行利息率,利息率既可采用執(zhí)行多分支if語句得到,也可采用執(zhí)行switch-case-default語句得到,還可采用執(zhí)行if語句嵌套而得到。
再如,采用for循環(huán)方法求1~100的累加和共有9種方法,這里僅給出9種方法的for循環(huán)語句,其中方法1是使用for循環(huán)最常用的方法。
方法1.
int i, s=0; for(i=1;i<=100;i++) s+=i;
隨著經(jīng)濟的發(fā)展,人們生活的水平逐步提高,肥胖及三高的人數(shù)日益增多,癌癥患者低齡化的趨勢明顯,但是人們的體育意識在一定程度上沒有跟上時代發(fā)展的需要。提高全民素質(zhì)勢在必行,特別要提高學生的身體素質(zhì)。每周上一兩節(jié)體育課,課時少不能充分鍛煉學生的身體素質(zhì),不能充分培養(yǎng)學生積極參與體育活動的意識,因此課外體育輔導是改善體育教學現(xiàn)狀的有效手段。
方法2.
int i, s; for(i=1, s=0;i<=100;i++,s+=i);
方法3.
int i=1, s=0; for( ; i<=100; i++){ s+=i;}
方法4.
int i, s=0; for(i=1; ;i++){ if(i<=100) s+=i; else break;}
方法5.
int i, s=0; for(i=1;i<=100;){ s+=i; i++;}
方法6.
int i, s=0; for(i=1; ; ){ if(i<=100) {s+=i; i++;} else break;}
方法7.
int i=1, s=0; for( ; i<=100 ; ){ s+=i; i++;}
方法8.
int i=1, s=0; for( ; ;i++){if(i<=100) s+=i; else break;}
方法9.
int i=1, s=0; for( ; ; ){if(i<=100) {s+=i; i++;} else break;}
(4)期末考試是教學的重要環(huán)節(jié),是評判學生C語言學習以及編程能力的重要手段,它對學生平時的學習也能起到引導作用。為了促使學生在編程上多下工夫,目前改革了C語言考試的方法,一是進行了無紙化考試的改革和嘗試;二是在期末考試試卷中加大編程題的分值比例,編程題的分值比例已由以前的30%增加到現(xiàn)在的50%,編程題的設(shè)置應逐步做到以考核學生的運用C抽象實際系統(tǒng)的能力、系統(tǒng)建模能力和算法設(shè)計能力為主。
(5)在網(wǎng)絡(luò)教學平臺上提供一些簡單游戲(如俄羅斯方塊、推箱子、貪吃蛇等)的C程序源代碼,通過在VC開發(fā)環(huán)境下運行這些游戲程序,可進一步提高對程序設(shè)計有興趣的學生的編程積極性,這些源程序代碼還可作為他們進一步的學習和模仿之用。
近年來,大學計算機基礎(chǔ)教學團隊老師在我校實施了以計算思維為導向的C語言教學方法并取得了可喜的成績,主要體現(xiàn)在以下5個方面。
(1)C語言程序設(shè)計課程的期末考試成績提高幅度較大,在編程題分值比例提高的情況下補考率由原來的35% 降低到10%,該課程已經(jīng)退出補考率最高的前10課程排行榜。
(2) 我校學生參加全國計算機等級考試二級C的通過率得到明顯的提高,合格率由前幾年的平均值20%提升到目前的36%,優(yōu)秀率則由以前的1%提高到目前的5%,操作題的得分由過去的不滿20分提高到現(xiàn)在的36分左右。
(3)提高了我校學生對C語言程序設(shè)計的學習興趣和熱情,學生的編程能力普遍得到提高。
(4)C語言程序設(shè)計這門課的學生評教的平均分數(shù)在92 分以上,而以前則在90分左右。表明我校學生對該課程的滿意度有所提高。
(5)我校學生在國家級大賽的獲獎上實現(xiàn)了零的突破。
C語言程序設(shè)計課程的教學是應用型本科院校學生計算思維能力培養(yǎng)的重要方面,計算機基礎(chǔ)教學團隊老師結(jié)合我校的實際情況,從激發(fā)學生的編程興趣,打造不同層次需求的學習平臺,夯實學生編程的語法基礎(chǔ),提升學生的綜合編程能力4個方面系統(tǒng)地探討了C語言程序設(shè)計教學中計算思維能力的培養(yǎng),并經(jīng)實踐證明達到了良好的效果。雖然取得了一定的成績,但距離培養(yǎng)學生計算思維能力的教學目標仍然有不少的差距。今后將著手構(gòu)建一個客觀可信的學生編程能力和計算思維技能的評價體系。