韓松
計算機發(fā)展到今天,硬件技術迅速發(fā)展,多媒體、網(wǎng)絡和通信突飛猛進。計算機編程語言也在不斷地發(fā)展:從機器語言到匯編語言以及高級語言,甚至可能發(fā)展到智能開發(fā)語言。高校在培養(yǎng)學生編程能力及編程思想上也不斷地發(fā)展和提高,通過課程設計等實戰(zhàn)型培訓學生的團隊合作能力、解決問題能力以及創(chuàng)新能力。但學生在學習過程常會因多種聯(lián)系在一起的知識點和解決方法分散學習而浪費時間,或因缺少項目實戰(zhàn),不能徹底學習到精髓。因而本文著重研究計算機語言類課程教學內(nèi)容整合和項目教學法應用的可行性及帶來的優(yōu)勢。
C、C++和 Java 等計算機語言(也稱宿主語言)課程作為計算機專業(yè)重要的基礎課,在計算機專業(yè)本科教學和軟件開發(fā)中起著重要的基礎作用,對學生用計算機解決實際問題的思維能力訓練也是非常重要的。而學生掌握計算機語言類課程的程度將直接影響到計算機在其專業(yè)領域中的應用,如何提高學生的程序設計能力和軟件開發(fā)思維將變得相當重要。
一、計算機語言類課程的教學理念
計算機語言類課程所涉及的知識難度相對較高,而且其編程內(nèi)容、編程思想滲透到本專業(yè)的其他課程中。如果沒有學好計算機語言中編程方法、算法邏輯、設計思想、思維方式,就等于沒有學好這門課程,甚至影響其他專業(yè)課程的學習效果。加之計算機相關專業(yè)層次多,如本科、??啤⒏呗毢脱芯可?,同一層次的生源質(zhì)量又參差不齊,在此情況下,教師應該充分了解學生的實際情況,最大限度地調(diào)動學生學習的主觀能動性,使學生能主動配合老師的教學,實現(xiàn)該課程的教學目標。例如,來自偏遠地區(qū)的學生,在中學階段接觸計算機較少,水平相對低一些;相反,城市學生的計算機水平相對較高。針對這種情況,要利用一定的時間和方法使水平較差的同學及時補上相關知識,不至于聽不懂內(nèi)容而失去對計算機語言課程的興趣。
毋庸諱言,學生有時反映計算機語言聽不懂、不知學了什么、難學等,固然有學生本身的原因,以及教學目標和課程設置的偏差等因素,但教學內(nèi)容安排不合理應該是主要問題。在計算機語言的講解初期,如果不能抓住學生的學習心理,一開始就給學生灌輸大量的、很難聽懂的知識,就會使學生感覺很難而無法聽進去,以至出現(xiàn)學生對后續(xù)內(nèi)容的講解都無法聽懂的現(xiàn)象。如在 C或C++教學中,基本語法未充分理解,就安排難度較大的編程練習;數(shù)組和指針的概念還未理解,就快速講解指針數(shù)組并配備較難的例題和習題;面向過程編程基礎未打好,就在面向過程的基礎上講解面向?qū)ο蟮木幊痰取?/p>
綜上所述,在計算機語言類課程的教學工作中,應該具有良好的教學理念,要發(fā)揮教師專業(yè)知識和教學水平;充分調(diào)動學生的學習熱情,發(fā)揮其主觀能動性;要合理安排教學內(nèi)容,以適應教學的需要。
二、計算機語言類課程傳統(tǒng)教學模式中存在的弊端
(一)教學課時緊張,實踐環(huán)節(jié)欠缺
首先,計算機語言類課程中的實踐課時較少。目前我國高專教育學制是 3 年,在教學中教師為了完成教學任務,安排基礎理論知識占用了大量的課時,從而導致實踐課時不足,這樣學生動手能力、實踐能力的培養(yǎng)就得不到保證,也就缺失了高專學生高等技術應用型人才的特色。其次,與本科學生相比,高專學生的基礎知識相對較差,使得他們吸收知識的速度較慢,學習有一定的難度。
(二)學生學習缺乏動力和興趣
興趣是學習的動力,有些學生認為學習語言類課程太枯燥而且用處不大,不如學習多媒體、應用類的課程有趣; 另外從課程內(nèi)容安排上說,一般語言類課程安排都是前半部分講授基礎知識,占用較長的時間,內(nèi)容枯燥無味,不像應用類的課程能讓學生馬上看到效果,因此就會大大降低學生學習的積極性,使他們產(chǎn)生厭倦情緒。而到了后半部分學習編程方法的時候,會出現(xiàn)一些抽象概念,這時往往需要較強的邏輯思維能力和一定的數(shù)學、英語基礎,學生就會覺得無從下手,對語言類課程產(chǎn)生畏懼心理,就知難而退了。
(三)學生缺乏學習目標
部分學生根本就沒有弄清楚學習這類課程是干什么用的,造成學習的時候找不到重點是什么,中心思想是什么,不知從何下手. 還有部分學生在學習過程中沒有經(jīng)歷過開發(fā)項目、建立項目的過程,甚至有的同學沒有自己獨立編過程序,只是將現(xiàn)成的程序錄入計算機調(diào)試,忽略了編寫的過程。這樣學生通常只是為了考試、考級而學習,忘記了最終獨立開發(fā)項目的目的。
(四)教學方法缺乏創(chuàng)新,考核方式簡單
高專計算機語言類課程一般采用課堂講授加上機實驗相結合的教學形式。理論課上,老師通常將一些程序模式進行固化,讓學生記憶、套用,進行“填鴨式”教學,學生缺少主動思維,特別是編程題沒有自己的思路,無法獨立完成。上機實驗時學生為了完成任務,僅對課本上現(xiàn)有的例題進行編輯調(diào)試。這樣學生根本不能掌握如何分析問題、如何建立編程思維。再加上筆試這樣單一的考核方式也使老師和學生都忽視了實踐課的環(huán)節(jié),本末倒置。
三、課程整合及新型教學法應用提高教學質(zhì)量的作用
通過整合計算機語言類課程教學內(nèi)容和新型教學法的應用,學生能夠充分體會到多種語言在表達同一個算法思想及解決問題方法的異同點以及在不同環(huán)境下的多種應用(如:多種語言的混合編程等),進而找到最有效解決問題的方法。 分層次和專業(yè)需求地學習計算機編程語言,通過分初、中、高以及實戰(zhàn)型等不同層次培養(yǎng)學生的編程能力,同時也能減少學生在學習同一個知識點上浪費時間和精力。 應用項目教學法培養(yǎng)學生實戰(zhàn)工程項目的各種能力,包括團隊協(xié)作、適合工作角色的工作能力等。 同時也要求教師教學思想不斷進行創(chuàng)新、發(fā)展。 通過徹底研究一個最典型的例題,從數(shù)據(jù)結構、語法、算法、優(yōu)化、規(guī)范化編寫代碼等不同方面和角度培養(yǎng)學生編程能力和編程思想,同時有效節(jié)約學生和教師為熟悉不同例題所花費的時間和精力, 有利于學生從不同方面和角度學習體會計算機編程語言,從而更快更準更有效地定位學習興趣和計算機編程語言選擇,化被動學習為主動學習,從而達到高效率地學習。
(一)計算機語言類課程教學內(nèi)容整合的可行性和方法
在計算機語言類課程教學過程中,圍繞教學目標提出項目教學,圍繞項目展開教學。以任務為驅(qū)動,師生雙方邊教、邊學、邊做來完成某個教學目標和教學任務,融理論教學、實踐教學、生產(chǎn)、技術服務于一體,充分發(fā)揮師生雙方的主動性和互動性;開展多種教學方式,如互聯(lián)網(wǎng)教學、手機 Wap 網(wǎng)絡教學,以及多種自由化教學模式,盡可能發(fā)揮師生最大能動性,使得師生同時進步,使得程序設計的學習過程成為學生的興趣,而不再單純地作為一門課程。將計算機編程語言整合教學,通過徹底研究一個最典型的例題在不同編程語言中的應用,從而提升學生從不同角度分析、認識、轉換、解決問題的能力。項目實戰(zhàn)教學培養(yǎng)大學生自主創(chuàng)新、創(chuàng)造的獨立能力,從實戰(zhàn)中學習體會編程思想和團隊合作能力,充分發(fā)揮個人在團隊中的能動性和創(chuàng)造性。
在計算機編程語言類課程中,很多內(nèi)容是十分相似的,可以整合到一門課程里來講授,這樣可以節(jié)省出更多的時間來給學生講授新技術,新方法。例如,在 C 語言、C++語言、JAVA 語言中,有些內(nèi)容是類似的,在 C 語言、C++語言和 JAVA 語言中的數(shù)據(jù)類型,表達式、運算符、順序結構、選擇結構、循環(huán)結構、數(shù)組和函數(shù)等非常類似。這樣一來,我們在教學過程中,可以只在一門課程中將類似知識點講透徹,其他課程就有更多的時間去講解其他技術,不但節(jié)約了時間,而且也擴展了學生的知識面。
程序設計語言類課程的學習是為了解決實際應用,而并非這類語言的本身。因此程序設計語言類課程整合教學,就是分層次分專業(yè)進行計算機編程語言的學習,通過典型課程揭示各種計算機語言課程之間的相關性和延續(xù)性,體現(xiàn)程序設計語言之間的共性和內(nèi)在聯(lián)系,揭示各種計算機語言的共性本質(zhì),進而找到解決問題的最有效方法,達到能夠在運用其他語言時觸類旁通,進而提升從不同角度認識、分析、轉換、解決問題的能力。
程序設計語言類課程的整合教學,可以不斷加強學生系統(tǒng)地掌握程序設計語言類課程的核心能力,也有助于培養(yǎng)學生適應就業(yè)、提高競爭和自主創(chuàng)業(yè)的能力。這種探索和實踐對于其他專業(yè)或課程的教學改革也將起到一定的借鑒作用。
(二)新型教學法的運用
在計算機語言教學過程中,不僅要學習語言的語法和編譯器的相關知識,更重要的是要學習程序設計的思想和算法,培養(yǎng)編程思維。在各種教學法中尤以問題為主的教學法和強調(diào)實踐活動的教學法見長,它們很適合計算機語言類課程的教學。
1.以問題為主的教學法
創(chuàng)新的動力在于不斷提問。問題是學生學習的驅(qū)動力,沒有問題便沒有深入。教學的目的就是激發(fā)和培養(yǎng)學生的問題意識。所提“問題”,也是以教學中相關的一些問題為主。這樣把學習知識的過程化解為提出問題、分析問題和解決問題的過程,促進學生創(chuàng)新精神和創(chuàng)新能力的發(fā)展。這一類教學活動的實際教學中以啟發(fā)式教學居多。如果在教學中很好地運用啟發(fā)式教學,就可以調(diào)動學生學習的積極性和主動性,又能啟發(fā)學生的思維。例如,在 C 的 main 函數(shù)指針數(shù)組參數(shù)的學習中,許多學生無法理解基于指針數(shù)組參數(shù)方式交換字符串的例子。此時,教師應解釋兩個概念:argv 內(nèi)存區(qū)和*argv 內(nèi)存區(qū),也就是說這是兩個不同的內(nèi)存區(qū),根據(jù)數(shù)組表示和指針表示之間的法則,*argv 也就是 argv[0](這是編譯器的逆行為),對*(argv+i)的操作就是對指針數(shù)組元素(下標 i)的操作,而指針數(shù)組元素存放的是那些常量字符串的首地址。因而使用選擇法交換指針數(shù)組的值也就是交換指向那些“逆序”的字符串的首地址。在此基礎上學生就可以理解使用指針數(shù)組傳遞參數(shù)的過程。進一步,我們可以在“電子黑板”上畫出 argv 和*argv 的內(nèi)存結構圖。
2.強調(diào)實踐活動的教學法
這一類教學活動以探究式教學模式為主?!叭蝿镇?qū)動式”是實施探究式教學模式的一種教學方法,是一種新型的、以學生自主學習、教師加以引導的教學方法。它打破了傳統(tǒng)教學方法中注重學習的循序漸進和積累的循規(guī)蹈矩,不再按照教學內(nèi)容從易到難的順序,而是以完成一個“任務”作為驅(qū)動來進行教學,完成教學任務。在完成“任務”的過程中,又培養(yǎng)了學生的自學能力、創(chuàng)新精神和合作意識。
3. 輔助教學手段的使用
(1) 充分利用多媒體教學手段?;诙嗝襟w技術的教學能夠以豐富的信息展示在學生面前,使得教學內(nèi)容形象、生動、更為直觀,教學秩序更加規(guī)范。
(2) 以網(wǎng)絡技術為支撐的網(wǎng)絡學習環(huán)境。以網(wǎng)絡環(huán)境為依托的計算機實驗平臺為學生提供了豐富的教學資源。通過網(wǎng)絡教學平臺,可以下載網(wǎng)絡課件、提交電子作業(yè),進行在線答疑和自測練習;可以展示方式多樣的信息,有利于學生對信息的加工和處理。教師還可以以此環(huán)境為依托進行網(wǎng)絡教學和遠程教學。
四、結語
通過實踐表明,整合計算機語言類課程教學內(nèi)容及多種新型項目教學法,更能激發(fā)學生主動學習,培養(yǎng)學生發(fā)現(xiàn)問題、分析問題、解決問題的能力,進而達到創(chuàng)新和自我總結能力,有助于培養(yǎng)學生適應就業(yè)要求,提高競爭能力和自主創(chuàng)業(yè)的能力。