徐琴珍,郭延芬,何 峰,孫慶慶,李 娟
(東南大學信息科學與工程學院,江蘇 南京 210096)
“計算機科學基礎”是本科教學中非常重要的基礎課程,是一門需要將理論知識和實踐驗證高度結合的課程。我院的“計算機科學基礎”課程的教學內容包含計算機基礎知識及C++程序設計兩部分[1,2]。在教學過程中,一般注重語法講價。而語法教學往往被分解為一個個知識點,點與點間缺乏邏輯上的連續性。
計算機語言類的課程,從某一個層面上可以看成是對學生一種編程技能的培訓,而學習語法的過程,相當于一個熟悉并使用工具的過程。為使學生能順利地開展程序設計工作,需要在學習的每一個環節明確該“做什么”,進而思考該“怎么做”。學生的程序設計能力的提高主要依靠上機實踐逐步培養,實踐教學環節是明確“做什么”和“怎么做”的最直接和最有效的途徑。
我院的“計算機科學基礎”課程貫穿了二個長學期和一個短學期,課程學時安排如表1所示。配合課程學時的安排,我們設計了結合“做什么”與“怎么做”的教學實施方案。
1)我們在課程教學過程中逐步強化學生的計算機語言編程能力。這一環節從學習計算機語言的初期就開始,主要讓學生明確“做什么”:編程技能需要連續不斷的實戰訓練,無法速成。我們結合課堂教學的進度,先提出相對簡單的程序功能要求,在學生上機實驗課環節中,將課堂上學到的C++語言的基本語法點串起來,實現設定的程序功能。通過這樣的教學實踐相結合的方式,讓相對抽象的語法點變得實用。

表1 “計算機科學基礎”學時安排
2)培養學生主動學習的習慣,讓他們在探索中學會“怎么做”,以完成程序設定的功能。在有了一定語法基礎的情況下,再設計復雜度逐步提高的程序功能要求。其內容可略超前于課堂上課進程,使學生在課后完成算法設計的同時,完成下次課堂的預習內容;且可通過實驗鞏固自學的新知識,并發現自己尚難以單獨解決的語法難點。學生在課堂實驗講解中可以帶著問題,主動投入課堂學習和課間答疑中。學生可以相對更主動地利用已經學到的語法知識,完成部分程序功能;在現有的知識無法完全解決問題的情況下,也能積極探索新的語法知識。
短學期以培養學生對C++編程語言的綜合設計和應用能力為主,要求學生能夠自由組隊完成一個功能比較復雜的具有一定實用性的MFC程序設計題目,以比較粗線條的“做什么”為出發點,逐步細化“做什么”的具體細節,進而明確“怎么做”來完成該題目。短學期的具體程序設計進程按如下三個步驟進行。
1)我們在第二個長學期結束前二周,給出綜合程序設計題目,包括程序要實現的基本功能,應用背景的簡單說明,可拓展的情況等,讓學生明確“做什么”。我們在設計綜合程序設計題目時,考慮將程序設計與實際應用緊密結合,增強短學期課程設計的質感和實用性。如心理學常用的反應時檢測系統,可用于反映被測試者對某種刺激或某個問題的反應速度和對特定問題的正確表達程度等;再比如,南京地鐵查詢服務系統和自動閱卷系統等有一定應用背景的及它和生活密切相關的程序設計題目。這些題目都具有很大的靈活性,如心理學反應時測試系統,學生在設計過程中可以自行設定測試的形式:按照不同的順序給出一些幾何圖形,讓被測人員在觀察后按照記憶點擊幾何圖形,記錄反應時和正確率,或者將幾何圖形替換為不同值的數據或不同的色塊等;也可以控制測試的難度或等級。
2)學生利用假期進行背景調研,明確該題目的整體框架和流程安排,初步把握應該“怎么做”。我們在兩個長學期即將結束時將題目發送給學生,他們可以在給定的題目規模和難度范圍內,自由組隊,小組員在假期展開背景調研。比如,了解地鐵的查詢機制,了解地鐵各站的周邊站點轉乘信息,了解心理學反應時的計算和正確率的計算,如何給出測試統計結果等。
3)學生根據假期的背景調研結果,明確項目的初步設計方案和擬達到的效果,并細化組員間的分工。每位組員,通過開題明確了自己該“做什么”,并以此為目標,有針對性的自主學習MFC中需要用到的知識。在程序設計過程中,我們引導學生掌握自主學習MFC關鍵知識的方法,從而為整個項目的子問題的解決尋求“怎么做”的具體方案。
課程考核成績要考慮學生的如下表現:
(1)平時成績—實驗實訓表現的記錄(是否按時完成了指定的“做什么”的內容),在線學習的效果(養成初步探索“怎么做”的習慣),展示編程作品/提供編程思路的踴躍程度(對探索的“怎么做”進行具體實施)以及上機考核成績;
(2)上機編程題質量—學生對程序的基本功能完成情況(在明確基本的“做什么”內容的基礎上實現“怎么做”),功能是否進行了適當地拓展(自主地延拓“做什么”,并實現“怎么做”),使用是否方便,是否有較詳盡說明等(對“做什么”和“怎么做”的精致回顧和效果維護);
(3)完成卷面考核的成績,對學習過的編程語言的基本語法點是否鞏固,是明確“做什么”的基本元素。
學生在短學期的綜合程序設計成果最能夠反映我們提出的“做什么”與“怎么做”相結合的教學方案的實施效果。我們將二屆學生的程序設計情況作了統計,學生組隊的人數一般每組為2~4人,所有小組完成綜合程序設計題目的達到97%,基本上能完成指定功能的“做什么”;實現功能延拓的占78%,有的小組在自動閱卷系統中加入了播放節奏舒緩的音樂的功能,有的小組在心理學測試中加入了對測試結果的提醒和非常個性化的安慰,這些都能夠反映出學生在短學期的程序設計過程中的一種明快自然的情緒,能夠在設計過程中不斷地自我提高。此外,這些與實際貼合的設計題目也讓學生在學習編程語言的同時,對本專業以外的研究領域(比如心理學,城市規劃設計,圖像處理等)有了一定程度的了解,很好地拓展了知識面。
[1]沈軍,朱敏,徐冬梅,翟玉慶.大學計算機基礎[M].北京:高等教育出版社
[2]吳乃陵,況迎輝.C++程序設計[M].北京:高等教育出版社