程序設計類課程是大學本科網絡空間安全和計算機等相關專業基礎課程或者核心課程,具備強烈的實踐性和應用性[1]。此類課程要求學生通過實踐性教學,掌握編程語言知識和編程技術,掌握程序設計的思想和方法,擁有利用編程語言解決實際問題的能力。微軟公司首席法務官Brad Smith已經把計算機科學提升到國家戰略的高度,并呼吁制定更具競爭力的教育策略[2]。國務院《關于印發“十三五”國家科技創新規劃的通知》明確指出,“要面向云計算、大數據等新需求開展操作系統等關鍵基礎軟硬件研發,扭轉我國基礎信息產品在自主保障等方面的被動局面”[3]。為“踐行國家戰略,助力創新創業”,“張江杯”“百度之星”“華為軟件精英挑戰賽”等相關程序設計大賽也蓬勃展開。因此,圍繞國家戰略和《教育部2018年工作要點》的精神和要求,積極探索程序設計類課程實踐教學的新思路,促進軟件開發人才的培養尤為必要。
程序設計類課程實踐教學是培養學生實踐能力、動手能力、綜合能力的主要手段,是全面提升學生綜合素質的必要措施。然而,程序類課程傳統實踐教學實例與實際工程應用聯系松散,實驗平臺功能單一、關聯不夠緊密,使得學生學習過程中只見點,不見面,沒有整體布局和視角,且不能很好地融會貫通各個子學習模塊。為此,如何以平臺為支撐,實踐為導向,結合學生實際,個性化設計實踐教學環節,開展交互式云端教學具要重要意義。
由于程序設計的復雜性和平臺資源的有限性,使得程序設計類課程實踐教學在實際教學過程中常面臨以下困難[4-5]。
1.編程訓練偏少,理論和實際難以結合。程序設計類課程通常是計算機相關專業的專業必修課或選修課,包括理論教學和實驗教學兩個部分,其中,理論教學學時一般占總學時的大部分。例如,總學時為32學時,其中理論教學24學時,實驗8學時。相關程序設計類課程學時分配如表1所示。然而,程序設計課程實踐性極強,學生通常沒有充分的時間對所學知識點進行理解和消化。學生編程訓練偏少,理論和實際難以結合。

表1 程序設計類課程學時分配
2.實驗室資源有限,實驗內容偏少。高校實驗室是教學科研活動和大學生人才培養的基地,是鍛煉學生實踐能力的重要場所。然而,實驗室程序設計類實驗內容較為分散,關聯松散。實驗室功能單一,且實驗內容偏少。上述問題不僅導致實驗室資源浪費,而且不利于學生實踐能力的培養。
3.編程上手困難,學生存在畏懼心理。程序設計語言是一種計算機編程語言,其實質是一組記號和一組規則,需要學生利用邏輯思維去解決某個問題。然而,學生常缺乏動手編程的信心,感覺編程上手困難,不知如何入手、如何分析和解決實際問題。最終,使得學生對其存在畏懼心理。
4.書本文字單一,學生感覺枯燥。程序設計類課程書本文字單一,實驗過程不詳細。書本不能為學生提供色彩豐富、內容翔實的實驗指導。在實驗過程中,單一的書本內容導致學生學習效率低,感覺枯燥,不能很好地完成實驗內容。
筆者針對程序設計類課程實踐教學的實際情況,基于“在線平臺+實踐驅動”模式,對程序設計類課程實踐教學方式進行了設計,如圖1所示。首先,學生通過課堂理論的學習,熟練掌握程序設計語言的理論知識,為后面實踐編程打下良好基礎。其次,學生根據教學安排和個人的學習情況,個性化設置系統功能,包括系統操作界面設置和實驗內容設置。然后,以實踐驅動為導向,學生自主學習和實驗開發,通過平臺完成學生學習的全過程跟蹤。最后,實時線上線下和同學、老師互動交流,完成輔導,引導創新。
基于“在線平臺+實踐驅動”的程序設計類課程實踐教學模式,從在線平臺和實踐驅動兩個方面入手,即以平臺為支撐,實踐為導向,強調學生的主觀能動性。結合學生實際,個性化設計實踐教學環節,開展交互式云端教學。

圖1 新模式下的實驗方案示意圖
1.結合在線實驗平臺,優化實驗資源。在當今信息時代,在線程序設計類實驗平臺不同于傳統的純實驗室教學,前者擁有更大的內容拓展空間,提供更好的互操作性和用戶體驗。如商業化的動手做實驗,輕松學IT的實驗樓,為用戶提供了一個集線上討論、學習、實驗于一體的在線學習平臺。同時,也有免費的輔助程序設計課程教學的在線代碼判題系統We?Judge,他擁有強大的在線教學管理,正規的程序類競賽和多樣化的判題技術,致力于打造更好的程序教學輔助系統。

圖2 新模式下的在線實驗界面
在線平臺不受時間、實驗內容和場地的限制,并可對實驗環境進行隔離,讓學生并行操作實驗。更重要的是,我們可以根據學生學習的實際情況,靈活設置實驗內容,充分契合學生的學習興趣和進度。例如,Java語言基本語法中關鍵字、標識符、注釋等相關知識的實驗,其在線實驗界面如圖2所示。通過平臺,學生可以一邊學習、一邊操作、一邊交流,完成多方位的實驗學習。在線平臺將有限的實驗室物理空間,擴展到無線的網絡空間,為學生提供了一種線上可交流互動,線下可請教指導的交互式云端教學。
2.以學生為主體,教師為主導,實踐為導向。《國家中長期教育改革和發展規劃綱要(2010-2020年)》明確指出“要以學生為主體,教師為主導,充分發揮學生的主動性”。在程序設計類課程中,我們著重強調“以學生為主體,教師為主導,實踐為導向”。教師的引導為外因,學生的學習為內因,其中,工程實踐是聯系教師與學生關系的核心紐帶。教師通過線上平臺為學生提供充分的工程實踐引導,激發學生的學習興趣,使得學生從被動的實驗主體,轉變為知識的主動探索者,充分調動學生的主觀能動性,培養學生勇于探索和學習的精神。
基于實踐驅動的程序設計類課程實踐教學方式能夠在學習內容方面為學生提供更多好的選擇[6]。一方面,學生可以結合自己的興趣愛好和學習進度,通過發現和提出自己感興趣和關心的現實問題,合理安排自主的個性化學習。興趣是一個人力求認識和趨向某種客體的積極態度的個性傾向[7]。我們常說,興趣是學生最好的老師,通過興趣助力學生的實踐學習,兩者相輔相成。另一方面,基于實踐驅動的教學,使得更多問題來源于具體實踐與現實應用,讓學生在實踐與應用中發現問題、分析問題、解決問題,為學生提供良好的實驗環境(包括線上環境和線下環境),培養學生思考、實踐、創新等綜合能力。
總之,“在線平臺+實踐驅動”的實踐教學模式,為程序設計類課程的實踐教學提供了新的思路。利用信息時代下交互式云端平臺,從實踐教學實際出發,結合個性化實踐教學內容設計,充分調動學生主觀能動性,最終培養合格的軟件開發人才。