摘? 要: 針對新工科背景下程序設計語言課程在實際教學中面臨的主要問題,結(jié)合探究式教學模式,建設程序設計語言課程的開放式教學體系。采用探究式教學,改革傳統(tǒng)的教學內(nèi)容和教學方法,利用在線學習平臺,支持學生進行“自主學習”和“在線實驗”,開展競爭性學習和創(chuàng)新性實驗的教學改革實踐。這些教學改革的探索,有效地提高了程序設計語言課程的教學質(zhì)量和教學效果,有利于實現(xiàn)新工科人才培養(yǎng)的目標。
關(guān)鍵詞: 程序設計語言課程; 新工科; 探究式教學; 教學改革
中圖分類號:G642? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2021)03-72-04
Inquiry teaching for programming language courses in the context of New Engineering
Ma Hua
(College of Information Science and Engineering, Hunan Normal University, Changsha, Hunan 410081, China)
Abstract: Aiming at the main problems in the practical teaching of programming language courses in the context of New Engineering, the inquiry teaching mode is applied to build the open teaching system of programming language courses. The traditional teaching contents and methods are reformed by using the inquiry teaching mode, and the online learning platforms are used to support students to carry out "autonomous learning" and "online experiment", and the teaching reform practice with competitive learning and innovative experiment is put into effect. These explorations of teaching reform effectively improved the teaching quality and teaching effect of programming language courses, which are beneficial to achieve the goals of talents training in the context of New Engineering.
Key words: programming language course; New Engineering; inquiry teaching; teaching reform
0 引言
近年來,教育部積極推進新工科建設,新工科背景下的人才培養(yǎng)對高校的教育教學提出了新要求,需要我們更新人才培養(yǎng)體系,將新技術(shù)和發(fā)展前沿引入教學過程,更新課程體系和教學內(nèi)容,促進學生全面發(fā)展。對于計算機類本科專業(yè)的學生而言,新工科建設要求他們應具有計算思維能力、程序設計與系統(tǒng)開發(fā)能力、算法設計與分析能力等。程序設計語言課程正是培養(yǎng)學生具備上述能力的重要途徑。以基于C或Python的程序設計基礎(chǔ)、基于C++或Java的面向?qū)ο蟪绦蛟O計等為代表的高級語言課程,具有較強的專業(yè)性和實踐性,這類課程的學習對于提高學生分析和解決工程實踐問題的能力有關(guān)鍵作用。然而,現(xiàn)有的教學過程仍通常采用以教師為中心的“單聲道”教學模式,難以滿足新工科背景下培養(yǎng)卓越工程師的需求[1-2],因此,對現(xiàn)有教學模式進行改革已成為當前高校面臨的迫切需要。
目前,一些高校已對程序設計語言課程的教學進行了改革[1-5],但是,以新工科為背景的改革研究尚處于探索階段,如何調(diào)整適應新工科發(fā)展需要的教學模式與方法仍是值得研究的重要問題。探究式教學是一種將研究與教學相融合的師生互動型教學,具有創(chuàng)新性、實踐性和開放性等特點,是現(xiàn)代高校在培養(yǎng)創(chuàng)新創(chuàng)業(yè)人才中探索、建構(gòu)的互動型教學模式[6]。國內(nèi)一些高校通過創(chuàng)新探究式教學模式,已取得了具有代表性的成果[7],從而為相關(guān)教學改革活動的開展提供了寶貴的經(jīng)驗。近年來,我們努力探索面向新工科人才培養(yǎng)的程序設計語言課程的探究式教學改革,以期不斷改進相關(guān)課程的教學質(zhì)量和效果。
1 新工科背景下程序設計語言課程的教學改革現(xiàn)狀
新工科背景下程序設計語言課程的教學尚存在四個方面的不足[1-2]。①教學中理論和實驗課時不足,學生只能掌握基礎(chǔ)知識和教材中有限的例程。②傳統(tǒng)教學方法與當前的培養(yǎng)目標不相適應,多數(shù)學生在實驗時停留在對教材例程進行調(diào)試驗證,盡管學生能掌握基本的編程語法和程序的調(diào)試技巧,但遠未達到自主分析和解決實際問題的程度。③教學質(zhì)量評價方式單一,與新工科背景下的人才培養(yǎng)理念不相符,當前教學質(zhì)量評價仍普遍是依據(jù)學生的筆試與實驗報告成績,難以全面、客觀地反映學生對知識的掌握情況和對知識的靈活運用能力,從而容易出現(xiàn)高分低能的現(xiàn)象。④缺少與新工科背景下人才培養(yǎng)相適應的線上教學資源,而優(yōu)秀的在線教學資源對于學生開展課前預習、課后輔導和答疑解惑具有重要作用。
近年來,一些高校對新工科背景下程序設計語言課程的教學進行了改革實踐。桂林理工大學基于C程序設計課程,進行了針對非計算機專業(yè)學生的計算思維能力的“一線三層四維”培養(yǎng)模式教學改革,在教學實踐活動中以“創(chuàng)設環(huán)境、項目引導、講授新知、合作探究、總結(jié)拓展”為主線,對學生的思維能力分層培養(yǎng),并從多維度啟發(fā)學生思維,激發(fā)其興趣[2]。西安工程大學充分發(fā)揮傳統(tǒng)教學與互聯(lián)網(wǎng)線上教學相結(jié)合的優(yōu)勢,按照程序設計語言課程的“教學目標、學習重點與難點、線上資源和學生個人能力”等四個方面綜合分析實現(xiàn)混合式教學的新思想、新模式[1]。河南大學在Java程序設計課程教學中提出了以“過程性評價、項目驅(qū)動”為核心的新教學體系改革[3]。武漢理工大學在Python程序設計課程中開展交叉融合案例教學的改革實踐[4]。蘭州理工大學結(jié)合MOOC和SPOC來改革教學模式,設計了工程領(lǐng)域的教學案例[5]。
2 新工科背景下探究式教學改革的理論基礎(chǔ)
探究式教學由芝加哥大學教授施瓦布倡導。在探究式教學過程中,學生在老師的指導下,對教學內(nèi)容中的重要知識點進行“自主學習”、“深入探究”、“小組合作交流”,以實現(xiàn)課程教學的認知目標與情感目標。隨著建構(gòu)主義、人本主義等思想的普及,探究式教學凸顯出其重要的理論和實踐價值,受到了全球教育改革者的關(guān)注。通過近幾十年的發(fā)展,探究式教學在美國已成為最有影響力的科學教育方法之一。在我國,教育部印發(fā)的《基礎(chǔ)教育課程改革指導綱要(試行)》大力提倡了探究式學習,在《關(guān)于進一步加強高等學校本科教學工作的若干意見》中,也強調(diào)要積極推動研究型教學。當前,許多高校已把探究式教學模式作為培養(yǎng)創(chuàng)新人才的重要途徑之一。例如,汕頭大學結(jié)合CDIO工程教育改革背景進行了工科課程的探究式教學改革的實踐[8];天津大學在材料力學課程的探究式教學改革結(jié)果顯示,基于問題學習的探究式教學有利于統(tǒng)一教與學兩個過程,有利于培養(yǎng)大學生的創(chuàng)新意識,可為培養(yǎng)高素質(zhì)工程技術(shù)人才打好基礎(chǔ)[9]。近年來,四川大學正是以“探究式--小班化”課程改革為突破口,在2018年獲得了國家級教學成果特等獎[7]。這些工作為開展新工科背景下程序設計語言課程的教學改革提供了關(guān)鍵的理論支撐和實踐指導。
3 新工科背景下教學改革的主要內(nèi)容
⑴ 構(gòu)建基于探究式教學模式的開放式程序設計語言課程教學體系
針對傳統(tǒng)封閉型教學體系的不足,我們基于探究式教學模式摸索適用于程序設計語言課程的開放式教學體系。該體系以“小組協(xié)作在線學習”為主要方式,形成一個有利于開展個性化教學、探究式學習和實踐創(chuàng)新活動的綜合平臺。通過應用“及時教學”模式,形成教學“反饋鏈”,將學生的課前預習、課中協(xié)作和交流、課后總結(jié)等三個環(huán)節(jié)有機整合,充分調(diào)動學生作為教學過程中的“雙主體”之一的積極性,也充分發(fā)揮教師作為教學組織者和參與者(但不是領(lǐng)導者)的作用。從而,適應新工科背景下培養(yǎng)實踐能力強、具有創(chuàng)新素質(zhì)的高層次人才的需求。以面向?qū)ο蟪绦蛟O計課程為例,鑒于當前計算機類本科專業(yè)班級人數(shù)規(guī)模大多在50~60人的現(xiàn)狀,摸索在“探究式教學”中實施基于公共在線教學平臺的“小組協(xié)作學習”,在學習中,注重強化落實工程案例討論、開源項目源碼分析、軟件系統(tǒng)重構(gòu)、分組協(xié)作與競爭、全過程學業(yè)評價和非標準答案考試、學生的個性化學習等。
⑵ 面向項目探究式教學的教學內(nèi)容和教學方法改革
結(jié)合新工科對本科教育提出的新要求,我們通過探究式教學模式改革程序設計語言課程的現(xiàn)有教學內(nèi)容和方法。從情境構(gòu)建、任務分解、獨立探究、協(xié)作學習、綜合評價等方面研究教學方法的設計要素和教學步驟的指導性原則。我們緊密結(jié)合現(xiàn)實的軟件項目需求,構(gòu)建適用于探究式教學的項目環(huán)境,從面向?qū)W生工程應用能力發(fā)展的角度進行任務分解,促進學生在完成任務過程中做到學以致用和活學活用。
在具體的實踐方面,我們利用在線教學平臺和開源軟件社區(qū)的學習資源,豐富教學內(nèi)容;利用在線學習社區(qū),組織多樣化的學習協(xié)作小組,增強學生的自主學習與團隊協(xié)作能力;通過增設研究生助教的形式來強化對學生實踐環(huán)節(jié)的線下和線上輔導,以緩解實驗課時不足的矛盾。同時,在教學內(nèi)容和教學方法方面也進行了重點改革。①基于EduCoder系統(tǒng)(educoder.net)設計游戲通關(guān)式的練習與測試資源庫,引導學生從游戲中學習、在學習中競爭,引導學生真正喜歡編程。近年來我們已在EduCoder建設了多門課程,構(gòu)建了可以支撐探究式教學的較為完善的資源庫。②從開源中國和GitHub等開源軟件社區(qū)引入一些具有新意的開源軟件,幫助學生快速體驗到程序設計的樂趣感與成就感。以面向?qū)ο蟪绦蛟O計課程教學中的游戲作品開發(fā)環(huán)節(jié)為例,我們不再拘泥于要求學生手工編寫作品的全部代碼,而是引導學生自主性地探究一個給定的代碼行在2000到5000行左右的開源游戲源碼,完成一系列針對該開源項目的Bug分析與修復、系統(tǒng)重構(gòu)設計與實現(xiàn)、游戲功能的擴展與完善等開放性任務。我們以學習小組為單位,組織“游戲測試與開發(fā)迭代”的開放式挑戰(zhàn)賽,營造小組間的競爭與相互學習氛圍。通過引入設計模式的原理和思想,教師以具體的項目案例為基礎(chǔ),引導學生直觀地體會編碼的藝術(shù)性,理解實現(xiàn)系統(tǒng)的可維護、可重用的重要性,讓學生身臨其境地感受經(jīng)典的代碼編寫模式、高效的程序開發(fā)框架、強大的界面表現(xiàn)力等,從而快速培養(yǎng)學生的學習興趣。
4 新工科背景下教學改革的實踐
近年來,我們在面向?qū)ο蟪绦蛟O計課程的教學中進行了改革實踐。該課程的教學目標和教學要求確定為:①基于Java語言講授面向?qū)ο蟪绦蛟O計,進行面向?qū)ο笏季S、方法的訓練;②通過學習、設計及編程實現(xiàn),學生能熟練使用UML類圖和常用的設計模式,具有一定的面向?qū)ο笤O計、開發(fā)能力;③通過開源項目分析與重構(gòu)訓練,為后續(xù)課程及大型應用軟件的研究、設計打下基礎(chǔ)。
教學過程采用多媒體教室授課和實驗室實踐相結(jié)合,分組學習與課堂討論相結(jié)合,學生的個性化學習與分組匯報相結(jié)合,進行任務驅(qū)動的探究式教學。在具體教學實施時,我們基于EduCoder平臺開展線上與線下教學下結(jié)合的混合式教學方式。
⑴ 基于平臺的“試卷”模塊,通過設計多次知識能力測試和綜合能力測試,以對學生進行認知能力分析和綜合素質(zhì)診斷。一方面,這些分析與診斷結(jié)果將直接用于指導任課教師優(yōu)化現(xiàn)有的教學內(nèi)容及教學過程,可有針對性地對學生進行輔導和指導。另一方面,根據(jù)測試所獲得的學生在學習能力、學習狀態(tài)和協(xié)作能力等方面的量化評分數(shù)據(jù),按照“組間同質(zhì)、組內(nèi)異質(zhì)”的原則,指導任課教師構(gòu)建更加合理的學習小組[10],以更高效的開展合作學習。
⑵ 基于平臺的“實訓作業(yè)”模塊,導入平臺現(xiàn)有的豐富“實訓”資源,并發(fā)布給學生在課后針對“面向?qū)ο缶幊獭毕嚓P(guān)的知識點進行全覆蓋的密集式訓練,以確保學生能夠扎實地理解封裝、繼承、多態(tài)等基本概念,正確地運用重載和重寫、抽象類和接口、常用的工具類等。
⑶ 基于平臺的“普通作業(yè)”模塊,手工新建十余個“實驗”項目,任課教師在實驗課時可對學生進行涉及重點、難點知識的針對性輔導,尤其強調(diào)培養(yǎng)學生利用UML進行系統(tǒng)分析和設計的能力,也要求學生至少熟練應用工廠模式、建造者模式、單例模式、適配器模式、橋接模式、組合模式、裝飾模式、外觀模式、命令模式、策略模式等經(jīng)典設計模式。
⑷ 通過“分組作業(yè)”模塊手工新建兩個“作品設計”項目(包括一個擁有1000多行代碼的坦克大戰(zhàn)游戲和一個擁有數(shù)十萬行代碼的工作流系統(tǒng)開源項目),組織學生進行開源項目的源碼分析、Bug識別與修復、系統(tǒng)重構(gòu)的設計與實現(xiàn)、功能擴展與完善等,并鼓勵和落實作品的合作學習及相互點評,啟發(fā)學生自主思考和自我提升,實現(xiàn)學生發(fā)現(xiàn)問題、分析問題和解決問題能力的培養(yǎng)。
⑸ 利用平臺的“統(tǒng)計”模塊,定期公布學生在線學習情況的綜合排名及得分,點評有代表性的學生在平臺上的表現(xiàn),這樣能對大多數(shù)學生起到督促和導向作用,并且,對于改進學生的學習積極性和提高在線學習的活躍程度也均是有益的。
5 結(jié)束語
通過近年來的努力,我們在新工科背景下基于程序設計語言課程的探究式教學過程取得了較好的改革效果,主要表現(xiàn)在:學生對于程序設計語言的學習興趣較濃;學生的自主學習和協(xié)作學習的意識不斷提升;學生解決實際應用問題的能力有一定程度的增強;學生期末考核的不及格率呈明顯下降趨勢;參加省級學科競賽的學生人數(shù)持續(xù)增加,特別是軟件工程專業(yè)學生,近三年來均取得了多項省級大學生程序設計競賽的一、二、三等獎;不少學生獲得了校級或省級大學生研究性學習和創(chuàng)新性實驗計劃項目資助,人才培養(yǎng)質(zhì)量得以提升。接下來,我們將進一步結(jié)合校企合作背景來構(gòu)建與大數(shù)據(jù)、云計算、人工智能等相關(guān)的教學案例,引導學生進行跨學科、跨專業(yè)的遷移學習。
參考文獻(References):
[1] 陳亮,薛紀文,霍煒.新工科背景下的程序設計語言課程教學研究[J].計算機教育,2019.5:133-136
[2] 王宇,陸秋.新工科背景下非計算機專業(yè)計算思維的培養(yǎng)模式探究[J].計算機教育,2019.5:150-153
[3] 周黎鳴,郭拯危.新工科背景下Java程序設計課程改革探索與思考[J].計算機時代,2019.4:93-95
[4] 趙廣輝.面向新工科的Python程序設計交叉融合案例教學[J].計算機教育,2017.8:23-27
[5] 王春霞.新工科背景下Visual Basic程序設計教學改革與索[J].大學教育,2019.103(1):101-103
[6] 許健松.高校探究式教學模式的創(chuàng)新與拓展[J]. 中國大學教學,2018.11:35-37
[7] 騰訊網(wǎng).從“課堂革命”到國家級教學成果獎特等獎:川大的探索[EB/OL].2018-10-25[2020-08-13]. https://new.qq.com/omn/20181026/20181026A0KM07.html.
[8] 胡文龍.基于CDIO的工科探究式教學改革研究[J].高等工程教育研究,2014.1:163-168
[9] 馮露,亢一瀾,王志勇,孫建,王世斌,賈啟芬,沈岷. 基于問題學習的探究式教學改革實踐[J].高等工程教育研究,2013.4:176-180
[10] 張紅宇,王堅強,馬華.結(jié)合社會網(wǎng)絡分析和多維特征聚類的學習小組劃分方法[J].計算機應用研究, 2013.30(3):732-735