汪 政
(湖南第一師范學院計算機學院,湖南 長沙 410205)
計算機專業人才的基本能力之一就是擁有良好的技術技能。然而,僅靠這些技能通常是不夠的,還需要非技術技能(如解決問題能力、溝通能力等)。一些研究顯示,計算機畢業生與行業期望之間在技術和可轉移技能方面存在差距。這種差距與傳統教學中側重于技術技能和知識有關。所以,我們迫切需要提升計算機專業學生的非技術關鍵能力(關鍵能力)。我們意識到關鍵能力是計算機專業學生在職業、工作、社會和行業所需技能,我們開始改進計算機科學專業的一些課程。通過研究以項目為中心的綜合教學方法,來實施Java程序設計的教學。
最近的研究解決了行業要求計算機科學畢業生具備哪些能力以及能力差距是什么樣的問題。例如,軟件工程技能體系(SWEBOS)描述了軟件工程師須具備哪些軟技能。作者將能力分為七類:①專業合作能力;②溝通能力;③構建自己工作方式的能力;④個人能力;⑤理解復雜流程、系統和關系的能力(問題意識);⑥將個人知識和技能應用于具體和新情況的能力(解決方案能力);⑦其他附加能力。軟件開發的項目包括需求工程、建模、編碼、測試和交付等活動,這些活動需要密集的溝通。因此,溝通技巧等關鍵能力對項目結果有很大的影響。對于軟件開發項目的成功而言,關鍵能力與技術技能同樣重要。
我們對多家軟件公司進行了回訪,畢業生缺乏的技能分為以下幾類:①軟技能;②軟件工程過程;③計算機科學概念;④軟件工具。在關鍵能力(例如口頭和書面溝通、解決問題和自我管理的能力)和技術技能(測試、工具知識)方面都缺乏特定技能。總體而言,最重要的技能是溝通技巧、團隊合作能力、解決問題的能力、計劃和組織能力、獲取和處理信息的能力,以及分析定量數據的能力。此外,還應該有人際交往能力、領導力、創造力/創新、動機、職業道德和靈活性/適應性等技能。
大學被視為IT 行業專家的培育基地。因此,大學的一項基本任務是傳授學生上述能力。學科內容知識和能力對于解決復雜任務和專業工作是必不可少的,不能通過完善的關鍵能力來彌補。計算機專業教學的挑戰是涵蓋技術技能和關鍵能力的需求,同時需要考慮到學生學習能力的異質性。
目前,“Java 程序設計”授課常見方法是介紹Java語言基礎知識,剩余的技能,在實際練習中指導。這種方法強烈地展示了硬技能而不是關鍵能力。如何改變傳統的教學方法,研究同時涵蓋這兩個方面的教育方法,是高等教育計算機專業一個需要解決的重大問題。研究目標包括:將關鍵能力的培養納入課堂活動;加強學生合作和交流;強調小組工作和團隊建設的重要性;要求合作學習和同伴教學相結合。
以項目為中心的Java 編程綜合教學方法(CTIRO)的目標是解決計算機專業學生在學科、方法、社會和個人能力的發展問題,是為了教授”Java 程序設計”而開發的。CTIRO 是一種綜合教學方法,整合和結合以下五種教學方法:①基于項目情境教學;②基于項目任務的學習;③基于項目問題的學習;④基于項目技術研究的學習;⑤混合教學。通過靈活、多樣的教學方式來提升學生技術技能和關鍵能力。
“Java程序設計”是計算機專業本科第二學期學生的必修課。它需要總共96個學生學習時間(48個教學時間、16 個實踐課時和32 個課程設計時間),并有5 個學分。該課程的教學包括每周進行的授課和以實驗室形式進行的實踐練習。該課程預期學習成果最初僅包含學科能力:使用算法的能力(基本能力)和分析、設計和實施軟件的能力(軟件開發能力)。CTIRO 的學習成果對關鍵能力進行了擴展(參考表1)。表1 中列出的預期學習成果是在2021-2022 年夏季學期開設課程“Java程序設計”的能力目標。

