邱麗
摘要:學科競賽注重實踐,可以檢驗學生運用學科知識解決實際問題的能力,考察學生的學科綜合素質。為了幫助學生提升C語言的應用能力,有必要針對《C語言程序設計》課程的教學現(xiàn)狀和課程特點,對學生綜合能力的全方位考核,以提高學生的專業(yè)知識應用能力和就業(yè)能力。文章以 C 語言程序設計課程為例,對課程現(xiàn)狀和競賽特點展開分析,探討基于學科競賽的《C語言程序設計》課程教學模式,從課程設置、教學內容,考核方式等多個方面提出了具體的課程改革方案。
關鍵詞:學科競賽;C語言程序設計;教學改革;課程改革
C語言程序設計屬于實踐性很強的理工類計算機課程,學習該課程需要學生具備較強的邏輯思維能力、團隊合作能力、實踐操作能力。作為各高等院校計算機類的實踐應用型課程,C 語言程序設計課程是學生學習其他計算機課程的基礎。課程中涉及的算法設計、程序編寫以及程序調試等程序開發(fā)過程有助于培養(yǎng)學生的邏輯思維。然而該課程內容非常抽象,知識點繁雜,學生學習過程中會遇到很多問題,學習難度較大。
而常規(guī)教學模式下,教師以程序語法、基礎概念的講解為主,學生處于被動學習狀態(tài),往往機械地記憶知識。這種重理論、輕實踐的教學模式很難激發(fā)學生的學習熱情,教師教起來也很累,久而久之,學生喪失了對C語言的興趣,這樣一來,其他計算機類課程的學習將受到很大影響,不利于培養(yǎng)學生的計算機綜合能力。
學科競賽是對學生學科綜合能力的全方位考驗,注重考查學生運用理論知識解決實際問題的意識和能力,可以有效激發(fā)學生學習熱情,提高學生的學習積極性。因此,學科競賽受到各大高校的高度重視,學科競賽活動的內容、級別、類型也在持續(xù)豐富,參與的學生越來越多,遞交的競賽作品整體質量也在持續(xù)提高。因此,基于學科競賽實施《C語言程序涉及》課程的教學改革,將學科競與課程教學有機融合,能夠有效推動課程改革,提高課程教學質量。
一、基于學科競賽優(yōu)化教學內容
現(xiàn)行的《C語言程序設計》課程內容陳舊,尤其是練習題目趣味性不足,而學科競賽的內容具有很強的趣味性、實踐性,可以有效激發(fā)學生的學習興趣,促使其更加積極主動地開展學習。在傳統(tǒng)的《C語言程序設計》課程教學中融合學科競賽內容,可以極大地激發(fā)學生的求知欲望。教師應該在向學生教授基礎知識,講解課本習題的基礎上,精心設計教學內容,將學科競賽內容融入其中,引導學生針對競賽題目進行進階學習,從而有效鍛煉學生的編程能力。
以“遞歸”的講解為例,教師最常引用的例子就是n!,通常在給學生介紹了遞歸的相關概念之后,在事先編寫好的程序中輸入一個n的值,運行程序得到一個int整型結果,只有很少一部分教師會給學生講解n>15時,運行程序得到的n!結果將會出現(xiàn)誤差,甚至得不到結果。其實在學生已經掌握遞歸的基礎知識后,教師完全可以給學生講解上述現(xiàn)象出現(xiàn)的原因,讓他們明白是因為int精度較低,數(shù)據(jù)一旦超出int精度就不能準確實現(xiàn),而要想準確顯示較大精度,可以用_int64類型輸出數(shù)據(jù),此時可以精確顯示n<90內的n!結果,而要想顯示n>90的n!結果就需要用到數(shù)組的逆序保存高精度數(shù)據(jù),而這個問題恰恰是學科競賽中經常會考查的高精度數(shù)學顯示問題。在課程教學中引入這個問題可以有效激發(fā)學生的求知欲,拓展學生的知識面。
再以字符串回文判斷相關內容的教學為例,如“上海自來水來自海上”的判斷。傳統(tǒng)的教學模式下,學生的學習局限于回文的概念以及判斷回文的方法,即利用一維數(shù)組,從字符串首位向中間循環(huán)讀取字符,依次判斷字符是否一致。而通過引入學科競賽內容,教師可以將該問題拓展至二維數(shù)組,引導學生判斷二維字表中的回文讀法有幾種。對于這種有一定趣味性、挑戰(zhàn)性的問題,學生的學習興趣很高,紛紛積極主動地思考問題解決方法,最終在教師的指導下總結出最佳解法,即通過“動態(tài)規(guī)劃”列出狀態(tài)轉移方程。這里的“動態(tài)規(guī)劃”算法就是學科競賽中常用的接替解題利器。通過引入競賽內容幫助學生拓展編程知識面,使他們在趣味性的編程學習中,深入理解算法,逐漸提高編程能力。
二、基于學科競賽豐富課堂教學
傳統(tǒng)教學模式主要使用PPT課件來呈現(xiàn)教學內容,在教學中,教師占絕對主導地位,學生處于被動學習地位,不利于發(fā)揮學生的主觀能動性。為了打破這個現(xiàn)狀,教師可以基于學科競賽的特點引入新的教學方法,充分調動學生的學習積極性。例如,在上課之前,教師可以給學生發(fā)放相關的預習材料,如微課視頻,要求他們在課前根據(jù)預習材料完成預習內容,將預習過程中遇到的無法解決的問題記錄下來。在課堂上,教師可以將學生分成多個小組,讓各小組選派代表上臺發(fā)言,分享本組的預習心得,然后組織各小組進行交流討論,最后由教師給出總結點評。此過程中,教師應該為學生創(chuàng)設自主學習環(huán)境,提供自主學習平臺,采取多種教學方法豐富課堂教學,有效提高學生的學習興趣,從而提高《C語言程序設計》課程教學效果。
(一)提供自主學習交流平臺
為了幫助學生更好地開展自主學習,教師應該給學生提供自主學習平臺。如MOOC平臺、百度公開課、校園在線學習平臺等等。同時利用多種在線測驗工具,如全國軟件設計大賽自主測試系統(tǒng),開源OJ系統(tǒng)。利用這些平臺引導學生根據(jù)自身情況,靈活選擇學習方式,學習實踐開展自主學習。除此以外,教師還可以借助各種各樣的在線社交軟件給學生提供在線交流的平臺,如QQ、微博、微信、電子郵箱等,要求學生通過這些平臺大膽提問,積極交流,互相分享學習心得,共同探討問題。
(二)不斷豐富課堂教學手段
講解課程基礎內容時,教師應該針對具體的教學內容運用適當?shù)慕虒W方法,有效提高學生的學習興趣。例如,在教學時,教師可以采用邊講解知識邊帶來學生動手編寫代碼的方式,引導學生更好地理解知識,掌握C語言程序設計解題思路,讓他們直觀地看到程序是如何一步步實現(xiàn)的,代碼是如何一行行寫出來的,在出現(xiàn)代碼錯誤時又該如何解決。這樣的教學方式可以讓學生更加深刻地感受到編程的魅力,深入了解程序的編寫過程。在學科競賽中,算法效率是一個考查重點,因此,在平時的教學中,教師要重視培養(yǎng)學生對算法優(yōu)劣的判斷意識和能力,通過長期訓練培養(yǎng)學生良好的編程習慣和算法設計能力。
例如,在教學順序結構程序設計時,教師可以先將程序語句的順序打亂,然后要求學生自己理清順序,調試程序,觀察程序運行輸出結果,不同的語句順序會得到不同的輸出結果,以此加深學生對順序結構理解,提高學生的編程能力。又如,在教學程序效率重要性時,教師而可以先引導學生分析我國古代的典型數(shù)學問題“百錢白雞”,要求學生運用C語言編寫程序解決問題。很多學生會想到通過循環(huán)三次遍歷1到100的方法加以解決,但該程序需要執(zhí)行多達10萬次才能解決問題,程序效率非常低。假如換成二重循環(huán)就只需要執(zhí)行558次即可得到問題答案,效率大大提升,通過這樣的問題教學引導學生反思問題的解決方法,嘗試找到最佳解決方法,重視程序效率,養(yǎng)成良好的編程習慣。
三、基于學科競賽改進評價機制
學科競賽注重考查學生運用C語言編寫程序解決實際問題的意識和能力。因此,教師應該注重評價學生的知識應用能力,采用小組評價、教師評價、自我評價的方式,重點評價學生的實際編程能力。將課程考核分數(shù)分為知識理解、知識應用兩大塊,綜合考查學生的C語言編程能力。基于學科競賽設置合理的評價指標,如自我評價中注重學生對小組的貢獻,小組評價注重評價小組成員的合作意識和合作能力,教師評價注重評價學生根據(jù)實際問題編寫程序的能力,通過理論與實踐并重的評價方式對學生進行客觀全面的評價,以準確評估教學效果,找出教學中的問題,并及時調整。
綜上所述,C語言程序設計是學科競賽的基礎知識,對于學生學習其他計算機課程而言至關重要,在參與各種形式的學科競賽的過程中,學生的C語言編程能力將得到有效提升,同時通過競賽可以培養(yǎng)學生的團隊合作意識,使學生學會如何與他人合作編程。通過學科競賽活動脫穎而出的學生被知名IT企業(yè)錄用后可以有效激發(fā)其他學生的學習積極性,促使他們更加努力的學習,教師可以抓住機會鼓勵他們學好C語言編程,提高他們的學習熱情,構建積極進取的學習氛圍,從而提高C語言程序設計課程教學效果。
參考文獻:
[1]宦娟, 侯振杰, 劉鎖蘭,等. 基于競賽的C語言程序設計課程改革探討[J]. 福建電腦, 2017(12):55-56.
[2]杜璞. 《c語言程序設計》課程與競賽相結合的教學改革的研究[J]. 才智, 2015(29).
[3]袁輝勇, 羊四清, 易葉青,等. 以競賽培養(yǎng)模式推動程序設計系列課程的實踐教學改革[J]. 電腦知識與技術, 2012(34):8230-8231.
[4]畢方明, 楊文嘉. 結合競賽的C語言程序課程改革探討[J].中國培訓, 2016(24):26-26.