劉慧琳


摘要:Java程序設計對計算機相關專業的學生來說是一門非常重要且實踐性很強的課程,文章針對傳統授課方式的弊端,根據該課程的特點,結合成都師范學院相關專業學生的學習情況,對課程的教學內容、教學模式、實驗實訓和考核評價等方面進行了探討,提出了以任務驅動為導向的教學模式,以此來激發學生的學習興趣,促進學生對課程知識點的理解和掌握。文章提出的教學模式,以培養學生的編程和解決實際問題的能力為教學目標,通過一個個任務推動課程教學。
關鍵詞:Java程序設計;任務驅動;教學模式
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)16-0147-03
1 引言
1.1 Java的應用前景
Java語言作為一門應用廣泛的編程語言,有非常廣泛的應用前景,它的生態系統幾乎涵蓋了目前市面上所有的軟硬件。它常用于網站開發、游戲開發、桌面程序設計、移動終端應用,以及其他應用軟件的開發,廣泛應用于移動、銀行、保險、物流、醫療等各大行業,其對Web應用以及電子商務的迅速發展做出了巨大的貢獻。它在當前熱門的云計算、大數據、物聯網、人工智能和區塊鏈等技術領域也有著廣闊的應用前景。
1.2 課程教學現狀
大部分計算機及相關專業普遍開設程序設計類課程,目前這類課程在很多學校采用以教師講授為主的“填鴨式”教學方式,這種教學方式以教師為中心,以教師對知識的講解為主體,而學生在這一教學過程中被動接受,教學效果不理想。近年來針對Java程序設計的課程改革研究得到了高校廣泛的重視[1-3],大部分研究是以項目驅動模式進行探討的[1-3]。成都師范學院計算機科學學院從2016年開始招收數字媒體技術專業本科生,該專業文理兼收,一部分學生具有較強的理工科思維,一部分學生在文科方面比較擅長。根據數字媒體產業對人才需求的調研制定了該專業人才培養方案并設置了相關課程教學體系。Java程序設計已成為計算機科學與技術、數字媒體技術等本科計算機相關專業的一門重要的專業選修課程, 在教學計劃中占有重要地位。為了適應時代和行業的新要求, 該課程打破基于學科邏輯的計算機理論教學方式, 嘗試以任務驅動為導向, 著力培養學生實踐和創新能力[4],提升學生就業能力。
1.3 目前教學存在的問題
近十幾年,各高校陸續開設了Java程序設計課程,目前該課程的教學主要存在以下幾個問題:
1)傳統式講授,學生接受較差
傳統教學方式通常是老師對各個知識點采用“理論講解+案例演示”,學生被動接受。這種教學方式以理論教學為主,有部分實踐操作也僅局限于課堂案例或者相關練習的驗證性實驗操作,課堂氣氛不夠活躍,很難激發學生學習的主動性和積極性,教學效果不佳。
2)學習熱情常常是先高后低[3]
學生剛開始學習階段的學習興趣較高,大部分學生愿意參與到理論和實踐教學中來。但是,隨著課程知識點的復雜度和程序代碼量的增加,部分學生開始跟不上教學進度,體現在:課堂上學生不愿意參與討論和互動;不能靈活應用所學知識;實驗作業僅能完成講過的案例,對稍微變化或拓展的練習就無法下手。
3)學生的綜合實踐能力較差
學習過程是單一的知識點和相關簡單案例結合講解,雖然能讓學生理解單個知識點,但所學知識點比較孤立,各個知識點之間缺乏有機的融合,學生很難掌握章節之間和課程之間的關聯。并且前后所學的知識點不能很好地銜接,涉及多知識點的綜合應用就無從下手。
4)學習成就感較差
學生學完整門課程后,沒有綜合實踐能力,體會不到學習Java語言的作用,感覺只是多學了一門編程語言,成就感較差,也在一定程度上影響就業。
5)以項目驅動教學模式的局限性
項目驅動教學模式是以項目為主體的教學方式。該方式是讓學生參加真實的項目設計,在完成項目的過程中完成教學任務[5]。這種方式雖然能夠避免傳統農教學模式的一些弊端,激發學生的學習興趣,提升實踐能力,但是也有一定的局限性。項目往往不能包含全部的知識點,項目的分割和各個教學知識點不一定很好地銜接。
面向任務驅動的教學模式更加注重理論到實踐的運用,有助于改善理論與實踐之間的關系, 以項目為主線,以任務為紐帶密切聯系知識點,通過實踐訓練提高理論水平,以理論知識指導實踐運用,提升整體學習效果。
2 任務驅動教學模式
任務驅動教學模式是以項目和任務為核心,在教學過程中以具體項目為主線展開,把相關的知識點融入各個教學環節中。在實際教學中,教師通過提出問題、分析問題,明確問題所涉及的各個知識點,指導和督促學生進行學習。把項目分解為一個個獨立的任務(按知識點分解,任務盡量以難易程度適中、容易實施來確定),以完成具體任務為目標的教學過程。
任務驅動教學方式把學生按大的項目分成若干小組,按文理科學生搭配,編程基礎好和基礎差的學生組合的方式分組,每個小組完成獨立的一個項目。教師將項目劃分為一個個任務(任務對應理論知識點),每個小組的學生根據自身的特長合理分配任務,學生根據任務的需求來學習對應的技能,由被動學習轉變為主動學習,從而調動學習的興趣,發揮學習的積極性。在任務完成的過程中,既鍛煉了學生的自學能力,又培養了他們的動手能力,還增強了大家的團隊協作精神。
3 項目設計和任務劃分的原則[6]
采用任務驅動的教學方式時,項目的設計和任務的劃分非常重要。一個好的項目設計需要涵蓋本課程的各個知識點,每個知識點設置為一個任務,任務要難易結合,各個任務相互聯系又相對獨立,并且重點突出。任務把知識點串聯起來,能構成整個課程的學習內容,組成一個項目[6]。教師在組織和劃分任務的先后順序時需要考慮學生的理論基礎、動手能力和學習能力,任務應該從簡單到復雜自然過渡,中間要注意知識銜接。另外,選擇的項目應當業務簡單,對復雜的業務邏輯進行適當拆分,形成多個業務簡單的任務,便于理解;項目最好具備一定的趣味性,讓學生能在愉快的實踐過程中熟悉課程的理論知識。
4 任務驅動法的教學過程設計
任務驅動教學設計盡量與日常生活和學習相關,這里以 “學生信息管理系統”項目為例探討具體的教學實施方案。該課程的知識體系主要分為Java基礎知識(包括程序的基本結構、基礎語法、基礎編程等),流程控制和數組,面向對象的編程(包括類和對象,超類、子類和繼承性,包、訪問控制和接口),異常處理,多線程設計,輸入輸出流,GUI編程等。
每個教學階段的實踐任務如表1所示。
5 任務驅動法在教學過程中的實施
Java語言主要分為基礎和提高兩部分進行教學,每個部分按章節知識點進行分類,按知識點的粒度設置為大小不同的任務,將大任務進一步拆分為適合教學的小任務。教師將每個小任務涉及的知識點進行講解,并錄制成微課輔助學生學習。在任務的實施過程中,每個小組中編程能力強的學生可以幫助、帶動能力較弱的組員。學生在實踐過程中,對不熟悉的知識點可以反復觀看相應的微課進行學習,下面對具體任務的實施進行探討。
5.1 Java基礎知識部分
學習目標是讓學生掌握Java語言的基本語法,包括基本數據類型、運算符和表達式,流程控制語句和數組等內容。教學實踐是引導學生完成學生成績的管理任務,包括搭建開發環境,編輯器的使用規范,學生成績的統計、排序、求平均分等實踐任務。
5.2 Java語言的提高部分
學習目標是掌握面向對象的編程,熟悉繼承、多態、抽象類的使用,并掌握異常處理的方法以及多線程設計的思想。通過實現設定的任務來完成知識點的教學。面向對象的編程部分以人員信息管理和計算多邊形周長和面積兩個任務為主線進行教學。
1)面向對象的編程部分
面向對象的知識是教學重點,以人員信息管理任務來完成以下知識點的教學:類和對象的定義,包括類的成員變量和成員方法的定義、構造方法的定義和方法的重載、訪問控制、類的封裝性和繼承等;以計算多邊形周長和面積的任務來完成抽象類及其繼承等知識點教學。
2)異常處理
在學生成績單任務中添加對除零、數組越界、類型轉換錯誤、文件IO錯誤等情況的處理。通過幾個在實際生活中可能遇到的異常問題的處理,使學生了解異常處理的作用并掌握具體的處理方法。
3)多線程設計
設計提供多人進行成績錄入和查詢的任務,該任務使用隊列進行成績數據緩存,采用多線程技術實現系統的并發訪問;成績隊列成為臨界訪問資源,通過隊列鎖機制解決資源爭用問題。
4)輸入輸出流
設計實踐任務有:創建文件夾和文件,查詢文件屬性,將學生成績寫入文件中,并從文件中讀出成績數據等。
5)GUI編程
設計成績錄入和顯示成績列表的界面,實現系統界面的布局和設計,掌握Button 、Label、TextField等常用控件的使用。
6 教師和學生在任務實施過程中扮演的角色
6.1 教師教學指導
教學過程中,教師的作用主要是引導作用,介紹項目,劃分任務,講解和分析與任務相關的知識點,指導學生從所學的理論知識應用到實際的任務中[7]。
6.2 學生實踐操作
學生實踐圍繞任務展開,首先是根據任務梳理需要的知識點,學習和理解相關知識,通過對任務的理解、討論,完成任務的進一步拆分。小組內部討論形成實操方案,各成員按計劃分工,先對單一知識點的實踐作業進行操作演練,再逐步將子任務進行疊加、組合,形成較大的任務模塊,最終把課程學習中組員完成的一個個小任務串接起來形成一個完整的項目。
在各個任務階段,小組內各個成員對完成的模塊相互測試,發現問題,提出改進意見。每個成員接觸到的知識局限在子任務涉及的知識點,通過相互測試和修改,完成相應知識點的學習和補充,達到全面學習的目的。
在任務實施的過程中,學生需要階段性匯報,總結任務實施情況,針對遇到的問題提出解決方案,記錄小組內討論的過程,要求每個同學參與,輪流進行匯報。
7 考核評價
考核評價[8]主要包括四個方面:
1)單一知識點的考核
針對每個小組中的每個成員,都需要完成對應的知識點編碼練習,教師根據學生提交的實踐作業,檢查任務中知識點的涵蓋情況,對知識的綜合運用能力進行評價。
2)任務完成情況考核
根據小組的分工,對每個任務的設計文檔和實現過程,以及軟件運行情況進行評價。檢查任務功能完成情況,并對源代碼進行檢查,通過對軟件實現的算法思想,代碼書寫、程序注釋等編程規范性進行評價。
3)團隊協作能力考核
考核學生在小組任務中對相關知識點的掌握情況,了解學生在執行任務過程的態度(積極性和認真度)和完成質量。結合學生對知識點、實現技術細節的熟悉程度推斷學生在相應任務中的參與程度,按學生參與程度越高則團隊協作能力越強進行考核,并對小組成員間的合作和互助情況做出評價。避免出現小組少數同學包攬任務,部分成員不參與的情況。
4)小組綜合能力考核
項目完成后進行答辯,每個小組需要對各自的項目進行講解、運行,對每部分功能的實現進行說明,回答教師和其他小組成員的質詢和提問,最后做出綜合能力評價;小組成員之間還要相互進行評價。
對各個任務完成情況進行考核的表格模板如表2所示:
8 結束語
以任務驅動為導向的Java程序設計課程教學對傳統的教學方式進行了改革,以教師的理論講解和課帶實驗為主的教學,轉變為以任務驅動為導向的教學方式,不僅調動了學生學習的積極性,還增強了學生專業素養、溝通能力和團隊協作精神。當然這種教學模式不能一成不變,還應該根據學生的專業情況、學習能力進行調整,在實踐過程中不斷改進,努力將學生培養成為適應社會需求的高素質技能型人才。
參考文獻:
[1] 李丹.項目驅動教學模式下的《JAVA程序設計》課程改革探討[J].電腦與電信,2019(4):28-30.
[2] 李躍飛.基于項目驅動法的《Java程序設計》課程教學設計[J].亞太教育,2015(16):90.
[3] 徐靜.體驗項目驅動的Java程序設計課程建設思路[J].計算機時代,2014(5):64-65.
[4] 柳長安,白逸仙.以問題為導向的虛擬現實課程改革與實踐[J].華北電力大學學報(社會科學版),2017(3):126-129.
[5] 李曉玲.行為導向 德國職業教育教學改革的理論與實踐[J].教育發展研究,2002,22(11):109-111.
[6] 彭召意,文志強,朱艷輝.以項目驅動的面向對象程序設計課程教學研究[J].計算機教育,2012(24):95-98.
[7] 劉玉文,陳春燕,翟菊葉,等.基于任務驅動的《C語言程序設計》在線教學方法[J].黃岡師范學院學報,2021,41(3):126-130.
[8] 郭銀章,王麗芳.基于項目任務驅動的C語言程序設計課程教學改革與實踐[J].計算機教育,2017(2):41-44.
【通聯編輯:王力】