周則明 胡友彬 張鵬 馬寧 蔣林
摘要:面向?qū)ο蟪绦蛟O(shè)計(jì)是信息類專業(yè)的選修課程,是培養(yǎng)學(xué)生編程能力的重要載體。本文探討了該類課程在課程設(shè)置、內(nèi)容選擇、教學(xué)與實(shí)踐環(huán)節(jié)設(shè)計(jì)、新型教學(xué)方法探究等方面需要注意的幾個(gè)問(wèn)題,以期提升該類課程的教學(xué)效果,適應(yīng)學(xué)生未來(lái)崗位的任職需求。
關(guān)鍵詞:面向?qū)ο蟪绦蛟O(shè)計(jì);教學(xué)模式;微課;高效課堂
中圖分類號(hào):G642.0 ? ? 文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1674-9324(2016)08-0209-02
面向?qū)ο蟪绦蛟O(shè)計(jì)是目前編程技術(shù)的主流方法,是掌握像C#、Visual Basic、Java等開(kāi)發(fā)工具的基礎(chǔ)[1],也是學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》、《操作系統(tǒng)》等使用C++或Java語(yǔ)言作為算法示例的后續(xù)課程的前提,更是培養(yǎng)鍛煉學(xué)生程序設(shè)計(jì)思維的重要環(huán)節(jié)。所以,面向?qū)ο蟮某绦蛟O(shè)計(jì)是信息類專業(yè)的必修內(nèi)容,在學(xué)生全期培養(yǎng)中尤為重要。為促進(jìn)學(xué)生深入掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,解放軍理工大學(xué)相關(guān)專業(yè)開(kāi)設(shè)了《C++程序設(shè)計(jì)》和《Java程序設(shè)計(jì)》等課程。本文針對(duì)該類課程的特點(diǎn),重點(diǎn)探討教學(xué)實(shí)施過(guò)程中應(yīng)突出關(guān)注的幾個(gè)問(wèn)題。
一、面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)的特點(diǎn)
《C++程序設(shè)計(jì)》開(kāi)設(shè)于第5學(xué)期,60學(xué)時(shí);《Java程序設(shè)計(jì)》開(kāi)設(shè)于第7學(xué)期,40學(xué)時(shí)。《C++程序設(shè)計(jì)》教學(xué)內(nèi)容包括類的抽象與封裝、類的繼承與多態(tài)、操作符重載、STL編程等內(nèi)容;《Java程序設(shè)計(jì)》還包括JDBC數(shù)據(jù)庫(kù)訪問(wèn)、多線程序設(shè)計(jì)、Java集合框架等很有Java特色的內(nèi)容。該類課程的特點(diǎn)是:概念多、知識(shí)點(diǎn)分散、實(shí)踐性強(qiáng)、入門容易提高難。面向?qū)ο蟮木幊趟枷氪?lián)了整個(gè)教材,但面向?qū)ο蟮能浖こ谭椒ㄖ欢?,因此需要在教學(xué)過(guò)程中注重講清概念,沿著舉例—模仿—實(shí)踐—開(kāi)發(fā)的鏈條引導(dǎo)學(xué)生理解面向?qū)ο蟮木幊趟枷?,掌握面向抽象的編程方法?/p>
二、提高課程教學(xué)效果探微
1.銜接好C語(yǔ)言向C++語(yǔ)言的過(guò)渡。由于前期已經(jīng)開(kāi)設(shè)了《C語(yǔ)言程序設(shè)計(jì)》,學(xué)生具備了一定的程序設(shè)計(jì)基礎(chǔ)。C語(yǔ)言是面向過(guò)程的程序設(shè)計(jì)語(yǔ)言,由于先入為主,學(xué)生在學(xué)習(xí)《C++程序設(shè)計(jì)》時(shí)會(huì)有一定的困難,需要將程序設(shè)計(jì)的思想從面向過(guò)程轉(zhuǎn)變?yōu)槊嫦驅(qū)ο?。教學(xué)時(shí)可從結(jié)構(gòu)體入手,過(guò)渡到C++的設(shè)計(jì)。此外,注意講解與C語(yǔ)言有區(qū)別的部分,如帶默認(rèn)值的函數(shù)、重載函數(shù)、引用的概念等。教學(xué)過(guò)程中應(yīng)精心準(zhǔn)備實(shí)例,少講概念,通過(guò)典型例程來(lái)說(shuō)明知識(shí)點(diǎn)和程序的設(shè)計(jì)要點(diǎn)。
2.處理好程序設(shè)計(jì)教學(xué)與面向?qū)ο蟮睦碚摻虒W(xué)之間的關(guān)系。目前比較經(jīng)典的C++或Java教材,對(duì)面向?qū)ο蟮姆治龊驮O(shè)計(jì)理論介紹不多。在教學(xué)過(guò)程中應(yīng)適當(dāng)補(bǔ)充介紹面向?qū)ο罄碚撗芯康淖钚逻M(jìn)展和成果,注意基本概念和基本方法的講解。面向?qū)ο蟮姆治鲋攸c(diǎn)介紹三種模型:功能模型、對(duì)象模型、動(dòng)態(tài)模型。用面向?qū)ο蟮姆椒ńr(shí),可借助于UML的用例圖表述需求,再使用類圖定義類及之間的關(guān)系。對(duì)于簡(jiǎn)單的設(shè)計(jì)問(wèn)題,可畫出用例圖和類圖;對(duì)于較復(fù)雜的設(shè)計(jì)問(wèn)題,則應(yīng)畫出順序圖和協(xié)作圖。Rational Rose[2]是一種比較好的建模工具,定義類圖后能自動(dòng)生成代碼框架,提高了編程效率。
3.厘清面向?qū)ο笳Z(yǔ)言間的區(qū)別與聯(lián)系。目前,Java的應(yīng)用面非常廣泛,由于其跨平臺(tái)性和開(kāi)發(fā)工具的開(kāi)源性,已經(jīng)成為主流的開(kāi)發(fā)工具。從對(duì)程序員的調(diào)查來(lái)看,軟件設(shè)計(jì)人員最應(yīng)該熟練掌握的程序設(shè)計(jì)工具是C++和Java。作為C++語(yǔ)言的后續(xù)教學(xué)內(nèi)容,在Java教學(xué)中要注意與C++語(yǔ)言的區(qū)別,例如Java語(yǔ)言中的引用變量不是C++中用缺省構(gòu)造函數(shù)構(gòu)造的對(duì)象;Java的數(shù)組是對(duì)象而不是指針;Java的多態(tài)性實(shí)現(xiàn)方式與C++有差別;Java的內(nèi)存管理技術(shù)也有很大的不同??傊?,在教學(xué)過(guò)程中對(duì)容易混淆的概念和方法要多講解,多通過(guò)實(shí)例解釋和說(shuō)明。
4.統(tǒng)籌好理論教學(xué)、上機(jī)實(shí)習(xí)和課程設(shè)計(jì)的循環(huán)遞進(jìn)。要學(xué)好程序設(shè)計(jì),使其真正成為必備的工具,只在課堂上聽(tīng)講是遠(yuǎn)遠(yuǎn)不夠的,程序設(shè)計(jì)有一個(gè)聽(tīng)懂、模仿、反復(fù)實(shí)習(xí)的過(guò)程。在教學(xué)過(guò)程中,需要注重上機(jī)實(shí)習(xí)環(huán)節(jié)。教員應(yīng)精心選擇實(shí)習(xí)課題,對(duì)編譯器生成的錯(cuò)誤提示要求學(xué)生看懂并知道如何排錯(cuò)。此外,應(yīng)當(dāng)讓學(xué)生熟練掌握設(shè)置斷點(diǎn)、單步執(zhí)行、觀察局部變量或?qū)ο鬆顟B(tài)的方法。將程序從開(kāi)始到結(jié)束單步執(zhí)行一遍,對(duì)該程序的理解就會(huì)加深一層,讓學(xué)生熟練掌握調(diào)試程序的方法是十分重要的。教學(xué)過(guò)程中常常發(fā)現(xiàn),一種語(yǔ)言學(xué)完之后,對(duì)于較復(fù)雜的程序?qū)W生還是難以下手。為了提高編程能力,可以考慮增加課程設(shè)計(jì)環(huán)節(jié)。由于課時(shí)數(shù)的限制,該設(shè)計(jì)可在課后完成,這就要求教員合理設(shè)計(jì)課題,既要注意難度也要注意廣度。學(xué)生除了編寫程序之外,還應(yīng)編寫文檔使用如用例圖、類圖等工具描述需求分析和設(shè)計(jì)結(jié)果。
5.引進(jìn)微課、翻轉(zhuǎn)課堂等新型教學(xué)模式。程序設(shè)計(jì)類課程知識(shí)點(diǎn)分散,具有碎片化的特征,非常適合以“微課”作為輔助教學(xué)手段[3-5],促進(jìn)課上教學(xué)和學(xué)生課下自主學(xué)習(xí)。此外,微課也是翻轉(zhuǎn)式課堂的重要支撐工具[6-8]。為此,需要結(jié)合教學(xué)實(shí)踐,分析將每個(gè)章節(jié)的編程要點(diǎn)“碎片化”的方法;根據(jù)課程教學(xué)的總體要求,確定“微課”內(nèi)容在整個(gè)教學(xué)活動(dòng)中的比重;針對(duì)不同類型的教學(xué)內(nèi)容,以“微視頻”為微課的核心,圍繞知識(shí)點(diǎn)和教學(xué)環(huán)節(jié)來(lái)設(shè)計(jì)制作微課,逐步將微課資源拓展到“微型教學(xué)活動(dòng)”。如C++操作符重載部分,可用矩陣的加減及乘法運(yùn)算為實(shí)例,制作10分鐘的微課,講清作為類成員和友元成員函數(shù)的設(shè)計(jì)方法。再如,在JAVA的JDBC訪問(wèn)技術(shù)中,圍繞“增刪改查”的基本操作,通過(guò)微課拓展下列內(nèi)容:插入記錄時(shí)獲取自動(dòng)增量主鍵的方法、記錄的批處理方法、信息管理系統(tǒng)中邏輯業(yè)務(wù)層與數(shù)據(jù)訪問(wèn)層的設(shè)計(jì)方法。
6.幫助學(xué)生進(jìn)行課程拓展學(xué)習(xí)。由于課時(shí)的限制,教材中只對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)內(nèi)容做了介紹,要深入理解編程的思想和精髓,需要學(xué)生多看參考文獻(xiàn),多做設(shè)計(jì)和開(kāi)發(fā)工作??梢愿鶕?jù)學(xué)生的實(shí)際水平推薦適合的參考資料以拓寬學(xué)生的視野,像《Inside C++ Object Model》之類的經(jīng)典教材介紹了許多C++設(shè)計(jì)和編譯中的難點(diǎn),《Visual C++技術(shù)內(nèi)幕》是非常有影響的C++應(yīng)用開(kāi)發(fā)參考資料,《STL開(kāi)發(fā)指南》則介紹了STL中的各種標(biāo)準(zhǔn)算法,等等,以進(jìn)一步激發(fā)學(xué)生的學(xué)習(xí)興趣,提高編程水平。
7.優(yōu)化課程設(shè)置和教材選用。目前《Java語(yǔ)言》與C++課程銜接不夠緊密,一般而言,在C++之后銜接開(kāi)設(shè)Java語(yǔ)言課程,更有利于掌握J(rèn)ava語(yǔ)言和鞏固C++的學(xué)習(xí)效果,促進(jìn)學(xué)生在完成基本知識(shí)的學(xué)習(xí)之后,通過(guò)自學(xué)熟悉Java的各種開(kāi)發(fā)環(huán)境和開(kāi)發(fā)架構(gòu),不斷提高軟件開(kāi)發(fā)的水平。
此外,目前使用的數(shù)據(jù)結(jié)構(gòu)教材用C語(yǔ)言描述各種算法,而實(shí)際上各種數(shù)據(jù)對(duì)象的抽象數(shù)據(jù)類型(ADT)與類描述是一致的,建議選擇用C++或Java描述的數(shù)據(jù)結(jié)構(gòu)作為教材,這樣與面向?qū)ο蟪绦蛟O(shè)計(jì)課程有比較好的銜接,此外數(shù)據(jù)結(jié)構(gòu)中的各種算法也可以以類庫(kù)的方式用于C++和Java的應(yīng)用程序開(kāi)發(fā)。
三、結(jié)語(yǔ)
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法是學(xué)生必須熟練掌握的內(nèi)容,也是學(xué)習(xí)后續(xù)課程的基礎(chǔ)。本文探討了該類課程在課程設(shè)置、內(nèi)容重點(diǎn)、教學(xué)環(huán)節(jié)設(shè)計(jì)、教學(xué)方法等方面需要注意的幾個(gè)問(wèn)題。為進(jìn)一步提升教學(xué)效果,還需要深入研究新的教學(xué)理念,引入新的教學(xué)方法,以期不斷提高學(xué)生的編程能力和軟件工程開(kāi)發(fā)能力,從而滿足信息化作戰(zhàn)條件下未來(lái)崗位的任職需求。
參考文獻(xiàn):
[1]唐大仕.“遞歸算法”微課教學(xué)設(shè)計(jì)——以“文科計(jì)算機(jī)基礎(chǔ)(下)”為例[J].計(jì)算機(jī)教育,2013,(17):5-7.
[2]解本巨,李曉娜,宮生文.UML與Rational Rose 2003從入門到精通[M].電子工業(yè)出版社,2010:22-28.
[3]吳嬋.關(guān)于微課對(duì)優(yōu)化高校教學(xué)效果的思考[J].高教論壇,2013,(10):17-18.
[4]程嵐,肖貴橋,王英,朱莉.微課教學(xué)設(shè)計(jì)思路探討[J].江西電力職業(yè)技術(shù)學(xué)院學(xué)報(bào),2013,(26):79-81.
[5]胡鐵生.“微課”:區(qū)域教育信息資源發(fā)展的新趨勢(shì)[J].電化教育研究,2011,(10):62-63.
[6]張旸,蒙澤察.“導(dǎo)學(xué)案教學(xué)”與“翻轉(zhuǎn)課堂”的價(jià)值、限度與共生[J].全球教育展望,2013,(7):10-14.
[7]朱宏潔,朱赟.翻轉(zhuǎn)課堂及其有效實(shí)施策略芻議[J].電化教育研究,2013,(8):79-83.
[8]張莉靖,曹殿波.“翻轉(zhuǎn)課堂”教學(xué)模式研究[J].陜西教育(高教),2014,(1-2):91-92.