,, ,,,
“面向?qū)ο蟪绦蛟O(shè)計”課程是我校自2008年起針對信息管理與信息系統(tǒng)專業(yè)開設(shè)的一門程序設(shè)計必修專業(yè)課程,也是整個計算機(jī)課程教學(xué)體系中非常重要的一個環(huán)節(jié)。該課程采用具有簡單、安全、與平臺無關(guān)、多線程等特點的JAVA程序設(shè)計語言。開設(shè)此門課程,旨在讓學(xué)生了解面向?qū)ο蟪绦蛟O(shè)計的基本思想和基礎(chǔ)知識,提高自主學(xué)習(xí)能力以及分析和解決問題的能力、創(chuàng)新能力,為其后續(xù)課程的學(xué)習(xí)奠定良好的基礎(chǔ)。根據(jù)多年的教學(xué)經(jīng)驗,我們總結(jié)了教學(xué)過程中存在的的問題,并進(jìn)行了一些改革和探索以解決這些問題。
“面向?qū)ο蟪绦蛟O(shè)計”課程涉及的概念多、零散、抽象。教師大多是按照設(shè)計好的教學(xué)模式,通過電子課件來進(jìn)行教學(xué)。由于教學(xué)時數(shù)和教學(xué)進(jìn)度的制約,理論課往往成了電子課件的展示課,教師對學(xué)生的關(guān)心程度幾乎為零,學(xué)生不能主動參與到教學(xué)環(huán)節(jié)中[1]。加之我校信管專業(yè)部分學(xué)生是文科生,因此在學(xué)習(xí)這門課程時更是有一定的難度。
教師以往在講授這門課程時通常存在兩種情況:一是忽略概念的講解,直接講例題。由于學(xué)生之前主要學(xué)習(xí)C語言程序,已經(jīng)習(xí)慣了面向過程的編程思想,如果缺乏理論的指導(dǎo),很難轉(zhuǎn)變到面向?qū)ο缶幊趟枷搿6窍戎v解JAVA中的概念,然后再舉例說明。由于JAVA的概念和語法本身就難以理解,加上每個例題之間沒有相互的關(guān)聯(lián),教師容易陷入解釋概念和語法的誤區(qū)中,忽略了算法設(shè)計這一環(huán)節(jié)。因此,學(xué)生即使掌握了每個知識點,也不能學(xué)以致用。
出現(xiàn)這些問題的根本原因在于沒有把計算思維教育融入到教學(xué)中。面向?qū)ο蟪绦蛟O(shè)計要從面向?qū)ο蟮乃枷?、面向?qū)ο蟮某橄蟾拍詈退惴ň幊痰确矫鎸W(xué)生進(jìn)行計算思維訓(xùn)練,提高學(xué)生分析、解決問題的綜合能力[2]。
“面向?qū)ο蟪绦蛟O(shè)計”是一門很重視實踐環(huán)節(jié)的課程,以往的實驗課僅僅是對理論課所講授的內(nèi)容做驗證,實驗內(nèi)容單一、枯燥,自主設(shè)計的內(nèi)容很少。實驗內(nèi)容大多數(shù)來源于教材,針對每個章節(jié)所設(shè)計,內(nèi)容陳舊,前后缺乏關(guān)聯(lián)。另外,學(xué)生在實踐環(huán)節(jié)主要關(guān)注語法規(guī)則,只是機(jī)械地模仿或照抄書本上的例題,找語法錯誤,很難深入分析問題,不能融會貫通,對系統(tǒng)開發(fā)的方法、概念認(rèn)識模糊,即使所有的實驗題目都會做,沒有通過一些綜合的項目訓(xùn)練,也很難把握面向?qū)ο蟪绦蛟O(shè)計的總體思想[3]。
由于實驗內(nèi)容的設(shè)置缺乏科學(xué)性、系統(tǒng)性,學(xué)生僅能使用JAVA語法規(guī)則編寫簡單的程序,而分析問題、解決問題和系統(tǒng)設(shè)計等一系列的計算思維十分欠缺,遇到實際問題仍感到無從下手。
以往“面向?qū)ο蟪绦蛟O(shè)計”課程的考核主要采用筆試,考核內(nèi)容多是類、對象、方法、多態(tài)、繼承、接口和多線程等概念。筆試試卷從題庫里抽題,不能根據(jù)學(xué)生的實際情況進(jìn)行組卷。學(xué)生往往對一些知識點或概念進(jìn)行記憶性的學(xué)習(xí),忽略實際編程能力的提高。這種考核方式存在試題難易度不易把握、評價標(biāo)準(zhǔn)不夠合理的問題,即使學(xué)生取得了高分,也不能如實反映教學(xué)中的薄弱環(huán)節(jié),更體現(xiàn)不出學(xué)生的學(xué)習(xí)能力和創(chuàng)造能力,失去了考核的目的和意義。因此,需要根據(jù)該課程和學(xué)生的特點,找出合適的考核方式[4]。從2011年起,我校就在調(diào)整課程設(shè)置、改進(jìn)理論和實驗課教學(xué)內(nèi)容、加強(qiáng)學(xué)生計算思維訓(xùn)練、提高學(xué)生創(chuàng)新能力和綜合素質(zhì)等方面進(jìn)行了一系列的改革。
在傳統(tǒng)的教學(xué)模式下,學(xué)生不知道為什么要學(xué)習(xí)這門課程,也不明白學(xué)習(xí)這門課程對今后的學(xué)習(xí)和工作有何用處。因此,我們利用每學(xué)期第一次理論課向?qū)W生介紹課程的學(xué)習(xí)目標(biāo)和今后學(xué)習(xí)的方向,讓學(xué)生明確JAVA課程學(xué)習(xí)的目標(biāo)是掌握J(rèn)AVA的基本概念和語法,熟悉面向?qū)ο蟮木幊趟枷牒头椒?,能夠使用JAVA語言進(jìn)行一些簡單的系統(tǒng)設(shè)計和開發(fā),在這個基礎(chǔ)上可以繼續(xù)學(xué)習(xí)J2ME編程和J2EE企業(yè)開發(fā)等。
在2012年為信息管理和信息系統(tǒng)專業(yè)制定的新的培養(yǎng)方案中,我們將面向?qū)ο蟪绦蛟O(shè)計課程教學(xué)時數(shù)由60學(xué)時調(diào)整為72學(xué)時,其中理論課36學(xué)時,實驗課36學(xué)時。在課程結(jié)束之后,繼續(xù)開設(shè)一門與JAVA語言相關(guān)的“Android應(yīng)用系統(tǒng)”限選課程,讓學(xué)生能夠了解JAVA在實際開發(fā)中的應(yīng)用。
對理論教學(xué)內(nèi)容進(jìn)行調(diào)整,注重將計算思維訓(xùn)練融入到教學(xué)內(nèi)容中,讓學(xué)生掌握面向?qū)ο蟮木幊趟枷牒头椒āH鹗恐挠嬎銠C(jī)科學(xué)家Niklaus Wirth教授曾經(jīng)說過:因為要進(jìn)行程序設(shè)計,才學(xué)習(xí)語言,語言是程序設(shè)計的工具,本質(zhì)是為了程序設(shè)計,而不要本末倒置[5]。
課堂上,教師不再過多地講解語法,而是強(qiáng)調(diào)面向?qū)ο蟪绦蛟O(shè)計的優(yōu)勢,體現(xiàn)面向?qū)ο蟮木幊趟枷?。由于學(xué)生的先修課程是C語言,面向過程的編程思維方式在學(xué)生的腦海里根深蒂固。C語言里的許多功能需要編寫函數(shù)來完成,但是在JAVA里只要直接調(diào)用系統(tǒng)類庫中的方法就能完成。例如,用JFrame類創(chuàng)建一個簡單的窗口,由此可以引入類的概念。類是對客觀事物的抽象,是用來創(chuàng)建對象的模板。類中包括對同一類型事物的屬性和行為的描述,通過接口和外界發(fā)生聯(lián)系。類可以建立對象,每個對象可以具體地說明數(shù)據(jù)和行為,因此能逐步引入面向?qū)ο蟮幕舅枷?,潛移默化地影響學(xué)生。向?qū)W生解釋面向?qū)ο蟮木幊桃?guī)則、為什么要有這些規(guī)則和如何應(yīng)用這些規(guī)則的過程,實際上就是在培養(yǎng)學(xué)生的計算思維。
注意概念和例題的講解,前后要有一定的聯(lián)系和層次結(jié)構(gòu)。面向?qū)ο笾械脑S多概念看似零散,沒有關(guān)聯(lián),但實際上對編程起著十分重要的作用[6]。如果只是單純講解某一個點,沒有把相關(guān)的概念串聯(lián)在一起,學(xué)生會感到一頭霧水,毫無頭緒。在進(jìn)行類和對象這一章的教學(xué)時,我們選取了計算梯形面積的例子。具體步驟是先定義一個具有計算面積方法的人,然后分別建立對象laderOne和laderTwo計算不同梯形的面積。在講到后面實例變量和類變量的時候,由于要計算下底相同、上底和高不同的梯形面積,就可以把下底定義成類變量。在講到多態(tài)時,可以將這個例題進(jìn)一步擴(kuò)展,建立一個圖形類,圖形類有梯形、圓形子類,通過實現(xiàn)圖形類的抽象方法完成面積的計算。在講到接口內(nèi)容時,仍然可以使用圖形面積的例子,讓學(xué)生理解使用多態(tài)和接口的不同之處。這樣的教學(xué)過程使學(xué)生清楚地看出這些主要概念的運(yùn)用及其之間的聯(lián)系[7],有助于進(jìn)一步從面向?qū)ο笏枷牒统橄蟮母拍罱嵌扰囵B(yǎng)學(xué)生計算思維能力。
實踐教學(xué)是對理論教學(xué)效果的檢驗。通過實踐教學(xué),把面向?qū)ο缶幊趟枷牒驼Z言內(nèi)容相結(jié)合,從邏輯思維方面訓(xùn)練學(xué)生的計算思維,提高學(xué)生的自主學(xué)習(xí)能力,培養(yǎng)學(xué)生的團(tuán)隊協(xié)作能力[8]。因此,實踐教學(xué)的改革顯得尤為重要。
實踐課程的開始階段主要以驗證性實驗為主。針對每次理論課講解的內(nèi)容,從歷年的全國計算機(jī)等級考試、學(xué)科競賽中精選一些題目,讓學(xué)生完成。在選擇題目時注意前后的連貫性。
實踐課程的中后期則通過課程設(shè)計來加強(qiáng)學(xué)生的編程能力和面向?qū)ο笏枷氲呐囵B(yǎng)。課程設(shè)計分為教師引導(dǎo)、學(xué)生實踐、交流討論和提交作品考核4個階段。
我們根據(jù)學(xué)生的具體情況設(shè)計了3-4個課程設(shè)計項目。這些項目要難度適中、知識覆蓋面廣,每個項目列出需要掌握的教學(xué)知識點。4個課程設(shè)計項目和涉及的主要知識點如表1所示。學(xué)生根據(jù)能力組成小組,完成其中的一個項目。指定一名學(xué)生為組長,其余學(xué)生各有分工,在提交課程設(shè)計報告和完成的項目時進(jìn)行現(xiàn)場答辯演示。在課程設(shè)計實施過程中,教師按照軟件工程中需求分析、項目設(shè)計、實施、調(diào)試維護(hù)4個階段指導(dǎo)學(xué)生完成整個項目。在實踐課上,教師把實訓(xùn)項目任務(wù)書下達(dá)給學(xué)生,根據(jù)任務(wù)書,指導(dǎo)學(xué)生完成需求分析,對所涉及的技術(shù)要點進(jìn)行講解;學(xué)生在課堂上對所需要實現(xiàn)的功能和技術(shù)開展討論,并提出需要解決的問題。學(xué)生根據(jù)任務(wù)書的要求完成項目。
表1 課程設(shè)計項目及主要知識點
采用筆試和實踐成績相結(jié)合的方式考核,筆試、實踐成績各占50%。實踐成績主要依據(jù)最后上交的課程設(shè)計報告和現(xiàn)場答辯。答辯以小組為單位,選派一名學(xué)生對項目進(jìn)行演示和現(xiàn)場解答。教師將根據(jù)每個小組學(xué)習(xí)態(tài)度、課程設(shè)計報告的規(guī)范性、項目設(shè)計的情況、技術(shù)能力、編程能力、現(xiàn)場演示和回答問題情況,并結(jié)合每位同學(xué)的具體工作量打分[9]。這種考核方式更有利于綜合評價學(xué)生的能力,激發(fā)學(xué)生的學(xué)習(xí)熱情。
我們改進(jìn)了理論教學(xué)方法,注重培養(yǎng)學(xué)生的計算思維;編寫實驗指導(dǎo),通過案例訓(xùn)練學(xué)生的實踐技能。經(jīng)過幾年的努力,不僅提高了整個教學(xué)團(tuán)隊的教學(xué)能力和科研水平,學(xué)生也取得了可喜的成績。
從2012年開始,我校信管專業(yè)的學(xué)生陸續(xù)參加了“藍(lán)橋杯”軟件設(shè)計大賽,2013年獲得“藍(lán)橋杯”軟件設(shè)計大賽安徽省的二等獎和三等獎,2014年獲得了全國總決賽三等獎。學(xué)生開發(fā)的基于Android平臺的“人體導(dǎo)航”軟件,參加安徽省“創(chuàng)青春大學(xué)生創(chuàng)業(yè)大賽”蚌埠醫(yī)學(xué)院校內(nèi)選拔賽中獲得第一名,并選送安徽省參賽。此外,以學(xué)生為主體成功申報了3項國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)項目。
教學(xué)改革任重道遠(yuǎn),一切改革工作都要以促進(jìn)學(xué)生成長為目的[10]。
我們在理論和實踐教學(xué)改革中注重計算思維能力的訓(xùn)練,鍛煉了醫(yī)學(xué)院校學(xué)生的邏輯思維能力,培養(yǎng)了學(xué)生嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)和創(chuàng)新能力。教學(xué)改革應(yīng)該是全方位的,不僅要注重課堂教學(xué)環(huán)節(jié),還要關(guān)注學(xué)生的課外學(xué)習(xí)、網(wǎng)絡(luò)在線學(xué)習(xí)等,這些方面都需要我們進(jìn)一步探索。