使用 Java 分享教学法
让我们首先来看一个我遇到的具体的教学问题。所有类型的波浪运动,包括水体表面的波浪运动,都可以分解为以不同速度和振幅传播的正弦波波列。如果这些波的频率相似,则波浪运动的特征是波群。在最简单的波群情况下,取两个以几乎相同的速度传播的波,而它们通过叠加产生的波群以不同的速度传播(取决于水波的水深)。现在,你如何向课堂清楚地展示这个概念?
或者,另一方面,当两个波列以相反的方向传播时会发生什么?会形成波群吗?如果两个方向相反的波列具有相同的频率,则会产生驻波系统,而没有能量的传播。你如何方便地介绍同一主题的这些后来的变体?
最后,当添加更多波列或波群反射回自身时会发生什么?
向课堂解释这些想法的传统方法是手持粉笔,绘制图片来说明这些概念。然而,这些图片,无论绘制多么仔细,都是静态的,并且未能传达波浪和波群是动态实体,以不同的速度移动并叠加以创建最终波形的想法。
另一种方法是使用图形计算机程序,让学生看到叠加具有任何频率、振幅和方向的波列的结果。通过尝试不同的波幅、方向和波周期组合,学生可以凭经验发现水面的行为。此外,通过让他们看到单独的波分量,例如,清楚地表明驻波是由两个方向相反的行波波列组成的。
我用来演示这个概念以及十几个其他概念的图形程序是用 Java 在我的 Linux 计算机上开发的。通过将这些程序编写为 applet,它们可以通过互联网提供给使用启用 Java 的浏览器(最好是 Netscape Navigator)的学生,用于课堂教学,或供任何对波浪和海岸过程感到好奇的人使用。
在传统的大学教学模式中,教授为课程编写讲义。教科书通常用于为课程材料提供结构,或补充教授的讲座。因此,这些教科书提供了一种被动的方式来利用其他个人的专业知识来补充教授自己的知识,或者它们包含呈现材料的理想格式或大纲。然而,教科书迫使教师采用作者的大部分(如果不是全部)风格或学科方法。学生们做出了重大的经济承诺,他们必须投资购买一本或多本教材。
Java 和互联网提供了另一种利用其他教学法的方式,而无需在别人的方法上投入大量的时间或金钱。此外,applet 可以提供有用的图形和计算工具。
此处讨论的 applet 在互联网上提供(地址在以下部分给出),并被世界各地的许多其他教授用于补充课堂教学,作为家庭作业,以及作为水波理论和海岸过程课程的实验。它们是为了支持特拉华大学教授的两门研究生课程而编写的。每个 applet 都说明一个单一的概念,例如用户选择的波浪下的粒子运动和速度。通过输入新的数据,用户可以探索不同的场景,例如波高对水波速度的非线性影响(流函数波理论 applet)。
使用启用 Java 的 Web 浏览器,可以通过访问我托管 applet 代码的网站在本地运行这些程序。作为替代方案,这些程序也可以作为 应用程序 提供,这些应用程序可以在配备 Java 的用户机器上本地运行——对于识别 Java 字节码的 Linux 机器来说尤其容易。
我的贡献是我开发的 Java Coastal Engineering Applets 网站。该网站提供 Java applet,可以帮助教授水波和海岸过程,并为其他人提供有用的工具。这些 applet 托管在我的海岸工程 Java 页面 http://www.coastal.udel.edu/faculty/rad/ 上。此 URL 上的 index.html 页面列出了 applet 的标题、对其用途的简要描述以及指示上次修改 applet 的 Java 代码和 HTML 页面的日期的日期。单击列表中的 applet 标题会导致 applet 在用户的计算机上运行。该 applet 通常由几个图形窗口组成:第一个允许用户将数据输入到 applet 中,第二个显示计算结果。此外,与 applet 关联的 HTML 文本提供了 applet 用途的描述、它说明的概念以及 Java 程序中该理论的一些想法。
一旦编译完成,所有程序元素都将变成单独的代码段,称为类。这些元素已由编译器转换为与机器无关的字节码,通过单击海岸工程 Java 页面上的 applet 名称来下载。用户的浏览器将字节码转换为 applet 的本地版本,然后在他/她的机器上运行。我的机器上的负载是字节码的下载。
虽然该网站由 Sun 工作站托管,但编程和调试是在运行 Linux 的 PC 和 Linux 版本的 Java 上完成的。网站 http://www.blackdown.org/ 具有关于 Linux 版本的 Java 的最新信息、Java-Linux HOW-TO 的 HTML 版本以及用于下载 Java 开发工具包(现在是 JDK 1.1.5)的镜像站点列表。另一个参考文献是 1996 年 10 月号的Linux Journal(https://linuxjournal.cn/issue30/),其中有许多关于 Java 的文章。
随着这个项目的发展,applet 也在不断发展,部分原因是用户的评论和建议。每个 applet 的 HTML 页面都有一个 mailto: 标签,允许用户直接向我发送电子邮件。此外,我还学习了新的 Java 技巧并想到了改进。因此,代码更改日期在索引页上提供。未来的改进将包括每个 applet 的家庭作业类型的问题。
在托管 applet 几个月后,很明显,一些学术课程因通过互联网使用 applet 的下载时间过长而受到阻碍。我现在提供一个使用 tar 创建的存档文件,其中包含所有源代码和 HTML 页面,以便 Java 程序可以在其他大学本地运行。此 tar 文件包含一个 Makefile,它为系统管理员提供了一种方便的方式来一次编译所有源代码。安装后,本地用户将 Web 浏览器指向包含 applet 的目录,然后以与 Internet 用户相同的方式继续操作,但速度更快。如果您想尝试此操作或查看源代码,匿名 FTP 站点是 www.coastal.udel.edu,文件 javapp.tar.Z 位于 /pub/programs 目录中。
我可以从几个方面提高 Internet 用户的访问速度。对于每个 applet,我可以将特定 applet 的所有类文件压缩到一个 zip 文件中,从而减少下载浏览器必须连接到我的机器的次数。(对于 Internet Explorer 用户,文件需要采用 CAB 格式。)另一种选择是迁移到 Java bean 模型。此解决方案的问题在于语言发展迅速,因此 applet 也必须发展。
我认为这些 applet 的教学优势至关重要,并且可能导致教育材料交付方式的巨大变化(直到下一个更方便的工具出现)。另一个主要的意义是免费提供课程内容。人们提供这些程序的动机是什么?他们的机构有什么好处?特别是当对教科书的需求减少时?
未来可能会出现几种情况。免费课程内容可能很快会在互联网上占据主导地位。这将遵循 Linux 操作系统和其他免费软件包的模式。开发者得到什么?认可。机构得到什么?与他们现在从教科书中获得的一样——认可。或者,在互联网上安全地收取少量费用的方法出现可能会允许此类网站对每次使用收费。这最有可能发生在在线提供整个课程的网站上。
Robert A. Dalrymple (rad@udel.edu) 担任特拉华大学应用海岸研究中心 (http://www.coastal.udel.edu/) 主任。他曾在《LJ》上发表关于 Scilab、Xfig、Xfm 和 EXT2tools 的文章。自 1.0 版本发布以来,他一直在家庭和工作中使用 Linux。今年春天,他构建了 ORCA,一台由 8 台 Pentium II 机器通过高速以太网交换网络连接而成的并行计算机。