摘要:Java語(yǔ)言是現(xiàn)今比較流行的一門(mén)編程語(yǔ)言,教學(xué)中理論與實(shí)踐是否同步、實(shí)驗(yàn)教學(xué)的好壞都直接影響著理論教學(xué)的效果。為此,結(jié)合該課程上機(jī)實(shí)驗(yàn)的實(shí)際情況,總結(jié)出了實(shí)驗(yàn)教學(xué)過(guò)程中存在的問(wèn)題,給出了解決問(wèn)題的方法。實(shí)驗(yàn)表明,這些方法取得了良好的教學(xué)效果。
關(guān)鍵字:程序設(shè)計(jì);Java;實(shí)驗(yàn)教學(xué);教學(xué)方法
中圖分類(lèi)號(hào):G642.41
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1006-8228(2011)08-46-03
引言
Java語(yǔ)言作為Sun公司開(kāi)發(fā)的一種編程語(yǔ)言,具有簡(jiǎn)單、面向?qū)ο?、分布式、解釋型、平臺(tái)無(wú)關(guān)性、多線程等特征,由于其很好地解決了網(wǎng)絡(luò)編程語(yǔ)言中的諸多問(wèn)題,一經(jīng)推出,便受到計(jì)算機(jī)界的普遍歡迎和接受,并得到了廣泛應(yīng)用,已經(jīng)成為“21世紀(jì)首選的應(yīng)用程序開(kāi)發(fā)工具”。
Java語(yǔ)言是標(biāo)志編程進(jìn)入Intemet時(shí)代的里程碑。該語(yǔ)言充分考慮了互聯(lián)網(wǎng)時(shí)代的特點(diǎn),以“一次編寫(xiě),隨處運(yùn)行”的理念定義了一種新的編程規(guī)范。Java的誕生必將對(duì)整個(gè)計(jì)算機(jī)產(chǎn)業(yè)產(chǎn)生深遠(yuǎn)的影響,對(duì)傳統(tǒng)的計(jì)算模型提出了新的挑戰(zhàn)。
目前在國(guó)內(nèi),Java語(yǔ)言程序設(shè)計(jì)已被我國(guó)各類(lèi)高校列為計(jì)算機(jī)專(zhuān)業(yè)教學(xué)體系中的一門(mén)重要的主干課程。
學(xué)習(xí)Java程序設(shè)計(jì)有助于學(xué)生在掌握面向過(guò)程程序設(shè)計(jì)、可視化程序設(shè)計(jì)的基礎(chǔ)上,掌握更深入的面向?qū)ο缶幊碳夹g(shù);學(xué)習(xí)Java程序設(shè)計(jì)的基本原理和方法有助于學(xué)生學(xué)習(xí)其它的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。這門(mén)課程有助于提高學(xué)生的實(shí)踐能力,讓學(xué)生多掌握一門(mén)目前廣泛使用的最新技術(shù),既能完善學(xué)生的知識(shí)結(jié)構(gòu),又能提高學(xué)生的實(shí)踐能力,從長(zhǎng)期和短期都對(duì)學(xué)生大有裨益。
1、實(shí)驗(yàn)教學(xué)中存在的問(wèn)題
程序設(shè)計(jì)語(yǔ)言課程是實(shí)踐操作性很強(qiáng)的課程,不僅要求學(xué)生能準(zhǔn)確地理解概念、基本原理,而且還要有一定的上機(jī)實(shí)踐操作的能力。實(shí)驗(yàn)教學(xué)的目的一方面是對(duì)學(xué)生所學(xué)知識(shí)進(jìn)行“理論驗(yàn)證”;另一方面是提高學(xué)生的“綜合實(shí)踐能力”,培養(yǎng)學(xué)生的創(chuàng)新精神。筆者通過(guò)近年的教學(xué)實(shí)踐發(fā)現(xiàn),實(shí)驗(yàn)教學(xué)環(huán)節(jié)存在著一些問(wèn)題。
(1)在實(shí)驗(yàn)教學(xué)中,上機(jī)編寫(xiě)調(diào)試Java程序是學(xué)生遇到的困難之一,典型地表現(xiàn)在:部分學(xué)生不習(xí)慣或不愿意使用實(shí)驗(yàn)室安裝的Java開(kāi)發(fā)工具(考慮到多種因素,通常實(shí)驗(yàn)室計(jì)算機(jī)上只安裝一種Java開(kāi)發(fā)工具)。比如,筆者安裝的JBuilder集成開(kāi)發(fā)環(huán)境,因?yàn)槠浔旧硐鄬?duì)龐大,出現(xiàn)啟動(dòng)速度慢、運(yùn)行程序過(guò)程中常出現(xiàn)死機(jī)等現(xiàn)象,有些學(xué)生不愿意使用這種工具。
(2)部分學(xué)生對(duì)實(shí)驗(yàn)環(huán)節(jié)不夠重視。實(shí)驗(yàn)課上,部分學(xué)生曠課、部分學(xué)生上機(jī)想上網(wǎng)聊天、玩游戲,對(duì)教師布置的實(shí)驗(yàn)題目只是敷衍了事,有的甚至直接抄襲其他學(xué)生的程序。
(3)多數(shù)學(xué)生在編程調(diào)試過(guò)程中不講求方法,不注重效率。這體現(xiàn)在兩個(gè)方面,第一方面,學(xué)生不注重培養(yǎng)自身良好的編程風(fēng)格。面對(duì)給定的實(shí)驗(yàn)題目,部分學(xué)生對(duì)問(wèn)題不作整體分析,包括:題目要求具體做什么、應(yīng)該有哪些功能、怎么沒(méi)計(jì)數(shù)據(jù)結(jié)構(gòu)、怎么給出算法等等,而是坐在電腦面前想到什么就寫(xiě)什么。第二方面,Java是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,組成程序的基本單位是類(lèi),有時(shí)一個(gè)源程序可能由多個(gè)類(lèi)組成,多數(shù)學(xué)生都是在把整個(gè)程序?qū)懲曛蟛砰_(kāi)始調(diào)試,難以糾錯(cuò)、
2、實(shí)驗(yàn)教學(xué)改進(jìn)措施
2.1 為學(xué)生自主學(xué)習(xí)提供指導(dǎo),在實(shí)驗(yàn)環(huán)節(jié)中對(duì)學(xué)生做出指導(dǎo)
學(xué)生對(duì)實(shí)驗(yàn)不太注重,原因之一是因?yàn)橛袇拰W(xué)情緒,沒(méi)有編寫(xiě)程序解決問(wèn)題的興趣,因此教師應(yīng)該從培養(yǎng)學(xué)生興趣方面采取一些有效的方法。
(1)激發(fā)學(xué)生的興趣。在講授程序設(shè)計(jì)語(yǔ)言的第一課,教師演示一些由學(xué)生自己編寫(xiě)的、有趣的程序,如五子棋程序等,從而吸引學(xué)生;同時(shí)教師最好在開(kāi)始講授這門(mén)語(yǔ)言之前就能給出實(shí)驗(yàn)題目。因?yàn)楸娝苤?,熟練掌握并運(yùn)用工具的目的是為了解決問(wèn)題,程序設(shè)計(jì)語(yǔ)言是開(kāi)發(fā)軟件的工具,帶著要解決的問(wèn)題開(kāi)展Java語(yǔ)言的教學(xué),可以提高課堂教學(xué)效果,從而也會(huì)提高學(xué)生的實(shí)驗(yàn)質(zhì)量。
(2)實(shí)驗(yàn)形式多樣化,增強(qiáng)實(shí)驗(yàn)的趣味性??蓪⒚看螌?shí)驗(yàn)內(nèi)容分成必做實(shí)驗(yàn)和選做實(shí)驗(yàn)兩大類(lèi)。必做實(shí)驗(yàn)包括涉及基本知識(shí)的實(shí)驗(yàn);選做實(shí)驗(yàn)可以給出一些要擴(kuò)張學(xué)生知識(shí)的程序,題型可以是有一定任務(wù)和背景的趣味編程,給出部分內(nèi)容,由學(xué)生填寫(xiě)完成剩余任務(wù)的編程接龍等。選做的實(shí)驗(yàn)題目原則上不要太難,但是需要學(xué)生動(dòng)動(dòng)腦筋才能完成,如果太難反倒打擊了學(xué)生的積極性。豐富的實(shí)驗(yàn)內(nèi)容,在很大程度上可以調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性;不同層次的實(shí)驗(yàn)題型,適應(yīng)不同程度的學(xué)生。
(3)可以采取案例教學(xué)法。根據(jù)課程實(shí)驗(yàn)教學(xué)目標(biāo)和實(shí)驗(yàn)教學(xué)內(nèi)容的需要,以與現(xiàn)實(shí)生活緊密聯(lián)系的、趣味性強(qiáng)的、與實(shí)驗(yàn)題目相似的案例為教材,組織學(xué)生站在理論的高度對(duì)案例進(jìn)行審視、分析、討論和交流等活動(dòng),使理論回到實(shí)踐、指導(dǎo)實(shí)踐,讓學(xué)生在具體的問(wèn)題情境中積極思考、主動(dòng)探索,以培養(yǎng)學(xué)生認(rèn)識(shí)問(wèn)題、分析問(wèn)題和解決問(wèn)題等綜合能力,加深學(xué)生對(duì)基本原理和概念的理解,提高教與學(xué)的質(zhì)量和效果。實(shí)驗(yàn)案例設(shè)計(jì)要簡(jiǎn)短,便于學(xué)生理解,適合學(xué)生模仿,學(xué)生可以獨(dú)立練習(xí)完成。我們?cè)贘ava程序設(shè)計(jì)語(yǔ)言課程教學(xué)中,通過(guò)設(shè)計(jì)簡(jiǎn)短實(shí)用的實(shí)驗(yàn)案例,使學(xué)生很快掌握了知識(shí)點(diǎn)的實(shí)際用法,也加深了對(duì)理論知識(shí)的理解。
與傳統(tǒng)的教學(xué)法相比,案例教學(xué)能使理論緊密聯(lián)系實(shí)際,使學(xué)生成為教學(xué)活動(dòng)的主體,從而為學(xué)生構(gòu)建了一個(gè)自主學(xué)習(xí)、合作學(xué)習(xí)、研究性學(xué)習(xí)和探索性學(xué)習(xí)的開(kāi)放式的學(xué)習(xí)情境,符合建構(gòu)主義教學(xué)思想,更有利于學(xué)生的知識(shí)建構(gòu)。
(4)可以采取“三段過(guò)程”實(shí)驗(yàn)教學(xué)方法?!叭芜^(guò)程”實(shí)驗(yàn)教學(xué),就是模仿過(guò)程實(shí)驗(yàn)、完善過(guò)程實(shí)驗(yàn)、綜合過(guò)程實(shí)驗(yàn)這三種類(lèi)型實(shí)驗(yàn)形式。模仿過(guò)程實(shí)驗(yàn)是結(jié)合課堂教學(xué)內(nèi)容,根據(jù)事先設(shè)計(jì)好的一些程序?qū)嵗?,學(xué)生按程序?qū)嵗瓿傻囊环N實(shí)驗(yàn)。模仿過(guò)程實(shí)驗(yàn)是使學(xué)生對(duì)必要的理論和概念建立感性認(rèn)知和掌握的過(guò)程。完善過(guò)程實(shí)驗(yàn)是在原有程序的基礎(chǔ)上,逐漸改變和增加條件或?qū)υ谐绦蛉毕莺痛嬖诘牟蛔?,提出解決方案和方法的一種實(shí)驗(yàn)。完善過(guò)程實(shí)驗(yàn)?zāi)康氖鞘箤W(xué)生鞏固所學(xué)知識(shí),提升應(yīng)用能力,培養(yǎng)科學(xué)的思維方式,提高對(duì)程序的分析理解能力和舉一反三的編程綜合能力。綜合過(guò)程實(shí)驗(yàn)是通過(guò)應(yīng)用程序設(shè)計(jì)或課題設(shè)計(jì)的綜合性、系統(tǒng)性實(shí)驗(yàn),使實(shí)驗(yàn)教學(xué)從單一程序設(shè)計(jì),向多模塊的應(yīng)用程序設(shè)計(jì)轉(zhuǎn)變。綜合過(guò)程實(shí)驗(yàn)的目標(biāo)是提高學(xué)生知識(shí)點(diǎn)的關(guān)聯(lián)、銜接,組合和實(shí)踐應(yīng)用能力m。
(5)針對(duì)學(xué)生在實(shí)驗(yàn)過(guò)程中采用的方法效率低,教師在實(shí)驗(yàn)教學(xué)過(guò)程中應(yīng)該指導(dǎo)學(xué)生如何完成實(shí)驗(yàn)題目,給出實(shí)現(xiàn)提示。同時(shí)在編寫(xiě)程序的過(guò)程中教師應(yīng)該強(qiáng)化學(xué)生用軟件工程方法學(xué)編寫(xiě)程序,進(jìn)行需求分析,設(shè)計(jì),實(shí)現(xiàn),測(cè)試,維護(hù)等基本過(guò)程。類(lèi)的設(shè)計(jì)在Java程序設(shè)計(jì)中處于核心地位,因?yàn)镴ava是純面向?qū)ο笳Z(yǔ)言,設(shè)計(jì)的主要工作就是定義類(lèi),類(lèi)設(shè)計(jì)的好壞直接關(guān)系到程序的性能。在編寫(xiě)由多個(gè)類(lèi)組成的源程序時(shí),每定義好—個(gè)類(lèi),就應(yīng)該編寫(xiě)測(cè)試代碼對(duì)該類(lèi)進(jìn)行調(diào)試運(yùn)行。
2.2 為學(xué)生自主學(xué)習(xí)提供幫助
(1)針對(duì)實(shí)驗(yàn)室安裝的開(kāi)發(fā)環(huán)境單一這種現(xiàn)象,在機(jī)器條件允許的情況下可以同時(shí)安裝多個(gè)開(kāi)發(fā)環(huán)境;另一方面,現(xiàn)在多數(shù)學(xué)生都有自己的計(jì)算機(jī),教師可以給學(xué)生提供多個(gè)開(kāi)發(fā)環(huán)境,讓學(xué)生在自己的計(jì)算機(jī)上安裝其感興趣的開(kāi)發(fā)環(huán)境。學(xué)生如何使用開(kāi)發(fā)環(huán)境,教師可不作講解,要求學(xué)生自學(xué),以提高了學(xué)生的自學(xué)能力。
(2)重視學(xué)生調(diào)試程序能力的培養(yǎng)。在實(shí)驗(yàn)教學(xué)中,可以有意識(shí)、分階段、分步驟講解程序的調(diào)試方法,如:選擇講解錯(cuò)誤信息以及可能出現(xiàn)的錯(cuò)誤提示的原因及情況;讓學(xué)生學(xué)會(huì)調(diào)試程序,并告訴學(xué)生調(diào)試程序的重要性,避免學(xué)生出錯(cuò)就叫老師,或放棄實(shí)驗(yàn)的現(xiàn)象。
學(xué)生調(diào)試程序時(shí),會(huì)發(fā)現(xiàn)這樣那樣的問(wèn)題,但是不理解出錯(cuò)信息。主要原因是學(xué)生的英語(yǔ)詞匯量不夠。教師應(yīng)該編寫(xiě)一本編譯出錯(cuò)信息對(duì)照表,幫助學(xué)生正確調(diào)試程序,這樣學(xué)生調(diào)試出錯(cuò)了就很容易知道問(wèn)題所在,并得以解決。同時(shí)實(shí)驗(yàn)教師也可以把精力放在培養(yǎng)學(xué)生的編程思維,提高學(xué)生對(duì)實(shí)際問(wèn)題的解決上。
(3)給學(xué)生搭建多種自主學(xué)習(xí)平臺(tái)。①現(xiàn)在是網(wǎng)絡(luò)時(shí)代,教師應(yīng)充分利用網(wǎng)絡(luò)資源(學(xué)校教學(xué)平臺(tái),博客、電子郵件等)提供教學(xué)課件,便于學(xué)生課后自主學(xué)習(xí)與復(fù)習(xí)??山⒉煌瑢哟蔚念}庫(kù),方便學(xué)生的自我檢查;開(kāi)辟討論區(qū)與答疑區(qū),隨時(shí)對(duì)學(xué)生的學(xué)習(xí)問(wèn)題進(jìn)行解答;并開(kāi)展討論,提高學(xué)生的創(chuàng)新能力。②開(kāi)放機(jī)房。Java語(yǔ)言是一門(mén)實(shí)踐性很強(qiáng)的課程,大量的上機(jī)調(diào)試程序,可以幫助學(xué)生發(fā)現(xiàn)問(wèn)題,理解問(wèn)題,掌握程序設(shè)計(jì)的方法,鍛煉創(chuàng)新能力,拓展邏輯思維,從而,幫助學(xué)生更好地學(xué)習(xí)Java程序設(shè)計(jì)語(yǔ)言。
2.3 推動(dòng)監(jiān)控和評(píng)價(jià)學(xué)生的自主學(xué)習(xí)過(guò)程
(1)為了促使學(xué)生提高編程水平,拓寬學(xué)生的編程思路,可以開(kāi)展Java程序設(shè)計(jì)競(jìng)賽活動(dòng),調(diào)動(dòng)學(xué)生的學(xué)習(xí)熱情。組織Java程序設(shè)計(jì)小組也是提高大家學(xué)習(xí)興趣的一種方式。在實(shí)驗(yàn)教學(xué)中,不能一味地讓學(xué)生把自己孤立起來(lái)苦思冥想,可以采取分組競(jìng)賽活動(dòng),培養(yǎng)他們的良性競(jìng)爭(zhēng)意識(shí),從而達(dá)到提高學(xué)習(xí)興趣的目的。比如“求1000之內(nèi)的所有完數(shù)”這個(gè)例子。先介紹一種常見(jiàn)算法,其他方法讓程序設(shè)計(jì)小組自主去解決,最后比較哪組使用方法最多,方法最巧,同時(shí)把這些好方法介紹給大家,鼓勵(lì)大家去發(fā)現(xiàn)新思路、新方法,培養(yǎng)他們的創(chuàng)造性思維。還可以組織一部分編程能力強(qiáng)的同學(xué)參與一些小型程序的開(kāi)發(fā),這樣既可以培養(yǎng)編程高手,又可以與社會(huì)實(shí)踐相結(jié)合,使得學(xué)生能夠?qū)W有所用,使他們盡快適應(yīng)社會(huì)需求。定期開(kāi)展程序設(shè)計(jì)競(jìng)賽,讓感興趣的同學(xué)挑戰(zhàn)一下自己的編程能力,挖掘自身的潛力。實(shí)踐證明這種競(jìng)賽活動(dòng)不但可以幫助學(xué)生掌握多種語(yǔ)句的使用方法,還能培養(yǎng)他們多種角度分析問(wèn)題的能力以及集體協(xié)作能力。
(2)為了保證實(shí)驗(yàn)的效果,應(yīng)該對(duì)實(shí)驗(yàn)進(jìn)行合理的監(jiān)控和評(píng)價(jià),并且加強(qiáng)考核。每次上機(jī)前要求將所布置的題目寫(xiě)成書(shū)面作業(yè),上機(jī)時(shí)檢查,否則不準(zhǔn)上機(jī)。在每次上機(jī)時(shí),要求在規(guī)定時(shí)間內(nèi)獨(dú)立完成實(shí)驗(yàn)習(xí)題,并根據(jù)完成練習(xí)題的數(shù)量、質(zhì)量與時(shí)間,記錄平時(shí)成績(jī)。每次上機(jī)實(shí)習(xí)都要求學(xué)生必須寫(xiě)出規(guī)范的實(shí)驗(yàn)報(bào)告,在實(shí)驗(yàn)報(bào)告中一定要寫(xiě)出自己的心得。這樣,每上一次機(jī)就有一次提高。同時(shí),對(duì)實(shí)踐環(huán)節(jié)要進(jìn)行階段性考核??己说哪繕?biāo)要明確,對(duì)學(xué)生提出的實(shí)驗(yàn)要求應(yīng)該逐步提高。加大平時(shí)成績(jī)和階段性考核成績(jī)?cè)谡n程總成績(jī)中所占比重。期末考試除筆試外,增加上機(jī)考試,要求學(xué)生在給定的時(shí)間內(nèi)(比如兩個(gè)小時(shí))把指定的題目編寫(xiě)程序加以實(shí)現(xiàn)并運(yùn)行出結(jié)果。教師應(yīng)給出評(píng)分標(biāo)準(zhǔn)。
3、結(jié)束語(yǔ)
程序設(shè)計(jì)語(yǔ)言實(shí)踐操作性很強(qiáng),實(shí)驗(yàn)教學(xué)的好壞直接影響著理論教學(xué)的效果。本文以Java語(yǔ)言為例,歸納了幾點(diǎn)實(shí)驗(yàn)教學(xué)過(guò)程中存在的問(wèn)題,提出了“指導(dǎo)學(xué)生自主學(xué)習(xí)、幫助學(xué)生自主學(xué)習(xí)、促進(jìn)學(xué)生自主學(xué)習(xí)”,即“導(dǎo)學(xué)+助學(xué)+促學(xué)”的Java實(shí)驗(yàn)教學(xué)方法。此方法取得了滿意的效果,學(xué)生反映良好,學(xué)生的學(xué)習(xí)態(tài)度也更為主動(dòng),學(xué)習(xí)成績(jī)有較大提高。
總之,“導(dǎo)學(xué)+助學(xué)+促學(xué)”的實(shí)驗(yàn)教學(xué)法有利于提高學(xué)生分析問(wèn)題、解決問(wèn)題的能力,可取得事半功倍的效果。當(dāng)然,這種實(shí)驗(yàn)教學(xué)模式是對(duì)該課程傳統(tǒng)實(shí)驗(yàn)教學(xué)方法的一次改革,無(wú)論對(duì)學(xué)生還是對(duì)教師都提出了更高的要求,師生都需要有一個(gè)適應(yīng)過(guò)程,實(shí)施的具體方法和措施也有待進(jìn)一步探索和完善。
參考文獻(xiàn):
[1]閻菲.Java程序設(shè)計(jì)教程[M].中國(guó)水利水電出版社,2004.
[2]張白一,崔尚森.面向?qū)ο蟪绦蛟O(shè)計(jì)——Java[M].西安電子科技大學(xué)出版社,2003.
[3]孫偉.“Java程序設(shè)計(jì)”課程的教學(xué)改革與實(shí)踐[J].計(jì)算機(jī)時(shí)代,2005.11.
[4]蘇華.“C語(yǔ)言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)改革與實(shí)踐[J].中國(guó)教育導(dǎo)刊,2005.5.