——关于以TIJ为课本的Java教与学的方法
从第一节课的教学情况来看,虽然阅读API文档界面是构成JAVA实际能力的重要基础,但是至少应放在Overview结束以后,所有重要关键词均已被介绍的情况下,TIJ对此的处理时非常恰当的,在TIJ中,API文档第一次出现是在讲述HelloWorld程序的时候,而在此时,所有关键词都已经介绍完毕。而对于JDK下载安装的介绍,TIJ并没有提及,我认为比较好的时机,仍然是在Overview之后紧随。
关于is-a和is-like-a的问题,其实我认为现在对学生可能还是一个过于高级的话题,问题可以表述为“继承之后,我们既可以加入新的方法,也可以覆盖原来的方法。但有的程序员认为只有后一种方法才是‘好’的继承方式,有的程序员认为前一种也是很‘好’的,那一种观点应该接受呢?”对此,TIJ也并没有在前三章讲清楚,所以,这一部分我会选择跳过。
单根继承体系的优势这一节,文字表述过多,暂时没有想到如何配图,这都是制作PPT的忌讳,实际上不需要单独的一页PPT,不如放在讲到Wrapper的时候顺便提到;关于对象可见性和生存期,主要是Garbage Collector的介绍,放在“Where storage lives”这一节中介绍;Container可以在“Everything is an object”中讲到数组的时候提到。
关于java与Interner,我基本放在了课程的开头,谈到Gosling和Sun的故事的时候。而对于多线程、异常处理等特性,这些概念对不是从其他语言的程序员转移过来的初学者,是很难理解的,所以,只适合放在具体的章节中。
关于英文表述,起初应尽可能避免大段英文,而作为术语介绍,同学们逐步熟练中英文表达方式之后,逐渐增加。
在Operator一章中,首先提到了,为了简化System.out.println()的写法,可以使用一种import static方式,就是直接“进口”其他类的静态方法,以便像使用C语言“全局函数”那样的简略表达。但在这里,却没有把import static解释清楚,只是告诉读者要等到Access Control那一章。我试着把import static详细解释了,用了8张PPT,远远超过我的“预算”,如果放在这一章开头的话,已经可以作为Operator一章中的1/3了。我想,还是先暂时不介绍这种“简略”方式了,毕竟,这只是JavaSE5引入的一种新模式。对于运算符优先级(Precedence),Eckel在序言就指出了这是“简直永远都用不上”的一个知识,“哪些类型支持哪些运算符”的总结性知识也与此类似。我用Java从来没有意识到这两个知识的存在,所以,我也同样选择略去。
TIJ的一个很好的特征是在练习基本操作的同时,融入了比较能够锻炼编程建模思维的练习,比如P93的Excercise5和6,对初学者是很有练习价值的。
对于位运算和移位运算,我就没有包括在课程中了,因为在我看来,这些知识应该是用到的时候再去查的,所以TIJ和CoreJava常成为“枕边书”就是为了这个原因,何况我们的同学们对16进制、8进制、2进制还是有一些不懂的,一般也很难用到。
关于一些有趣的小特性,如Promotion和其他一些有趣的总结,我节选做成了翻译题,请同学们翻译后发表,希望能有意识地锻炼到同学们的计算机英文阅读能力,这对未来成为高端人才是一个绝对重要的基础。
在前两节课,我们没有太多编程的练习,但是因为没有纸质课本,还是请同学们如有可能的话就课前打印了。这两节课主要讲述性的内容,只是在上面做简单的笔记,比如准备要问的问题、英文术语的中文解释等,在未来的学习中,课堂编程作业更多直接写在上面或背面,以便于以后复习。
注:所有已做好的PPT,都可以在“CSDN下载”中搜索到并下载。