鄭 重,王 雷,譚立湘,白雪飛,劉 勇
(中國科學技術大學信息科學技術學院,合肥 230026)
隨著現代科學技術的發展,計算機不僅為解決專業領域問題提供了有效的方法和手段,而且提供了一種獨特的處理問題的思維方式。計算機基礎教學在實現大學教育目標方面起著非常重要的作用,培養學生的“計算思維”能力是計算機基礎教學的核心任務[1-2]。計算機程序設計是大學本科計算機基礎教學系列中的核心課程,該課程從結構化程序設計方法出發,以C程序設計語言為載體,圍繞“程序設計=數據結構+算法”,通過對典型問題的分析、數據與算法的描述和代碼的實現,介紹了結構化程序設計方法中如何分析問題、組織數據并解決問題。計算機程序設計課程的教學目標不僅要培養學生的計算機應用能力,更重要的是培養學生的計算思維能力。作為一門直接面向應用、實踐性很強的課程,上機實驗是計算機程序設計課程教學中必不可少的組成部分,學生通過上機操作,感受和領悟應用計算機解決問題的基本方法和思維模式。
作為公選基礎必修課,計算機程序設計面向全校所有專業的大一新生。由于各中學計算機教育水平不同等客觀原因,每屆學生的計算機程序設計基礎差異很大。針對這種客觀差異,學校課程組實行了快、慢班分班制,實際操作中,每位學生的主觀想法不同,選擇有時并不能反映其實際情況。有的學生基礎較薄弱,但誤認為慢班教的東西少而選擇快班;相反,有些基礎較好的學生,卻認為慢班教得更細致而選擇了慢班,從而導致即使實行了快、慢班分班制,同一個班里的學生對程序設計的理解水平和應用能力仍然存在很大差別。不同基礎的學生在同一實驗教學課堂中,內容和形式較為單一的傳統實驗教學模式,很難使每位同學都能有收獲感。基礎好的學生覺得上機實驗偏簡單,學習積極性不高;而基礎較差的學生面對同樣的上機實驗又存在各種困難,直至下課也不能完成,從而對課程產生懼怕心理。這勢必導致實驗課堂教學效果不佳,預期教學目標難以實現。如何對計算機程序設計實驗教學的內容和形式進行改革和優化,以滿足不同程度學生的學習需求,充分提高每位學生的程序設計能力,培養他們的計算思維能力,是計算機程序設計實驗教學中值得探究的課題[3]。
近年來,在教育部推進“新工科”建設的大背景下,國內各高校均積極開展計算機程序設計課程教學改革[4-7]。針對大一新生的實際情況,提出了分層次協作型的計算機程序設計實驗教學模式,以解決現有課堂存在的學生計算機程序設計水平參差不齊的問題,提升每一位學生的課堂收獲感。
在計算機程序設計實驗教學中,著重從教學內容和教學形式兩個方面進行改革。從學生的學習需求和課程教學目標進行課前調研,以此為基礎,緊扣課程理論教學知識點,設計分層次差異化的教學內容,構建多樣化協作型的教學形式;通過課后教學效果評價和反饋,對教學內容和形式進行優化設計,從而進一步提升教學效果。構建分層次協作型計算機程序設計實驗教學模式的流程如圖1 所示。

圖1 分層次協作型實驗教學模式構建流程
通過問卷、座談等多種形式調查大一新生的計算機程序設計基礎,充分了解學生之間由于地域、中學計算機教育水平不同等導致的客觀差異,以及分班時學生個人選擇而導致的主觀差異。圖2 所示是針對某專業大一新生計算機程序設計基礎的調查結果。從表中數據可以看出,大多數大一新生的基礎較為薄弱,對計算機程序設計了解較少,但也有相當一部分新生有一定的程序設計基礎。通過分析新生在計算機程序設計基礎上的差異,了解他們對該課程的學習需求和期望目標,可以為實驗課程教學內容和形式的創新設計提供科學依據。

圖2 某專業大一新生計算機程序設計基礎調查結果
實驗內容的設計和安排是影響課程教學效果的關鍵因素[8-9]。上機實驗是對計算機程序設計基本理論和利用計算機解決問題基本方法的理解、運用與拓展。梳理計算機程序設計理論教學的知識點,挖掘其中的內在聯系,加以合理的分類與組合,是開展實驗教學內容分層次差異化設計的必要前提。
教學過程的設計,要圍繞落實教學目標進行[10]。計算機程序設計的教學目標是通過課程學習,使學生掌握結構化程序設計的方法,具有較強的計算思維能力和計算機應用能力,可獨立編寫一些小規模的應用程序以解決實際問題,為其后續的課程學習和專業應用打下較扎實的基礎。因此,對實驗教學內容和形式進行設計的“作用力”都應指向這個目標[11]。
針對學生基礎不同的客觀現狀,在開設實驗課之前,利用8 個理論課時講授計算機的基本組成、存儲程序控制原理、信息的表示及軟硬件層次等計算機基礎知識,以幫助學生初步了解計算機的工作原理,為他們學習計算機程序設計奠定必要的基礎。
計算機程序設計課程內容繁雜、語法瑣碎,不易掌握。傳統的計算機程序設計實驗教學是以驗證型實驗為主,目的是消化理論課堂教學內容。上機題主要是對本章節理論課堂教學的各個知識點進行訓練,實驗設計較為孤立,對各章節知識點的系統性關注不夠,綜合型、創新型和設計型實驗較少,學生容易將過多的精力花在編程語言繁復的語法之中,而忽視了對結構化程序設計方法和計算思維的訓練。
為了讓不同程度的學生都能有良好的課堂收獲感,設計了分層次差異化的綜合性上機實驗內容,將課程中的主要知識點進行適當的串聯,并體現新穎性和探索性的特點。實驗內容分為基礎性實驗和提高性實驗,學生在完成統一要求的基礎性實驗環節之外,可以根據興趣自主選擇提高性實驗項目,不局限于本節課或本章節的基本要求,具體的安排如表1 所示。

