喬善平,荊 山,隋永平
(濟南大學 信息科學與工程學院,山東 濟南 250022)
作為一門程序設計類課程,Java程序設計具有很強的實踐性,因此如何做好實踐教學是提高本課程教學質量的一個重要環節。隨著用人單位對畢業生各方面能力要求的不斷提高,高校必須強化學生在“解決復雜問題”能力[1-2]方面的訓練和培養,使他們盡快適應社會需求,這已經成為網絡工程專業發展的迫切要求。
在修訂的2014版培養方案中,Java程序設計課程的計劃學時由64(理論40、上機24)變為48(理論32、上機16),課時減少了1/4。在這種形勢下,如何能在更少的學時內使學生學好這門課,就成為教學中面臨的關鍵問題。要提高學生的Java語言程序設計水平,就要讓他們充分掌握Java語言的基礎編程知識、Java面向對象方法、程序設計過程和一些主要的軟件開發環境,這需要通過加強實踐動手能力來達到。鑒于此,結合我校的實際情況,在前期實施的融合柔性Project的探究式教學方法[3]基礎上,探索了一種基于案例驅動式的實驗教學方法[4-5]。經過近幾年的實際應用,收到了良好的教學效果。
Java程序設計課程的教學目標定位包括3方面:①知識獲取:學習Java語言的開發環境、語法基礎、面向對象方法、文件操作、數據庫訪問、用戶界面設計等方面的專業知識。②能力培養:使用Java語言并利用面向對象技術進行程序設計與開發的實踐能力、團隊合作能力、擴展和獲取新知識的學習能力。③素質提高:勇于探索與實踐的科學精神、誠信意識。
在上述教學目標的引導下,應重新對課程知識點進行梳理,理順各部分之間的邏輯關系,明確重點與難點,構建合理的課程知識體系,具體內容如下:①Java語言概述:Java語言的誕生與發展、主要特點、Applet的概念、Java語言概念圖。②開發環境的搭建:JDK的安裝與設置、IDE的安裝與設置,JRE、JVM與Java平臺無關性的解釋。③Java應用程序的結構及設計方法:Java語言的命名風格、基本語法規則、程序基本結構;類的基本結構。④OOP概念及其在Java語言中的體現:封裝性、繼承性和多態性在Java語言中如何實現,包括接口、類和對象的概念以及具體的體現方式。⑤常見類的介紹:在JDK中提供了很多常見且實用的類,它們為進一步擴展程序奠定基礎。⑥文件操作:JDK中對文件操作的支持類及其具體文件操作的實現。⑦異常處理:異常的概念、異常處理的意義和處理方式。⑧數據庫:JDBC的概念及其體系結構、基本的SQL語句、數據庫的連接和訪問步驟及訪問方法。⑨界面設計:與靜態設計和動態設計相關的組件、容器、布局、事件、事件源、監聽器及事件處理、項目的調試與發布。
在此基礎上,把整個課程的教學內容共組織為6章,分為24講,共由24個實驗對實踐教學環節提供支持,各章節的理論與實踐內容及其學時分配情況見表1。
針對表1中的實驗情況,為了使它們具有延續性和邏輯性,首先需要設計一個合適的教學案例,然后基于此案例進行整個實驗過程的設計和實施,從而達到掌握Java相關編程技能的目的,并由此形成一種基于案例驅動的“工具+技能=產出”的實驗教學模式。對于“工具”,要求熟練安裝和使用Java語言的開發環境,強調使用技巧;對于“技能”,要求掌握Java語言的基礎知識和編程方法,強調思想運用;對于“產出”,要求使用Java完成一個項目的編碼過程,強調實踐過程。
在已建立的課程知識體系結構和多年來積累的經驗下,我們設計了一個切實可行的教學案例,為實施基于案例驅動的Java程序設計課程教學奠定必要的前提條件。在案例的選擇方面,以師生都比較熟悉的“考試系統”作為教學案例,將課程知識合理地融入系統的各個功能模塊中,并設置擴展點和創新點。案例的設計兼顧“柔性”和“剛性”兩方面的要求,從需求分析、業務流程、文件組織結構、類體系結構等幾個方面展開。案例設計的主要內容包括以下幾方面。

