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