摘要:將“Java程序設計”作為醫藥類本科學生的第一門計算機課,并嘗試使用生動教學法組織教學約兩年半之后,筆者發現針對Java中有面向對象、繼承、輸入輸出流和多線程等許多新概念的引入,在教師致力于展現編程語言魅力、生動實訓內容、為學生提供自由發揮空間和設計多樣化考試方案的情況下,原本僵死的語法和嚴格的命令變得生動和鮮活起來,從而提高了醫藥學院學生學習計算機程序設計的興趣和主動性,取得了較好的教學效果。本文論述了筆者在不斷改進教學方法、努力提高教學質量以及培養學生計算機應用能力方面所做的一些有益嘗試。
關鍵詞:醫學生;程序設計;Java語言
在今年我國的新醫改政策中,信息技術得到我國醫療主管機構的高度重視,信息化與醫療管理機制、醫療運行機制、投入機制、價格形成機制等并列,信息系統第一次成為支撐醫療體制改革的“四梁八柱”之一。在這種形勢下,讓醫藥專業學生掌握基本編程技能,能夠用高級程序設計語言獨立編制簡單程序,把計算機技術應用到醫藥領域中去,勢必對醫藥行業的創新和深入發展有積極的促進作用。
高等學校醫藥類計算機基礎課程教學指導分委員會在“高等學校醫藥類專業計算機基礎課程教學基本要求”中提出了“2+X”的模式,其中“2”為2門必修課程,“X”為4門選修課程,“計算機程序設計”是2門必修課程之一。我們在多年的教學實踐中體會到,如果不考慮醫藥類專業特點,只是簡單地把計算機專業的程序設計語言從計算機專業搬到醫藥類專業教學中,就不可能取得期望的教學效果。在計算機語言程序教學隨社會需求而不斷演變的教學實踐中,筆者在使用Basic、Fortran、C、FoxPro、
Visual Basic和Java語言進行教學的過程中,在不斷改進教學方法、努力提高教學質量以及培養學生計算機應用能力方面,做了一些有益的嘗試,現簡要報告如下。
1展示編程語言的魅力
傳統的程序設計教學往往習慣循序漸進介紹編程語言的嚴格語法和正確使用,但是在多年對非計算機專業的程序設計教學中,我們發現引導學生思考“為什么語法要這樣表達?”則更能引起學習者的興趣。如果能恰當地選用某些形象的案例教學,更能幫助學生主動去理解基本概念與掌握語法應用,學生編程的綜合能力有明顯提高。下面看一個小例子,如圖1所示。具體內容為:(1)要求編程畫出圖形(圖1(a));(2)可以先畫八條橫線(圖1(b));(3)用八行drawLine語句(圖1(c));(4)也可以用更靈活的語句實現(圖1(d))。
然后要求學習者嘗試為圖2所示的圖形寫程序,因為這三個圖形很容易找到需要“重復”的部分。
作者簡介:周怡(1954-),女,上海人,教授,碩士,研究方向為大學計算機基礎教育、醫學信息分析與決策。
(a)(b)(c) (d)
圖1例題步驟
圖2幾個圖形
在以上案例的啟發和互動教學環境中,學習者對Java的循環語句設計者產生欽佩,有個學生說:“FOR語句不就是表明,要在怎樣的條件下重復多少次嘛!”。課堂就明顯地活躍起來了,固定的語法和嚴格的命令也變得生動和鮮活起來,這個例子的使用,使學習者主動去研究不同的Java循環語法,分析循環起始和終止條件,并且對循環這一部分的各個知識點掌握地更加扎實。
2實訓內容要為學習者留有“胡思亂想”的
空間
由于計劃學時有限,臨摹式的學習,往往造成一種在進行程序設計的時候,照葫蘆畫瓢的現象,而不是從整體上掌握科學的程序設計方法。許多學生在學習程序設計時,經常為了急于解決某問題,將若干語句堆積在一起,編制一個程序,雖然也能夠得出結果,但僅僅是正確而已,對于復雜的問題,則難以應付。
Java語言作為醫藥大學生的基礎課程開設,由于其純粹的面向對象特征,以及繼承、輸入輸出流和多線程等新概念的引入,也隨之給教學過程帶來了新的挑戰,合理選擇內容進行Java編程教學就顯得十分重要[1]。我們在傳統的數據類型、控制結構和常用算法的基礎上,將輸入輸出和文件合并成輸入輸出流,增加面向對象程序設計所特有的抽象、繼承、重載和多態等知識點,并對Java特有的Applet和圖形用戶
界面(GUI),以及Java的多線程機制等內容作為108學時計算機基礎編程的支撐性教學內容。在歷經兩年半時間,分別對藥學、預防醫學和臨床醫學等各專業的Java程序設計教學試驗之后,我們認為只要方法得當,實訓內容能緊密配合教學意圖并激發學生的創造激情,教學就能取得很好的“啟迪智慧為主,傳遞知識為輔”的目的,同時由于學生主動性的加強,學生對課程的相關知識點也掌握的比較好。
來看一個例子,目前多核計算機的普及,讓學生將編程的思維方式提高到一個新的層面,了解程序的并發機制就顯得十分重要了。我們將多線程作為Java語言教學內容的終結部分,多線程教學開始要引導學生思考大量現實生活中的實例。例如,在1把鐵鍬1個桶的情況下10個人種10棵樹的分工和種樹澆水流程,以及5把鐵鍬5個桶的情況下10個人種10棵樹的分工和種樹澆水流程;又如,一家醫院管理者面對有1個手術室、6個外科醫生、需要處理3臺手術的流程,和這家醫院有3個手術室、6個外科醫生、需要處理3臺手術的流程等。現實中的例子很容易讓學生理解程序“并發”的含義,再在理解的基礎上使用Java提供的現成的Thread類通過繼承(extends)構造自己的特定線程,例如“SimpleThread”
public class SimpleThread extends Thread
{
public SimpleThread(int i)
…
(構造自己的特定線程)
}
通過main入口,用new關鍵字產生多個線程,這些線程就可以在Java虛擬機的幫助下自行獲取CPU的服務時間,實現并發運行。
public static void main( String args[ ] )
{
new SimpleThread (1).start( );
new SimpleThread (2).start( );
…
}
在概念清晰,語法實現明確的情況下,要求學生在理論課教學的互動環節中在黑板上寫出一些可以“并行”和“榨干CPU的能力!”問題,增加到原有的實訓內容中去,這樣既保證了多數同學的學習效果,也為優秀的同學提供了“胡思亂想”的空間,還有能得以實現的提高空間。實踐的結果告訴我們事實上大部分的同學都有“胡思亂想”的沖動,只是依情況的不同,會在不同的教學章節中實現創新性編程,這一方法極大地提高了學生的Java編程興趣。
3以多樣化的考試方案去適應各種學生
考試是教學的重要環節,雖然各個地方都有非計算機專業程序的等級考試,但是我們沒有將教學目標定在應考上。我們認為判斷學生的編程水平和能力就是看學生設計的程序正確與否,能不能解決一些簡單的實際問題[2]。程序設計語言屬于應用型課程,編程能力的考核要在電腦上實際進行,只有這樣才能更好幫助學生提高程序設計水平。
考慮到學生多、教學資源有限等制約因素,我們采取了“考試方式可選”的課程考試模式。目前我們設置了3種課程考試的方法:
(1) 學生在課程教學學期結束之前,可以選擇參加全國各范圍組織的非計算機專業Java程序設計二
級考試,以國家或省級考試部門給出的成績為本課程成績(這一部分學生約占15~20%)。
(2) 學生參加本校組織的課程期末筆試和機試,其形式和內容與全國以及省級組織的非計算機專業Java程序設計二級考試相近,時間120分鐘,但考試內容學生相對容易把握(這一部分學生約占60~70%)。
(3) 純編程題考試,當場抽題,上機編程通過,時間120分鐘(這一部分學生約占10~20%)。這項考試給那些勇于挑戰自我的學生一個很好的表現機會。這樣的考試就像是編程能力大演練,經常在考完試后學生還意猶未盡,討論激烈。我校歷年來在國家和省市計算機大賽、程序設計比賽、電子設計大賽和“挑戰杯”中獲獎的學生選手大多出自這里(包括2008年全國文科計算機大賽一等獎獲得者),但是考試工作投入師資力量較多。
4結語
醫藥學生編程能力的培養是一個漫長的過程,需要教師的長期引導,需要后續“2+X”中4門“X”選修課程的推進。教學過程中教師應通過組織、設計和不斷開拓新的教學活動,使學生的編程思路不斷地興奮和活躍起來,鼓勵學生各抒己見,并通過實際操作進行學習和推陳出新。在可能的情況下,后面章節的實驗內容應盡可能利用到前面實驗中的成功代碼,增強學生的成就感,促進學生編程思想興奮和編程技巧的提高,使程序設計課程“動”起來。“動”起來的Java程序設計有助于推動學生學習的興趣和積極性。
參考文獻:
[1] 李建國. 高校非計算機專業程序設計語言類課程教學探討[J]. 中國成人教育,2008(4):173-174.
[2] 宋平,蔣蘭玲,宋曉強. 關于Java作為大學基礎課程開設的探討[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
(編輯:姚彥如)