崔容容 唐琳 任艷焱
摘要:隨著信息技術的發(fā)展,學習編程語言的重要性日益加大,C語言作為眾多編程語言之首,是赤峰學院理工樓應用型人才培養(yǎng)的計算機基礎課程,本文結合C語言程序設計課程教學實際,提出現(xiàn)有模式下亟待解決的問題,在教學、考核等方面加以改革實踐,以“學習興趣小組”為載體,激發(fā)學生的學習興趣,培養(yǎng)學生的編程技能,思維模式,增加學習主動性,自主探究能力,提出套路教學法,進一步訓練學生解決問題的能力.
關鍵詞:C語言;教學改革;實踐
中圖分類號:G642? 文獻標識碼:A? 文章編號:1673-260X(2020)02-0102-03
隨著信息技術的不斷發(fā)展,與現(xiàn)代計算機共同誕生、并肩發(fā)展的程序設計語言作為人機交互的重要工具,在經歷了“機器語言、匯編語言、高級語言、第四代語言”四個發(fā)展階段后,早已經形成了龐大的語言家族體系,編程語言已不再是計算機類專業(yè)人士的獨寵.對于理工類大學生而言,必備的一項技能就是需要掌握一門高級編程語言.時至今日,高考試題中也已經涵蓋了算法流程的知識內容,甚至小學生、初中生都在學習編程.而國際信息學奧林匹克競賽(簡稱:IOI)更是面向中學生的一年一度的信息學科競賽,該項比賽內容為通過設計計算機程序來解決實際算法問題,參賽選手從各國相應計算機競賽中選拔.中國青少年計算機程序設計競賽(簡稱:NOI,后更名為全國青少年信息學奧林匹克競賽系列活動)由中國計算機學會于1984年創(chuàng)辦,旨在向中學生普及計算機科學知識,給學校的信息技術教育課程提供動力和新的思路,給那些有才華的學生提供相互交流和學習的機會,通過競賽和相關的活動培養(yǎng)和選拔優(yōu)秀計算機人才[1].學習計算機語言,不僅可以培養(yǎng)學生的科學精神,鍛煉學生的思維方法,養(yǎng)成嚴謹踏實的學習研究作風,更能夠訓練學生分析問題、解決問題的能力,由此看來,計算機程序設計語言,不僅是人機交互的工具,更是幫助我們解決問題的工具,而學習程序設計語言,不管是從時代發(fā)展需要的角度還是從自身能力提高的角度,都顯得極為重要.
C語言自1972年誕生至今,一直占據(jù)編程語言的前列,主要原因在于它的穩(wěn)定性,以及與底層結構運算、硬件信息交互方便.例如與C++相比它能夠避免因為過多引入子集而給開發(fā)人員帶來的額外負擔,大多數(shù)高校均把C語言程序設計作為計算機基礎課程、理工類通識課程,它已經成為學生學習編程的第一門計算機高級語言.通過對它的學習讓學生形成編程的思路和基本常理,以便解決實際的問題.赤峰學院作為地方應用型本科高校,也為計算機及理工類專業(yè)學生開設“C語言程序設計”這一課程,隨著新時代科技的變遷以及學校轉型發(fā)展的需要,以往的教學方法和手段,對于培養(yǎng)應用型人才來說顯得有些捉襟見肘.本文從C語言程序與設計課程的實際教學情況入手,總結多年C語言授課經驗,深入分析教學中的不足,就“如何通過C語言的教學來培養(yǎng)學生的專業(yè)認同感,幫助學生樹立良好的編程思想和計算思維,訓練學生解決問題的能力”這一問題進行了探討與實踐.
1 C語言程序與設計教學現(xiàn)狀
C語言程序設計課程是計算機及其相關專業(yè)開設的必修課程,是學習高級程序設計語言的首選.但在教學過程中卻發(fā)現(xiàn)學生學不懂、弄不透、死記硬背、編程能力弱等問題.為此,以我校計算機科學與技術專業(yè)為例,歸納以下幾點問題:
1.1 思維方式轉變難
大一的學生對于計算機的認識大多停留于上網(wǎng)沖浪、資料查詢和游戲,對于專業(yè)知識知之甚少,C語言作為學生邁入大學的第一門計算機語言課程,同期只開設了計算機應用基礎課程,雖然能夠簡單了解計算機的組成和不同進制之間的轉化,但并不透徹,沒有計算機組成原理和操作系統(tǒng)等專業(yè)基礎課程的知識積累很難理解內存、存儲地址、指針等概念,對于后續(xù)指針章節(jié)的理解更是難上加難.同時C語言語法較靈活,規(guī)則較多,學生在初始編程時會出現(xiàn)很多語法錯誤,一定程度上也打擊了學生的積極性,很多學生表示C語言聽不懂,無法理解用生澀的語言符號解決實際問題,甚至有些同學在幾次課后就產生了排斥的心理.
1.2 知識點多、課時少
C語言主要講授編程書寫規(guī)則、分支結構、循環(huán)結構、函數(shù)、數(shù)據(jù)類型和表達式、數(shù)組、指針、結構、函數(shù)與程序結構、指針進階、文件等方面的知識點,由于課時限制只能講解概念和一些簡單應用,給后續(xù)課程中涉及的知識造成影響,例如數(shù)組問題沒有掌握好會影響到數(shù)據(jù)結構中解決哈希表的問題.同時現(xiàn)在老師基本采用多媒體教學,方便、快捷的同時也忽略了信息大量的灌入給學生的理解和應用帶來的負擔,學生很難在眾多信息中提取重點和難點,實踐課時少,很多同學能讀懂程序,但自己編寫的時候腦子一片空白.隨著智能手機的普及,學生習慣于應用單手在屏幕上打字,很少應用鍵盤輸入,輸入中文很快,但鍵入英文的速度慢,對于長一些的程序一節(jié)課下來有些同學甚至無法錄入完成,更談不上調試.
1.3 教學方法單一、案例陳舊
目前,C語言程序設計課程教學內容陳舊,仍然以全面的語法講解為主,課程教學內容往往不能滿足實際需要.雖然采用講練結合的授課方式,但案例基本采用課本的實例,課堂氣氛沉悶,教師和學生沒有交流溝通,忽視了學生自身編程思維的培養(yǎng),學生很難提起興趣,同時在講授期間沒有顧忌到知識點的延伸性不夠,學生感覺不到它的用途,甚至覺得學而無用.課堂教學中重語法,輕算法,無法培養(yǎng)學生的思維意識和創(chuàng)新能力.
2 教學方法的探索與研究
2.1 加入SPOC的教學模式
目前MOOC平臺基本包括了計算機專業(yè)的所以基礎課程和專業(yè)課程,為了便于管理,可采用SPOC的模式對MOOC的學習加以控制,可有效改善學生在MOOC學習中缺乏自學約束的缺點.制作小片段的教學視頻,時間一般控制在10-15分鐘之間,小片段的教學視頻有利于學生保存,實現(xiàn)教學資源的便捷傳輸,同時符合學生的學習規(guī)律和認知特點.教師可在課前發(fā)布視頻資料,讓學生簡單了解本次課內容,結合線下教學讓學生弄懂弄會每個知識點,課后安排作業(yè),檢查學生的學習情況,對于知識掌握好的學生可以增加習題難度,做到因材施教.這種方法可有效改善解決課時少的問題.教師可采用任務驅動的教學方式,推薦優(yōu)秀的MOOC資源給學生,培養(yǎng)學生良好的自習意識,使學生的學習興趣得以激發(fā).
2.2 建立新型的教學模式
教師在平時教學中調整教學方法,以學生感興趣的小程序(貪吃蛇、俄羅斯方塊等)帶動學生的積極性,看懂代碼,再加以改進創(chuàng)新,有意識地加強培養(yǎng)學生運用知識分析與處理實際問題的能力.教學方法上課采用問題教學法、案例驅動法、課堂討論法等等.對學生而言,則要求其將學習精力轉移到對知識的系統(tǒng)理解和運用上.結合教學現(xiàn)狀,從學生學習實際情況出發(fā),教師應有機融合MOOC教學特點,致力于構建C語言程序教學模式.同時建立小組合作的方式,可以根據(jù)學生的情況進行分組,也可以自由結組,分工協(xié)作,教師可提供一些測評方式,確定每組的學習水平,劃分不同難度的習題或項目,鼓勵學生挑戰(zhàn)難一些的等級,建立獎勵機制,在期末成績中給予體現(xiàn),有利于培養(yǎng)提高學生的學習興趣和合作、競爭意識,同時逐漸建立模塊化編程的思維方式.學習過程中出現(xiàn)的問題例如怎樣提高多重循環(huán)的效率、如何避免數(shù)組元素的訪問越界等問題引導小組進行討論,并將討論結果融入項目設計中去.減少驗證性實驗的比例,逐步增加設計性和總和綜合性實力的比例,培養(yǎng)學生的興趣,增加主動學習的動力,達到事半功倍的效果.與高年級的學長建立梯隊,幫助低年級學生鞏固知識,教授技能,指導學習的方向,“階梯型”知識傳遞的過程中,競賽的“種子”選手逐漸選拔出來.結合智能手機在學習生活中的優(yōu)勢,微信公眾號作為微信特色功能模塊是時下流行的信息傳播媒介,也是大學生群體課余時間重要的瀏覽和閱讀平臺,課程團隊可申請公眾號,把相關的信息及資源、資料上傳至其中,學生可以不受時間和地點的限制,隨時隨地查閱.
2.3 改變考核方式
C語言程序設計課程的考核方式是平時成績和期末卷面考試成績的總和.平時成績只占了總成績的20%,學生為了應付考試一般會在考試前期進行突擊復習,死記硬背,忽略了對知識點的理解,這樣出來的成績失去了真實的意義.鑒于這種問題我們采用了階段考試的模式,在每章結束后進行上機考試,弱化期末卷面成績,鼓勵學生自主復習、整理知識點讓學生在整個學習過程中一直出于緊張的狀態(tài),跟上整體進度.在滿足課程教學大綱要求的前提下,命題應以考查學生的思考能力和對所學知識的實際應用能力為主.考試內容不僅要包括書本基本內容,還要有教師補充的學科前沿信息及科研信息,以及指定教學參考書和MOOC的相關內容.全面考核學生分析與解決實際問題的素質和能力,這樣測試出來的成績才更有效.
2.4 改變實驗教學模式
科學的實驗課時分配在教學任務中至關重要,學生在學習理論知識的同時,還要融會貫通.對程序設計教學加以改進,強調動手實踐、上機編程;以任務驅動方式,通過實例講授程序設計的基本概念和基本方法.針對問題進行分析,構建數(shù)學模型,提出算法并編程實現(xiàn),同時要求養(yǎng)成良好的編程習慣,在此過程中培養(yǎng)學生的思維能力和動手能力,鼓勵學生探索、研究和創(chuàng)新.C語言程序設計是一門操作性非常強的課程.教學中,教師要培養(yǎng)學生的動手能力.依據(jù)學生學習規(guī)律將實驗劃分驗證性、設計性、創(chuàng)新性、綜合性四個類別.在驗證實驗中,教師引導學生掌握程序調試、錯誤分析、錯誤排除等方法及技能,讓學生對實驗結果有直觀的認識,或者通過編譯、執(zhí)行已有程序來驗證相關操作,使學生能夠“邊學習算法邊實踐編程”,通過編程實踐來驗證理論算法,進而進一步理解、掌握相關算法知識.在設計實驗中,教師應引導提示解決問題,激發(fā)學生的編程思維,使之自行設計程序、自行調試程序,鍛煉學生的編程技能和算法知識,鼓勵學生用不同的算法去解決實際問題,通過算法多樣化訓練學生的計算思維.創(chuàng)新實驗從需求分析、算法設計、算法實現(xiàn)、程序實際應用、分析總結等方面出發(fā),利用驗證及設計實驗中知識的積累,應用遞進式教學方法,學生自由組隊,完成方案設計、設計、實現(xiàn)的全過程,拓展學生的實驗能力.在綜合實驗中,有條件的學??梢耘c企業(yè)合作,聘請企業(yè)工程師承擔部分實踐教學任務結合真實案例,加以指導,讓學生了解程序設計的意義和未來可能的應用領域,激發(fā)學生學習興趣,擴展學生視野,搭建校外實訓平臺,把低年級的學生送到基地實訓,讓學生知道季候學習的努力方向及憂患意識.
為了解決安排統(tǒng)一上機時間與機房課程、學生課程沖突的實際情況,可聯(lián)系實驗室對沒課的機房開放,這樣既保證實驗室的利用率,也滿足了學生隨時上機練習的意愿.
3 套路教學法
C語言課程往往針對大一新生講授,對于剛剛開始大學生活的大一新生來說,一切都顯得那么新鮮,上課時他們用那一顆顆充滿好奇心的眼神望著老師,渴望著知識,下課后他們心里又會泛起一絲絲迷惘和不解,此時的他們,“內力深厚”,懷揣著滿腔的知識,可卻絲毫不懂如何運用,面對實際問題,解決方法往往顯得稚嫩.幸好,這時,他們上了一門課,叫作“C語言程序設計”.
C語言程序設計的教學目的,是讓學生在掌握一定編程語言基本知識的基礎上,能夠解決實際的問題.然后學生上課時,就是用C語言來解決課本上的題目都比較吃力,更別說解決生活中個的問題了.學生面對理論知識時往往靠死記硬背,遇到實際問題卻不會分析、無力解決,針對這個C語言教學中的最大矛盾和問題,我進行了一系列教學上的反思和總結,發(fā)現(xiàn)了一個全新的教學方法——套路教學法.
套路教學法,是訓練學生解決問題能力的一種教學方法,即為學生總結出一個“套路”——解決問題的模型,針對一個具體問題,按照這個固定的模型讓學生去分析,從而得出解決思路,最終編程驗證.當學生使用套路模型具備了基本的解決問題的能力后,他們又可以打破模型,構建適合于自己的問題模型,從而達到“青出于藍而勝于藍”的教學目標,學生也具備了舉一反三的基本素養(yǎng).
下面,我們舉例說明,計算1+2+3+……+100.
這個問題是C語言里循環(huán)學習的第一題,大家往往通過這個題目讓學生認識循環(huán).按照套路教學法的思想,我們首先構建“套路”——解題模型,見圖1所示.
具體解決問題時的步驟如下:
①確立數(shù)據(jù)結構:也就是本題中需要定義哪些變量,依據(jù)題意,需要定義存放求和結果的變量sum,類型定為int,還需定義循環(huán)變量i;
②設計程序結構:本題需要采用循環(huán)結構,循環(huán)三要素分別為:初值i=1,終值i=100,增值i++,循環(huán)條件為:i<=100;
③設計核心功能:核心算法采用迭代算法,即sum=sum+i,經過多次反復操作,能夠得到最終結果.
每次解題時,要求學生按照如上套路進行.
4 結語
本文針對C語言程序設計課程教學中,學生學習積極性不高、實驗教學深度不足、實驗內容陳舊和考核方式有待創(chuàng)新等問題,通過改進考核方式、改善實驗內容、增加教學課時等方面,激發(fā)學生學習的積極主動性,促使學生掌握C語言的基本知識、掌握語法規(guī)則和設計思想,通過實施套路教學法,提高學生的實際編程能力、分析和解決問題的能力,關于套路教學法深一層的理論研究將列為我們下一步的工作計劃.
參考文獻:
〔1〕NOI全國青少年信息學奧林匹克競賽官網(wǎng).http://www.noi.cn/.
〔2〕譚浩強.C語言程序設計教程[M].北京:清華大學出版社, 2014.
〔3〕顧容,張蜜,楊青青等.基于SPOC翻轉課堂的探討:實證與反思[J].高教探索,2017(1):27-32.
〔4〕安健,李遠,康小林,張小彬.基于SPOC的物聯(lián)網(wǎng)感知與標識專題實驗教學新模式研究與探索[J].高校實驗室工作研究,2018(4):4-7
〔5〕康葦葦.基于計算思維的C語言教學模式分析與案例設計[D].重慶:重慶師范大學,2015.
〔6〕莊宏,陳忠,唐文獻,等.CDIO項目式教學研究與設計——以面向工程教育專業(yè)認證的“工程圖學”課程為例[J].大學教育,2019(3):18-21.
〔7〕郭銀章,王麗芳.基于項目任務驅動的C語言程序設計課程 教學改革與實踐[J].計算機教育,2017(2):41-44.