苑麗紅,孫爽滋
(長春理工大學計算機科學技術學院,吉林 長春 130022)
2017年以來,經過“復旦共識”“天大行動”“北京指南”三步走,我國高等工程教育改革完成了以新工科建設為主題的綱領性設計并開始實施。“新工科”建設是一個龐大的系統工程,實現該目標不僅需要“探索建立工科發展新范式”“構建工科專業新結構”[1]等系統層面的規劃指導與體系設計,也需要具體課程的高質量實施。
近年來,針對計算機通識課的新工科教育改革得到越來越多的重視,相關的研究方興未艾。如何欽銘、王浩提出了圍繞通識型課程、技術型課程、交叉型課程組成有機關聯的具有層次的“寬、專、融”[2]課程體系;姚琳、宋晏、石志國[3]論述了基于深度和廣度兩個層面提升新工科中計算機領域新技術的應用,并以此構建面向新工科的大學計算機基礎課程體系等;張瑾、傅向華、李曉紅等研究了新工科背景下計算機基礎課程或計算機基礎實踐課程的具體教學改革問題等[4-6]。
無論是課程體系的構建還是課程內容、教學方法的改革,成功的關鍵是理念先行。理念指導目標,目標與活動、任務配準,才能真正實現育人需求。作為一線教師,筆者在近年教學實踐中對標新工科教育理念與內涵,對新工科素養的培育問題進行了思考與實踐。
新工科建設推進以來,為契合“將產業和技術的最新發展、行業對人才培養的最新要求引入教學過程,更新教學內容和課程體系,建成滿足行業發展需要的課程”[1]的新工科行動需求,課程組從不同專業培養需求出發,以新工科核心素養培養為驅動,在任課教師有限的前提下,通過擴展必修、增設選修的方式,在原有《計算機基礎與C程序設計》(理工科)、《大學計算機基礎》(文科)、《數據庫技術與應用》(文科)之外,增設了《C++程序設計》《Python程序設計》《數據結構》《電子商務》等課程模塊,并在計算機基礎知識模塊中增加了大數據與人工智能、物聯網、區塊鏈等內容模塊,豐富了課程模塊群,革新了課程內容,保證了課程的與時俱進,從頂層設計上為新工科人才培養提供了支撐。
強化實踐創新創業能力,延展實踐育人平臺,強化教學實驗是新工科建設的重要內涵之一[7]。高校計算機通識課面向全校學生,受限于教室、硬件,往往實驗課時較少。以長春理工大學《計算機基礎與C程序設計》通識課為例,16學時的實驗無法達到訓練要求。為避免“紙上談兵”,課程組采取如下舉措。
“給目標,給方向”。對必修課,除實驗課獨立設課、獨立給分,期末獨立考核程序設計實踐能力外,在對應理論課教學大綱中,明確把在編譯器下調試并設計程序的能力考核再度作為重要課程目標。通過目標驅動強化實踐地位。
“給平臺、給任務”。“工欲善其事,必先利其器”。利用學堂云SPOC教學平臺與在線判題平臺,以清晰的任務驅動的形式強化實踐。通過學堂云平臺,布置程序調試的討論任務,督促學生發程序調試截圖并完成討論;通過PTA在線判題平臺布置編程作業,督促云實踐,解決實驗學時不足的痛點,提升學生編程實踐量。
“給機會、給時間”。通過翻轉課堂設計,理論課堂去粗取精,給學生留下一點時間,當堂利用電腦手機編程App或PTA平臺完成“小粒度”程序驗證或設計。對于手機App編程,學生可通過雨課堂平臺的“投稿”功能發布截圖,觀摩討論;對于PTA平臺編程,教師利用授課電腦當面登錄平臺查看,針對典型錯誤予以點評,未完成者可課后繼續。
在新工科人才的培養中,實踐是根基,學科思維與工匠精神培養是核心。設計典型案例,挖掘問題背后的思維特質,精準訓練計算思維。如圖1為計算機基礎網絡部分的案例舉例。程序設計部分以short int短整數類型求解如65534+1等訓練“溢出、預防、容錯”的計算與工程思維,通過“逆序輸出正整數的各位數字”等訓練遞歸思維,通過“調用排序函數實現文件存放的數據排序”等訓練分解、分層的構造思維,通過“多字符串排序的二維數組與指針數組解法”培養對存儲速度、存儲容量的權衡,通過“學生數據表的插入與刪除的數組實現與鏈表實現”訓練對程序執行時間與空間的權衡等,不一而足。
“工匠精神”的培育不是空中樓閣。刻苦鉆研、嚴謹細致、精益求精、協作意識、管理思維等這些工程人才需要的內在素質培養自然融合在計算思維培養的過程中。
實際上,PTA平臺程序案例的多測試點設計在培養軟件工程的嚴謹“測試”這一學科思維習慣的同時,也完全是對學生鉆研精神的一種培養。另外,也可以通過項目驅動,基于項目對比、錯案調試、項目遞進的訓練以及布置小組作業實現項目合作等方法,培育工匠精神。
項目對比:一個百分制轉換成等級分的全if編寫與典型的if-else-if編寫都是對的,為什么推崇典型階梯式if-else-if結構?輾轉相除法求解最大公約數、利用break求解素數,方法到底比其他解法“經典”在哪里?通過程序對比,訓練學生學科必備的批判思維,讓學生在對比中體悟到“做對,更要做好”的精益求精的工匠思維。
錯案調試:初學循環之時,一個因while()后多寫了分號、或循環體少了{}而造成的死循環bug的趣味案例,以及其他精準對準易錯點的程序調試,必然能讓學生對程序執行流程有深刻的理解,并在反復出錯與嘆息中深刻體悟到一絲不茍、嚴謹細致的工匠精神。
項目遞進:以特定項目為主線、貫穿多個教學過程。例如“雞兔同籠”(輸入雞兔的總頭數h、腳數f后,求雞數x、兔數y)問題的求解,可以貫穿到順序結構、分支結構、單重循環、雙重循環的遞進式學習中。順序結構求解是依靠人工解方程得到x和y的表達式,知識目標是賦值表達式,高階目標是初步區分數學思維、計算思維;分支結構求解則加入簡單的數據合法性的判斷,知識目標加入了分支結構,高階目標是算法設計得完善與健壯;單循環求解則窮舉所有可能的雞數x,求出每一個x對應的兔數y=h-x,判斷x、y之和是否等于腳數,高階目標是“執行自動化”的計算思維;而雙循環求解則通過外循環窮舉x、內循環窮舉y求解。通過逐步深化計算思維,并引導對算法正確性與健壯性的認識,對工程思維和工匠精神的培養大有裨益。
此外,日常可布置小組編程作業,讓學生深入體驗采用抽象和分解的方法來控制龐雜的任務這一典型計算思維,培育工程人員必備的管理思維、協作意識。
計算機通識課面向全校學生。實踐教學中應以人為本,一方面,實踐題目劃分為基礎題目、拓展題目、ACM瞭望等,兼顧課程大綱的統一性和學生個體的差異性。從目標出發,綜合學情,設計難度遞進式分層題目(圖2)并利用極域電子教室軟件配合題目的分組分發,在實踐教學中依據學情適當差異化教學。另一方面,融合專業需求,設計融入專業的教學案例(表1僅為部分示例),引導學生關注計算機學科與本專業的交叉融合,提升學習興趣。

