李勇
(解放軍信息工程大學,河南 鄭州)
計算機和互聯網的快速發展和不斷普及,尤其是大數據時代的來臨,人們的工作和生活已經發生了巨大的改變,由此也促進了高校計算機技術教育的不斷發展,學科的不斷融合與發展,誕生了諸如大數據等新型專業和方向。
大數據專業是一個涵蓋計算機、數學和統計學的交叉學科,要求具有扎實的計算機、數學和語言學基礎和較寬的學術視野;具備信息檢索、數據挖掘和語料管理等實際操作的能力,并且具備較好的信息處理軟件開發和工程實踐能力、較好的專業素養和較強的創新意識。由于該專業的復合性和當前信息處理工作實際,需要講授的編程課程包括《C語言》《Java語言》《Python語言》等,需要講授以編程為基礎的課程有《數據結構》《數據庫技術》《數據挖掘》和《自然語言處理技術》等課程。因此,編程語言的掌握對于完成該專業的學習是尤其重要的,也是系統的掌握計算機、數學等基礎理論和研究方法的前提。大數據主要是對自然語言的信息處理,其中包括文本信息、語音信息、視頻信息等各個層次的處理。根據當前技術發展的現狀和教學實際,文本信息的處理是重點,所以在編程課程的教學中,涉及到字符串、列表和集合等信息處理的知識對于該專業學習的重點。
編程課程作為計算機相關專業的基礎必修課程,主要目的是通過學習計算機語言以及程序設計方法,逐漸培養學生的編程能力、用計算機解決實際問題的能力。對于理工科的學生來講,循序漸進的更需要學習多門計算機語言課程。學習計算機語言并用來編寫程序解決實際問題,體現了科學就是生產力,也是理論聯系實際的一個重要體現。
由于語言信息處理專業不是純粹的計算機專業,而是相關領域的交叉學科。該專業融合了計算機、數學、外語等不同學科的知識,自身的課業負擔很重。但是當前編程課程的教學內容,教材的選擇并沒有考慮這些因素,而是使用通用的編程教材,采用一般的課程教學模式。同時,當前大數據時代造就了信息處理技術日新月異,新知識新手段在教材中很難體現,在編程課程中無法完成,導致教學過程中學生學習興趣不高、感覺學到的編程知識沒有用武之地。
計算機編程的相關課程概念和思想較為抽象和復雜,邏輯性非常強。如果單純采用傳統的教學方式,對于初學者來說必然會造成一定的難度[1]。雖然教學過程中都強調理論與實踐相結合,但是在具體操作上是以理論講授為主,實踐練習為輔,還是邊講理論邊實踐,亦或是實踐為主,理論為輔,都沒有形成固定的模式。導致在注重知識體系的完整性方面和學生自學學習、創新能力的培養上沒有很好的契合,同時學生編程的思維能力和團隊精神的培養上也是此類課程需要解決的問題。
編程的最終目的要解決實際問題,計算機軟件工程包括需求分析、架構設計、算法設計、編程實現和擴展維護等過程。因此既需要語言溝通討論需求、數學思維設計算法、計算機思維來設計數據結構,同時還需要編寫代碼來完成程序。學生常常眼高手低,教師在課堂上講授學生能夠聽懂,但是在課下同樣的問題讓學生自己解決時,又會感覺無從下手。因此,如何培養學生的計算機抽象思維方式以及獨立解決問題的能力是課程的關鍵。
當前編程課程考核同多數考試一樣,經常采用一張試卷來判定學生的學習效果,導致學生經常上課不認真聽講,考試臨時抱佛腳突擊復習,有時雖然能考出好的成績,但是考試一過知識很快就會忘記,由于沒有學以致用,所以不利于培養學生解決實際問題的能力,尤其不利于對編程課程的學習。同時由于缺乏對學生整個學習過程的監督和管理,教師對學生的真實情況掌握不清楚,更不能針對考試提出改善教學效果的措施。
根據大數據專業的特點分析,該專業主要使用計算機的理論和方法,對數學上的一些算法和語言學上的規則,采用編程語言進行實現。所以編程課程的教學內容一定要恰當合適,有些編程課程要按部就班的打好基礎,有些則可以有所取舍,只講授與該專業相關的內容。教學內容的選擇通常取決于教材的選擇,本科生的教學一般以教材的內容為主,所以需要根據大數據專業選擇合適的教材,必要的時候可以考慮自編教材,這樣更容易對該專業的教學更有針對性。
對于《C語言》課程,可以采用通用的教材,對于所有內容從數據類型、程序結構、函數和數組、指針和結構體都需要講授,因為它是所有編程語言的基礎。C語言作為結構化程序設計語言,簡潔緊湊,執行效率高,數據類型豐富,兼具高級語言和低級語言的特點,非常適合做教學編程語言,同時C語言的基礎內容在其他的語言中都有所體現;對于《C++面向對象程序設計》,采用C++語言講授,該課程對于語言本身的掌握并不是重點,重要需要掌握面向對象程序設計的思想進行編程;對于《C#語言》重要的是掌握使用C#語言來進行桌面應用程序的設計,以及字符串、集合和列表、數據庫等與文本信息處理相關的內容;對于《Python語言》,通過Python語言講授其進行文本處理的便利性,通過JavaScript等網頁腳本語言講授其進行網頁清洗、文本抽取等工作的優勢。對于《Java語言》,重點是掌握Java語言編寫的程序能夠實現跨平臺,以及可利用大量的自然語言處理的開源程序和類庫(大多采用Java語言編寫)。因此,根據大數據的專業定位和培養目標,不同的編程語言有不同的講授重點。在教學內容的選擇上,切勿所有編程語言重點不分,讓學生感到無所適從。
1. 授課方式采用小班授課,提高理論和實踐授課質量。
編程語言課采用小班方式授課,教師可以兼顧每個學生,對學生做全面的了解,對學生的理論問題和程序設計問題能夠快速地發現并解決,有利于學生對課堂內容的掌握。教師講授過程中,首先講解教材的理論內容,包括基本的編程思想、編程方法、具體的概念和原理,并講解相關的例題進行[2]。然后通過信息處理方面的程序實例,例如從分詞、語言的形態分析、信息檢索等抽取相應的知識點供學生上機實踐,提高學生的動手編程能力,產生了比較好的教學效果。
2. 課堂教學手段形式多樣話,充分調動學生學習積極性。
編程課程理論性強,其中的概念和算法通常比較枯燥,如果沒有適合的教學方法來調動學生學習的興趣,很難產生良好的教學效果。例如漢諾塔問題可以制作Flash動畫,讓學生清楚程序的執行過程,調動學生的學習積極性[3]。在學習編程語言的字符串和集合知識的時候,可讓學生進行簡單的文本分詞、詞頻統計的練習、既讓學生練習了所學內容,又讓學生對大數據專業有進一步的了解。通過混合式教學和慕課等多種教學手段,能夠很好的促進編程課程的學習。
3. 豐富多彩的授課方式,培養學生自主學習能力。
大數據融合了多學科的課程體系,教師需要對不同類型編程課程的特點有大致的了解,才能夠選取適合的教學模式。該專業常用的教學模式有問題討論式教學、項目驅動式教學和啟發式教學等。對于編程課程理論性比較強的內容,可以采用問題討論式教學。例如面向對象編程思想,由教師提出面向對象編程同面向過程相比,其優缺點、使用領域等問題。下面學生之間進行討論,并且總結出最后的結果,教師基本不參與討論,僅在最后給予輔導和評價。從而培養學生獨立思考、主動學習和探索未知問題的能力。對于操作性比較強的內容,可以采用項目驅動式教學。例如,在C語言的教學過程中,可以進行通訊錄程序的練習,根據學習內容的深入,先后不斷的加入存儲、排序和查找等內容。對于項目驅動式教學,教師注意要隨著課程的不斷深入來進行程序的擴充,由于新知識在舊知識基礎上逐步導入,逐層推進,學生更容易掌握,但此過程同時要引導學生獨立思考。學生的課后作業也可以根據自身情況,參加教師的項目和課題,提高學生分析、解決問題以及自身的編程能力。或者對于抽象的知識可以采取啟發式教學,結合實際問題、直觀形象的具體實例來引起學生聯想,啟發學生的抽象思維,同時培養學生舉一反三、獨立創造性的邏輯思維能力[4]。
科學合理的考核方式是教育評價的重要手段之一,因此必須建立恰當的考核方式,并且注重過程監督和綜合素質的培養。編程課程的最終目的是能夠使用計算機編寫程序來解決實際問題,因此上機考試應該是編程課程考核的最終形式。但是如果所有編程課程均采用上機考試也存在一些問題。例如,在上機考試中,教師列出幾道編程題目,如果學生答同樣的題目,使得考題覆蓋面不廣;如果讓系統隨機抽出一些題目,又很難保證難度相同以及評判客觀。
因此,根據編程課程類型的不同,可以分批采用不同的考核模式。對于《C語言》《C#語言》等課程,該課程也是國家計算機等級考試二級的科目之一,完全采用上機考試時可行的,所以可以通過引進或者開發考試系統來實現。對于《C++面向對象程序設計》等課程,完全上機考核不能完全反應學生水平,所以可以采用筆試考核和上機考核相結合的方式。筆試可在期末考試實施,全面考察學生對所學課程基礎知識和基本理論的掌握情況;上機考核可在平時、期中考試和課程設計中實施,主要通過考查學生對小程序、中等程序和較大規模程序的設計和編寫能力,考核學生解決實際問題的能力和運用知識的綜合能力[4-6]。
隨著大數據時代的計算機技術發展越來越快,通過大數據編程能夠解決的問題也越來越多,對于我們在教學過程中提出的挑戰也越來越大。更多的院校成立的大數據專業或方向,它是一個多學科交叉融合的新興學科,編程課程所占的比重比較大,既要注重基礎理論,又要緊跟技術發展的步伐,教師如何較好、學生如何學好、考試如何考好都是一些需要解決的問題。因此,要根據該專業和編程課程發展的實際,與時俱進,做好教學改革,才能培養合格的大數據專業人才。