——关于以TIJ为课本的Java教与学的方法
本章内容仍然是java的基本概念,为了让学生在本章能够几乎完全地理解入门程序HelloDate,作者仔细考虑了知识点的铺陈顺序和深度,有些部分做得非常有新意,如讲授引用(reference)时,提出在java中,一切对象都是通过“遥控器”来使用的。
在开始讲解第一个程序之前,作者安排了对象的使用和创建、基本类型、类的创建、变量可见性、包的基本概念、静态成员等许多概念,然后才真正开始第一个程序,可以说是一个非常特别的教学思路。这样能够让学生对HelloDate程序做到完全理解,并熟练地掌握如何自己写出一个可运行的类。从后面的十多个习题来看,也必须是完全掌握了这些知识,才能够做得出来。可以说,作者是以牢固掌握为目标的,牢固掌握了基本的面向对象操作,对编程环境非常熟练以后,才能进入下一章“运算符”的学习。
但是本章还不是作者所提出的“练习和讲授紧密结合”的风格,这对课程提出了挑战,要求老师在第一节小课就能把前面的内容全部讲解完,甚至包括javac和java命令的用法,最好还能做1个课堂习题,然后第二节课继续练习,和讲解如何使用javadoc命令和如何做出合适的文档,这样的话,可以要求每个学生在后续的练习中必须写出文档,以熟悉文档的写法,养成良好的编程习惯。文档中常用的注释法,TIJ上介绍得稍显冗余,实际上,对于初学者为了养成良好习惯而写的一般的文档,@param,和@see已经足够了,其他的使用“/**”和“*/”文字说明。
对于BigInteger的处理,我选择舍弃,因为一堂课最忌内容太多,而这个知识点和后续并没有联系,只是为了照顾对java特性的覆盖而设的,因为如果要做一本“java知识大全”的话,BigInteger几乎只能放在这里。对于课本上过多的文字描述,同学们可能难以理解,而因为是电子教材,课堂授课时学生们无法看课本,只能是把PPT打印出来带着,为了照顾同学们的视力PPT上字体不能小于24号,而且还是英文,所以我想,可以保证课本上的斜体字(TIJ上的重要概念都用了斜体)PPT上都有,孤立的小代码也会出现,其他的则依据教学思路进行取舍。其实,这次我很想把第一个程序HelloWorld放在第一节课,为了在第一节课就教会同学们使用javac和java命令,但是考虑到命令行本身就有好几个dir、cd等诸如此类的小知识,而main函数的讲解在本章又如此铺陈,所以,只能看这一次的教学效果而定了,如果在课堂上还有时间演示这个实验的话,就增加进来,也把第二章的相关练习加上;与此相似,关于java虚拟机的原理,许多PPT都会放在第一章大篇幅讲解,但是TIJ却不是这样,反而选择了比较宏观的方式,只是带过,也没有画出一个虚拟机工作原理示意图,对此,我想这可能是Eckel的一个教学经验吧!作者强调java的核心在于其对编程体验的贡献,对于提高学生的学习积极性,减少陌生感才会更有帮助,但是我在讲到javac和java命令的时候,是要简略讲述的。同样,为了减少同学们一开始时的畏惧感和陌生感,我会选择在开头提到Sun和Gosling的故事。
用TIJ教学的核心,是要理解并借鉴它的教学思路,让同学们更加轻松、自然地学习,享受到高品质的教育,打下一个牢固的基础,而不是故意用这本书让同学们学得很累,老师也会教得很累。所以,虽然我会尽量努力让同学们能够读懂这本经典著作,比如我会使用它的例子,借鉴它的内容编排顺序、好的教学方法,和教学重点,但是,我只是理解并借鉴它,会在它的教学思路上做必要的调整,比如关于编程环境,在开头的时候我希望用记事本和命令行,为了突出编程的隐性基础锻炼,是和它一致的,但是讲过Access Control那一章后,因为同学们已经对java编译执行的原理非常清楚,就会转到Eclipse。再如,TIJ并没有使用网络交流作为辅助教学,因为Eckel的培训对象是西方文化下的人,往往已经具有良好的网络交流习惯和基础,而中国学生往往比较内向,对于开放的编程社区,还是有一定的畏惧情绪,有相当一部分同学还不习惯在网上分享自己认真的想法,也还需要锻炼网络交流所依赖的书面表达技能,这都需要依赖一个宽厚、积极的网络社区的鼓励,这里先对CSDN上的网友们一并表示感谢!
当然了,关于一些细节的变化,还会有不少,但是对于TIJ上体现出的优秀的教学思想,是会认真吸收的,对于我还没有理解到的地方,希望专家和老师们多给予我提醒,和我交流!对于我没有意识到的同学们的需要,也请同学们予以提醒和宽容。在此,向现在和将来会关心我们的网友和同学们表示真挚的感谢!