摘要:大數(shù)據(jù)時代,“計算機科學與技術”專業(yè)“專升本”學生的程序設計能力的提升尤為重要。本文主要針對“計算機科學與技術”專業(yè)“專升本”學生專業(yè)知識基礎兩極分化嚴重的問題,以語言程序設計類課程為例,根據(jù)語言輸入與輸出理論采用分級教學模式,探索語言程序類課程的分級課程教學、分級課程設置以及具體可行的實施路徑,再以《高級語言程序設計》和《數(shù)據(jù)結構》兩門課程的融合分級教學策略,輔助計算機軟考、程序設計競賽等課外學習,進一步提高“專升本”學生的程序設計能力,提升學生的就業(yè)和升學競爭力。
關鍵詞:大數(shù)據(jù)時代,專升本;程序設計;分級教學;計算機軟考;競賽
大數(shù)據(jù)時代為適應產(chǎn)業(yè)升級和經(jīng)濟結構調(diào)整對技術技能人才越來越緊迫的需求,國家將高職教育發(fā)展作為戰(zhàn)略實施,希望通過發(fā)展高職教育緩解當前就業(yè)壓力、解決高技能人才短缺。高職招生規(guī)模的擴大勢必會造成“專升本”生源的多樣性和規(guī)模的擴大,然而,現(xiàn)有的本科教育教學體制,很少有研究專門針對“專升本”學生的教育教學方針,使得現(xiàn)有本科教育和“專升本”教育存在脫節(jié)或者繼續(xù)教育銜接不夠緊密的特點,造成“專升本”學生在本科階段的學習具有獲得感、成就感不足的現(xiàn)象。因此,本文以語言程序設計類課程教學為例,研究更加精準有針對性的“專升本”本科教育教學模式。
由于程序設計類課程是一門特殊的語言,是人與機器交流的語言,我們希望利用語言學習的規(guī)律和特點,基于語言學家Krashen提出的語言輸入與輸出理論,設計針對性的“專升本”學生的,分級《高級語言程序設計》教育教學模式。Krashen指出:“語言輸入如果太容易,就無法起到激發(fā)學習者興趣和動機的作用。語言輸入如果太難,則會讓學習者失去興趣”。因此,其將學習者的當前語言知識狀態(tài)定義為“i”,其下一個語言知識狀態(tài)定義為“i+1”,并指出只有當學習者當前學習的語言知識屬于“i+1”的等級,才能起到對學習者語言發(fā)展的推動用。因此,我們將此作為分級教學的理論基礎,在教學過程的設計和實施中,基于對學生當前語言知識狀態(tài)的充分了解,設計處于“i+1”等級的課程學習資料,使學生學習興趣和課堂參與度地到最大化的調(diào)動。
一、分級教育教學模式
(一)課程分級策略設計
制定多門程序設計類課程動態(tài)聯(lián)動的課程分級策略,使學生在程序類課程的學習中,已具備課程需要掌握的前導知識和應具備實踐能力,做到前后課程的無縫銜接,從而獲得可持續(xù)的發(fā)展。具體的實施路徑為,為了克服程序設計類課程的學習存在理論知識和實踐能力脫節(jié)的問題,設計合理的課程體系和進度,將程序設計類課程分別從理論和實踐兩個維度,按縱向劃分為基礎、綜合、提高三個等級。其中,基礎課程,主要針對基礎薄弱的學生,重點講授語法基礎知識,初步鍛煉學生的編程能力,使學生克服編程的畏難情緒,為下一步的學習打下基礎,建立信心。綜合課程,主要針對有一定編程基礎的學生,重點講授結構和算法,建立程序設計的思想,鍛煉學習解決常見的編程問題的能力。提高課程:主要針對已具備較強編程能力學生,使學生接觸設計模式等高階課程,并結合企業(yè)實際項目需求,使學生具備解決復雜問題,設計并完成項目模塊的能力。對每個等級的課程在劃分為初級、中級和高級三個層次,以實現(xiàn)針對不同基礎的學生的精準授課,同時提高學生程序設計類課程的理論水平和實踐能力。
(二)班級分級策略設計
設計精準和動態(tài)的分級教學分班策略。學生在入學時,可按照個人意愿選擇性地參與不同等級的程序設計類課程的理論基礎和實踐測試,然后在入學培訓時,由各課程的專業(yè)教師,對課程的主要內(nèi)容和學習目標進行介紹。最后,結合學生的個人意愿和該分級的理論和實踐測試結果,進行分班。使得班級內(nèi)學習在進行該門課程的學習時,已具備第“i”級的前導知識,希望繼續(xù)進行第“i+1”級課程的學習。因此,通過該精準的分班策略,學生對該門課程的學習更有自主感和成就感,老師對教學的內(nèi)容也更有針對性,克服了填鴨式教學的缺陷。另外,在具體的教學實踐中,采取浮動的調(diào)整策略,根據(jù)課程考核結果和學生的意愿,可以對學生的進行動態(tài)調(diào)整。
(三)考核分級策略設計
建構與分級動態(tài)教學相適應的形成性評估和終結性評估相結合的多元教學評價體系。首先根據(jù)分級動態(tài)教學思想和教學目標,結合學生實際學習情況,設計科學合理的高級語言程序設計分級考試題庫,以真正實現(xiàn)對學生理論及綜合實踐應用能力的全方位考核和評價。另外,過程性考核方面,在課程設置上可分為理論和實踐兩個部分,在時間維度上可分為課前、課中、課后3個考核部分,并結合程序設計類競賽、大創(chuàng)項目、分組主題報告等程序設計活動,從多個維度給出綜合的過程性評價。
二、教學改革實例—以《高級語言程序設計》和《數(shù)據(jù)結構》整合分級為例
(一)《高級語言程序設計》和《數(shù)據(jù)結構》教學現(xiàn)狀分析
在程序設計類課程中,《高級語言程序設計》是計算機科學與技術專業(yè)最重要的一門基礎和核心課程,為后續(xù)進一步學習算法理論類課程,如《數(shù)據(jù)結構》、《操縱系統(tǒng)》,和項目實踐類課程,如《面向?qū)ο蟪绦蛟O計設計》、《網(wǎng)絡程序設計》打下基礎。現(xiàn)有的《高級語言程序設計》課程體系,普遍都是講授程序設計語言的基本語法和簡單程序設計的方法。然而,“專升本”學生有的在高職階段已經(jīng)對設計語言的基本語法和程序設計設計方法進行了系統(tǒng)的學習,有的則在“專升本”考試時,通過自主學習,完成了部分內(nèi)容的學習,學生之間的基礎差異很大,甚至有部分學生完全沒有基礎。如果沿用傳統(tǒng)的《高級語言程序設計》教育教學方法,教學效果不理想。
《數(shù)據(jù)結構》主要是研究數(shù)據(jù)的關系,討論數(shù)據(jù)基于問題的邏輯結構、基于內(nèi)存物理存儲結構,和基于結構的數(shù)據(jù)各種操作的實現(xiàn)及分析。數(shù)據(jù)結構的不僅是程序設計的基礎,也是設計和實現(xiàn)各種大型應用程序的重要基礎。通過這門課程的學習,使學生通過正確分析數(shù)據(jù)的結構、并合理地選擇數(shù)據(jù)的存儲方式,從而在軟件設計的過程中,設計出科學的操作算法,進一步提高軟件整體質(zhì)量,且為計算機專業(yè)考研的核心課程之一。該門課程學習的前提是,學生具備堅實的《高級語言程序設計》基礎。
目前專升本學生在《高級語言程序設計》和《數(shù)據(jù)結構》兩門課程的學習現(xiàn)狀為:基礎差的同學跟不上目前《高級語言程序設計》的教學進度,沒有形成程序設計思想。進而,對進一步《數(shù)據(jù)結構》的學習更是覺得難上加難。基礎好的同學覺得《高級語言程序設計》的內(nèi)容難度已經(jīng)難以滿足自己對程序設計知識的渴望,難以對學習產(chǎn)生興趣。久而久之,當老師教授超出其知識范圍的新知識時,其也已經(jīng)失去了學習的興趣,同樣使得《高級語言程序設計》的基礎掌握不牢固。其次,在《高級語言程序設計》的學習中,讓學生時難點并且和《數(shù)據(jù)結構》的聯(lián)系最緊密的知識點是結構體、指針、字符串操作、遞歸、結構體指針、指針數(shù)組、函數(shù)指針等內(nèi)容,然而這些內(nèi)容由于較為抽象,學生難以理解和掌握,且受到課時限制,反而被老師進行了弱化。從而,進一步影響了《數(shù)據(jù)結構》的學習效果。《數(shù)據(jù)結構》作為考研必備科目,其重要性不言而喻。由于學生在對《高級語言程序》的學習中沒有建立充分的程序設計思維,而《數(shù)據(jù)結構》教師在授課時,由于課程設置,默認學生已經(jīng)建立程序設計思維,因此《數(shù)據(jù)結構》的學習容易形成理論知識和實踐環(huán)節(jié)的鴻溝。學生雖然知道了一些結構,然而不能對其進行實際的應用,對于程序設計能力沒有提升。因此,我們以這兩門課程作為計算機專業(yè)專升本學生的改革試點,進行課程整合,在一起整體設計,構建《C語言程序設計》與《數(shù)據(jù)結構》的新的分級程序設計教學體系,提高程序設計教學的質(zhì)量,改革教學方法,提升學生在學習中的獲得感。減少課程間的鴻溝,降低學習學習的難度,實現(xiàn)理論可以指導實踐,實踐也進一步促進理論的理解和應用。從而,緩解當前專升本學習對程序設計類課程的困境,為專升本學生后續(xù)的就業(yè)和進一步深造打下基礎。
(二)《高級語言程序設計》和《數(shù)據(jù)結構》整合分級教學改革
在教學改革的實踐過程中,將兩門課程的內(nèi)容進行重新整合和劃分, 將課程分為三個等級(基礎、綜合、提高),學生按照入學成績、理論、實踐考核以及個人意愿進行分班。基礎班的授課內(nèi)容主要包含基礎語法、利用for循環(huán)以及嵌套循環(huán)結合一維數(shù)組、二維數(shù)組來解決常見的基礎算法的設計與實現(xiàn)。學生要能夠獨立的編寫并修改程序,給出一個代碼,學生要能夠正確分析其功能,給出一個功能和部分代碼,學生要能夠?qū)⒋a的關鍵部分補充完整。為了實現(xiàn)這些目標,在理論上,學生必須掌握的是變量在計算機中是如何存儲和修改的,數(shù)組中變量的存儲形式,如何使用數(shù)組下標來操作數(shù)組,如何對輸入變量和目標輸出變量基于變量、數(shù)組等存儲空間并結合if、for等邏輯控制的使用建立聯(lián)系,得到正確的輸出,并進一步,將這樣的聯(lián)系轉(zhuǎn)換為語言的實現(xiàn)。在實踐上,學生要熟悉編譯環(huán)境的使用,能夠根據(jù)工具中提供的調(diào)試工具,修改代碼中錯誤的語法和邏輯。
綜合班的授課主要包含指針、結構體、鏈表、隊、棧、綜合實驗等,主要的設計思想是,通過將《高級語言程序設計》中的高階語法和數(shù)據(jù)結構中的基本結構相結合,使學生在理解并牢固掌握了指針、結構體、鏈表等高階語法的基礎上,再接觸數(shù)據(jù)結構中的幾個簡單的基本結構。這樣設計的好處是,學生學習完高階語法,立即可以將其用在基本結構的具體實現(xiàn)中,既練習了高階語法的使用,又能夠加深對基本結構的理解和應用,起到了相互促進的作用。克服了以前單獨授課,高階語法講解粗略,學生難以應用,數(shù)據(jù)結構只理解基本思想,學生對復雜問題的分析難以使用結構來構建,程序設計能力的提升困難的問題。最后再通過綜合程序設計大作業(yè)的完成,更進一步建立了復雜問題的程序設計能力。提高班的授課主要包含更復雜的結構及算法的講解和學習,學習完一個結構或算法,講解其應用,并提供實際的案例供學生學習,擴寬其眼界,為學生的就業(yè)和進一步深造打下基礎和指明方向。如,在實際的教學中,在對應的結構講解中,引入一元多項式的代數(shù)運算、迷宮問題、俄羅斯方塊、約瑟夫環(huán)問題、打印機優(yōu)先隊列問題、社交網(wǎng)絡問題等。這些通過利用所學的結構來解決這些實際問題,能大大提升學習對程序設計的興趣,并且提升其設計的編程設計能力和實際的解決問題能力。另外在提高班的課程設計中,還需要特別培養(yǎng)學生的自學能力,通過查詢資料和學習解決給定問題的能力,以及知識的總結與歸納能力,建立終身學習的思維模式。
(三)《高級語言程序設計》和《數(shù)據(jù)結構》整合分級考核改革
在《高級語言程序設計》和《數(shù)據(jù)結構》整合分級考核策略的設計中,應重點突出每個階段課程在銜接處知識點的考核,檢驗學生是否達到進入下一級課程學習所具備的知識和技能。針對基礎班,采取實踐和理論并重的原則,既要考核學生對基礎語法的掌握,也要考核學習是否具備基本的編程能力,是否能夠根據(jù)書本的實際例子,編寫并調(diào)試功能相近的代碼。針對綜合班,應考查學生應用高階語法來實現(xiàn)某一結構的能力,測試學生是否能夠?qū)⒔Y構理論具像化到復雜程序的設計中去。針對高級班,應重點考查學生對高級算法的掌握和靈活應用,是否能夠解決實際問題。
(四)《高級語言程序設計》和《數(shù)據(jù)結構》整合分級競賽策略
為進一步補充課內(nèi)教學的不足,增強學生的興趣采取“以賽帶練”、“以賽促學”,在程序設計競賽的管理和組織中,設計分級比賽的策略。通過參與程序設計類競賽,不僅學生的學習質(zhì)量得到了有效地提升,同時學習質(zhì)量的提高又反過來促進學生更加努力的完成程序設計任務。程序設計類的競賽,主要有ACM-ICPC 競賽,藍橋杯全國軟件和信息技術專業(yè)人才大賽,其組織形式,包含校賽、省賽、國家級比賽。所有的專升本學生都需要參加校賽,獲取課外研學分。通過校內(nèi)選拔的學生可以進行一步參加省賽,省賽和國家級賽事的籌備有專業(yè)的老師進行賽前指導。比賽成績是學習對程序設計類課程學習情況和教師的教學質(zhì)量最好的檢驗,可以檢驗學生是否形成編程思想,建立了利用計算機求解問題的邏輯思維能力。并且可以體現(xiàn)學生在省內(nèi)高校、甚至是全國范圍內(nèi)處于什么等級。教師也可以進一步根據(jù)賽事情況來進一步改革教學,使得程序設計類課程教學的教學改革有了抓手。其次,比賽的組隊原則為“以老帶新”的梯隊建設,體現(xiàn)了分級原則,這樣不僅在參賽隊伍內(nèi)形成的新舊隊員的更替,同時也實現(xiàn)了知識的分級延續(xù)。
(五)《高級語言程序設計》和《數(shù)據(jù)結構》分級教學備戰(zhàn)計算機軟件考試
計算機軟件資格考試分為初級、中級、高級三個等級,取得初級資格可聘任技術員或助理工程師職務;取得中級資格可聘任工程師職務;取得高級資格,可聘任高級工程師職務。“專升本”學習在學習程序設計課程時,可以同時準備該考試,分別對應了《高級語言程序設計》和《數(shù)據(jù)結構》分級教學的三個等級。因此,教師在教學過程中,可以增加計算機軟件資格考試中的真題進行講解。計算機軟件資格證書的取得是學習從事軟件專業(yè)崗位工作的水平和能力的實證,可以提升學生的就業(yè)競爭力。
三、結束語
總之,針對大數(shù)據(jù)時代專升本學生程序設計能力的提升,將程序設計類課程進行分級教學,需在充分了解學生學習基礎的情況下進行精準分班。并在每個等級的課程設置上要設計科學合理的教學目標,激發(fā)學生興趣,充分從理論和實踐兩個方面提升學生的程序設計能力,各實現(xiàn)級別間的無縫銜接。最后,通過多樣性的分級考核,給出綜合全面的評價。
作者單位:徐藝? ? 貴州師范學院 數(shù)學與大數(shù)據(jù)學院
參? 考? 文? 獻
[1]羅惜靜.高職擴招下分層分類教育教學管理新模式探索[J]. 教育教學論壇,2021(51):2.
[2] Krashen Stephen D. The Input Hypothesis: Isuesand Implications[M].London:Longman,1985:62.
[3]崔艷菊. 大學英語分級教學的教改理論及管理模式[J]. 天中學刊, 2012, 27(2):2.
[4]劉飛飛. 面向程序設計類課程的MOOC+SPOC混合教學模式[J]. 辦公自動化, 2020(18):2.
[5]周翔, 張廷萍. 程序設計基礎類課程”線上+線下”混合式教學模式實踐[J]. 計算機教育, 2021(8):4.
[6]湯偉.《數(shù)據(jù)結構》和《C語言程序設計》新教學模式研究[J]. 科技資訊, 2017, 15(24):2.
[7]黃海芳,方麗,余宇華.基于競賽的程序設計類課程教學改革[J]. 電腦知識與技術:學術版, 2015(2X):2.