摘要:算法課程在高職院校計算機相關專業建設中占有重要地位,但在教學環節中也確實面臨一些亟待解決的問題。本文主要總結和探討了計算機算法課程的重要性和必要性,以及通過任務驅動的教學模式、科學選取教學內容以及充分調動學生主觀能動性等方法,提高教學效果的一些教學實踐工作。
關鍵詞:高職 計算機算法 教學
一段時間以來,國內一些高職院校計算機相關專業對于算法課程的重視程度呈下降趨勢,甚至在人才培養方案中,完全刪除了算法課程。然而,在與IT行業、企業技術專家以及人力資源部門負責人的溝通中,我們深刻感到很多畢業生非常欠缺算法理論知識與實踐經驗,以至于影響了他們在工作團隊中進行業務交流和承擔具體軟件開發項目的能力。畢業生給予我們的反饋信息也表示,在企業IT崗位上對于算法缺乏概念認知,導致自身對于軟件工程領域工作任務的理解較為膚淺,與團隊成員溝通也較為困難。
1 開展計算機算法教學的必要性和重要性
算法是計算機科學體系中的核心所在。就提升軟件運行速度而言,優秀的算法設計絲毫不亞于硬件技術升級在這方面所做出的貢獻。另一方面,計算機算法的學習過程也就是培養學生邏輯思維以及嚴謹、敏銳編程作風的過程,而這些也恰是一個合格程序員所應具備的起碼素質。很多同學面對復雜程序設計總是無從下手、一籌莫展,他們可以讀懂每一行代碼,但是卻無法推演程序的執行結果,甚至對程序的結構與功能也一知半解,面對稍微復雜一些的實際問題,學生可能就不知道怎么把它裝化為算法模型。我們的學生仍然停留在設計一下MDI、寫寫簡單的Class或用SQL語句實現查詢等基礎的編程工作上,對于一些需要用到算法工具的編程問題就避而遠之,以至于在工作崗位上力不從心、處處被動。需要特別指出的是,計算機算法對于計算機科學技術發展以及程序員培養所起到的重要意義,充分說明了計算機算法學習過程的重要性,而且這種重要性一定是針對包括高職學生在內的全體高校計算機相關專業的學生,因為他們都將是未來潛在的程序員和IT行業技術人員。我們確實有一些高職計算機相關專業,沒有給予算法課程在專業建設中所應有的地位。
事實上,計算機編程平臺從BASIC到C\C++、Java,再到今天炙手可熱的Python、Ruby等等,可謂是層出不窮,令人目不暇接。這種編程環境的快速變遷不僅僅體現在技術刊物上,也體現在IT企業的招聘啟事中、體現在高校的人才培養方案中。我們的學生們往往是一個新的開發平臺才剛剛熟悉,又一個新的編程環境就已經興起,以至于,很多同學也將學習精力主要投向了學習編程平臺的使用上,認為只要多掌握幾種編程技術就多了幾分就業成功的希望或是認為學習最新的語言、技術、標準就是最好的提升就業競爭力的方式。我們有責任在教學中向同學們明確,在快速發展的編程技術中,萬變不離其宗的是計算機算法。在軟件企業具體項目的代碼設計中,技術人員主要談到的是算法設計問題,而不是某一種編程環境的使用方式。很多優秀的程序員都認為,如果將各種新興的編程環境比作“十八般武藝”,那么,算法基礎就是使用這些“武藝”的“內功心法”。也就是說,如果你刀槍劍戟都精通,但是氣力不夠,那你還是難以走向真正的戰場。因此,一名合格的職業程序員必須具備一定的計算機算法基礎。
2 計算機算法課程要重視教學方法的改革
教學中,要針對高職學生專業學習的具體情況,不追求“大而全”,而應著重于“小而精”,在教學內容的選擇方面,堅持有所為有所不為的教學理念。比如在講授算法時間復雜度方面的問題時,我們可以與同學們共同探討較為簡單的選擇排序算法的時間復雜度問題,同時充分利用學生對于冒泡排序算法較為熟悉的特點,可以進行兩種排序算法在時間復雜度優劣方面的比較,而對于較難理解的合并排序算法時間復雜度分析問題則可以適當簡化。同樣的,在講解快速排序時,我們也沒有必要糾結于劃分元(Pivot)的選擇方式上,可以將主要教學時間著重于函數的遞歸調用與分治算法的關系,用以說明分治算法的主要特征和價值。對教學內容做適當的取舍,既可以闡述算法思想和方法,也可以充分利用學生已有的認知結構,從而提高教學效率。
教學中,尤其是在實訓期間,要特別關注學生應用算法模型展開編程實踐的過程,切實避免將算法課程僅僅當做通識性的理論課,而應采用教學做一體的教學方式,使學生在實踐中體會算法的應用價值。為了提高實踐教學的效果,教師要科學地設置教學情境,將算法問題融入構成這些教學情境的具有企業實際工作背景的教學任務中去。比如在講貪心算法的過程中,我們就完全可以創設取款機編寫控制軟件或是為解決自動售貨機找零問題編寫控制軟件等類似的教學情境,而將貪心算法的設計與編程環節融入到該情境的一個或是若干個教學任務中去,通過采用任務驅動的教學模式,使同學們在學習與實踐中真實地感受算法應用過程、體驗解決問題的艱辛也品嘗取得成功的喜悅。
為了增強學生參與教學過程的積極性,教師可以設置算法問題,并確保學生通過認真思考能夠獨立予以解決,進而使學生體會到算法學習中的成功感、成就感,激發他們更加努力的投入到學習和實踐中。如果我們不顧及學生自身的學習基礎和學習熱情,盲目提出超出學生學習能力的算法問題,日積月久,學生必然會因為參與度的下降而導致學習興趣減退。為了充分發揮學生在算法課程教學環節的主體性地位,教師要加大與學生互動和交流的力度,尤其需要關心學習有困難的學生,通過團隊合作和技術分享等具有企業工作背景的教學環節,使每一名同學在算法領域都能有所收獲,避免個別同學游離于課堂教學之外。
3 發揮專業建設的合力來搞好算法課程的教學工作
算法在計算機相關專業中無處不在,有哪一門計算機專業課程沒有滲透著算法的思想和理念呢?所以不能將培養學生算法方面的能力與技巧單純地歸結于某一門算法課程或是某一位專業教師。所有專業教師,都要將自己所教授課程中相關的算法思想與方法提煉出來,并通過精心組織的教學過程,來傳授給學生。教師之間也應針對算法教學多做溝通,避免教學內容相互重疊,對于某一算法知識或是技能,也可以在教師們之間彼此協調教學安排,以最為恰當的課程、在最為合適的時間節點、采取最為合理的教學方式教授給學生。
專業負責人以及專業教師在向學生特別是大學一年級的新生進行專業介紹或是專業報告中,要強調計算機算法與本專業其他課程之間的關系,要向同學們明確計算機算法在專業學習中所發揮的基礎性的重要作用。也可以通過邀請IT領域的技術精英來校做關于算法學習與應用的技術講座、帶領同學們到IT企業親身感受算法應用的具體實例、組織同學們進行算法學習領域的心得交流或是請學有所成的畢業生回校與同學們溝通學習算法的體會與經驗分享。
算法的思想內涵服務于計算機相關專業的整體建設,同時也確實需要通過發揮專業建設的合力,營造出全體專業教師共同重視算法的教學氣氛、落實以算法思想方法來指導編程實踐的教學方法并引導學生逐步成為計算機算法課程建設中的教學主體。
很多IT企業人力資源部門的負責人在與高職計算機相關專業教師座談中談到,IT企業在員工錄入環節中,既關注畢業生的職業技能,同時也格外重視畢業生所具有的職業素養。因為,如果學生的職業技能稍顯不足,還可以通過崗位培訓和生產實踐加以彌合。然而一旦學生職業素養方面出現了問題,那并不是一朝一夕所能解決的。計算機算法課程不僅僅著重于學生IT技術方面的問題,恐怕更重要的是通過算法課程的學習促進學生由IT領域的學習者向IT行業的工作者轉變,賦予他們一名合格程序員在計算機算法繼承與技術創新方面所應具備的職業素養。由此可見,高職院校計算機相關專業算法教學工作既關系到專業建設問題,也關系到學生的職業規劃,以及他們未來的程序員之路。
參考文獻:
[1]劉璟.計算機算法引論—計與分析技術[M].科學出版社,
2003.
[2]鄧向陽,萬婷婷.算法分析與設計[M].冶金工業出版社,2006.
[3]張福祥.C語言程序設計[M].遼寧大學出版社,2007.
作者簡介:
王翔(1975-),男,天津人,副教授,研究方向:計算機應用。