作為計算機基礎教育和綜合運用的一個重要組成部分,程序設計理論在計算機學科體系中的核心地位日漸凸顯,作為一種計算工具,計算機程序設計理論不僅可以幫助人們處理和解決各種問題,同時由于它具備結構嚴謹、邏輯思維程度高等特性,還可作為培養人們發散思維和創新能力的一種有效途徑。為適應信息化社會對人才綜合創新能力要求不斷提高的客觀需求,結合筆者多年從事程序設計教學實踐,為培養學生的創新意識、提升創新能力,在組織課堂教學時重點從夯實基礎理論、開展問題教學和綜合創新應用等方面進行了一些大膽嘗試,取得了一定效果,以下就這些內容提出一些粗淺的闡述。
一 夯實程序設計理論基礎:培養創新意識的前提
創新是一個民族進步和發展的靈魂,是推動人類社會不斷進步和發展的強大動力。創新(innovafion)一詞源自古拉丁語“innovore”,意即“更新,創造新的東西”。美國管理學專家斯蒂芬·P·斯和瑪麗·庫爾特也指出,創新是指形成創造性思想并將其轉換為有用的產品、服務或工作方法的過程,也即富有創新力的組織能夠不斷地將創造性思想轉變為某種有用的效果。上世紀90年代美國率先明確提出創新并將其應用于高等教育方面。教育創新逐漸成為社會創新的熱點問題之一。江澤民同志指出,“教育創新,與理論創新、制度創新和科技創新一樣,是非常重要的,而且教育還要為各方面的創新工作提供知識和人才基礎”。在這種形勢下,如何在計算機程序教學中培養學生的創新意識和能力,是每個從事計算機基礎教育工作者必須直接面對的一個重大課題。作為一門應用性課程,計算機程序設計課程除具有實際操作性極強等特點外,抽象性思維程度較高、結構組織嚴密、邏輯性強也是其重要特性。因此,教學效果的好壞不僅關系到能否提高學生運用程序設計知識解決實際問題能力,而且在學生創新能力培養等方面也會產生巨大的影響。
“萬丈高樓平地起”,為實現創新能力的培養必須從點滴做起、從基礎抓起。從目前各高校計算機基礎課程設置來看,雖已普遍開設了程序設計等課程(如VC、VB、JAVA等),但由于學生缺乏必要的知識背景和邏輯思維訓練,所以普遍存在學生難學、教師難教等現象。而計算機的本質是“程序的機器”,可以說只有懂得、了解程序設計技術,才可謂懂得計算機,為盡快走出這種困境,在從事教學時可按下列理念組織。
其一,在講解課程前,首先介紹演示一些運用該內容處理實際問題比較成功且能代表該學科應用水準的實例,如:功能完備的學籍管理系統、職工檔案管理系統等各種典型應用案例,借此幫助和澄清學生存在的學習程序設計能“做什么”等疑點問題,之后通過編寫貼近學生現有知識水平的簡單程序介紹程序設計的基本思想和步驟,使學生對程序的設計思想和其作用有一個粗淺的認識,初步訓練學生以嚴謹、科學的視角了解和認識程序。
其二,按著教學大綱要求,從系統角度詳盡講解程序設計課程中所涉及到的基礎知識、基本理論,并結合簡單應用實例闡述程序組成結構及語句選取原則等教學重點。在教學內容的安排上,既要符合教學基本要求,又要重點突出、難易適度。要以基本的、重要的、困難的、前瞻性強的知識點為主,通過這些知識點的講授、探討等途徑,使學生能夠掌握方法,并且能夠舉一反三,從而提高課堂教學效果。基本內容要明確主線,易于理解;重點內容要簡明扼要、易于掌握;難點內容要深入淺出,與學生已有的知識基礎聯系起來;前瞻性內容要有可持續性,能夠引發學生探索的欲望。在此基礎上,重點介紹在解決實際問題所應采用的不同邏輯結構的確立原則以及解決同一問題所運用的不同手段及對應的邏輯結構的選取等內容上,目的是為學生奠定良好、牢固的程序設計基礎,破解學生對程序認識及使用上的盲區,并初步培養學生的邏輯判斷思維能力和基本的創新意識。
二 角色轉換,以提出和探究問題的方式培養創新意識和能力
按照現代教學理念的要求,課堂教學應以學生積極主動參為其基本特征,教學過程必須由教師講授型教學向研究問題型教學轉換,學生應成為課堂教學的主角。這種轉換要求學生由以往被動學習客體向主動參與課堂教學的主體轉變。它不僅可以激發學生的學習興趣、培養學生樹立獨立觀察、思考、探究和處理問題的“問題意識”,還有利于在教學過程中調動學生廣泛參與課堂教學,增強學生主動學習的積極性,同時,利于學生自身養成以發散思維分析問題的良好習慣和增強批判意識,為提升學生的創新意識和能力營造一個良好氛圍。前已述及,程序設計課程具有結構組織邏輯嚴謹、抽象程度高、實踐操作可塑性大等特性。鑒于此在組織教學活動時以“提出問題”作為教學的切入點,以此啟動課堂教學,并將其貫穿在全部教學過程中。在問題的選擇上應密切圍繞著教學內容和教學大綱的要求,為此,可按下列原則確定和提出問題。
其一是程序設計課程所涉及到的基礎知識、基本理論等基礎知識性的問題。由于這些內容抽象程度高,不易被學生所接受和理解,因此,在形式上可由能夠說明這些問題性質和作用的具體實例來引導,通過對這些實例的具體處理及真實場景的動態演示過程將這些抽象的理論轉化融入到處理問題的實際程序中,這樣既可以使學生繞開抽象無味的理論,將抽象化的內容具體化、通俗化、簡單化,又能很快了解程序的結構構成要素及具有的功能,并將其運用到解釋和處理實際問題的實踐中。與此同時,也可回答學生存在的針對具體問題“程序應如何考慮和設計?”以及“怎么做”等問題,并依此維持學生由此對課程所產生的興趣。
其二是具有分析和培養啟發意識的思考性問題。在學生已經初步了解和運用基本知識和理論處理簡單實際問題的基礎上,結合教學內容提出一些具有啟發意識的思考性問題,以此促使學生深入理解基本理論,提高發現問題、思考問題的能力,培養學生以批判意識審視、分析程序,揭示程序功能的深刻內涵及本質。此外,介于程序設計本身所具有靈活多變的邏輯特性,在程序的編撰設計上,鼓勵學生大膽想象,就同一個問題設計出多種不同的處理方案,實現一題多解。實踐證明:采用這些措施后,不僅可以幫助學生尋找出解決實際問題的各種方法和途徑,進一步解答“為什么這么做”等疑惑,使學生對本課程產生進一步關注,促使學生在頭腦中形成思考、觀察、撲捉問題及主動處理問題的強烈意識和欲望;同時可培養學生橫向發散思維,是訓練學生拓寬邏輯思維空間的有效手段,也是開拓學生創造性思維和提升創新能力的主要方法。
其三應體現本學科前沿動態和在應用領域實際應用并具有研究性的新問題。這些問題可以是計算機程序設計開發應用領域的新技術和最新科研成果以及具有代表性的典型案例,還可以是教師教學內容長期積淀的經驗和科研中思考及亟待解決和處理的問題。
在較好地處理了上述和程序設計有關的問題后,還需經過大量實踐方能設計出質量較好的計算機程序。因程序設計工作是一項邏輯思維嚴謹、勞動強度高的腦力勞動,是創造性的藝術,僅靠教師講授而不經過大量刻苦實踐,靠一朝一夕是掌握不到其精髓的。只有不斷在實踐中探索,磨礪才能獲得其中的真諦、才能掌握程序設計的真本領。只有這樣才能獲得創造性的思維,進而不斷在程序設計過程中提升個人的創新能力。
三 在滿足專業需求、服務社會的實踐中實現和發展創新
“學以致用”這個承傳千古的古訓在今天仍有其現實意義,學習的根本目的在于將其運用到處理實際問題的各種實踐中。同樣,學習計算機程序設計的主要目的是借助這樣一種現代化的計算處理工具去處理和解決各種專業實際問題及滿足社會的各種需要。要想更快、更好地將程序設計知識、技術運用到實際問題的處理過程中,除需具備扎實的功底外,還要具備敏捷、靈活的應變能力。由于科學技術日新月異的發展和進步,各學科的界定和劃分變得愈加模糊,特別是計算機技術的介入,已形成一種相互滲透和學科交叉的格局。所有這些都為創新能力的培養提供了可能。唯有創新,才能生存、才能發展已成人類的共識。以往傳統的墨守陳規的應用模式和方法已難滿足現代社會的需求,因此,在將程序設計技術運用到具體學科實踐中必須要有創新意識,體現創新成果。具體可從以下幾點考慮和落實。
第一,在程序設計思想上既要繼承前人的優秀成果,也要樹立“批判”意識。在開發設計解決實際問題的程序中,有很多前人開發的優秀成果可以繼承,在繼承前人優秀成果的同時,也要樹立批判意識。既不能一味照搬也不可百般挑剔、全盤否定,要大膽實踐,勇于探索、鉆研、尋找其和現代發展不相適應的部分,提出新思路、提供新方法,對現有知識經驗批判地繼承,在借鑒中有所突破,在繼承和批判中發展和創新。因任何研究都是在繼承與批判前人成果的基礎上而不斷發展創新,而“批判”本身也是一個在與前人對話中不斷追問“為什么”的繼承過程。
第二,形成正確的發散思維是在程序具體設計實踐中體現創新思想的關鍵。由于專業和社會需求包羅萬象、形式各異,所以,在處理問題時要尋找出一個固定統一的模式幾乎沒有。因此,要解決這些問題首先必須確立正確的思維方法。因所有應用程序的設計以及在設計過程中的發明、創新都源于正確的邏輯思維,它不僅是應用程序功能得以實現的基礎和保障、也是創新意識和能力的體現,更是創新能否實現的關鍵所在。結合程序設計課程的特點,在處理實際問題時采用發散思維不妨是一個極好的思維方法。運用發散思維可以充分拓展設計者的想象空間、思考問題的多角度性,依此激發設計靈感和形成創新點,設計出能夠滿足專業和社會需要的應用程序。設計者的設計思路科學與否從以下諸如程序模塊結構的確定、語句的選取、編排順序以及能否完成目標任務等方面都能得到體現。只有設計思想正確、邏輯思維清晰,才能實現設計所要達到的目標、才有可能在此基礎上實現程序設計的創新。