喬善平,荊 山,隋永平
(濟南大學(xué) 信息科學(xué)與工程學(xué)院,山東 濟南 250022)
作為一門程序設(shè)計類課程,Java程序設(shè)計具有很強的實踐性,因此如何做好實踐教學(xué)是提高本課程教學(xué)質(zhì)量的一個重要環(huán)節(jié)。隨著用人單位對畢業(yè)生各方面能力要求的不斷提高,高校必須強化學(xué)生在“解決復(fù)雜問題”能力[1-2]方面的訓(xùn)練和培養(yǎng),使他們盡快適應(yīng)社會需求,這已經(jīng)成為網(wǎng)絡(luò)工程專業(yè)發(fā)展的迫切要求。
在修訂的2014版培養(yǎng)方案中,Java程序設(shè)計課程的計劃學(xué)時由64(理論40、上機24)變?yōu)?8(理論32、上機16),課時減少了1/4。在這種形勢下,如何能在更少的學(xué)時內(nèi)使學(xué)生學(xué)好這門課,就成為教學(xué)中面臨的關(guān)鍵問題。要提高學(xué)生的Java語言程序設(shè)計水平,就要讓他們充分掌握J(rèn)ava語言的基礎(chǔ)編程知識、Java面向?qū)ο蠓椒?、程序設(shè)計過程和一些主要的軟件開發(fā)環(huán)境,這需要通過加強實踐動手能力來達(dá)到。鑒于此,結(jié)合我校的實際情況,在前期實施的融合柔性Project的探究式教學(xué)方法[3]基礎(chǔ)上,探索了一種基于案例驅(qū)動式的實驗教學(xué)方法[4-5]。經(jīng)過近幾年的實際應(yīng)用,收到了良好的教學(xué)效果。
Java程序設(shè)計課程的教學(xué)目標(biāo)定位包括3方面:①知識獲取:學(xué)習(xí)Java語言的開發(fā)環(huán)境、語法基礎(chǔ)、面向?qū)ο蠓椒?、文件操作、?shù)據(jù)庫訪問、用戶界面設(shè)計等方面的專業(yè)知識。②能力培養(yǎng):使用Java語言并利用面向?qū)ο蠹夹g(shù)進行程序設(shè)計與開發(fā)的實踐能力、團隊合作能力、擴展和獲取新知識的學(xué)習(xí)能力。③素質(zhì)提高:勇于探索與實踐的科學(xué)精神、誠信意識。
在上述教學(xué)目標(biāo)的引導(dǎo)下,應(yīng)重新對課程知識點進行梳理,理順各部分之間的邏輯關(guān)系,明確重點與難點,構(gòu)建合理的課程知識體系,具體內(nèi)容如下:①Java語言概述:Java語言的誕生與發(fā)展、主要特點、Applet的概念、Java語言概念圖。②開發(fā)環(huán)境的搭建:JDK的安裝與設(shè)置、IDE的安裝與設(shè)置,JRE、JVM與Java平臺無關(guān)性的解釋。③Java應(yīng)用程序的結(jié)構(gòu)及設(shè)計方法:Java語言的命名風(fēng)格、基本語法規(guī)則、程序基本結(jié)構(gòu);類的基本結(jié)構(gòu)。④OOP概念及其在Java語言中的體現(xiàn):封裝性、繼承性和多態(tài)性在Java語言中如何實現(xiàn),包括接口、類和對象的概念以及具體的體現(xiàn)方式。⑤常見類的介紹:在JDK中提供了很多常見且實用的類,它們?yōu)檫M一步擴展程序奠定基礎(chǔ)。⑥文件操作:JDK中對文件操作的支持類及其具體文件操作的實現(xiàn)。⑦異常處理:異常的概念、異常處理的意義和處理方式。⑧數(shù)據(jù)庫:JDBC的概念及其體系結(jié)構(gòu)、基本的SQL語句、數(shù)據(jù)庫的連接和訪問步驟及訪問方法。⑨界面設(shè)計:與靜態(tài)設(shè)計和動態(tài)設(shè)計相關(guān)的組件、容器、布局、事件、事件源、監(jiān)聽器及事件處理、項目的調(diào)試與發(fā)布。
在此基礎(chǔ)上,把整個課程的教學(xué)內(nèi)容共組織為6章,分為24講,共由24個實驗對實踐教學(xué)環(huán)節(jié)提供支持,各章節(jié)的理論與實踐內(nèi)容及其學(xué)時分配情況見表1。
針對表1中的實驗情況,為了使它們具有延續(xù)性和邏輯性,首先需要設(shè)計一個合適的教學(xué)案例,然后基于此案例進行整個實驗過程的設(shè)計和實施,從而達(dá)到掌握J(rèn)ava相關(guān)編程技能的目的,并由此形成一種基于案例驅(qū)動的“工具+技能=產(chǎn)出”的實驗教學(xué)模式。對于“工具”,要求熟練安裝和使用Java語言的開發(fā)環(huán)境,強調(diào)使用技巧;對于“技能”,要求掌握J(rèn)ava語言的基礎(chǔ)知識和編程方法,強調(diào)思想運用;對于“產(chǎn)出”,要求使用Java完成一個項目的編碼過程,強調(diào)實踐過程。
在已建立的課程知識體系結(jié)構(gòu)和多年來積累的經(jīng)驗下,我們設(shè)計了一個切實可行的教學(xué)案例,為實施基于案例驅(qū)動的Java程序設(shè)計課程教學(xué)奠定必要的前提條件。在案例的選擇方面,以師生都比較熟悉的“考試系統(tǒng)”作為教學(xué)案例,將課程知識合理地融入系統(tǒng)的各個功能模塊中,并設(shè)置擴展點和創(chuàng)新點。案例的設(shè)計兼顧“柔性”和“剛性”兩方面的要求,從需求分析、業(yè)務(wù)流程、文件組織結(jié)構(gòu)、類體系結(jié)構(gòu)等幾個方面展開。案例設(shè)計的主要內(nèi)容包括以下幾方面。
表1 Java程序設(shè)計課程教學(xué)內(nèi)容及其學(xué)時分配
(1) 需求分析:明確案例應(yīng)包括的基本功能和擴展功能。具體描述為開發(fā)一個考試系統(tǒng),實現(xiàn)對多項選擇題的計算機考試??忌喿x考試須知后進行登錄,根據(jù)登錄信息和考生庫中存儲的考生信息確定考試情況。試卷生成以預(yù)設(shè)的試卷屬性和試題庫為基礎(chǔ),生成后存至試卷庫。系統(tǒng)為考生提供答題環(huán)境,并能夠?qū)荚囘^程進行計時控制;系統(tǒng)具有手動和自動兩種交卷方式,考試結(jié)束前考生可手動交卷,否則結(jié)束時由系統(tǒng)自動交卷,交卷后試卷被存至試卷庫,考生在考試期間可隨時保存試卷,系統(tǒng)具備計算機自動閱卷和保存閱卷結(jié)果至成績庫的功能。為應(yīng)對意外情況(如死機、斷電等)造成的考試中斷,系統(tǒng)應(yīng)支持考生從最近保存的數(shù)據(jù)中恢復(fù)并繼續(xù)完成考試的功能。拓展功能包括增加題型、試卷查閱、試題管理、成績管理、演算紙、網(wǎng)絡(luò)支持、多媒體、日志、幫助等。
(2) 業(yè)務(wù)流程:明確案例應(yīng)處理的主要業(yè)務(wù)及其每項業(yè)務(wù)的具體處理流程。主要包括考生登錄、顯示考試須知、生成試卷、考試、交卷、閱卷、成績管理等業(yè)務(wù)。
(3) 文件組織:分析案例涉及的文件及其組織結(jié)構(gòu),為案例實現(xiàn)提供數(shù)據(jù)基礎(chǔ)。主要數(shù)據(jù)文件涉及考試須知、考生庫、試題庫、試卷結(jié)構(gòu)、試卷、試卷庫、成績庫等。
(4) 類體系結(jié)構(gòu):采用面向?qū)ο蠹夹g(shù)并結(jié)合UML工具,以需求分析為出發(fā)點和落腳點,設(shè)計出類的體系結(jié)構(gòu),構(gòu)建案例的實現(xiàn)藍(lán)圖。主要包括實體類(如考生、試題、試卷)、異常類、閱卷類、視圖類(如考試須知、登錄、答題、閱卷)和系統(tǒng)主類。
當(dāng)教學(xué)案例設(shè)計完成后,便可以在課堂教學(xué)和實驗教學(xué)兩個主要環(huán)節(jié)中具體實施。在教學(xué)案例實施時,教師給出案例的整體功能和總體框架,具體功能和實現(xiàn)細(xì)節(jié)則由學(xué)生采用多種形式完成。學(xué)生在遵循基本要求的前提下,充分發(fā)揮自己的特長、想象力、創(chuàng)造性等各方面的優(yōu)勢,對案例進行探索和擴展,從而為學(xué)生提供更大的學(xué)習(xí)拓展空間。在案例實現(xiàn)過程中遵循“提出問題、分析問題、解決問題”的基本過程和原則,通過從“柔性案例”到“剛性案例”的增量迭代式發(fā)展,幫助學(xué)生順利完成案例項目的開發(fā)過程,進一步激發(fā)他們的積極性和探索精神。本文主要描述在實驗教學(xué)環(huán)節(jié)的案例實施情況。
與新制定的實驗教學(xué)大綱相適應(yīng)并基于所構(gòu)建的課程知識體系結(jié)構(gòu),本著切實可行和便于操作的原則,根據(jù)教學(xué)案例的功能要求,為了能讓所學(xué)知識最終在案例中實現(xiàn),我們編寫了具有較好操作性的《Java程序設(shè)計實驗指導(dǎo)書》。
該實驗指導(dǎo)書中共設(shè)計了24個實驗(見表1),其中前6個實驗是針對Java基礎(chǔ)知識的內(nèi)容,包括開發(fā)環(huán)境的搭建、基本Java項目的創(chuàng)建、控制語句、數(shù)組、基本的程序調(diào)試方法,為接下來的項目編碼打下語言基礎(chǔ)。從第7個實驗開始,便進入一個案例項目的開發(fā)過程,涵蓋Java面向?qū)ο蟪绦蛟O(shè)計方法、文件操作、數(shù)據(jù)庫操作、界面設(shè)計、項目發(fā)布等主要內(nèi)容。
鑒于該指導(dǎo)書以一個項目的編碼實現(xiàn)過程為主線,實驗排列具有較強的前后邏輯關(guān)系,如果前面的實驗不成功,則會在很大程度上影響后面實驗的實現(xiàn),因此,學(xué)生必須及時完成相關(guān)實驗,才能保證整個項目的順利實現(xiàn),同時要做好項目的備份,以便在課上和課下都能及時地延續(xù)項目的開發(fā)過程。
對于實驗的具體建議:先按照詳細(xì)的步驟跟著做,一遍不行做兩遍,兩遍不行做N遍,這叫從“比著葫蘆畫瓢”到“撇開葫蘆畫瓢”。在此期間,要盡量做到認(rèn)真學(xué)習(xí)、及時復(fù)習(xí)、刻苦練習(xí)、不會就問、及時交流,逐步培養(yǎng)良好的學(xué)習(xí)習(xí)慣,最終達(dá)到“學(xué)+會學(xué)=學(xué)會”的目標(biāo)。
在做每個實驗的過程中,都有可能會出現(xiàn)一些錯誤和各種問題,如何排查這些錯誤非常重要,具體建議如下。
關(guān)于實現(xiàn)一個功能或算法的基本思路:①分析輸入輸出(明確始點和終點);②思考解決思路(從始點到達(dá)終點的方式);③列出具體步驟(一步一步怎么到達(dá));④編寫代碼實現(xiàn)(交給計算機去做)。
關(guān)于解決程序錯誤的基本思路:①查看錯誤信息(發(fā)生了什么事);②定位錯誤位置(在哪里發(fā)生的);③分析錯誤原因(為什么會發(fā)生);④確定解決辦法(怎樣才能不發(fā)生)。
實驗采用分組管理模式,每組人數(shù)根據(jù)實際選課情況確定,一般是3人左右。每組設(shè)組長一名,負(fù)責(zé)本組的任務(wù)分配、實施、綜合等事項。
主要檢查的項目包括以下幾個方面:①基礎(chǔ)實驗:以選擇題和程序題方式提交(實驗1 -實驗6)。②項目實驗:小組提交項目文件(實驗7-實驗24)。③文檔注釋:小組提交項目的幫助文檔。④擴展創(chuàng)新:對實現(xiàn)的系統(tǒng)基本功能之外內(nèi)容進行考核。
成績的考核采用積分制[6],積分檔次分為A、B、C 3檔,對應(yīng)的積分分別為5、3、1。對于每一個積分項,采用排名的方式進行統(tǒng)計,積分計算公式為條目積分=系數(shù)×100×積分/條目內(nèi)最高積分。
采用這種積分制形式計算平時成績時,反映出來的是一種排序效果,而不是傳統(tǒng)的實際分?jǐn)?shù),這樣更能體現(xiàn)每名學(xué)生在整個課程班中的位置,提高學(xué)生注重積累平時成績積分的積極性。這種檢查方式貫穿課程的整個實驗教學(xué)過程,保證了實驗的延續(xù)性,形成了一種以積分制為基礎(chǔ)的過程性評價[7]方式。
在交流反饋方面,除了傳統(tǒng)的郵件、電話、面對面等方式外,建設(shè)了Java程序設(shè)計課程中心網(wǎng)站,另外還試行了以QQ群(一個上課群和一個技術(shù)群)為主戰(zhàn)場的方式,提高了學(xué)生學(xué)習(xí)和交流的實時性、積極性、主動性。通過這些方式,教師可以方便地與學(xué)生進行交流,并能及時得到相應(yīng)的反饋,為更好地進行教學(xué)提供寶貴實用的信息保障,促進師生之間良好關(guān)系的建立。
對Java程序設(shè)計課程多次應(yīng)用“案例驅(qū)動式”實驗教學(xué)方法,取得了良好的教學(xué)效果,在教學(xué)方法改革、課程建設(shè)等方面都具有一定的促進作用。
(1)對教學(xué)方法改革的促進?!鞍咐?qū)動式”實驗教學(xué)方法的突出特點就是從“系統(tǒng)”角度完成對課程知識的學(xué)習(xí)和應(yīng)用。它將講授課程和相關(guān)課程的知識融為一體,形成一個有機的系統(tǒng),在案例的驅(qū)動下實現(xiàn)一門課程的學(xué)習(xí)。為了提高學(xué)生的創(chuàng)新能力,必須讓學(xué)生積極參與所有的教學(xué)環(huán)節(jié)中,并且要摒棄照本宣科和“填鴨式”的教學(xué)方法,轉(zhuǎn)變觀念,以學(xué)生為主體實施教學(xué)。
(2)對課程建設(shè)的促進?!鞍咐?qū)動式”實驗教學(xué)方法的應(yīng)用,對于“Java方向”上的相關(guān)課程包括JSP應(yīng)用程序設(shè)計、Web系統(tǒng)設(shè)計、基于Java EE的高級程序設(shè)計等課程的建設(shè)都具有一定的促進作用。另外,對于其他類似的計算機程序設(shè)計語言課程,如程序設(shè)計基礎(chǔ)、C#程序設(shè)計課程等,該方法也具有較好的借鑒作用。
雖然基于案例驅(qū)動的實驗教學(xué)方法有著其突出的優(yōu)點和實踐效果,但我們必須清醒地認(rèn)識到,編程能力的提高不是一朝一夕的事情,這需要勤學(xué)苦練。在熟練掌握基礎(chǔ)知識的前提下,要勤于思考、敢于動手、善于請教、精于總結(jié),從而不斷積累編碼經(jīng)驗并提高靠自己想辦法解決問題的能力,要學(xué)會利用思考、查資料、自學(xué)、討論等各種手段,建立適合自己的學(xué)習(xí)方法,這才是我們的真正目的。為了進一步提高Java程序設(shè)計課程的教學(xué)質(zhì)量,下一步打算利用一些現(xiàn)代化的教學(xué)平臺,并結(jié)合自行開發(fā)的教學(xué)和考試系統(tǒng),對網(wǎng)絡(luò)電子教室環(huán)境下程序設(shè)計類課程的教學(xué)模式進行深入的研究和實踐。
[1]孫憲麗, 張欣, 張楠. 基于工程教育專業(yè)認(rèn)證的計算機專業(yè)人才培養(yǎng)模式研究[J]. 大學(xué)教育, 2016(4): 112-113.
[2]周激流. 工程教育推動地方特色,卓越計劃成就人才培養(yǎng)[J]. 計算機教育, 2016(6): 1-6.
[3]喬善平, 張志軍, 藺永政. 融合柔性Project的探究式教學(xué)方法的研究[J]. 中國成人教育, 2013(19): 136-138.
[4]劉麗艷. 案例教學(xué)法在命題邏輯推理論證中的應(yīng)用[J]. 高教學(xué)刊, 2016(5): 124-126.
[5]王飛雪. Java程序設(shè)計課程的項目化教學(xué)研究[J]. 電腦與信息技術(shù), 2016(2): 66-67, 74.
[6]鄭杰政. “積分制”在大學(xué)公共體育課程考核中的應(yīng)用研究[J]. 山東體育科技, 2016(5): 81-84.
[7]姚爭為, 滕國棟. 高校程序設(shè)計類課程過程性評價的研究與實踐[J]. 計算機教育, 2015(24): 86-88.