《Java就該這樣學》基于建構(gòu)主義教育思想,通過大量循序漸進的案例,讓學生在體驗中掌握Java語句,同時獲得編程能力、排錯能力和學習能力!禞ava就該這樣學》多次使用陷阱式教學法,幫助學生深刻理解所學知識,理解面向?qū)ο缶幊趟枷。《Java就該這樣學》詳細介紹了Java程序設(shè)計的開發(fā)環(huán)境、概念和方法。內(nèi)容分為四個階段:小案例階段、小案例推動大項目階段、重點建立復(fù)雜編程邏輯階段和綜合大項目階段,用于鞏固面向?qū)ο缶幊趟枷,并且彌補即時聊天項目在數(shù)據(jù)庫應(yīng)用上的不足。
本書的內(nèi)容和組織形式立足于高校教學教材的要求,適用于從職業(yè)院校到重點本科院校的課程和學生群體,可以作為Java語言入門教材,或者面向就業(yè)的實習實訓教材,同時也可以作為計算機技術(shù)的培訓教材,讀者完全可以通過本書自學Java技術(shù)。
一直在尋找一本能夠快樂教大家學編程的書,今年碰到王洋老師,被他的“教育是用生命影響生命的過程”而打動!再仔細看他的書,一看不忍釋卷,不是一般的有趣,簡直是相當?shù)挠腥,真如王洋老師自己所說的,他學中文的妻子也跟著《Java就該這樣學》學會了Java編程! 讓我們一起來隨著《Java就該這樣學》玩代碼吧!
關(guān)于學習
一直以來人們都認為教師和書籍是知識的載體,教學過程就是將知識傳遞給學生,于是書上寫滿了正確的知識,學生看書就可以迅速掌握知識,理論上這是高效率的系統(tǒng)。事實上只有極少數(shù)人能夠適應(yīng)這樣的系統(tǒng),因為這些知識也是有人經(jīng)過一個過程得到的,忽略了發(fā)現(xiàn)知識的過程,而直接將結(jié)果傳遞給學生,似乎高效率,但是學生卻常常無所適從,因為學習是發(fā)現(xiàn)知識的過程,而不是記住知識的過程。
好在建構(gòu)主義教育思想指明了更加適合學生的教學過程,在這一思想下,書和教師從正確知識的傳遞者,轉(zhuǎn)變成探索知識的引領(lǐng)者,帶領(lǐng)著學生去體驗、去感覺、去發(fā)現(xiàn)屬于學生自己的知識。正如這本書,讀者會發(fā)現(xiàn)有60%的內(nèi)容是不正確的,這些錯誤是學習過程避免不了的。優(yōu)秀學生的不同之處就是,通過自己的努力在到達學習目標的道路上,不斷地調(diào)整,將錯誤的理解剔除掉,問題是大多數(shù)學生無法完成這個過程,要么陷入錯誤的包圍中,最終放棄了探索,要么通過死記硬背來達到學習目的,結(jié)果是學生能夠通過考核,卻沒有運用知識的能力。學習離正確的軌道越來越遠,甚至很多人迷失了學習的真正目標,將記住知識作為唯一的目標,很多教育者苦苦探索的正確的教育途徑,在教育理論研究中早已經(jīng)被發(fā)現(xiàn),那就是建構(gòu)主義教育。
建構(gòu)主義教育思想從來不認為掌握知識是學習的最終目的,我認為學習的目標是認知、能力和精神。認知和知識是不同的,知識停留在人的頭腦中,而認知是能夠被熟練使用的知識;能力在不同的領(lǐng)域是不同的,在這本書的范疇內(nèi),一個優(yōu)秀的Java程序員,需要有編程的能力、排除錯誤的能力、探索新技術(shù)的能力;如果學習的目的僅僅是為了掌握一項技術(shù),那么人終將會被新的技術(shù)手段所替代,任何學習過程都需要是生命價值的提升,一個程序員需要有嚴謹?shù)膽B(tài)度、專注的品質(zhì)、探索的精神和創(chuàng)新的意識。這些學習目標不是一節(jié)課或一個章節(jié)的任務(wù),而是需要通過整個教學過程來建構(gòu)。
一直以來學生的學習動機都是教育理論界熱衷討論的話題,我認為學生學習的動機有三個方面:一是為了獲得喜悅,二是為了消除恐懼,三是自我效能。好的成績可以獲得家長、老師的表揚,可以有更好的名次甚至獎學金;而差的成績會被批評、留級,甚至拿不到畢業(yè)證。我們發(fā)現(xiàn)普遍的教學手段是為了推動學習動機的前兩個方面,這造成了兩個可能的結(jié)果:一是有些學生對于獎勵或者懲罰麻木了,一旦喪失了學習動機,自然好的成績就無從談起;二是在另外一些學生身上,這些手段一直能夠起作用,我們會得到所謂的好學生,問題是,這些動機是外界推動的,而非內(nèi)生的,這些習慣于此的好學生或許一生都在意別人的評價。如果教學過程能夠激發(fā)學生的自我效能,讓學生的學習是基于自己強烈的愛好和成功的喜悅,我們就一定能夠培養(yǎng)出優(yōu)秀的學生,而他們也將一生受益。
問題是,為什么建構(gòu)主義教育思想如此的好,卻很少在教學實踐中應(yīng)用?這是因為建構(gòu)主義和現(xiàn)有的教學形式相比仍有些弱點:
第一,建構(gòu)主義教育的效率理論上比較低,F(xiàn)在我們能夠在短時間內(nèi)將大量的正確知識傳遞給學生,學生只需要理解記憶就好了,而建構(gòu)主義教育要呈現(xiàn)知識探索的過程,這樣會消耗更多的時間和精力。
第二,建構(gòu)主義教育的效果不可控。學生是通過體驗自己發(fā)現(xiàn)整合知識,那么不同的學生或許得到的結(jié)論不同、深度不同。
第三,考核困難。我們不能再用知識點來考核學生,因為教學過程中就沒有傳遞經(jīng)典的知識點。
第四,實施建構(gòu)主義教育對于教師的要求比較高。教學過程的設(shè)計建立在對學生深入理解的基礎(chǔ)上,教師不僅僅要準備知識。
為了實現(xiàn)上述效果,教師將扮演不同以往的角色,教師不再是知識的載體,教師將陪伴著學生一同探索,帶領(lǐng)著學生犯錯誤,引領(lǐng)著學生思考整合。為了克服建構(gòu)主義教育思想的弱點,在寫這本書時,我基于對學生和技術(shù)的理解,剔除了大量知識點的講解,在反復(fù)的教學實踐中,已經(jīng)能夠獲得和傳統(tǒng)教學相同的教學效率。另外,我大量總結(jié)和研究了學生的學習過程,建立了學生在學習Java過程中的學習曲線,依照學習曲線來評估和考核學生的學習效果。
關(guān)于本書
本書總結(jié)了我多年來在這條道路上的探索,力求提供基于建構(gòu)主義教育思想的Java教學材料,幫助學生輕松地掌握作為Java程序員所需要的知識和能力。書中的內(nèi)容并不是簡單的案例堆砌,每個部分的任務(wù)都包含了對相關(guān)知識的整合,都基于學生的學習曲線特點。
我在8年教學探索后才動手寫這本書,是因為我一直相信“教育是用生命影響生命的過程”。我無法在一本書中實現(xiàn)和我親自上課同樣的影響過程,課堂上一遍遍地重復(fù)代碼所傳遞的嚴謹態(tài)度,無法在書中呈現(xiàn),加上我對技術(shù)、對學生的理解,以及對建構(gòu)主義教育思想理解的局限,讓我清楚地知道,我并沒有完成一部讓我心滿意足的作品,書中不可避免地有很多不足,懇請讀者批評指正。
這本書的內(nèi)容是我數(shù)以萬計的學生的成果,甚至有很多案例是我的學生在學習過程中發(fā)明的。從8年前開始的這段探索并不是一揮而就的,我誠摯地感謝我所教過的學生,是他們的忍受、包容和努力幫助我完成了這本書。我要感謝我的家人,我兒子的出生和成長,讓我開始接觸和研究教育理論,給我之前漫無目的的探索指明了方向。為了讓這本書通俗易懂,我那學文科的愛人像一名真正的學生一樣,通過這本書來學習Java技術(shù),在她的努力下,這本書具備了更廣的覆蓋范圍,確保讀者即使沒有任何專業(yè)基礎(chǔ),也能夠通過這本書掌握Java技術(shù)。同時也要感謝電子工作業(yè)出版社的老師為本書的出版所付出的辛勤工作。
光盤使用
我一直希望這本書的定價盡可能低,希望有更多的人能夠沒有負擔地學習Java技術(shù),本意不想提供光盤,但是權(quán)衡再三,由于本書中的代碼是伴隨著講解逐步展開的,很多代碼沒有整體呈現(xiàn)(否則會增加太多頁數(shù)),所以不得不通過光盤提供書中的代碼,這些代碼被放在codes目錄中,按照書中的章節(jié)組織。需要強調(diào)的是,請不要直接編譯運行,或者復(fù)制我所提供的代碼,光盤中的代碼是我的,只有你親手輸入到電腦里的內(nèi)容才屬于你。
王洋于2012年1月14日
王洋,國家軟件出口中心首席IT教育專家,10年知名IT企業(yè)CTO從業(yè)經(jīng)驗,9年IT教學培訓從業(yè)經(jīng)驗。曾在清華、北大、北理工、北航等近百所國內(nèi)知名院校做技術(shù)演講,近5年每年在全國各高校進行130多場技術(shù)講座,反響熱烈。
“基于學生認知曲線的項目驅(qū)動教學法”創(chuàng)始人,通過該方法培養(yǎng)出來的教師多次獲得學生綜合測評滿分的成績,近萬名學生接受過該方法的學習和指導(dǎo),學生覆蓋清華、北大的研究生,985、211知名院校的本科生、?粕
第1部分 認識Java程序
1.1 寫代碼前的準備
1.1.1 程序的入口
1.1.2 初步理解類和對象
1.2 畫王八
1.2.1 運行Java程序
1.2.2 繪圖
1.3 滿天星星
1.4 飛行的小球
1.4.1 使用線程
1.4.2 線程的生命周期
1.5 小球撞墻
1.6 下大雪
1.7 鍵盤控制小球
1.8 打字母的游戲
1.9 鼠標控制小球
1.10 第一階段總結(jié)
第2部分 認識Java程序
2.1 聊天界面
2.1.1 任務(wù)描述
2.1.2 做按鈕
2.1.3 Java的布局思想
2.1.4 登錄界面
2.1.5 主界面
2.2 響應(yīng)用戶輸入
2.2.1 任務(wù)描述
2.2.2 事件響應(yīng)
2.2.3 關(guān)于字符串內(nèi)容的比較
2.2.4 取得用戶名和密碼
2.2.5 用面向?qū)ο蟮乃枷胫貙?br>2.2.6 上溯和下溯的討論
2.3 IO流
2.3.1 任務(wù)描述
2.3.2 讀一個字符
2.3.3 讀整個文件
2.3.4 復(fù)制文件
2.3.5 復(fù)制大文件
2.3.6 文件的加密/解密
2.3.7 異常的干擾
2.3.8 字符流
2.3.9 實現(xiàn)聊天記錄
2.4 建立網(wǎng)絡(luò)通信
2.4.1 什么是網(wǎng)絡(luò)
2.4.2 在網(wǎng)絡(luò)上傳消息
2.4.3 到服務(wù)器驗證用戶名和密碼
2.4.4 將聊天信息發(fā)送到服務(wù)器
2.5 數(shù)據(jù)庫訪問
2.5.1 接觸MySQL
2.5.2 創(chuàng)建和刪除數(shù)據(jù)庫
2.5.3 創(chuàng)建、修改和刪除表
2.5.4 關(guān)于數(shù)據(jù)庫設(shè)計
2.5.5 學習添加、刪除和修改數(shù)據(jù)
2.5.6 查詢數(shù)據(jù)
2.5.7 SQL復(fù)習
2.5.8 用Java訪問數(shù)據(jù)庫
2.5.9 用戶身份驗證
2.5.10 將代碼融入項目中
2.5.11 討論反射
2.6 應(yīng)對多用戶訪問
第3部分 獲得邏輯能力
3.1 用數(shù)組實現(xiàn)的記事本
3.2 使用鏈表的記事本
3.3 讓Java系統(tǒng)庫幫助你
3.4 思考面向?qū)ο蠛兔嫦蜻^程的不同
3.5 深入學習ArrayList和LinkedList
3.5.1 泛型
3.6 Set集合
3.7 試試二分查找法,理解二叉樹
3.8 復(fù)制一個目錄的內(nèi)容
3.9 Map
3.10 保存用戶的Socket
3.11 同步用戶名
3.12 多用戶轉(zhuǎn)發(fā)邏輯
第4部分 理解面向?qū)ο?br>4.1 用面向?qū)ο蟮乃枷胫貙懥奶斐绦?br>4.2 做一個數(shù)據(jù)庫的管理工具
4.3 駕馭JTable
4.4 有更好的方法駕馭JTable
4.5 用面向?qū)ο蟮姆椒{馭JTable
4.6 完成資源管理器
4.7 有沒有更好的參數(shù)傳遞方式
附錄A 準備編程環(huán)境