俞文昌,章哲慶
(池州學(xué)院 大數(shù)據(jù)與人工智能學(xué)院,安徽 池州 247000)
工程教育專業(yè)認(rèn)證以國際上最具影響力的工程教育學(xué)位互認(rèn)協(xié)議《華盛頓協(xié)議》為基礎(chǔ),我國于2016年6月成為《華盛頓協(xié)議》的正式成員。從某種程度上說,工科專業(yè)通過了工程教育認(rèn)證,相當(dāng)于得到了其他加入《華盛頓協(xié)議》的地區(qū)或織的認(rèn)可,為工科畢業(yè)生走向世界打下了基礎(chǔ)[1]。
工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn)第三節(jié)畢業(yè)要求[2]中有九條提到了“復(fù)雜工程問題”。要求畢業(yè)生能夠?qū)Α皬?fù)雜工程問題”進(jìn)行分析研究、提出方案、解決問題和評(píng)價(jià)過程。標(biāo)準(zhǔn)明確指出“復(fù)雜工程問題”是指必須運(yùn)用深入的工程原理,經(jīng)過分析才可能得到解決;同時(shí)還應(yīng)具備涉及多方面的技術(shù)、工程和其它因素,并可能相互有一定沖突;需要通過建立合適的抽象模型才能解決,在建模過程中需要體現(xiàn)出創(chuàng)造性,不是僅靠常用方法就可以完全解決的問題。
“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程是專業(yè)基礎(chǔ)課,作為程序設(shè)計(jì)類課程對(duì)程序設(shè)計(jì)實(shí)踐能力提出很高要求。課程以面向?qū)ο笳Z言(Java,C#,C++等)學(xué)習(xí)為主,訓(xùn)練學(xué)生使用面向?qū)ο笏枷敕治?、設(shè)計(jì)和解決問題的能力。當(dāng)前“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程教學(xué)存在實(shí)驗(yàn)考察知識(shí)點(diǎn)相互割裂、考核手段單一、學(xué)生代碼量不足的問題,導(dǎo)致學(xué)生程序?qū)嵺`能力差,解決復(fù)雜工程問題的能力弱。本文將結(jié)合工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn)和當(dāng)前“面向?qū)ο蟪绦蛟O(shè)計(jì)”實(shí)踐課程在教學(xué)實(shí)踐中存在的問題探討“面向?qū)ο蟪绦蛟O(shè)計(jì)”實(shí)踐課程教學(xué)方法改革中的一些思考。
“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程目前以“理論講授+實(shí)踐教學(xué)”的教學(xué)模式,很多的專家和老師對(duì)本課程教學(xué)進(jìn)行了廣泛的研究與改革。但是結(jié)合教學(xué)實(shí)踐和工程教育專業(yè)認(rèn)證的要求,筆者認(rèn)為“面向?qū)ο蟪绦蛟O(shè)計(jì)”實(shí)踐課程存在以下問題。
當(dāng)前課程教學(xué)實(shí)踐中以理論教學(xué)為中心,實(shí)驗(yàn)課程往往作為理論知識(shí)點(diǎn)鞏固的輔助。實(shí)驗(yàn)設(shè)計(jì)的指導(dǎo)思想是為鞏固對(duì)應(yīng)章節(jié)知識(shí)點(diǎn),因此實(shí)驗(yàn)考察知識(shí)點(diǎn)之間相互獨(dú)立。這種實(shí)驗(yàn)有利于學(xué)生加深對(duì)所學(xué)各章節(jié)知識(shí)點(diǎn)的理解,但會(huì)造成學(xué)生學(xué)習(xí)和掌握的不同知識(shí)點(diǎn)之間相互割裂,無法有效地組織在一起[3]。當(dāng)面臨一個(gè)復(fù)雜工程問題時(shí),由于缺乏對(duì)綜合問題求解的訓(xùn)練,學(xué)生難以將學(xué)習(xí)的知識(shí)點(diǎn)相互融合。造成學(xué)生在畢業(yè)設(shè)計(jì)中接觸相對(duì)復(fù)雜工程問題時(shí)無從下手,結(jié)果不理想的情況。
“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程教材一般都配有相應(yīng)的實(shí)驗(yàn)指導(dǎo)書。以耿祥義等主編的Java“面向?qū)ο蟪绦蛟O(shè)計(jì)”(第三版)為例,該教材配有Java“面向?qū)ο蟪绦蛟O(shè)計(jì)”實(shí)驗(yàn)指導(dǎo)。實(shí)驗(yàn)指導(dǎo)書上實(shí)驗(yàn)形式為程序填空,學(xué)生需要在程序模板的空白位置按照實(shí)驗(yàn)要求填上對(duì)應(yīng)代碼。實(shí)驗(yàn)考核手段則是查看學(xué)生填寫的代碼是否正確。這種實(shí)驗(yàn)形式和考核手段比較單一,出現(xiàn)學(xué)生直接抄襲答案的情況。這種實(shí)驗(yàn)形式和考核手段既不利于準(zhǔn)確掌握學(xué)生的學(xué)習(xí)情況,也難以激發(fā)學(xué)生的學(xué)習(xí)熱情。
當(dāng)前實(shí)驗(yàn)教學(xué)設(shè)計(jì)的目的往往是鞏固所學(xué)知識(shí)點(diǎn),要求學(xué)生能正確運(yùn)用所學(xué)知識(shí)點(diǎn)寫出關(guān)鍵部分代碼,而對(duì)學(xué)生代碼量并沒有明確要求。統(tǒng)計(jì)前文提到的實(shí)驗(yàn)指導(dǎo)書上24個(gè)實(shí)驗(yàn),平均每個(gè)實(shí)驗(yàn)需要學(xué)生獨(dú)立編寫的代碼僅有4.4行,甚至部分實(shí)驗(yàn)只需要學(xué)生閱讀代碼。這樣實(shí)驗(yàn)課程導(dǎo)致學(xué)生一個(gè)學(xué)期獨(dú)立編寫的代碼甚至不超過200行,代碼量嚴(yán)重不飽和。這將不利于學(xué)生編程能力的鍛煉,更不用說鍛煉學(xué)生解決復(fù)雜工程問題的能力。
結(jié)合工程教育認(rèn)證標(biāo)準(zhǔn)中畢業(yè)要求對(duì)“復(fù)雜工程問題”的解釋和人才培養(yǎng)方案中本課程的培養(yǎng)目標(biāo),筆者認(rèn)為“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程設(shè)計(jì)應(yīng)該具備以下特點(diǎn):
工程教育專業(yè)認(rèn)證對(duì)學(xué)生應(yīng)對(duì)復(fù)雜工程的能力提出明確要求,實(shí)驗(yàn)復(fù)雜度可量化分析是合理安排實(shí)驗(yàn)復(fù)雜度,訓(xùn)練學(xué)生應(yīng)對(duì)復(fù)雜工程問題的基礎(chǔ)?!懊嫦?qū)ο蟪绦蛟O(shè)計(jì)”實(shí)驗(yàn)的量化分析可從基礎(chǔ)語法、面向?qū)ο?、高?jí)語法、復(fù)雜邏輯和代碼量五個(gè)維度來量化衡量。分析結(jié)果可用如圖1雷達(dá)圖可視化表示。
圖1 問題復(fù)雜度雷達(dá)圖
表1展示了一種“面向?qū)ο蟪绦蛟O(shè)計(jì)”實(shí)驗(yàn)復(fù)雜度量化評(píng)分細(xì)則,五個(gè)維度滿分均為10分,各維度按照考察重點(diǎn)和知識(shí)點(diǎn)難易程度確定分值。評(píng)分細(xì)則可在教學(xué)實(shí)踐中不斷調(diào)優(yōu)。對(duì)課程實(shí)驗(yàn)復(fù)雜度的量化分析,為合理實(shí)驗(yàn)規(guī)劃和實(shí)驗(yàn)設(shè)計(jì)提供數(shù)據(jù)支撐。
表1 問題復(fù)雜度評(píng)分細(xì)則
基于實(shí)驗(yàn)復(fù)雜度量化分析,課程實(shí)驗(yàn)對(duì)實(shí)驗(yàn)復(fù)雜度的規(guī)劃可更合理和靈活。實(shí)驗(yàn)安排應(yīng)兼顧教學(xué)階段和具體學(xué)情,既要促進(jìn)學(xué)生對(duì)所學(xué)知識(shí)點(diǎn)的理解,也要注重對(duì)學(xué)生程序設(shè)計(jì)和應(yīng)對(duì)復(fù)雜工程問題能力的鍛煉。實(shí)驗(yàn)大綱可設(shè)定課程實(shí)驗(yàn)總體復(fù)雜度標(biāo)準(zhǔn),同時(shí)還可設(shè)定單個(gè)維度復(fù)雜度最低標(biāo)準(zhǔn)。以代碼量復(fù)雜度為例,程序設(shè)計(jì)類課程代碼飽和度達(dá)成,顯著提高學(xué)生的編碼能力[4],課程實(shí)驗(yàn)大綱可設(shè)置“代碼量”單項(xiàng)復(fù)雜度最低標(biāo)準(zhǔn)。中等復(fù)雜問題的代碼量一般在300-500行代碼,代碼量復(fù)雜度應(yīng)該在6-8分。整個(gè)課程學(xué)生的平均代碼量應(yīng)該在1000行以上,則可要求整個(gè)課程代碼量復(fù)雜度不低于20分。
考核標(biāo)準(zhǔn)會(huì)直接影響學(xué)生的實(shí)驗(yàn)過程和試驗(yàn)方法,在很大程度上決定實(shí)驗(yàn)效果。面向?qū)ο笳n程實(shí)驗(yàn)考核標(biāo)準(zhǔn)分為三個(gè)維度:功能完整、面向?qū)ο蠛途幊田L(fēng)格。功能完整維度重點(diǎn)檢查程序是否完整實(shí)現(xiàn)實(shí)驗(yàn)要求的功能;面向?qū)ο缶S度要求學(xué)生使用面向?qū)ο蟮乃枷雭矸治鰵w納問題涉及的各個(gè)類型對(duì)象,正確歸納對(duì)象的屬性和方法,正確處理對(duì)象之間的關(guān)系,尤其考察對(duì)于繼承和多態(tài)的應(yīng)用能力;編程風(fēng)格維度重點(diǎn)考察程序的可讀性、擴(kuò)展性和可維護(hù)性。好的編程風(fēng)格是合格程序設(shè)計(jì)人員必備素質(zhì),在平時(shí)的實(shí)踐課程中需要對(duì)學(xué)生嚴(yán)格要求。
本節(jié)以筆者在計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)18級(jí)和19級(jí)面向?qū)ο笳n程教學(xué)中使用到的案例《畫板應(yīng)用程序》說明在教學(xué)實(shí)踐中對(duì)實(shí)驗(yàn)復(fù)雜度量化分析、實(shí)驗(yàn)設(shè)計(jì)思路、實(shí)驗(yàn)考核標(biāo)準(zhǔn)和結(jié)果分析。實(shí)驗(yàn)題目要求如下。
設(shè)計(jì)實(shí)現(xiàn)畫板應(yīng)用程序,程序可以畫出矩形、橢圓和線段,坐標(biāo)的精確度為整型,左上角像素編號(hào)為(0,0),形狀可設(shè)置填充色。按照下列要求完成實(shí)驗(yàn):
(1)設(shè)計(jì)形狀的類Shape,形狀類包含兩個(gè)坐標(biāo)點(diǎn),顏色屬性,抽象函數(shù)draw();設(shè)計(jì)形狀矩形Rect、橢圓Ellipse類繼承自形狀類,實(shí)現(xiàn)形狀類的抽象函數(shù)draw(具體實(shí)現(xiàn)可在控制體打印文字)。實(shí)現(xiàn)各形狀的equal,hashCode,toString函數(shù)。
(2)從文件加載形狀信息并保存在ArrayList中,繪制在用戶圖形界面。
(3)使用鼠標(biāo)事件繪制出幾何形狀,通過鼠標(biāo)可拖動(dòng)和改變幾何形狀大小,可以雙擊刪除幾何形狀,可將繪制的圖片保存在文件中,且可以再次打開文件編輯
參考表1問題復(fù)雜度評(píng)分細(xì)則對(duì)本題復(fù)雜度量化分析:基礎(chǔ)語法,各細(xì)則項(xiàng)都有涉及得10/10分;面向?qū)ο螅瑂tatic和final兩個(gè)關(guān)鍵詞未考察得9/10分;高級(jí)語法,只考察了用戶圖形界面得3/10分;邏輯復(fù)雜度,性能優(yōu)化未考察得8/10分;代碼量,預(yù)估代碼量在300~400行得7/10分。本實(shí)驗(yàn)總體復(fù)雜度得分37/50,圖2是實(shí)驗(yàn)問題復(fù)雜度雷達(dá)圖?;谝陨戏治龊涂梢暬芍緦?shí)驗(yàn)是具有一定綜合要求的中等復(fù)雜問題,重點(diǎn)考察程序設(shè)計(jì)基礎(chǔ)和面向?qū)ο缶幊獭?/p>
圖2 問題復(fù)雜度雷達(dá)圖
實(shí)驗(yàn)案例設(shè)計(jì)以鞏固知識(shí)點(diǎn),鍛煉學(xué)生程序設(shè)計(jì)能力和解決復(fù)雜工程能力為目標(biāo)。在教學(xué)中首先引導(dǎo)學(xué)生將較為復(fù)雜的實(shí)驗(yàn)分解成多個(gè)知識(shí)點(diǎn),然后逐個(gè)知識(shí)點(diǎn)突破,最后將這些知識(shí)點(diǎn)融合以實(shí)現(xiàn)對(duì)復(fù)雜問題的求解。
本實(shí)驗(yàn)案例可分解為:面向?qū)ο缶幊獭⒗^承與多態(tài)、用戶圖形界面和事件處理四個(gè)知識(shí)點(diǎn)。教學(xué)過程不同階段重點(diǎn)考察對(duì)應(yīng)知識(shí)點(diǎn)而弱化其他知識(shí)點(diǎn)要求。隨著教學(xué)階段推進(jìn),知識(shí)點(diǎn)逐個(gè)突破,最后要求學(xué)生能夠?qū)崿F(xiàn)功能完整具有一定工程復(fù)雜度的畫板應(yīng)用程序。
本實(shí)驗(yàn)案例在功能完整性、面向?qū)ο缶幊?、代碼風(fēng)格三個(gè)方面的具體考核細(xì)則如表3所示:
表3 畫板程序評(píng)分細(xì)則表
18、19計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)206位同學(xué)的得分統(tǒng)計(jì)如圖3。功能完整整體平均分為32/40,基本能實(shí)現(xiàn)題目要求功能,失分主要是沒有實(shí)現(xiàn)可保,存可重復(fù)編輯功能。面向?qū)ο蟮梅?5/40,失分多為沒有使用多態(tài)特征和abstract關(guān)鍵詞,說明學(xué)生對(duì)于面向?qū)ο蠛诵乃枷胝莆蘸挽`活運(yùn)用的能力有待提高。編程風(fēng)格部分得分12/20,這部分各考核項(xiàng)都有失分,尤其代碼縮進(jìn)和合理注釋。通過本實(shí)驗(yàn)得失分分析發(fā)現(xiàn)學(xué)生在完成實(shí)驗(yàn)時(shí)注重功能要求,而忽略了代碼風(fēng)格的要求,面向?qū)ο蟮木幊趟季S比較薄弱。
圖3 學(xué)生得分分布直方圖
代碼飽和度分析部分統(tǒng)計(jì)了206位學(xué)生提交的最終實(shí)驗(yàn)代碼,代碼行數(shù)的中位數(shù)457行,均值為420行,代碼行數(shù)分布直方圖如圖4。本實(shí)驗(yàn)的代碼飽和度略高于問題復(fù)雜度量化分析部分預(yù)期,相較于傳統(tǒng)實(shí)驗(yàn)代碼量有著明顯增加。
圖4 學(xué)生代碼行數(shù)分布直方圖
為了培養(yǎng)學(xué)生應(yīng)對(duì)復(fù)雜工程問題的能力,實(shí)驗(yàn)案例設(shè)計(jì)較以往復(fù)雜度有所增加。在教學(xué)實(shí)踐中部分同學(xué)感覺無從著手。應(yīng)對(duì)方案有兩個(gè):第一,合理設(shè)置實(shí)踐題目的復(fù)雜度。實(shí)踐題目復(fù)雜度并不是越大越好,需要循序漸進(jìn)。第二,在實(shí)踐教學(xué)過程中引導(dǎo)學(xué)生拆解問題,并針對(duì)重難點(diǎn)問題可帶著學(xué)生做。應(yīng)該認(rèn)識(shí)到學(xué)生發(fā)現(xiàn)上手難度大,并引導(dǎo)學(xué)生克服困難的過程正是訓(xùn)練學(xué)生應(yīng)對(duì)復(fù)雜問題能力的過程。
實(shí)踐案例設(shè)計(jì)中有時(shí)會(huì)出現(xiàn)知識(shí)點(diǎn)交叉部分,前置課程不滿足要求。比如數(shù)據(jù)庫技術(shù)、Web前端技術(shù)等出現(xiàn)在目前的課程設(shè)置中,而這些內(nèi)容在后續(xù)課程才會(huì)學(xué)習(xí)。這是教學(xué)改革中常見的問題,解決方案可從短期和長期兩個(gè)維度來思考。短期引導(dǎo)學(xué)生課后借助在線課程自學(xué)相關(guān)知識(shí)點(diǎn),也可在教學(xué)過程中簡單介紹相關(guān)內(nèi)容,主要介紹使用方法弱化原理介紹。長期解決方案則是參考專業(yè)教育認(rèn)證標(biāo)準(zhǔn)更合理制定人才培養(yǎng)方案,優(yōu)化課程設(shè)置。
新的實(shí)驗(yàn)案例設(shè)計(jì)思路和考核標(biāo)準(zhǔn)對(duì)學(xué)生提出了更高的要求,同時(shí)對(duì)于授課老師評(píng)閱考核也提出了更高的要求。不能簡單認(rèn)字符串匹配查看答案是否正確或查看功能是否正確。需要從面向?qū)ο缶幊毯途幊田L(fēng)格等對(duì)維度檢查,這將大大增大了授課老師的實(shí)驗(yàn)考核工作量。解決方案有兩個(gè)方面:一方面考慮從學(xué)生中選拔程度較好的學(xué)生作為助教,協(xié)助老師考核。另一方面,部分評(píng)分標(biāo)準(zhǔn)可標(biāo)準(zhǔn)化,比如編程風(fēng)格,可通過自動(dòng)化評(píng)測系統(tǒng)協(xié)助考核。
工程教育專業(yè)認(rèn)證視角下教學(xué)實(shí)踐中應(yīng)訓(xùn)練學(xué)生理解、分析、研究和解決復(fù)雜工程問題的能力。結(jié)合工程認(rèn)證標(biāo)準(zhǔn)和程序設(shè)計(jì)實(shí)驗(yàn)課程當(dāng)前存在的問題,提出全新的實(shí)驗(yàn)教學(xué)方法:量化實(shí)驗(yàn)復(fù)雜度,基于量化分析合理設(shè)置實(shí)驗(yàn)復(fù)雜度和多維度考核。以實(shí)際教學(xué)案例說明了新的教學(xué)方法的可行性和對(duì)后續(xù)教學(xué)改進(jìn)的指導(dǎo)作用。該教學(xué)方法在實(shí)踐中出現(xiàn)一些困難,需要在不斷教學(xué)實(shí)踐中對(duì)實(shí)驗(yàn)方案、課程設(shè)計(jì)和教學(xué)方法進(jìn)行優(yōu)化。新的教學(xué)方法通過對(duì)具有一定工程復(fù)雜度問題的求解提高學(xué)生程序設(shè)計(jì)和應(yīng)對(duì)復(fù)雜工程問題的能力。