張榮博,許 莉,叢麗暉,李勝宇
(沈陽航空航天大學(xué) 計算機學(xué)院,遼寧 沈陽 110136)
程序設(shè)計能力是計算機類技術(shù)人才的核心能力,對其職業(yè)發(fā)展至關(guān)重要,但從教學(xué)和就業(yè)反饋結(jié)果看,學(xué)生的程序設(shè)計能力普遍偏弱,存在動手實踐能力不夠,邏輯思維能力和計算思維能力不足,缺乏軟件設(shè)計、開發(fā)經(jīng)驗等問題。程序設(shè)計能力需要程序語言運用、開發(fā)工具使用、運行環(huán)境理解、問題算法設(shè)計等多種知識和技能的共同支撐,需要學(xué)生長期自覺實踐和主動學(xué)習(xí)相配合。程序設(shè)計基礎(chǔ)是培養(yǎng)學(xué)生程序設(shè)計能力的基礎(chǔ)課程,但傳統(tǒng)的課程教學(xué)模式是以教為中心、面向課程的教育模式,其特點是偏重知識的輸入,對學(xué)生程序設(shè)計能力產(chǎn)出的關(guān)注不夠[1]。另外由于缺乏有效的實踐訓(xùn)練方法和評測手段以及教學(xué)效果評價形式單一,學(xué)生與教師之間缺乏有效的配合和協(xié)同,存在認(rèn)知斷裂現(xiàn)象,不能有效激發(fā)學(xué)生自主學(xué)習(xí)動能。
程序設(shè)計基礎(chǔ)通常是計算機類專業(yè)在大學(xué)第一學(xué)期面向無編程基礎(chǔ)的學(xué)生開設(shè)的程序設(shè)計類課程,與數(shù)據(jù)結(jié)構(gòu)、面向?qū)ο蟪绦蛟O(shè)計、編譯方法等課程共同、遞進地培養(yǎng)學(xué)生的程序設(shè)計能力。因此課程的教學(xué)目標(biāo)不能孤立的設(shè)置,應(yīng)該梳理與專業(yè)培養(yǎng)方案中畢業(yè)要求的支撐關(guān)系,以及后續(xù)課程所需的先導(dǎo)知識和能力儲備的要求來制訂。表1 是程序設(shè)計基礎(chǔ)課程對畢業(yè)要求的支撐關(guān)系,從中可以看出程序設(shè)計基礎(chǔ)課程應(yīng)該著重培養(yǎng)學(xué)生采用計算機思維分析問題、解決問題的能力,并能掌握解決計算機領(lǐng)域復(fù)雜工程問題的工具的使用。
在軟件工程專業(yè)規(guī)范[2]中也指出:“程序設(shè)計基礎(chǔ)課程通過講解程序設(shè)計語言和程序設(shè)計技術(shù),使學(xué)生理解程序設(shè)計語言的基本結(jié)構(gòu),掌握程序設(shè)計的基本思想、方法和技巧,養(yǎng)成良好的程序設(shè)計習(xí)慣,培養(yǎng)學(xué)生使用計算機求解問題的基本能力,具備初步的高級語言程序設(shè)計能力”。綜上確定課程的4 個教學(xué)目標(biāo)。
表1 程序設(shè)計基礎(chǔ)課程對畢業(yè)要求的支撐關(guān)系
(1)理解程序設(shè)計語言的基本結(jié)構(gòu),掌握程序設(shè)計的基本思想、方法和技巧,養(yǎng)成良好的程序設(shè)計習(xí)慣。
(2)理解計算機程序的執(zhí)行過程,能熟練使用開發(fā)工具完成程序代碼編輯、編譯、調(diào)試和運行等環(huán)節(jié)。
(3)培養(yǎng)學(xué)生的計算思維和使用計算機求解問題的基本能力。
(4)具備初步的高級語言程序設(shè)計能力。
明確課程教學(xué)目標(biāo)后,根據(jù)授課對象的特征和學(xué)生對程序設(shè)計知識體系的認(rèn)知規(guī)律,按照先易后難、從知識到技能、從程序設(shè)計方法到計算思維的多維度,分層次、按模塊重構(gòu)知識體系,總體情況見表2。
表2 課程知識體系
(1)程序設(shè)計基礎(chǔ)課程的授課對象通常對計算機基本工作原理和信息數(shù)據(jù)表達等專業(yè)性較強的知識理解不夠,計算機基礎(chǔ)知識模塊通過介紹計算機的基本工作原理、物理信息(如圖形、游戲等)在計算機內(nèi)的存儲方式等知識激發(fā)學(xué)生探索計算機編程的興趣,通過介紹馮?諾依曼計算機結(jié)構(gòu)幫助學(xué)生在腦海中初步建立計算機運行模型。
(2)程序設(shè)計語言模塊采用較少的學(xué)時梳理語法知識及可視化開發(fā)工具的使用技巧。算法分析與設(shè)計模塊是理論教學(xué)的重點內(nèi)容,旨在通過精選案例的分析,逐步加深學(xué)生對程序及計算機內(nèi)存結(jié)構(gòu)的理解,培養(yǎng)學(xué)生的計算思維。模塊化程序設(shè)計模塊依托函數(shù)機制,訓(xùn)練學(xué)生自頂向下、逐步分解的程序設(shè)計思維。
(3)內(nèi)存管理和控制模塊是程序設(shè)計基礎(chǔ)課程的難點內(nèi)容,通過剖析內(nèi)存的本質(zhì),結(jié)合編程實踐訓(xùn)練,使學(xué)生理解指針的概念,駕馭指針的應(yīng)用。數(shù)據(jù)抽象與設(shè)計模塊通過數(shù)據(jù)封裝強化學(xué)生對信息的歸納和抽象訓(xùn)練。
(4)項目開發(fā)技術(shù)模塊采用在機房講授可視化開發(fā)技術(shù)的方式,進一步激發(fā)學(xué)生對專業(yè)知識探索的興趣。
程序設(shè)計基礎(chǔ)課程以C 語言作為載體語言,介紹計算思維方法和程序設(shè)計基本思想,授課過程中不以語言語法為主線,而是將語法穿插在程序設(shè)計過程中詳細(xì)準(zhǔn)確的介紹,重在教授學(xué)生采用計算機思維分析問題、解決問題的方法和技巧。
精選以培養(yǎng)學(xué)生計算思維為主線的課程教學(xué)內(nèi)容,課程講授重點放在問題分析、模型建立、算法設(shè)計上,以此來培養(yǎng)學(xué)生的計算思維、分析問題和解決問題的能力。在課程教學(xué)內(nèi)容講解時,結(jié)合實際生活尤其是工程應(yīng)用中的案例設(shè)計教學(xué)實例,重點訓(xùn)練學(xué)生對問題信息進行歸納、分析、抽象等邏輯思維能力。如果教學(xué)實例是經(jīng)過了抽象、簡化等處理后的產(chǎn)品,雖然可以訓(xùn)練學(xué)生掌握語言語法和程序結(jié)構(gòu),但缺少對實際問題的抽象和建模訓(xùn)練,從而導(dǎo)致學(xué)生遇到和實際相關(guān)的題目時仍無從下手。例如字符串比較的經(jīng)典問題講解,選用“windows 系統(tǒng)登錄驗證”案例,三次機會比對用戶名和密碼,既可以加強學(xué)生對循環(huán)條件控制和多重循環(huán)知識的理解,又能訓(xùn)練學(xué)生從工程應(yīng)用中抽出問題的本質(zhì)和設(shè)計解決方案。
思維訓(xùn)練的另一個重要方面是問題的分解與組合[3],因此在設(shè)計教學(xué)實例時還應(yīng)注重實例間的關(guān)系,讓實例不僅能單獨解決一個問題,還能夠通過實例的組合、拓展來完成更復(fù)雜的問題。例如,在講授一維數(shù)組、查找與排序等內(nèi)容時,選用某班級學(xué)生獎學(xué)金評定程序作為案例,核心問題是數(shù)據(jù)的順序存儲、排序及比較等運算;講授二維數(shù)組時,案例升級成某學(xué)院年級獎學(xué)金評定程序,關(guān)注多維數(shù)據(jù)存儲方法;講授結(jié)構(gòu)體內(nèi)容時,案例強調(diào)對學(xué)生、成績等信息的抽象和提??;最后,要求采用文件對系統(tǒng)數(shù)據(jù)持久化。
實踐是促進各種知識融會貫通,提高程序設(shè)計能力的最好磨刀石,為了提高學(xué)生的程序設(shè)計能力,培養(yǎng)學(xué)生自覺學(xué)習(xí)的習(xí)慣,教學(xué)過程中強化實踐訓(xùn)練,學(xué)生可以自主完成的教學(xué)活動,如預(yù)習(xí)、練習(xí)、實驗和考試等均采用上機完成,用實踐驅(qū)動學(xué)生對程序設(shè)計的理解。為了提高教師的授課效果,采用小班授課,并將實踐性和操作性強的內(nèi)容安排在實驗室講授,打破以往的課程教學(xué)中“老師講、學(xué)生聽”的模式,做到邊講邊練、精講多練,便于師生互動及實踐環(huán)節(jié)輔導(dǎo),使學(xué)生熟練掌握編程語言與開發(fā)工具使用,避免學(xué)生出現(xiàn)“會讀不會寫、會寫不會調(diào)”的情況。
針對程序設(shè)計基礎(chǔ)課程實踐性強的特點,摒棄教師批改學(xué)生紙質(zhì)作業(yè)的方式,搭建包含在線評判、代碼相似度比較等功能的程序設(shè)計類課程教學(xué)平臺,教師根據(jù)知識點建立程序設(shè)計習(xí)題庫[4]。學(xué)生在線完成作業(yè)并提交評判,既能有效避免作業(yè)抄襲情況,又能提升學(xué)生學(xué)習(xí)程序設(shè)計的動力和提高程序設(shè)計能力。
傳統(tǒng)的教與學(xué)之間的反饋包括教師課堂提問、課后答疑等方式,師生之間溝通的時間和地點都相對固定,不能保證反饋的時效性。利用信息化手段,依托課程平臺、QQ 課程群、學(xué)習(xí)論壇等方式,建立多元化教學(xué)跟蹤反饋體系,確保對學(xué)生的學(xué)習(xí)狀態(tài)、學(xué)習(xí)效果能夠及時、準(zhǔn)確的掌握,并能及早做出干預(yù)和教學(xué)調(diào)整,具體措施如下。
(1)依托課程教學(xué)平臺,采用電子作業(yè)、程序自動評判和作業(yè)成績實時發(fā)布等方式,及時、有效地向?qū)W生反饋自身知識點的掌握情況,有利于學(xué)生及時、準(zhǔn)確地調(diào)整自己的學(xué)習(xí)狀態(tài)。
(2)教師通過教學(xué)平臺實時監(jiān)控學(xué)生的學(xué)習(xí)狀態(tài)或知識點掌握情況,并通過習(xí)題課、專項輔導(dǎo)的形式對學(xué)生的學(xué)習(xí)進行早期干預(yù)。
(3)依托教學(xué)平臺,搭建課程學(xué)習(xí)論壇、QQ 課程群,方便學(xué)生及時、準(zhǔn)確地反饋學(xué)習(xí)中的問題,同時方便教師答疑,以及學(xué)生之間的學(xué)習(xí)互助。
考核是檢驗學(xué)生學(xué)習(xí)成果的重要方法,也是激勵學(xué)生積極主動學(xué)習(xí)的有效手段,基于OBE教育理念是以學(xué)生的學(xué)習(xí)成果為中心來展開教學(xué),擯棄以考查學(xué)生對知識點掌握情況的期末考試方式,采用過程化考核,關(guān)注學(xué)生對知識的運用能力,強調(diào)對學(xué)習(xí)目標(biāo)的達成度的考查。
(1)作業(yè)考核,占課程總成績的10%,采用小目標(biāo)過程考核,抽取課程中所有可考核的教學(xué)活動,根據(jù)活動內(nèi)容和特點設(shè)置考核要求,考核點要粒度小、覆蓋廣、易達成,使學(xué)生在考核中能獲得持續(xù)激勵,減少抵觸并逐步建立自覺學(xué)習(xí)習(xí)慣。
(2)實驗考核,占課程總成績的10%,考核學(xué)生針對實際應(yīng)用題目,進行分析問題、設(shè)計問題解決方案及撰寫實驗報告的能力。
(3)階段性考核,占課程總成績的30%,階段性考核題目難度與范圍要比作業(yè)題目大,主要考核學(xué)生對知識的綜合運用能力。
(4)期末考試,占課程總成績的50%,題目類型全部為編程題,評價學(xué)生的程序設(shè)計及編程實踐能力。
所有的考核都通過課程平臺在線評判,考核貫穿于整個教學(xué)過程,有利于學(xué)生根據(jù)考核效果及時調(diào)整學(xué)習(xí)態(tài)度和學(xué)習(xí)方法,也為教師調(diào)整教學(xué)進度和方法提供依據(jù),最終促進教學(xué)目標(biāo)的達成。
自2016 年開始課程改革實踐以來,經(jīng)歷了多輪的繼續(xù)改進,從實際教學(xué)效果來看,改革起到了較好作用,2016—2019 年期間某任課教師教授的兩個自然班的課程教學(xué)目標(biāo)的達成情況如圖1 所示。模塊化的知識體系結(jié)合精選教學(xué)案例的分析加深了學(xué)生對程序設(shè)計思想的理解,采用小目標(biāo)過程考核以及依托課程教學(xué)平臺搭建的教學(xué)反饋體系激發(fā)了學(xué)生對程序設(shè)計課程的學(xué)習(xí)興趣,逐漸養(yǎng)成了自主學(xué)習(xí)的習(xí)慣。通過課程教學(xué)平臺統(tǒng)計的學(xué)生在線練習(xí)的評測時間分布如圖2 所示,可以看出學(xué)生在晚自習(xí)之后主動利用2~3 小時的時間學(xué)習(xí)程序設(shè)計。
改革同時也提升了教師的教學(xué)水平和實踐能力,教師勞動由低質(zhì)量的重復(fù)性講授知識,逐漸轉(zhuǎn)向教學(xué)案例組織、試題設(shè)計和教學(xué)研究等高質(zhì)量勞動。目前課程教師團隊已經(jīng)依托課程教學(xué)平臺,建設(shè)了符合本校學(xué)生特點、涵蓋所有課程知識體系的作業(yè)題1 000 余套,考試題200 余套,極大地豐富了學(xué)生編程練習(xí)內(nèi)容和提高了實踐訓(xùn)練強度。
圖1 2016—2019 年課程教學(xué)目標(biāo)達成度
圖2 學(xué)生在線練習(xí)評測時間分布
不斷提高教育質(zhì)量是高等教育追求的永恒“不動點”[5],基于OBE 教育理念的程序設(shè)計基礎(chǔ)課程改革,以學(xué)生的程序設(shè)計能力產(chǎn)出為導(dǎo)向,明確了課程的教學(xué)目標(biāo),按照模塊化重構(gòu)課程知識體系,以培養(yǎng)計算思維為主線組織教學(xué)內(nèi)容,以提高學(xué)生程序設(shè)計能力為目標(biāo)開展各類教學(xué)活動,采用小目標(biāo)過程考核以及依托課程教學(xué)平臺搭建的教學(xué)反饋體系激勵學(xué)生積極、主動參與整個教學(xué)過程。實踐表明,改革后的教學(xué)模式提高了學(xué)生程序設(shè)計能力。