表1 在“Java程序設計”課程中指定為學習成果的能力
為了幫助學生培養學科和關鍵能力,“Java程序設計”課程從2021-2022 年夏季學期開始使用CTIRO 教學方法。除了教學方法之外,CTIRO 方法還將提供App 工具,可以通過學生的自我評估調查來評估關鍵能力的發展。
CTIRO 所有五種教學方法都用于教學和學習。由于學科知識和能力發展在本課程中非常重要,因此進行了概念演繹傳遞的混合教學。為了培養解決問題和分析思維的能力,基于項目任務的學習包含在本課程中。為了提高社會能力,例如團隊合作和溝通,基于項目問題的學習被應用。為了加強獨立工作和思考能力,應用基于項目技術研究的學習。通過CTIRO實現以下目標:
●重點是基于項目情境的學習。學生通常對算法有直觀的理解,因為日常生活中就會遇到算法程序,例如烹飪食譜、玩棋盤游戲。
●為了在講座中激發學生的積極性,采用小組教學方法。
●為了激勵和吸引學生參與學習編程必不可少的動手活動和編程體驗,在實驗室中應用了基于項目任務的學習。
●為了培養社會和個人能力并激勵學生學習,基于項目問題的學習被應用于實驗室和自學。
●為了培養獨立工作和思考的能力,向學生提供一項基于研究的任務,要求撰寫一份報告。
與傳統講課教學相反,首先通過教授日常生活中的多個典型示例、任務和觀察(基于項目情境的學習)讓學生對主題有一個直觀的理解,通過歸納將理論知識主題概念化。這些概念將在教師授課以及學生在實驗室期間得到驗證。
在混合教學中,將簡短的概念和理論演示與個人和小組工作相結合。例如,提出一個討論話題或給學生5 分鐘的簡短任務,然后在課堂立即討論結果。在每堂課結束時,要求學生以線上調查問卷形式回答以下兩個開放性問題:①我在課堂講座中了解到的是什么?②我在課堂講座中沒有理解的是什么?學生的反饋將作為調整授課過程的依據。
在實驗室中,學生單獨和分組解決由老師給出的問題(基于項目任務的學習)。在解決問題的活動中,學生獲得對該主題的概念性理解,學習所需的理論,并將兩者應用于解決具體問題。
在學生獲得一些編程背景知識和技能后開始基于項目問題的學習(第五周),并取代之前在實驗室練習解決問題的活動。學生需要以2-3人為一組解決兩個項目問題。這些問題是學生在基于項目任務的活動中自己制定和解決的。學生自行組織工作組,組織的原則是確保一個具有較多編程經驗的人在組中,確保組中的每個人都積極參與。結對教學方法的結合對社會能力的培養起到積極的作用。
在基于項目技術研究的學習中,學生們接受一項無需編程的任務。在這個任務中,學生應該研究對象管理和對象的生命周期是如何在Java中完成的。他們需要考慮對象的創建、對象的生命周期和放棄等問題,并在合適的地方使用插圖和代碼示例編寫技術文檔。
除了教學方法之外,CTIRO 方法還將提供一種評估發展關鍵能力的App。自我評估調查表App是基于學生對其自身能力的看法和評估。要求學生使用李克特5 點量表評估課程:“5-同意,4-傾向于同意,3-中立,2-傾向于不同意,1-不同意”。所有課程參與者都需回答問卷。例如,問卷“我有動力參加這門課程”的平均得分為4.3。“我可以應用該學科的基本理論知識和實踐技能”這一陳述的平均分是4.1,“在這門課程中我被鼓勵發展自己的學習技能”這句話的平均值是4.0。這次評估的結果符合我們的預期。
在“Java 程序設計”課程教學中使用CTIRO 的目的首先是讓學生直觀地了解同時具備學科能力和關鍵能力的重要性,其次是讓學生處于有效學習的境地。到目前為止,這些教學改革的結果符合預期。
在這項工作在當前狀態下,由于相對復雜的項目和教授新東西的快速進展,可能會引起批判性討論。例如,當作為編程新手的學生聚集在一起開發復雜的程序(如彩票游戲或壟斷)時,他們很容易不知所措。太困難的任務會導致沮喪,并對動機和學習成果產生負面影響。然而,經驗告訴我們,情況并非如此。學生的積極性高,討論的很熱烈,掌握情況良好。
小組作業并不適合所有學生,例如,一名學生因為自閉癥而不想參加小組作業。出于這個原因,我們允許他獨自完成項目。這個學生沒有達到主要目標,即在小組工作中獲得經驗,然而在學期結束,他的關鍵能力得到了提升,自閉癥也得到改善。
CTIRO 教學方法在“Java 程序設計”課程教學中提高了教師的教學效率和質量,可以激發學生的學習積極性,讓學生產生學習興趣。該方法有助于學生自主學習能力、探究能力和創新能力的提高,提升了學生的關鍵能力,是一種有效的、值得推廣的教學方法。