摘要:針對傳統(tǒng)c++語言程序設計課程存在的問題,提出基于Ch交互式平臺的c++語言程序設計教學建設方案,闡述如何搭建線上線下結合的學生綜合評價體系,介紹該建設方案在實際教學過程中取得的良好效果。
關鍵詞:c++語言;Ch交互式平臺;項目式;案例;線上線下綜合評價
0.引言
程序設計課程是大多數(shù)非計算機專業(yè)學生的必修課程,也是培養(yǎng)學生基本素質的一門重要課程。c++語言不同于大學英語、高等數(shù)學等基礎必修課,重在培養(yǎng)學生基于計算思維求解問題的思想和能力,問題分析、建模和算法設計、實戰(zhàn)編程的能力。c++語言功能強大、表達形式豐富、使用方便靈活、應用領域廣泛,目前大多數(shù)高校都將c++語言作為大學新生的程序設計入門語言,也將其作為數(shù)據(jù)結構、算法設計等課程的工具語言。
c++語言程序設計是一門實戰(zhàn)型課程,程序設計開發(fā)環(huán)境的選擇、課堂教學和實驗教學的有機結合、學生計算思維能力和編程能力的評價體系,是課程教學中需要解決的3個難題。選擇合理有效的開發(fā)工具能使程序設計的學習事半功倍,科學合理的設計教學案例和教學模式,能激發(fā)學生自主求解問題、學習新知識的動力,而客觀的教學評價體系則讓教與學相輔相成,設計一套教學研究方案從以上3個方面著手,積極做好學生邏輯思維、計算思維和創(chuàng)新能力的培養(yǎng)。
國內很多學者對于如何針對c++語言程序設計教學提出了很多很好的建議,如吳文虎教授提出的“理念先行”,就有效地解決了解題思路的問題;斯金納提出了如何有效提高課堂效果的教學方法。針對如何將“以教師為主”的教學轉化成“以學生為主”的教學,后續(xù)提出了教學改革方法,有研究型教學、任務驅動式教學、混合式教學、拋錨式教學、項目式教學等,這些方法的共同目標是提高學生的學習積極性,化被動傳授知識為學生主動獲取知識,并培養(yǎng)學生的程序設計能力、計算思維能力和創(chuàng)新能力,但是這些方法往往擅長從單個方面探究,缺乏一套完整的從開發(fā)平臺、教學方法和教學效果評價為一體的課程教學研究,教學方案的效果有所局限。選擇合適高效的程序設計開發(fā)平臺,設計相應的項目驅動式教學方案,并利用線上線下混合管理學生、評價教學成果,完成這三個方面的工作是本課程教學研究的重點。
1.c++語言程序設計課程現(xiàn)狀分析
c++語言程序設計教學分為理論教學與實踐教學,前者主要以教師課堂教學PPT為中心展開基本概念、語法和規(guī)范的教學;后者主要是讓學生自己動手,圍繞知識點展開程序設計、編寫和測試等上機實驗訓練。
在教學過程中,普遍存在以下問題。
1)開發(fā)環(huán)境缺乏交互性。
傳統(tǒng)的c++語言教學編譯環(huán)境包括常用的C++語言程序的運行平臺,有Turbo C++、Visual c++、Borland c++等,它們都是集成化的開發(fā)環(huán)境,要在這些平臺上演示一個最簡單的程序,如輸出一行字符或求一個表達式的值,都必須寫出完整的程序,這對初學者來說無疑使c++語言的上機復雜化,而初學者需要的是能夠簡單明了地直觀看到運行結果,以便于理解。其次,這些平臺都是編譯性平臺,雖然可在程序運行中設置斷點或設置要查看程序運行過程中某些變量的變化情況,但對于初學者,無法提供直觀的查看方式。
2)求知積極性沒有被完全調動。
c++課程的授課對象通常是大一的新生,他們需要從高中階段的被動式、高壓式知識獲取方式轉變成大學開放式、自主式的知識發(fā)現(xiàn),一方面需要教師積極引導hEGMRxBavQV+2fJyIXa/Pg==學生從被動到主動的求知習慣,另外一方面,現(xiàn)有的教學模式是以教師為中心、以知識點為導向的學習,即便有人提出以“學生為中心”的課堂教學,依然沒有從根本上激發(fā)學生的積極性。
3)分析問題和程序設計能力差。
學習過程中,學生的知識學習與實際應用脫節(jié),他們能夠從有限的教材上獲得典型的例題求解方法,但是沒有辦法從編者的角度,從實際應用的角度抽象出應用問題的一般分析、分解、設計和求解方法。掌握了語法細節(jié)和規(guī)則,難以從實際問題出發(fā),通過邏輯思維、計算思維,乃至創(chuàng)新思維的方式解決問題,而這些恰恰是c++語言程序設計課程的核心和靈魂。
4)理論教學為主,學生實戰(zhàn)能力弱。
一般高校安排c++語言程序設計課程的課時以理論課為主,上機實踐課為輔。以浙江工業(yè)大學信息學院電信專業(yè)為例,c++語言程序設計課程總學時64課時,其中理論48課時,上機16課時。學生由于大部分時間都是以課堂聽課的形式獲取知識,通過上機實踐輔助程序設計和調試的過程,在大一階段幾乎沒有接觸到應用的機會,迫切需要從一開始接觸程序語言就讓學生培養(yǎng)解決問題的思維方法,理論和實踐教學并重。
5)考核機制單一,無法全面評價學生能力。一般高校的c++語言程序設計課程考核主要基于兩個方面:期末考試和上機實踐的表現(xiàn),其中期末考試題型多以客觀題為主,上機實踐題則是程序設計題為主,通常都是體現(xiàn)了所謂的關鍵知識,更多是典型例題的拓展題目,從知識點分布出發(fā)。個別院校有采用限定時間的上機程序設計評定,但這些方法都沒有跟蹤式的評價學生整個學習效果,無法全面評價學生的綜合能力。
2.基于Ch交互式平臺的c++語言程序設計課程教學研究方案
總結教學現(xiàn)狀,針對傳統(tǒng)c語言程序設計課程存在3個方面的問題:程序開發(fā)平臺單一、課堂教學和實踐上機環(huán)境脫節(jié)、課程評估方式不利于培養(yǎng)學生的程序設計能力和計算思維能力,我們提出基于Ch交互式平臺的c++語言程序設計教學建設方案,充分利用Ch解釋平臺的交互功能和內存透明管理,設計項目式教學方案,并設計線上線下結合的學生綜合評價體系。
2.1基于Ch交互式平臺的程序設計課程
Ch交互式平臺已被多所高校采用,作為c++語言程序設計課程的開發(fā)平臺,我們根據(jù)學生的學習規(guī)律,從基礎認知階段、中級理解階段和高級設計階段,基于Ch平臺設計3個階段的課程學習。圖1是基于ch平臺的分階段程序設計課程方案,分3個階段,循序漸進推進課程教學:基于Ch交互式窗口開發(fā)平臺的形象化教學、基于Ch Professional平臺的理解強化教學和基于Ch IDE集成化編程環(huán)境的高級創(chuàng)新程序設計。
1)基于Ch交互式開展形象化基礎教學。
學生一開始接觸c++語言,避免被其繁雜的內存管理和指針操作難倒。我們基于ch的強大交互能力,將一些抽象的概念形象化,如數(shù)組和指針的概率,單個語句鍵入后馬上就可以得到結果進行驗證。數(shù)組和指針的存儲格式、訪問方法和調用方式等都能夠直觀地顯示給學生,體現(xiàn)了很好的交互式形象化教學。
2)基于交互性程序運行平臺的綜合程序設計。
要求學生掌握基本的語法、基本結構和簡單的算法設計編程實現(xiàn),基于Ch professional平臺設計典型應用的問題分解、程序設計和編寫、測試。由于平臺具有良好的調試界面和功能提示,學生在通過基礎教學后,展開一定自主能力的上機實踐成為很好的鍛煉,professional平臺的結果演示界面可以規(guī)范初學者的編程習慣,在基礎教學的基礎上進入鞏固和綜合應用程序設計階段。
3)基于高級功能的綜合案例開發(fā)。
充分發(fā)揮Ch平臺的IDE集成開發(fā)環(huán)境和強大的圖形圖像處理功能,面向學生的課外科技競賽和就業(yè)方向,結合課程的進度,在講授課程前先設計、選擇一套與學生所學專業(yè)相關聯(lián)、與教學內容相一致、功能相對完整的案例程序;然后根據(jù)每次的講授內容,將案例分割設計成多個具體且相對簡單的實例程序分析講解。對應案例利用Ch平臺實現(xiàn)和演示,進度符合課程安排,便于學生邊學習邊應用。
2.2項目驅動式教學建設
項目驅動式教學采用課堂教學和實踐教學同步,c++語言程序教學遵循簡單到復雜的原則,從簡單項目人手到綜合應用型項目,學生自始至終全程參與。步驟如下:項目目標確認、分組展開、概要設計、詳細設計、編寫程序、調試測試、現(xiàn)場報告和組間評價、最終成績。圖2是項目驅動式教學建設的組成步驟。
每個章節(jié)的內容和知識點給定2-3個項目案例供學生自己選擇,學生在選定項目之后首先明確項目目標。
學生自主選擇隊友組隊并完成角色分配,制定詳細的分工和職責,便于最后的考核和成績評定。
每個學生對自己任務模塊展開概要設計和詳細設計。其中對于第一階段(如圖1所示)作為項目驅動式教學的開始,要求學生做簡單的計算思路整理流程圖或N-S圖代替概要設計;對于第二、三階段(如圖1所示)中高級項目案例引入,則需要學生對項目進行模塊劃分、隊友之間協(xié)作分工,然后做概要分析和詳細的流程分析、接口設計和模塊獨立性設計等。
程序編寫環(huán)節(jié)需要學生結合課堂教師分解、團隊討論、課外查閱資料、上機編寫和修改等工作,需要合理布局,并設計好程序接口,便于與其他的隊友協(xié)作,共同完成整個項目。
調試壩0試工作是項目驅動式教學步驟中很重要的一項,尤其對于第二、三階段的綜合應用案例,需要集合隊友的共同程序模塊,這不僅培養(yǎng)了學生的調試習慣和方法,而且鍛煉了他們之間的協(xié)作開發(fā)能力。
現(xiàn)場報告和組間評價環(huán)節(jié)貫徹學生的自主思考、分析和表達能力培養(yǎng),只有通過查閱文獻、項目分析和設計,最后經歷Debug各個環(huán)節(jié)之后,才會有充實的過程匯報給大家,這在一定程度上督促學生保證每個環(huán)節(jié)的完成質量。另外一方面,關于組間評價,由于項目驅動式教學需要學生充分利用課內外的時間完成學習任務,為了傳達評定的民主客觀性,不是由老師一個人說了算,學生之間的客觀評價也非常重要,作為學生最終成績的一部分。
2.3基于項目驅動教學方案的線上線下綜合考核體系
有別于目前大多數(shù)項目式教學建設的一刀切——根據(jù)最終上交程序和期末考試的方法來考核,我們提出了一種基于項目驅動教學的線上線下綜合考核體系。鑒于項目式教學的特點,充分發(fā)揮項目驅動式教學的優(yōu)勢:從整體上注重學生以項目為驅動的學習、開發(fā)和總結過程,關注學生的全程參與和表現(xiàn),整個考評體系如圖3所示。
(1)線上考核系統(tǒng)。搭建學生項目案例教學管理系統(tǒng),學生可以自主選擇合適的時間完成網上課題的選擇、程序設計和提交操作。
項目題目選擇模塊:教師定期發(fā)放案例,學生在對應案例中選擇一個,作為階段性的項目。
模塊任務劃分讓學生定位項目角色,明確項目任務。
編程日志是讓學生嚴格按照項目開發(fā)流程,定期記錄編程日志。
調試日志是學生在程序調試階段記錄程序的測試案例,及其測試結果。
結果演示報告環(huán)境是學生在每次項目提交階段,制作PPT做公開匯報,并接受全體學生的提問和評價。
(2)線下考核系統(tǒng)。項目式教學的考核不能將最終上交的程序和項目報告作為唯一成績給定標準,因此我們設計了線下考評3個模塊。
學生自評。學生對整個項目的學習和開發(fā)過程做自我評價,最終提交項目進度記錄表、問題和解決方案記錄表、自我總結報告。
組間互評。學生之間相互督促和評價,不同組的學生對其他組的項目報告做評分,對其程序進行評分,有必要的時候可以做監(jiān)督評分。
教師考評。教師根據(jù)學生的現(xiàn)場報告PPT和匯報情況、提交的項目報告給出評分,對項目程序定評分并對學生的課堂出勤做評分。
以上三塊評分總計人每位同學的最終課程成績,構成我們設計的線下考核成績。
3.結語
基于Ch平臺的c++語言程序設計課程教學對非計算機專業(yè)c語言程序設計一年多的教學實踐來看,Ch交互式平臺對初學者提供交互性好、可視化強的開發(fā)平臺,激發(fā)了學生的學習興趣,深入淺出;實施項目案例驅動式教學方案充分發(fā)揮了項目式教學優(yōu)勢,啟發(fā)學生自主學習;線上線下綜合考核管理系統(tǒng)客觀綜合評價學生,學生靈活運用課堂和課余時間,能夠很好地解決學生的畏難心理,激發(fā)學生的學習熱情,并彌補傳統(tǒng)教學在方法和考核上的不足。經過一年多時間的實施,學生的編程能力、計算思維和創(chuàng)新能力得到顯著提高,畢業(yè)設計環(huán)境和實習環(huán)節(jié)開發(fā)能力顯著增強。此外,學生參加智能車競賽、ACM競賽、機器人大賽Robocup等,也憑借扎實的編程基礎和開發(fā)能力屢獲佳績。