表1 融合專業需求的題目設計(部分)

圖2 實踐題目的分層設計
新工科建設目標歸根結底是為我國走向社會主義現代化強國服務。立德樹人是新工科的重要內涵之一[7]。科技與人文的交織、價值取向的引領是通識課義不容辭的責任[8]。
教師應理念先行,把家國情懷同課程知識與能力目標靈活融合。2022年疫情期間,連續的網課考驗師生心態,課程組在部分班級設計了針對疫情與計算機的話題討論、疫情與數組應用的開放性編程。鼓勵學生“每逢大事有靜氣”,與其“疫蹶不振”,不如“我為疫情編程序”。討論環節中,同學們對“政府組織下的、互聯網為基礎的防控體系”展現了深度認知,體驗到“基于大數據的流調有助于精準防控”、期待“人工智能與機器人技術的進步縮減工作人員的勞動強度”,表示“不應成為電子產品的奴隸,而應學習計算機技術為社會做貢獻”。在開放性編程環節中,學生編制的原創程序更是令人驚喜:疫情對話小程序、小區測溫問題、四人寢室的病毒動態清零模擬、體溫記錄查閱小程序等,百家爭鳴,閃耀著深度思考的火花,真正踐行了“事上磨煉”。
疫情期間的開放性編程只是課程開放性編程布置的一個縮影。實際完全可根據學情在部分章節、部分班級靈活實施,實踐對比表明效果明顯。例如,在結構體一章布置“電子時鐘”的編程,多數班級直接指定了時鐘的顯示格式,此時程序效果千篇一律,而個別班級采用半開放布置,則設計成果在“北京時間二十四小時計時法”之外,還出現了“十二時辰計時法”“國際時間計時法”;期末前的開放題目“編程展示“從點歌菜單設計、食堂點餐模擬,到記單詞小程序、石頭剪刀布和撲克牌小游戲、小型學生信息管理到高考志愿填報小模擬、融合專業的應用光學目鏡光線自動追擊程序等,很多同學展現了解決復雜問題的綜合設計能力和創新思考能力(圖3為部分示例截圖),整體設計成果體現了高度的探究性和個性化。

圖3 開放性程序設計成果示例(部分)
文章針對如何在計算機通識課中培育本科生相關核心素養,從六個維度進行了研究,所探討的思路和方法綜合關注了學生知識、情感、態度、價值觀、學科思維與實踐能力的培養,提升了學生學習獲得感、課程挑戰度。踐行新工科教育理念需要長期實踐,后續還需要在教學方法、教學模式、教學考核的諸多環節持續改進,才能使課程教學不斷貼近新工科理念與內涵。