表1 Java程序設計課程教學內容及其學時分配
(1) 需求分析:明確案例應包括的基本功能和擴展功能。具體描述為開發一個考試系統,實現對多項選擇題的計算機考試。考生閱讀考試須知后進行登錄,根據登錄信息和考生庫中存儲的考生信息確定考試情況。試卷生成以預設的試卷屬性和試題庫為基礎,生成后存至試卷庫。系統為考生提供答題環境,并能夠對考試過程進行計時控制;系統具有手動和自動兩種交卷方式,考試結束前考生可手動交卷,否則結束時由系統自動交卷,交卷后試卷被存至試卷庫,考生在考試期間可隨時保存試卷,系統具備計算機自動閱卷和保存閱卷結果至成績庫的功能。為應對意外情況(如死機、斷電等)造成的考試中斷,系統應支持考生從最近保存的數據中恢復并繼續完成考試的功能。拓展功能包括增加題型、試卷查閱、試題管理、成績管理、演算紙、網絡支持、多媒體、日志、幫助等。
(2) 業務流程:明確案例應處理的主要業務及其每項業務的具體處理流程。主要包括考生登錄、顯示考試須知、生成試卷、考試、交卷、閱卷、成績管理等業務。
(3) 文件組織:分析案例涉及的文件及其組織結構,為案例實現提供數據基礎。主要數據文件涉及考試須知、考生庫、試題庫、試卷結構、試卷、試卷庫、成績庫等。
(4) 類體系結構:采用面向對象技術并結合UML工具,以需求分析為出發點和落腳點,設計出類的體系結構,構建案例的實現藍圖。主要包括實體類(如考生、試題、試卷)、異常類、閱卷類、視圖類(如考試須知、登錄、答題、閱卷)和系統主類。
當教學案例設計完成后,便可以在課堂教學和實驗教學兩個主要環節中具體實施。在教學案例實施時,教師給出案例的整體功能和總體框架,具體功能和實現細節則由學生采用多種形式完成。學生在遵循基本要求的前提下,充分發揮自己的特長、想象力、創造性等各方面的優勢,對案例進行探索和擴展,從而為學生提供更大的學習拓展空間。在案例實現過程中遵循“提出問題、分析問題、解決問題”的基本過程和原則,通過從“柔性案例”到“剛性案例”的增量迭代式發展,幫助學生順利完成案例項目的開發過程,進一步激發他們的積極性和探索精神。本文主要描述在實驗教學環節的案例實施情況。
與新制定的實驗教學大綱相適應并基于所構建的課程知識體系結構,本著切實可行和便于操作的原則,根據教學案例的功能要求,為了能讓所學知識最終在案例中實現,我們編寫了具有較好操作性的《Java程序設計實驗指導書》。
該實驗指導書中共設計了24個實驗(見表1),其中前6個實驗是針對Java基礎知識的內容,包括開發環境的搭建、基本Java項目的創建、控制語句、數組、基本的程序調試方法,為接下來的項目編碼打下語言基礎。從第7個實驗開始,便進入一個案例項目的開發過程,涵蓋Java面向對象程序設計方法、文件操作、數據庫操作、界面設計、項目發布等主要內容。
鑒于該指導書以一個項目的編碼實現過程為主線,實驗排列具有較強的前后邏輯關系,如果前面的實驗不成功,則會在很大程度上影響后面實驗的實現,因此,學生必須及時完成相關實驗,才能保證整個項目的順利實現,同時要做好項目的備份,以便在課上和課下都能及時地延續項目的開發過程。
對于實驗的具體建議:先按照詳細的步驟跟著做,一遍不行做兩遍,兩遍不行做N遍,這叫從“比著葫蘆畫瓢”到“撇開葫蘆畫瓢”。在此期間,要盡量做到認真學習、及時復習、刻苦練習、不會就問、及時交流,逐步培養良好的學習習慣,最終達到“學+會學=學會”的目標。
在做每個實驗的過程中,都有可能會出現一些錯誤和各種問題,如何排查這些錯誤非常重要,具體建議如下。
關于實現一個功能或算法的基本思路:①分析輸入輸出(明確始點和終點);②思考解決思路(從始點到達終點的方式);③列出具體步驟(一步一步怎么到達);④編寫代碼實現(交給計算機去做)。
關于解決程序錯誤的基本思路:①查看錯誤信息(發生了什么事);②定位錯誤位置(在哪里發生的);③分析錯誤原因(為什么會發生);④確定解決辦法(怎樣才能不發生)。
實驗采用分組管理模式,每組人數根據實際選課情況確定,一般是3人左右。每組設組長一名,負責本組的任務分配、實施、綜合等事項。
主要檢查的項目包括以下幾個方面:①基礎實驗:以選擇題和程序題方式提交(實驗1 -實驗6)。②項目實驗:小組提交項目文件(實驗7-實驗24)。③文檔注釋:小組提交項目的幫助文檔。④擴展創新:對實現的系統基本功能之外內容進行考核。
成績的考核采用積分制[6],積分檔次分為A、B、C 3檔,對應的積分分別為5、3、1。對于每一個積分項,采用排名的方式進行統計,積分計算公式為條目積分=系數×100×積分/條目內最高積分。
采用這種積分制形式計算平時成績時,反映出來的是一種排序效果,而不是傳統的實際分數,這樣更能體現每名學生在整個課程班中的位置,提高學生注重積累平時成績積分的積極性。這種檢查方式貫穿課程的整個實驗教學過程,保證了實驗的延續性,形成了一種以積分制為基礎的過程性評價[7]方式。
在交流反饋方面,除了傳統的郵件、電話、面對面等方式外,建設了Java程序設計課程中心網站,另外還試行了以QQ群(一個上課群和一個技術群)為主戰場的方式,提高了學生學習和交流的實時性、積極性、主動性。通過這些方式,教師可以方便地與學生進行交流,并能及時得到相應的反饋,為更好地進行教學提供寶貴實用的信息保障,促進師生之間良好關系的建立。
對Java程序設計課程多次應用“案例驅動式”實驗教學方法,取得了良好的教學效果,在教學方法改革、課程建設等方面都具有一定的促進作用。
(1)對教學方法改革的促進。“案例驅動式”實驗教學方法的突出特點就是從“系統”角度完成對課程知識的學習和應用。它將講授課程和相關課程的知識融為一體,形成一個有機的系統,在案例的驅動下實現一門課程的學習。為了提高學生的創新能力,必須讓學生積極參與所有的教學環節中,并且要摒棄照本宣科和“填鴨式”的教學方法,轉變觀念,以學生為主體實施教學。
(2)對課程建設的促進。“案例驅動式”實驗教學方法的應用,對于“Java方向”上的相關課程包括JSP應用程序設計、Web系統設計、基于Java EE的高級程序設計等課程的建設都具有一定的促進作用。另外,對于其他類似的計算機程序設計語言課程,如程序設計基礎、C#程序設計課程等,該方法也具有較好的借鑒作用。
雖然基于案例驅動的實驗教學方法有著其突出的優點和實踐效果,但我們必須清醒地認識到,編程能力的提高不是一朝一夕的事情,這需要勤學苦練。在熟練掌握基礎知識的前提下,要勤于思考、敢于動手、善于請教、精于總結,從而不斷積累編碼經驗并提高靠自己想辦法解決問題的能力,要學會利用思考、查資料、自學、討論等各種手段,建立適合自己的學習方法,這才是我們的真正目的。為了進一步提高Java程序設計課程的教學質量,下一步打算利用一些現代化的教學平臺,并結合自行開發的教學和考試系統,對網絡電子教室環境下程序設計類課程的教學模式進行深入的研究和實踐。
[1]孫憲麗, 張欣, 張楠. 基于工程教育專業認證的計算機專業人才培養模式研究[J]. 大學教育, 2016(4): 112-113.
[2]周激流. 工程教育推動地方特色,卓越計劃成就人才培養[J]. 計算機教育, 2016(6): 1-6.
[3]喬善平, 張志軍, 藺永政. 融合柔性Project的探究式教學方法的研究[J]. 中國成人教育, 2013(19): 136-138.
[4]劉麗艷. 案例教學法在命題邏輯推理論證中的應用[J]. 高教學刊, 2016(5): 124-126.
[5]王飛雪. Java程序設計課程的項目化教學研究[J]. 電腦與信息技術, 2016(2): 66-67, 74.
[6]鄭杰政. “積分制”在大學公共體育課程考核中的應用研究[J]. 山東體育科技, 2016(5): 81-84.
[7]姚爭為, 滕國棟. 高校程序設計類課程過程性評價的研究與實踐[J]. 計算機教育, 2015(24): 86-88.