佟強 蔣玉茹 趙淳 楊大利


[摘 要] 針對工程教育專業認證對計算機類專業畢業生能力培養的要求,介紹“C語言程序設計”課程的特點,分析在目前教學過程中存在的問題,提出一種以課程設計項目為驅動的教學改革思路,通過對學生的實踐能力、工程能力、學習能力、創新能力等多種能力進行提升培養,實現課程教學質量的提高。通過在實際教學中對“C語言程序設計”教學改革思路的實際應用,證明了該教學改革思路具有一定的有效性,基本實現了課程教學目標。
[關鍵詞] 程序設計;工程教育;能力培養;教學改革
[基金項目] 2020年度北京信息科技大學教改立項項目“基于OBE的程序設計基礎課程教學改革”(2020JGYB22);2019年度北京高等教育本科教學改革創新項目“面向工程教育專業認證的‘互聯網+’一體化教學平臺建設創新模式研究”
[作者簡介] 佟 強(1985—),男(錫伯族),遼寧沈陽人,工學博士,北京信息科技大學計算機學院講師,主要從事圖像識別研究;蔣玉茹(1978—),女,遼寧沈陽人,工學博士,北京信息科技大學計算機學院副教授,主要從事自然語言處理研究;趙 淳(1980—),男,北京人,工學博士,北京信息科技大學計算機學院講師,主要從事智能制造研究。
[中圖分類號] G642.0? ?[文獻標識碼] A? ?[文章編號] 1674-9324(2021)51-0138-04? ? [收稿日期] 2021-05-06
一、引言
工程教育是我國高等教育體系的重要組成部分。自我國成為《華盛頓協議》成員后,高標準通過工程教育專業認證正逐漸成為內各大高校建設一流新工科專業的重要指標。基于學習產出的教育模式(Outcomes-Based Education,OBE)既是工程教育的核心理念,又是工程教育專業認證貫穿始終的重要標準。OBE以“實現學生特定學習產出的教育過程”推動了傳統內容驅動、學科導向或投入導向的教育模式改革[1]。在工程教育認證背景下,如何在課程教學中強化對學生的學習能力、實踐能力、創新能力和工程能力的培養,成為課程改革所關注的重點方向[2]。
工程教育理念要求課程教學以能力培養為目標。工程教育認證對工程類專業畢業生從工程知識、問題分析、設計開發解決方案、研究、使用現代工具、工程與社會、環境和可持續發展、職業規范、個人和團隊、溝通、項目管理、終身學習等方面提出了12條畢業要求[3]。這12條畢業要求對畢業生的知識、能力和素養都提出了具體要求,其中,知識是基礎,能力是關鍵,素養是保障。
美國高校在基于發展21世紀能力的課程設計與教學方法研究中提出,教學要“超越書本知識,培養能力和素養”。教學改革的關鍵是能力的培養。在新時代背景下,計算機科學技術發展迅速,很多專業知識和內容更新換代的頻率越來越高,學生工作后很快就會面臨新知識,需要掌握新技能。因此,大學階段的教育,除了傳授專業知識外,更重要的是教會學生掌握如何學習的本領,培養學生應用新知識、新技術解決專業問題的能力[4]。
二、課堂教學現狀分析
“C語言程序設計”通常是計算機本科專業大學生的第一門專業基礎課程,其教學內容具有點多面廣、實踐性強等特點,非常適合以能力培養為目標開展教學,為最終培養適應新時代、新技術發展需要,具有扎實基礎、較強的創新能力、具備自我提升能力的高素質計算機人才打好堅實的基礎。
在前期的教學過程中,“C語言程序設計”課程組自主開發了一套在線過程化考核平臺,其中的在線評測模塊實現了編程題的實時、自動化評測,為學生提供了自主做、自主學的環境。學生在線提交代碼后,可以立刻得到代碼是否通過測試的提示信息,進而反復修改程序,多次提交,直到最后通過測試。學生也可以在該平臺上針對不同的編程題目閱讀提示、查閱資料、查看參考答案,以獲取解決問題的思路、方法和知識,從而培養學生自主學習的能力和意識。
在之前使用該在線過程化考核平臺進行教學與評價的過程中,可以發現已有教學環節仍然存在若干問題,主要體現在以下幾個方面。
1.學生基礎差異大。有些學生在中學階段已經學習過一定程度的編程知識,而有些學生是初次接觸計算機,對于計算機編程沒有任何概念。由于課堂教學內容相同,難以滿足不同基礎背景學生的不同層次的學習需求。
2.學生的主動學習能力有限。大學新生受限于中學期間建立的學習模式和環境,習慣了所學的知識來源于教材、課堂和教師,在解決問題時能利用的知識和技能局限于已學過的內容,遇到困難時首先想到的是找參考答案,或是向老師和同學求助,缺少主動學習新知識解決問題的意識和能力。
3.實踐能力與創新能力不足。對教材上的例題能夠理解,但對于需要自主完成的編程題目卻不知道如何下手,不懂得如何分解問題與設計程序結構,而在面對具體編程題目時又拘泥于已有的固定方法和模式,不能突破原有思維,嘗試新思路和新方法,缺乏獨立思考、深入鉆研問題的習慣。
4.缺乏有效的工程思維與溝通技巧。絕大部分學生在過去沒有任何項目開發經驗,更缺乏與他人合作完成軟件項目的經驗,對于程序開發過程中出現的各種問題,不知道如何進行分析簡化,難以與他人協作解決問題并完成項目。
為了適應OBE理念并滿足工程教育認證標準,就要促進學生理解計算機思維并提升解決復雜工程問題的能力,具體表現為遇到未知問題時能夠自發地學習新知識,并嘗試使用不同方法和手段解決問題,具有一定的分析問題能力。通過改革教學方式和方法探索能力培養的途徑,通過能力的培養提高教學質量,進而為學生后續課程的學習奠定堅實的基礎。
三、課程項目設計方法
在工程教育認證背景下,在課程教學中強化能力的培養是課程改革的必然趨勢[5]。程序設計基礎課程的教學內容具有點多面廣、實踐性強等特點,非常適合以能力培養為目標開展教學。為此,基于OBE理念分析課程教學中能力培養不足導致的問題,提出以任務驅動的方式[6]對能力進行培養的教學改革思路,擬定若干個課程設計項目題目,并將其開發過程貫穿于整個教學過程。在課程初期,由學生自由組隊形成若干小組,每組4~5人,選擇一個教師事先指定的項目題目作為本組的課程設計項目。每個學生負責本組項目中的不同部分,并在教學過程中對自己的程序不斷進行改進,在期末以小組形式進行公開演示,由組長講解整體結構和項目亮點,由組員講解各自負責部分的功能和設計思路。以其中的一個項目題目“2048游戲字符版”為例,在教學過程中根據教學進度,設計不同的程序功能要求如下:(1)完成順序結構、選擇結構的學習后,練習使用printf函數在屏幕上繪制4×4的棋盤格,并能夠接收用戶通過鍵盤輸入的一個字符,根據該字符內容輸出相應文字。(2)完成循環結構、數組的學習后,練習根據用戶輸入的數字在屏幕上自動繪制相應尺寸的棋盤格,并能根據用戶輸入的內容在棋盤上的指定位置放置相應數字。(3)完成函數、指針的學習后,練習通過調用函數的方式實現數字在棋盤上的移動與合并,以及新數字的隨機放置,并根據游戲進程提示游戲勝利或失敗。(4)完成文件的學習后,練習對游戲歷史操作記錄在本地文件的存取和游戲歷史成績在本地文件的存取。
在整個教學環節中共設置5個不同的課程設計項目題目供學生選擇,每個題目均能夠以上述類似的方式分解為若干子項目,每個子項目也可以進一步分解為若干功能點,每個功能點由一名或數名學生負責,再將各個學生所完成的部分組合起來,實現具體子項目乃至整個項目。根據每次教學過程所面對學生的具體情況,也可以在已有課程設計項目題目的基礎上,對其難度與工作量進行適當的增減,以適應具體的教學情況。
通過使用課程設計項目題目的方式,主要從以下四個方面對學生的能力進行提升培養。
1.強化實踐能力訓練。針對學生將理論知識運用到實際場景中解決問題的能力較弱的問題,采用綜合項目的模式,從模塊化、層次化、應用型等三個方面強化學生的實踐能力。其中,模塊化用于強調對某一理論知識和概念模塊的集中訓練,層次化可以滿足不同能力層次學生的學習需求,而綜合項目的內容采用具體的應用問題,要求學生能夠理論聯系實際,從而解決問題。
2.融入軟件工程思維??紤]到學生沒有任何項目的開發基礎,在實施課程設計項目教學過程中,可由教師指導學生進行項目需求分析、數據模型設計、系統功能規劃、項目匯報報告等內容,要求學生以小組形式獨立完成函數設計與實現、系統調試與功能測試等工作。通過完整的課程設計項目開發,讓學生理解結構化和模塊化的程序設計思想,并在小組合作開發的過程中,培養學生嚴謹、清晰的程序設計風格和良好的編程習慣,為后續的專業課程學習打好基礎。
3.促進自主學習。在傳統課堂教學的基礎上利用現有的在線過程化考核平臺與課程設計項目相結合,為知識傳授與編程實踐提供自主學習的平臺和環境。在線過程化考核平臺能夠提供編程題的實時、自動化評測,為學生提供自主做、自主學的實驗環境和機制。課程設計項目促使學生在課外時間學習并嘗試課內所沒有涉及的技術與方法,讓學生體會自己攻克難關、解決問題的成就感和樂趣,激發鉆研新知識、新技能的勁頭,培養學生自主學習的能力和意識。
4.培養創新意識。結合傳統的以教師講授為主的課堂教學,探索與課程設計項目相結合、由實際問題引導的教學方法。課程設計項目要兼顧典型性與趣味性,并包含一定的計算思維,引導學生思考、研究在項目中遇到的具體問題,并讓學生帶著問題在課堂上和課堂外尋求答案,在探究的過程中學習新知識、掌握新技能、發現新問題、探索新領域,潛移默化地培養學生的計算思維能力和創新意識。
四、實驗與分析
通過將本文所述課程設計項目題目應用到實際教學工作中,對這種教學方式的實際效果進行了評價。北京信息科技大學計算機學院的一年級本科生共分為10個班,各班學生的入學成績分布較為平均。在“C語言程序設計”教學過程中,每兩個班組成一個教學班級,共5個教學班。各班學生對程序設計的掌握程度在課前基本處于相同的統計水平。在2020—2021學年秋季學期的教學中,在針對2020級01~02班的課程教學中引入了課程設計項目題目,而在其他班級中仍然沿用以往的教學方式。教學結束后,在前文所述的自主開發在線過程化考核平臺進行期末考試,使用在線評測模塊共設置5道不同難度的實際編程題目,對學生在考試時間截止前最后一次提交的代碼進行自動化評測,并給出學生的期末考試分數。表1是2020級各班的期末成績分布情況。
由于期末考試成績全部由實際編程題目進行考核,該成績如實衡量了不同學生的編程能力差異。從表1可以看出,對于在課程教學環節中引入了課程設計項目題目的2020級01~02班,期末成績70分以上的學生比例達到了77.59%,顯著高于未引入課程設計項目題目的班級。可以認為2020級01~02班學生的編程能力相比其他班級學生有了明顯的提高。
為了進一步分析該項教學實驗的成果,計算了2020級各班期末成績的均值與均方差,如表2所示。其中01~02班的分數均值為75.93,比其他班級的分數均值(72.71)高出3.22,表明該班級的期末成績相比其他班級有較明顯的提高。同時,01~02班的分數均方差為13.91,低于其他班級的分數均方差(18.76),這表明該班級在取得更好平均分的同時,整體成績的分布更緊密,班級內部的成績差異相對較小,有效提高了學生的成績。
以課程設計項目題目的方式進行學生能力培養的教學目標,主要包括以下兩方面:一是將以課堂教學為主轉變為課堂內外結合,要求學生能夠自覺地學習新知識,遇到問題時嘗試用不同的手段解決,變以教師講授為主的學習為以學生自主學習為主的學習;二是提高學生的編程能力、合作與溝通交流能力、自主學習能力和創新能力。從教學實踐來看,學生對“C語言程序設計”的學習興趣和熱情有了顯著提高,自主學習能力得到了一定程度的訓練,編程能力也通過課程設計項目題目的鍛煉得到了普遍提高,基本實現了對學生能力進行培養的教學目標。
五、結語
作為對計算機本科專業學生能力進行培養的重要課程,結合學生的實際情況,從激發學生對編程學習的興趣出發,以課程中具體的課程設計項目題目為核心,圍繞各個課程設計項目題目進行內容講解,并通過將課程設計項目題目分解為不同階段和不同目標的子項目,讓學生對具體技術的應用場景有更直接的認識,同時培養學生的工程思維與協作溝通技巧。所使用的課程設計項目題目覆蓋了程序控制結構、數組、函數、指針、結構體、文件存儲等教學重點內容,綜合性較強,也具有一定的可擴展性。對2020級學生的教學實踐結果表明,該方法在提高學生對“C語言程序設計”課程的學習興趣和熱情,以及提高學生的編程能力與溝通合作能力方面,都取得了良好的效果,基本實現了提高學生理解計算機思維,并提升解決復雜工程問題能力的教學目標。
參考文獻
[1]歐陽勇,李紅.工程教育認證背景下的大學計算機基礎課程改革及實踐[J].計算機教育,2019(4):45-48.
[2]張海生.跨界融合:“互聯網+”背景下“新工科”的發展邏輯與建設目標[J].應用型高等教育研究,2017,2(3):13-18.
[3]中國工程教育專業認證協會.工程教育認證標準[EB/OL].(2020-02-17)[2021-04-10].https://www.ceeaa.org.cn/gcjyzyrzxh/rzcxjbz/gcjyrzbz/tybz/599711/index.html.
[4]吳愛華,侯永峰,楊秋波,等.加快發展和建設新工科主動適應和引領新經濟[J].高等工程教育研究,2017(1):1-9.
[5]沈海波,周如旗,朱雄泳.新工科+工程教育認證背景下軟件工程特色專業建設探索[J].軟件工程,2018,21(3):57-59+30.
[6]周原,梁鵬.以學生為中心的《數據結構》課程教學改革實踐[J].高教學刊,2019(5):142-144.
3854501908215