高賢強(qiáng)
(塔里木大學(xué)信息工程學(xué)院,阿拉爾843300)
Java 作為一門面向?qū)ο蟮挠?jì)算機(jī)編程語言,以簡(jiǎn)便高效、平臺(tái)關(guān)聯(lián)度高、可移動(dòng)性好、穩(wěn)定性強(qiáng)、支持多線程傳播等優(yōu)勢(shì)發(fā)展為現(xiàn)今廣受社會(huì)大眾歡迎的計(jì)算機(jī)開發(fā)語言。根據(jù)TIOBE 開發(fā)語言的統(tǒng)計(jì),Java 語言近十年來一直排在語言開發(fā)榜的首位[1]。由于Web 網(wǎng)絡(luò)應(yīng)用開發(fā)技術(shù)的發(fā)展,特別是互聯(lián)網(wǎng)+、云計(jì)算、大數(shù)據(jù)、人工智能時(shí)代的來臨,使得越來越多的軟件開發(fā)者開始選擇將Java 作為計(jì)算機(jī)程序開發(fā)語言。諸多高等院校也已經(jīng)將《Java 程序設(shè)計(jì)》課程作為計(jì)算機(jī)專業(yè)的必修課程,可是由于在這以前,學(xué)校已經(jīng)設(shè)置了C 語言、C++等程序設(shè)計(jì)相關(guān)課程,因而導(dǎo)致《Java 程序設(shè)計(jì)》這門課程的實(shí)際學(xué)時(shí)課時(shí)相對(duì)偏少,普遍表現(xiàn)為32-56 個(gè)學(xué)時(shí),我校一直以來是48 學(xué)時(shí),理論32 學(xué)時(shí),實(shí)踐16 學(xué)時(shí)?!禞ava 程序設(shè)計(jì)》這門課程涉及到的教學(xué)內(nèi)容相對(duì)來說比較多,可是絕大多數(shù)的普通本科院校大學(xué)生的數(shù)學(xué)基礎(chǔ)較差,邏輯思維能力薄弱,而以往的教學(xué)方式偏向于重視對(duì)課本知識(shí)的一般性講授,而片面忽略了對(duì)學(xué)生實(shí)踐演示和應(yīng)用能力的鍛煉,造成學(xué)生不能了解和掌握面向計(jì)算思維的基本概念和定義。應(yīng)該怎樣在有限的上課時(shí)間內(nèi)讓學(xué)生可以真正掌握到面向計(jì)算對(duì)象的編程精髓,進(jìn)而提高學(xué)生的計(jì)算機(jī)編程能力,是目前我國(guó)高等院校計(jì)算機(jī)專業(yè)教師需要重點(diǎn)教學(xué)改革的關(guān)鍵部分之一。
當(dāng)前,Java 課程教學(xué)主要涵蓋了課本理論與上機(jī)操練兩大部分,然而因?yàn)楝F(xiàn)今諸多高等院校的計(jì)算機(jī)教學(xué)依然還是沿襲重理論輕鍛煉的教學(xué)習(xí)慣,因而大學(xué)課堂內(nèi)課本理論教學(xué)的學(xué)時(shí)一般遠(yuǎn)遠(yuǎn)超過實(shí)踐教學(xué)的上課學(xué)時(shí),甚至絕大多數(shù)本科學(xué)校的理論授課與實(shí)踐教學(xué)的學(xué)時(shí)比可以達(dá)到3:1,缺乏充分的上機(jī)培訓(xùn)時(shí)間,自然學(xué)生也就缺少更多的實(shí)踐演練機(jī)會(huì)[2]。在短時(shí)間內(nèi)的上機(jī)實(shí)踐之中,檢驗(yàn)性實(shí)踐又在這當(dāng)中占據(jù)了相當(dāng)大的比例,而檢驗(yàn)性實(shí)踐一般情況下其難度較低并設(shè)有標(biāo)準(zhǔn)值,所以這類實(shí)踐機(jī)會(huì)通常狀況下很難發(fā)揮出學(xué)生對(duì)專業(yè)內(nèi)容的學(xué)習(xí)積極性,也不利于提高學(xué)生的創(chuàng)新思維能力,最終導(dǎo)致有利于學(xué)生實(shí)踐演練能力培養(yǎng)的全面性、科學(xué)性的實(shí)踐內(nèi)容在實(shí)際上課學(xué)時(shí)中占據(jù)的比例相對(duì)偏少。課本理論作為實(shí)踐演練的基礎(chǔ),在實(shí)際教學(xué)應(yīng)用過程中,設(shè)計(jì)科學(xué)、課時(shí)安排合理的書本理論教學(xué)和實(shí)踐內(nèi)容順序,會(huì)讓學(xué)生全面綜合掌握面向計(jì)算思維的編程概念,了解面向計(jì)算思維的編程概念后,學(xué)生就會(huì)主動(dòng)將邏輯思維用在計(jì)算機(jī)程序設(shè)計(jì)的相關(guān)學(xué)習(xí)過程中。如此一來,在學(xué)習(xí)的時(shí)候就會(huì)自然而然的將計(jì)算機(jī)程序設(shè)計(jì)語言中的“對(duì)象”、“類”、“多態(tài)”、“接口”等概念與現(xiàn)實(shí)生活中的“對(duì)象”(如“Tom 貓”、“王峰”等)、“類”(如“植物類”、“動(dòng)物類”等)更好地聯(lián)系起來,這就能幫助學(xué)生更好地去理解面向計(jì)算思維的專業(yè)概念,也更加符合學(xué)生的學(xué)習(xí)習(xí)慣。具體的Java 課程設(shè)計(jì)的課時(shí)安排見表1 所示。
表1《Java 程序設(shè)計(jì)》課程理論學(xué)時(shí)安排
掌握了面向計(jì)算思維的概念后再去學(xué)習(xí)Java 語言的相關(guān)專業(yè)基礎(chǔ)知識(shí)就會(huì)變得相對(duì)比較容易一些,由于學(xué)生以前就已經(jīng)學(xué)習(xí)了計(jì)算機(jī)專業(yè)的其他相關(guān)基礎(chǔ)性的程序設(shè)計(jì)語言知識(shí),如C 語言,對(duì)于計(jì)算機(jī)編程語法、控制語句、數(shù)組、數(shù)列組合等概念并不陌生,這時(shí)只需要重點(diǎn)講解Java 與其他計(jì)算機(jī)程序語言在語法程序、編程過程上的差別以及新增功能即可。這種先見“樹木”后見“樹葉”的具象式教學(xué)手段就是要做到“從第一堂課開始就著力培養(yǎng)學(xué)生面向計(jì)算思維的思想[3]”。這除了可以鍛煉學(xué)生掌握面向計(jì)算思維的編程能力以外,還有利于提高學(xué)生的創(chuàng)新思維能力。
計(jì)算思維是通過利用計(jì)算機(jī)科學(xué)的基礎(chǔ)定義去進(jìn)行問題解釋、程序設(shè)計(jì)以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)的一系列創(chuàng)造性活動(dòng)。這個(gè)定義詳細(xì)描述了計(jì)算機(jī)科學(xué)的基本概念,融進(jìn)了數(shù)學(xué)思維、物理思維、工科思維,因而在《Java 程序設(shè)計(jì)》課程中大范圍引進(jìn)計(jì)算思維,就是將其與Java 語言相聯(lián)系,作為一種高效的解決問題的手段,應(yīng)用在計(jì)算機(jī)語言教學(xué)課堂上[4]。Java 程序設(shè)計(jì)課程由于邏輯性強(qiáng)、實(shí)踐性強(qiáng)的特點(diǎn),重視多元化的考核方法,力主從多個(gè)方面去考核學(xué)生的綜合素質(zhì),注重考核學(xué)生的上機(jī)演練能力、團(tuán)隊(duì)協(xié)作能力以及創(chuàng)新能力,考核方式和培養(yǎng)目標(biāo)相聯(lián)系,主要評(píng)價(jià)在統(tǒng)一的培養(yǎng)標(biāo)準(zhǔn)下大學(xué)生的學(xué)習(xí)完成度及其進(jìn)展情況。根據(jù)筆者多年的實(shí)際教學(xué)經(jīng)驗(yàn),《Java 程序設(shè)計(jì)》課程的大學(xué)教學(xué)一般來說會(huì)分成四個(gè)板塊循序漸進(jìn)地開展,換句話說Java 語言基礎(chǔ)概念、Java 面向計(jì)算思維的類和對(duì)象概念、Java 常用類以及Java 高級(jí)應(yīng)用開發(fā)。只是簡(jiǎn)單采取傳統(tǒng)的總結(jié)性評(píng)價(jià)方式,是沒有辦法體現(xiàn)出學(xué)生階段性學(xué)習(xí)的實(shí)際狀況[5]。根據(jù)課堂實(shí)際教學(xué)進(jìn)度,針對(duì)四個(gè)教學(xué)板塊進(jìn)行階段性檢測(cè),進(jìn)而利用這四次平時(shí)成績(jī)得到學(xué)生最終的階段性學(xué)習(xí)成績(jī)。基于計(jì)算思維的《Java 程序設(shè)計(jì)》課程的具體考核與評(píng)價(jià)主要是由以下幾個(gè)部分組成,具體見表2 所示。
表2 基于計(jì)算思維的《Java 程序設(shè)計(jì)》課程考核與評(píng)價(jià)
平時(shí)表現(xiàn)情況,占比10%。按照學(xué)生的實(shí)際出勤狀況、課堂基本表現(xiàn)、課堂作業(yè)完成進(jìn)度等進(jìn)行評(píng)分。平時(shí)作業(yè),占比20%。針對(duì)教師布置的平時(shí)作業(yè)和階段性作業(yè),對(duì)學(xué)生的學(xué)習(xí)進(jìn)度進(jìn)行評(píng)價(jià)。項(xiàng)目演練,占比20%。進(jìn)行實(shí)驗(yàn)以前教師必須將《實(shí)驗(yàn)指導(dǎo)說明書》發(fā)給學(xué)生,要求學(xué)生課下閱讀,充分做好實(shí)驗(yàn)準(zhǔn)備[6]。能力考核,占比10%。主要考核學(xué)生在統(tǒng)一的培養(yǎng)標(biāo)準(zhǔn)和學(xué)習(xí)目標(biāo)之下,除了課堂基礎(chǔ)內(nèi)容外,學(xué)生還需掌握專業(yè)以外的知識(shí),以便對(duì)其學(xué)習(xí)能力進(jìn)行專業(yè)評(píng)價(jià),這主要是根據(jù)學(xué)生掌握知識(shí)量的多少、學(xué)習(xí)進(jìn)度等進(jìn)行評(píng)分。期末考試,占比40%。按照學(xué)校培養(yǎng)目標(biāo)的不同,教師有必要設(shè)計(jì)出不同的試卷,并根據(jù)最終考試結(jié)果進(jìn)行專業(yè)評(píng)分。
學(xué)習(xí)Java 程序設(shè)計(jì)需要比較強(qiáng)的邏輯思維,較為扎實(shí)的數(shù)學(xué)基礎(chǔ)[7]。計(jì)算機(jī)程序設(shè)計(jì)需要著重對(duì)編程問題進(jìn)行邏輯分析,進(jìn)而找出解決問題的具體辦法,建構(gòu)出基本的數(shù)學(xué)模型,再利用計(jì)算機(jī)語言進(jìn)行描述。我校的大部分本科學(xué)生,他們數(shù)學(xué)基礎(chǔ)相對(duì)來說比較薄弱,缺少一定的邏輯思維能力,一旦遇到問題就不知道應(yīng)該怎樣解決。他們?cè)谟?jì)算機(jī)設(shè)計(jì)程序的初級(jí)階段就會(huì)顯得手足無措,從而喪失學(xué)習(xí)信心達(dá)不到較好的課堂效果。因此,在實(shí)際授課過程中,對(duì)具體的概念的講解,要引入計(jì)算思維的概念,例如,byte a=5,要引導(dǎo)學(xué)生以計(jì)算機(jī)的思維來思考問題,如何使用8 個(gè)bit 存放1 個(gè)byte 數(shù)據(jù)。同時(shí),在教學(xué)設(shè)計(jì)上偏向于采取較大難度的案例,見表3 所示。
表3 培養(yǎng)計(jì)算思維的案例設(shè)計(jì)
需要使學(xué)生可以精準(zhǔn)理解面向計(jì)算思維的一系列概念,最好的手段就是設(shè)計(jì)實(shí)例[8]。面向計(jì)算思維的專業(yè)概念理解是:將自然界中相關(guān)事物的聯(lián)系有效應(yīng)用到計(jì)算機(jī)編程程序軟件中。所以,絕大部分的教師都會(huì)使用在日常生活中隨處可見的實(shí)例,去講解面向計(jì)算思維的眾多抽象的編程概念,如此一來學(xué)生對(duì)于課堂知識(shí)就會(huì)容易掌握得多。然而,按照最近幾年的Java 程序設(shè)計(jì)課堂教學(xué)過程中,可以得出這樣一個(gè)結(jié)論,教師有效引用日常生活中的經(jīng)典實(shí)例去說明專業(yè)基礎(chǔ)知識(shí)與相關(guān)概念,這樣不單單可以大幅度激發(fā)出學(xué)生對(duì)計(jì)算機(jī)編程設(shè)計(jì)的積極性,而且還可以幫助學(xué)生更好地去理解這些抽象概念,并可以準(zhǔn)確理解其在一個(gè)計(jì)算機(jī)程序設(shè)計(jì)中所起到的作用。
根據(jù)學(xué)生需要學(xué)習(xí)到知識(shí)以及對(duì)知識(shí)的掌握程度,重新制定Java 教學(xué)內(nèi)容,適當(dāng)?shù)倪M(jìn)行調(diào)整,同時(shí)不能夠偏離解決專業(yè)問題思路,對(duì)知識(shí)重新進(jìn)行分析,最終組建一個(gè)和計(jì)算思維有關(guān)的全新的課程知識(shí)體系。圍繞“計(jì)算思維”,可以將《Java 程序設(shè)計(jì)》課程基礎(chǔ)知識(shí)及類和對(duì)象兩部分邏輯性較強(qiáng)的內(nèi)容進(jìn)行分解,一般分為5 個(gè)教學(xué)單元:計(jì)算思維簡(jiǎn)述、計(jì)算機(jī)思維-程序系統(tǒng)結(jié)構(gòu)、分解思維-符合對(duì)象以及對(duì)象之間的關(guān)聯(lián)度、復(fù)合思維-繼承、執(zhí)行思維-多態(tài)、抽象思維-泛型,要求在每一個(gè)教學(xué)單元的設(shè)計(jì)內(nèi)容中,敘述清楚課程基礎(chǔ)知識(shí)背后蘊(yùn)含的計(jì)算思維。
本文對(duì)《Java 程序設(shè)計(jì)》課程引入計(jì)算思維的理念,根據(jù)《Java 程序設(shè)計(jì)》課程的相關(guān)教學(xué)難題,依托計(jì)算思維的有效發(fā)揮和相關(guān)優(yōu)勢(shì),對(duì)《Java 程序設(shè)計(jì)》課程進(jìn)行教學(xué)改革。通過實(shí)際教學(xué)檢驗(yàn),引入計(jì)算思維理念后,將更能增強(qiáng)學(xué)生的邏輯思維能力,激發(fā)學(xué)生學(xué)習(xí)本課程的興趣。同時(shí),希望本文的研究能夠?yàn)槊嫦蛴?jì)算思維的《Java 程序設(shè)計(jì)》課程教學(xué)改革的提供參考。