摘要:選用Vc++作為開發工具,以項目為中心進行教學,通過工程訓練可以提高大學計算機專業本科生解決實際問題的能力。文章從提高學習效率的課程教學和培養創新能力的研究性學習兩個方面進行分析。實踐證明,工程教學能夠激發學生的編程興趣,也能提高學生自主學習的能力,使學生較快進入工作狀態,增加就業籌碼。
關鍵詞:計算機;vc++;工程訓練;就業
0 引言
就業問題關系到大學生的切身利益,關系到社會和高校的穩定,受到社會各方面的普遍關注。近年來,高校計算機專業初次就業率連年下滑,就業崗位競爭日趨激烈。在這種情況下,如何提高計算機專業本科大學生解決實際問題的能力,成為一個重要的研究課題。我們選用微軟公司推出的主流開發工具Vc++作為編程工具,通過工程訓練提供學生一個真實的實踐練習環境,培養他們的編程思想和感覺。教學實踐表明,它能夠激發學生的編程興趣,也能提高自主學習的能力。使學生較快進入工作狀態。
1 目前計算機本科生培養存在的問題
長期以來,我國高校的本科教育在一定程度上是偏重理論,輕視工程意識培養和工程實踐訓練。這除了教學計劃和課程設置上的原因外,還有以下的原因:
(1)教師缺乏實際的工程實踐經驗
目前高校師資主要來源于剛出校門的碩士、博士,“從校門到校門”的教師培養模式容易導致教師缺乏實際的工程實踐經驗。即使在研究生階段,作了一些導師的項目,其深度和廣度是很難和大型IT企業的工作經歷相提并論的。對工程實踐的感性認識不足,講授課程容易空泛,學生不能徹底理解和掌握知識。由于缺乏“實戰性”,培養出來的學生難以被企業認可。
(2)學生忽視工程實踐能力
因為目前考研和本科教育中對學生評價的主要指標是課程成績,所以學生往往只注重課程學習,特別是考研課程的學習,輕視工程意識培養和工程實踐訓練。現在大部分企業需要熟練的編程人員,本科畢業生缺乏實際動手能力,將在求職中步履維艱。如果工作以后,沒有受到系統訓練或者不注重分析總結,即使工作了二、三年,還是不能熟練地使用開發工具,獨立地解決問題。
(3)畢業設計功能有限
對學生實際工程能力的培養,主要是由畢業設計完成的。學生在畢業設計中受到了一定程度的工程實踐訓練,但是存在以下的不足。①題目單一。由于畢業設計要求學生獨立完成,最多是二、三個同學協作完成一個題目。這樣導致選題受到限制,題目往往局限在小型數據庫系統和缺乏技術含量的小型軟件。②缺乏系統性訓練。由于題目單一,學生通過教師的指導和查找相關資料,可以知道具體的操作步驟,但是不知道為什么要這樣作。學生沒有受到系統的訓練,缺乏編程能力,即使遇到類似的題目,還是不能獨立解決,更不用說解決復雜的實際問題。
2 提高學習效率的課程教學研究
2.1 以“項目”為中心進行教學
目前工業界,軟件開發主要使用vc++和JAVA作為開發工具。我們選用vc++對計算機專業高年級本科生進行工程訓練。一般的課堂教學重點主要是講授各種語法、函數、控件和類。vc++大、精、深,需要學生理解和記憶的知識點很多,容易挫傷了學生的興趣和信心。我們提出“項目”為中心進行教學,即通過項目講解知識點;通過讓學生完成一些簡單的項目,來靈活應用所學知識;在教師的引導下,開發復雜的項目,提高解決實際問題的能力。
我們在教學實踐中以“項目”為中心進行教學受到了學生的歡迎。①項目讓學生知道如何使用所學的知識解決實際問題,這極大地激發學習興趣。②計算機軟件開發中,會遇到大量的專業術語,而這些術語不能采用“名詞解釋”的方法來學習,必須要通過實踐來理解。項目可幫助學生快速理解這些概念。③對于初學者來說,首先是通過模仿來學習編程,然后在通過反復實踐中提高。項目提供了一些優秀的源碼,便于學生閱讀模仿。在模仿的基礎上,學生加強練習,可把這些源碼真正消化掉。④項目的編程實踐能夠幫助學生加深對知識點的理解和記憶,達到事半功倍的效果。⑤項目為學生提供了模擬的工作場景,縮短了“學習”和“工作”的距離,讓學生不出校門就擁有一定的實踐經驗。
2.2 項目的選擇和設計
項目分為小型、中型、大型三種。小型項目幫助學生理解和記憶本章所學的知識。例如:在《Windows標準控件》學完后,可提供給學生一個小型項目:創建三個水平滾動條,分別用來控制紅,綠,藍三種基本顏色的變化,并在編輯框中顯示當時RGB的值,變化的顏色效果在一個橢圓中以填充橢圓的方式表現出來。通過這個項目的練習,學生就能理解和掌握常用的按鈕、滾動條、編輯框等控件,以及基本的繪圖、填色方法。
中型項目要求學生能夠解決一些簡單的實際問題。在學完《MFC Windows Sockets網絡編程》后,就可以要求學生作一個具有實際意義的中型項目:端口的掃描程序。通過該軟件,可以知道對方計算機的某個端口是不是在工作。通過掃描一定范圍的IP地址和一定范圍的端口,可以得到是否為免費代理服務器的信息。中型項目相對小型項目難度有了明顯的提高,教學時要幫助學生克服畏難心理,讓他們學得輕松快。
在大型項目的選擇上,要注重貼近實戰,例如:設計網絡防火墻。對于這類項目,教師要善于把復雜的問題化解成多個簡單的問題,引導學生步步深入,讓他們嘗試獨立地解決問題。同時提供一些優秀的源碼,學生可以參考、模仿,開闊眼界。鼓勵他們多動手,用不同的方法解決,把這些源碼真正的理解、消化。
2.3 在項目教學中貫穿系統的理論教學
項目教學中既要避免一般高校教學中側重教授理論,也不能等同與培訓機構只重視具體的操作。不僅要告訴學生怎么作,而且還要讓他們知道為什么這樣作。例如:在《MFCWindows Sockets網絡編程》項目教學中,教師要系統地講授兩個Windows Sockets封裝類,即CAsyncSocket和CSocket類,分析比較在什么情況下使用哪一個類。
在編程實踐中,學生會困惑于一些共同的問題,而且這些問題會經常遇到,反復出現。如果不徹底解決,就會影響學習效率。教師要透徹地分析這些問題,通過對問題的正反對比便于學生理解。
一個中型或大型項目會涉及到多門課程的知識,常見的有:算法、網絡、數據庫。這些課程學生可能已經學過,并作了課程設計。但是,當時的課程學習側重于理論學習,知識的應用局限于本門課程。在項目教學中,要對課程中涉及工程應用的部分進行系統的講解,特別是多課程之間的綜合應用,幫助學生把多門課程的知識融會貫通。
3 通過研究性學習培養創新能力
學生在以創新為生命的IT行業工作,必須能創造性地解決問題。如果沒有提高創新能力和綜合素質,就會嚴重削弱就業適應能力和發展的后勁。在提高學生的編程能力的同時,我們通過“研究性學習”加強對學生創新能力的培養。 學術界認為“研究性學習”是一種學習方式,并且可以在課程講授中進行。“研究性學習,是指學生在教師的指導下,以類似科學研究的方式去獲取知識和應用知識的學習方式”。教育部《普通高中“研究性學習”實施指南》(試行)中明確給出的定義:“學生在教師指導下,從自然、社會和生活中選擇和確定專題進行研究,并在研究過程中主動的獲取知識、應用知識、解決問題的學習活動”。
在研究性學習的過程中,要求學生充分地發揮個人的主觀能動性,積極提出問題,針對問題去收集、分析和選擇信息資料,應用所學過的知識創造性地解決問題。
一方面,我們將篩選一部分優秀的本科生參與我們的科研,根據學生的能力,讓學生參加力所能及的科研工作,使學生增加學習研究的能力和信心,提高解決問題的能力。我們當前所研究的工作是國際P2P研究的核心問題:設計一種嶄新的P2P協議。部分參加工程訓練的本科生在教師的指導下使用vc++開發完全知識產權的P2P軟件。另一方面,我們把科研工作中的方法,思維方式和最新的成果融入本科的教學工作中。
4 結束語
我國軟件產業要形成外向出口型產業,程序編寫與軟件開發必須規范化和國際化,所以有必要把國際流行的IT軟件培訓方案直接引進教學過程,或將著名IT企業的資格認證直接融入教學。
企業參與辦學是國際上IT應用人才培養的共同規律,我們積極與企業聯系,走“產學研”一體化的道路,使工程訓練的內容不斷地更新,始終走在時代前列。