摘要:將“Java程序設(shè)計(jì)”作為醫(yī)藥類本科學(xué)生的第一門計(jì)算機(jī)課,并嘗試使用生動(dòng)教學(xué)法組織教學(xué)約兩年半之后,筆者發(fā)現(xiàn)針對(duì)Java中有面向?qū)ο?、繼承、輸入輸出流和多線程等許多新概念的引入,在教師致力于展現(xiàn)編程語(yǔ)言魅力、生動(dòng)實(shí)訓(xùn)內(nèi)容、為學(xué)生提供自由發(fā)揮空間和設(shè)計(jì)多樣化考試方案的情況下,原本僵死的語(yǔ)法和嚴(yán)格的命令變得生動(dòng)和鮮活起來(lái),從而提高了醫(yī)藥學(xué)院學(xué)生學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)的興趣和主動(dòng)性,取得了較好的教學(xué)效果。本文論述了筆者在不斷改進(jìn)教學(xué)方法、努力提高教學(xué)質(zhì)量以及培養(yǎng)學(xué)生計(jì)算機(jī)應(yīng)用能力方面所做的一些有益嘗試。
關(guān)鍵詞:醫(yī)學(xué)生;程序設(shè)計(jì);Java語(yǔ)言
在今年我國(guó)的新醫(yī)改政策中,信息技術(shù)得到我國(guó)醫(yī)療主管機(jī)構(gòu)的高度重視,信息化與醫(yī)療管理機(jī)制、醫(yī)療運(yùn)行機(jī)制、投入機(jī)制、價(jià)格形成機(jī)制等并列,信息系統(tǒng)第一次成為支撐醫(yī)療體制改革的“四梁八柱”之一。在這種形勢(shì)下,讓醫(yī)藥專業(yè)學(xué)生掌握基本編程技能,能夠用高級(jí)程序設(shè)計(jì)語(yǔ)言獨(dú)立編制簡(jiǎn)單程序,把計(jì)算機(jī)技術(shù)應(yīng)用到醫(yī)藥領(lǐng)域中去,勢(shì)必對(duì)醫(yī)藥行業(yè)的創(chuàng)新和深入發(fā)展有積極的促進(jìn)作用。
高等學(xué)校醫(yī)藥類計(jì)算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)分委員會(huì)在“高等學(xué)校醫(yī)藥類專業(yè)計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求”中提出了“2+X”的模式,其中“2”為2門必修課程,“X”為4門選修課程,“計(jì)算機(jī)程序設(shè)計(jì)”是2門必修課程之一。我們?cè)诙嗄甑慕虒W(xué)實(shí)踐中體會(huì)到,如果不考慮醫(yī)藥類專業(yè)特點(diǎn),只是簡(jiǎn)單地把計(jì)算機(jī)專業(yè)的程序設(shè)計(jì)語(yǔ)言從計(jì)算機(jī)專業(yè)搬到醫(yī)藥類專業(yè)教學(xué)中,就不可能取得期望的教學(xué)效果。在計(jì)算機(jī)語(yǔ)言程序教學(xué)隨社會(huì)需求而不斷演變的教學(xué)實(shí)踐中,筆者在使用Basic、Fortran、C、FoxPro、
Visual Basic和Java語(yǔ)言進(jìn)行教學(xué)的過程中,在不斷改進(jìn)教學(xué)方法、努力提高教學(xué)質(zhì)量以及培養(yǎng)學(xué)生計(jì)算機(jī)應(yīng)用能力方面,做了一些有益的嘗試,現(xiàn)簡(jiǎn)要報(bào)告如下。
1展示編程語(yǔ)言的魅力
傳統(tǒng)的程序設(shè)計(jì)教學(xué)往往習(xí)慣循序漸進(jìn)介紹編程語(yǔ)言的嚴(yán)格語(yǔ)法和正確使用,但是在多年對(duì)非計(jì)算機(jī)專業(yè)的程序設(shè)計(jì)教學(xué)中,我們發(fā)現(xiàn)引導(dǎo)學(xué)生思考“為什么語(yǔ)法要這樣表達(dá)?”則更能引起學(xué)習(xí)者的興趣。如果能恰當(dāng)?shù)剡x用某些形象的案例教學(xué),更能幫助學(xué)生主動(dòng)去理解基本概念與掌握語(yǔ)法應(yīng)用,學(xué)生編程的綜合能力有明顯提高。下面看一個(gè)小例子,如圖1所示。具體內(nèi)容為:(1)要求編程畫出圖形(圖1(a));(2)可以先畫八條橫線(圖1(b));(3)用八行drawLine語(yǔ)句(圖1(c));(4)也可以用更靈活的語(yǔ)句實(shí)現(xiàn)(圖1(d))。
然后要求學(xué)習(xí)者嘗試為圖2所示的圖形寫程序,因?yàn)檫@三個(gè)圖形很容易找到需要“重復(fù)”的部分。
作者簡(jiǎn)介:周怡(1954-),女,上海人,教授,碩士,研究方向?yàn)榇髮W(xué)計(jì)算機(jī)基礎(chǔ)教育、醫(yī)學(xué)信息分析與決策。
(a)(b)(c) (d)
圖1例題步驟
圖2幾個(gè)圖形
在以上案例的啟發(fā)和互動(dòng)教學(xué)環(huán)境中,學(xué)習(xí)者對(duì)Java的循環(huán)語(yǔ)句設(shè)計(jì)者產(chǎn)生欽佩,有個(gè)學(xué)生說(shuō):“FOR語(yǔ)句不就是表明,要在怎樣的條件下重復(fù)多少次嘛!”。課堂就明顯地活躍起來(lái)了,固定的語(yǔ)法和嚴(yán)格的命令也變得生動(dòng)和鮮活起來(lái),這個(gè)例子的使用,使學(xué)習(xí)者主動(dòng)去研究不同的Java循環(huán)語(yǔ)法,分析循環(huán)起始和終止條件,并且對(duì)循環(huán)這一部分的各個(gè)知識(shí)點(diǎn)掌握地更加扎實(shí)。
2實(shí)訓(xùn)內(nèi)容要為學(xué)習(xí)者留有“胡思亂想”的
空間
由于計(jì)劃學(xué)時(shí)有限,臨摹式的學(xué)習(xí),往往造成一種在進(jìn)行程序設(shè)計(jì)的時(shí)候,照葫蘆畫瓢的現(xiàn)象,而不是從整體上掌握科學(xué)的程序設(shè)計(jì)方法。許多學(xué)生在學(xué)習(xí)程序設(shè)計(jì)時(shí),經(jīng)常為了急于解決某問題,將若干語(yǔ)句堆積在一起,編制一個(gè)程序,雖然也能夠得出結(jié)果,但僅僅是正確而已,對(duì)于復(fù)雜的問題,則難以應(yīng)付。
Java語(yǔ)言作為醫(yī)藥大學(xué)生的基礎(chǔ)課程開設(shè),由于其純粹的面向?qū)ο筇卣?,以及繼承、輸入輸出流和多線程等新概念的引入,也隨之給教學(xué)過程帶來(lái)了新的挑戰(zhàn),合理選擇內(nèi)容進(jìn)行Java編程教學(xué)就顯得十分重要[1]。我們?cè)趥鹘y(tǒng)的數(shù)據(jù)類型、控制結(jié)構(gòu)和常用算法的基礎(chǔ)上,將輸入輸出和文件合并成輸入輸出流,增加面向?qū)ο蟪绦蛟O(shè)計(jì)所特有的抽象、繼承、重載和多態(tài)等知識(shí)點(diǎn),并對(duì)Java特有的Applet和圖形用戶
界面(GUI),以及Java的多線程機(jī)制等內(nèi)容作為108學(xué)時(shí)計(jì)算機(jī)基礎(chǔ)編程的支撐性教學(xué)內(nèi)容。在歷經(jīng)兩年半時(shí)間,分別對(duì)藥學(xué)、預(yù)防醫(yī)學(xué)和臨床醫(yī)學(xué)等各專業(yè)的Java程序設(shè)計(jì)教學(xué)試驗(yàn)之后,我們認(rèn)為只要方法得當(dāng),實(shí)訓(xùn)內(nèi)容能緊密配合教學(xué)意圖并激發(fā)學(xué)生的創(chuàng)造激情,教學(xué)就能取得很好的“啟迪智慧為主,傳遞知識(shí)為輔”的目的,同時(shí)由于學(xué)生主動(dòng)性的加強(qiáng),學(xué)生對(duì)課程的相關(guān)知識(shí)點(diǎn)也掌握的比較好。
來(lái)看一個(gè)例子,目前多核計(jì)算機(jī)的普及,讓學(xué)生將編程的思維方式提高到一個(gè)新的層面,了解程序的并發(fā)機(jī)制就顯得十分重要了。我們將多線程作為Java語(yǔ)言教學(xué)內(nèi)容的終結(jié)部分,多線程教學(xué)開始要引導(dǎo)學(xué)生思考大量現(xiàn)實(shí)生活中的實(shí)例。例如,在1把鐵鍬1個(gè)桶的情況下10個(gè)人種10棵樹的分工和種樹澆水流程,以及5把鐵鍬5個(gè)桶的情況下10個(gè)人種10棵樹的分工和種樹澆水流程;又如,一家醫(yī)院管理者面對(duì)有1個(gè)手術(shù)室、6個(gè)外科醫(yī)生、需要處理3臺(tái)手術(shù)的流程,和這家醫(yī)院有3個(gè)手術(shù)室、6個(gè)外科醫(yī)生、需要處理3臺(tái)手術(shù)的流程等?,F(xiàn)實(shí)中的例子很容易讓學(xué)生理解程序“并發(fā)”的含義,再在理解的基礎(chǔ)上使用Java提供的現(xiàn)成的Thread類通過繼承(extends)構(gòu)造自己的特定線程,例如“SimpleThread”
public class SimpleThread extends Thread
{
public SimpleThread(int i)
…
(構(gòu)造自己的特定線程)
}
通過main入口,用new關(guān)鍵字產(chǎn)生多個(gè)線程,這些線程就可以在Java虛擬機(jī)的幫助下自行獲取CPU的服務(wù)時(shí)間,實(shí)現(xiàn)并發(fā)運(yùn)行。
public static void main( String args[ ] )
{
new SimpleThread (1).start( );
new SimpleThread (2).start( );
…
}
在概念清晰,語(yǔ)法實(shí)現(xiàn)明確的情況下,要求學(xué)生在理論課教學(xué)的互動(dòng)環(huán)節(jié)中在黑板上寫出一些可以“并行”和“榨干CPU的能力!”問題,增加到原有的實(shí)訓(xùn)內(nèi)容中去,這樣既保證了多數(shù)同學(xué)的學(xué)習(xí)效果,也為優(yōu)秀的同學(xué)提供了“胡思亂想”的空間,還有能得以實(shí)現(xiàn)的提高空間。實(shí)踐的結(jié)果告訴我們事實(shí)上大部分的同學(xué)都有“胡思亂想”的沖動(dòng),只是依情況的不同,會(huì)在不同的教學(xué)章節(jié)中實(shí)現(xiàn)創(chuàng)新性編程,這一方法極大地提高了學(xué)生的Java編程興趣。
3以多樣化的考試方案去適應(yīng)各種學(xué)生
考試是教學(xué)的重要環(huán)節(jié),雖然各個(gè)地方都有非計(jì)算機(jī)專業(yè)程序的等級(jí)考試,但是我們沒有將教學(xué)目標(biāo)定在應(yīng)考上。我們認(rèn)為判斷學(xué)生的編程水平和能力就是看學(xué)生設(shè)計(jì)的程序正確與否,能不能解決一些簡(jiǎn)單的實(shí)際問題[2]。程序設(shè)計(jì)語(yǔ)言屬于應(yīng)用型課程,編程能力的考核要在電腦上實(shí)際進(jìn)行,只有這樣才能更好幫助學(xué)生提高程序設(shè)計(jì)水平。
考慮到學(xué)生多、教學(xué)資源有限等制約因素,我們采取了“考試方式可選”的課程考試模式。目前我們?cè)O(shè)置了3種課程考試的方法:
(1) 學(xué)生在課程教學(xué)學(xué)期結(jié)束之前,可以選擇參加全國(guó)各范圍組織的非計(jì)算機(jī)專業(yè)Java程序設(shè)計(jì)二
級(jí)考試,以國(guó)家或省級(jí)考試部門給出的成績(jī)?yōu)楸菊n程成績(jī)(這一部分學(xué)生約占15~20%)。
(2) 學(xué)生參加本校組織的課程期末筆試和機(jī)試,其形式和內(nèi)容與全國(guó)以及省級(jí)組織的非計(jì)算機(jī)專業(yè)Java程序設(shè)計(jì)二級(jí)考試相近,時(shí)間120分鐘,但考試內(nèi)容學(xué)生相對(duì)容易把握(這一部分學(xué)生約占60~70%)。
(3) 純編程題考試,當(dāng)場(chǎng)抽題,上機(jī)編程通過,時(shí)間120分鐘(這一部分學(xué)生約占10~20%)。這項(xiàng)考試給那些勇于挑戰(zhàn)自我的學(xué)生一個(gè)很好的表現(xiàn)機(jī)會(huì)。這樣的考試就像是編程能力大演練,經(jīng)常在考完試后學(xué)生還意猶未盡,討論激烈。我校歷年來(lái)在國(guó)家和省市計(jì)算機(jī)大賽、程序設(shè)計(jì)比賽、電子設(shè)計(jì)大賽和“挑戰(zhàn)杯”中獲獎(jiǎng)的學(xué)生選手大多出自這里(包括2008年全國(guó)文科計(jì)算機(jī)大賽一等獎(jiǎng)獲得者),但是考試工作投入師資力量較多。
4結(jié)語(yǔ)
醫(yī)藥學(xué)生編程能力的培養(yǎng)是一個(gè)漫長(zhǎng)的過程,需要教師的長(zhǎng)期引導(dǎo),需要后續(xù)“2+X”中4門“X”選修課程的推進(jìn)。教學(xué)過程中教師應(yīng)通過組織、設(shè)計(jì)和不斷開拓新的教學(xué)活動(dòng),使學(xué)生的編程思路不斷地興奮和活躍起來(lái),鼓勵(lì)學(xué)生各抒己見,并通過實(shí)際操作進(jìn)行學(xué)習(xí)和推陳出新。在可能的情況下,后面章節(jié)的實(shí)驗(yàn)內(nèi)容應(yīng)盡可能利用到前面實(shí)驗(yàn)中的成功代碼,增強(qiáng)學(xué)生的成就感,促進(jìn)學(xué)生編程思想興奮和編程技巧的提高,使程序設(shè)計(jì)課程“動(dòng)”起來(lái)?!皠?dòng)”起來(lái)的Java程序設(shè)計(jì)有助于推動(dòng)學(xué)生學(xué)習(xí)的興趣和積極性。
參考文獻(xiàn):
[1] 李建國(guó). 高校非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)語(yǔ)言類課程教學(xué)探討[J]. 中國(guó)成人教育,2008(4):173-174.
[2] 宋平,蔣蘭玲,宋曉強(qiáng). 關(guān)于Java作為大學(xué)基礎(chǔ)課程開設(shè)的探討[J]. 信息教育,2007(2):101-104.
Let the Medical Students’ Computer Programming Course Animate
ZHOU Yi, CAI Yong-ming, ZHENG Xian-rong, LIU Jun, GUO Sui-xun
(Department of Medical Information Engineering, Guangdong Pharmaceutical University, Guangzhou 510006, China)
Abstract: After two and half years, and along with the reform of teaching Java programming, there are some new contents coming such as object-oriented Java, inheritance, I/O streams and multi-threading, etc. we try to show the programming language in the charm, to let students take advantage of the potential, and to use the large-scale exercise practices as test. The result is glad, that so rigid syntax and strict orders become a vivid and fresh. The reform enhancing the medical students to learn computer programming interest and initiative, this reform achieved better teaching results.In this paper, the author continued to improve their teaching methods, and strive to improve the quality of teaching and the development of computer application ability of students made some useful attempts.
Key words: medical students; programming; Java language
(編輯:姚彥如)