表1 分層次差異化綜合實驗上機安排
以學習一維數組為例,通常的上機實驗是孤立地編制若干函數,屬于基礎性實驗,在此基礎上,可以結合程序控制結構、函數等內容設計成如圖3 所示的基礎與提高相結合的綜合性實驗—數組運算器。

圖3 綜合實驗舉例—數組運算器
這種分層次的綜合編程實驗主要有兩個方面的作用:①綜合性的上機實驗可以使學生將本課程所學內容融會貫通,在實踐中掌握自上向下、逐步細化的程序設計方法,體會程序設計中良好編程習慣的重要性;②同一道上機題,由于實行了分層要求,既可以對學生進行必要的技能訓練,保證所有學生都能達到基本的教學要求,又給予基礎較好的學生發揮的空間,對他們的編程能力進行提升,使其有軟件工程的概念和較為復雜的編程體會。同時,基礎較好同學的進步,又可以起到榜樣的作用,帶動其他學生的學習勁頭,激發全班的學習熱情。不同基礎學生都能在實驗中找到合適自己的方案,不會覺得太難而無從下手,也不會覺得太簡單而興味索然,使每位學生通過努力都可以實現一定的目標,都能有收獲感[12-14]。
長期以來,實驗教學受實驗室管理要求以及實驗設備有限和固定的限制,學生基本都在統一要求和教師主導的情況下單獨完成實驗。部分學生存在不知如何下手等困難,容易產生畏難情緒而失去學習興趣,即使在幫助下勉強完成實驗,由于缺乏系統的討論與思考,更多的是照葫蘆畫瓢,并未真正掌握學習的核心內容,上機實驗的收獲不大。這種實驗教學方式缺乏自主選擇,個性化培養不足,在一定程度上影響了教學效果,制約了學生創新能力的培養。為此,嘗試打破既往的模式,實行多樣化協作型的實驗教學形式,讓不同基礎學生合理組合并進行任務分工,每位學生在獨立的同時又有一定的合作;積極開展課堂研討、小組競賽等多種形式活潑的教學活動,以充分發揮不同基礎學生的主體積極性;再根據學生對教學效果的評價和反饋,對教學形式進行優化。表2 所示給出了多樣化協作型實驗教學形式的具體內容。

表2 多樣化協作型實驗教學形式的構建
多樣化協作型的實驗教學形式,主要有以下優點:①調動學生的積極性,激發學生自主學習興趣,學生在不斷變化的課堂教學形式中可以獲得驚喜;讓學生一起討論問題,從討論中尋找解決問題的方法,鼓勵他們開展辯論等活動,從而活躍課堂氣氛,提高學習效率;②培養協作創新精神,學生們在相互配合完成一個綜合性的編程實踐過程中,可以培養團結協作精神,不同的小組間形成積極的你追我趕的競爭氛圍,促使他們主動學習更多的程序設計專業知識,培養他們的創新精神;③在實踐中為不同基礎的學生提供了交流平臺,每位學生在與同學相互交流協作的過程中,都能加深對結構化程序設計方法的理解,加強通過計算思維解決問題的能力,為其后續課程的學習奠定良好的基礎。
近年來教學實踐顯示,在分層次協作型的實驗教學模式下,學生對計算機程序設計課程的興趣以及自主學習程序設計的意識都有明顯提升。圖4 所示統計的是2020 年所有15 個本科教學班的計算機程序設計課程考核優秀率,其中實驗班級采用多樣化協作型實驗教學形式,非實驗班級采用傳統實驗教學形式。從考試測評結果來看,在統一試題、統一閱卷的前提下,與傳統的實驗教學模式的教學效果對比,實行分層次協作型實驗教學模式的班級不僅全部通過考核,且優秀率明顯高于校平均優秀率,在同屆班級中名列前茅。此外,對實驗班級分流到不同專業的學生進行追蹤回訪,所有同學都認為在大一的計算機程序設計課程中,分層次協作型的實驗教學模式加深了他們對計算機程序設計方法和計算思維的理解與運用,為他們在之后各自專業的學習、研究過程中,主動利用計算機解決實際問題打下了良好的基礎。

圖4 不同實驗教學模式下各班級課程考核結果對比
為滿足不同基礎的大一新生的差異化學習需求,積極探索分層次協作型計算機程序設計實驗教學改革。基于詳細的課前調研和理論教學知識點梳理,創設分層次差異化的實驗教學內容、構建多樣化協作型的實驗教學方式,營造生動活躍的課堂氛圍,以充分激發每一位學生的學習興趣,讓學生掌握使用計算機程序設計去解決實際問題的一般方法,在既“獨立又合作”的上機實驗中,培養他們的計算思維能力和團隊協作精神,提升學生的綜合素質。