将非专业知识引入HTML /编程的最佳方法是什么?
在过去的几个月中,以下问题一直困扰着我。在见证了这里答复的质量之后,我希望我会在这里得到一些很好的答复。
我正在ECE系中开设一门名为"探索数字信息技术"的课程,该课程的目的是让非专业人士完全了解"计算机的工作原理"。作为计算机架构专业的研究生,不仅我的学科背景与学生有很大不同(他们中的许多人是新生,除了Word和YouTube之外没有计算机经验),而且我的整个思维方式似乎根本不同。我以前在尝试更多的技术课程方面取得了很大的成功,在这些课程中,学生不一定掌握确切的材料背景,但是他们是注重细节的,技术专长的人,他们擅长处理变量,数组,索引等内容,间接性,功能等。本课程的第一部分给我带来了极大的困难,该课程实际上涵盖了HTML,JavaScript和Internet(网络拓扑,IP地址等)。
我对SO社区提出的问题很多,但我将从以下几个问题开始:
- 在最高级别上,如果我们想教别人像程序员一样思考(将人类级别的算法分解为可以转化为函数,过程语句,if-then-else语句和循环的简单步骤), HTML和JavaScript是方法吗?这样可以比其他方法更快地获得可关联的结果(例如,执行有用的网页),但是HTML和JavaScript的分离和集成以及整个"声明性HTML与过程JavaScript对话"的事情似乎太多了。抽象概念为时过早。
- 如果我们确实想向初学者(在算法上难以理解的人)教授HTML和JS,那么我们将使用哪些资源,分配哪些项目等?我发现,即使我尽我所能分解了诸如" for"循环之类的概念,仍然还有很多。是否有某个地方是从第一原理开始的,真的可以帮助真正的初学者理解为什么括号和分号是必需的,函数的参数是什么,等等?
老实说,我还有很多其他问题,但是我认为这是一个不错的起点。我期待将结果整理成不仅可以用于本课程的将来版本,而且还可以用于我个人的"技术传播"追求。我确实在这里阅读了其他"如何教初学者做X"的问题,但它们似乎针对的是另一类完全不同的"初学者":对数学感兴趣并且对学习编程非常感兴趣的人们不知道从哪里开始。我觉得那组人的答案将与那些心态不同并且可能没有内在学习动机的人完全不同。
解决方案
HTML和JavaScript绝对不是我的方法。标记和编程是两个非常不同的东西。将JavaScript放入其中可以解决该问题,但这也使事情变得非常复杂。我们正在使用两种不同的语法,使用两种不同的概念模型,它们之间的桥梁并不透明。我们需要处理事件模型以处理诸如输入之类的基本事情。分散注意力的开销不可避免地妨碍了基础知识的学习。
我们对HTML / JavaScript的重视程度如何?因为完全丢弃HTML,并使用更传统的编程模型似乎是一种更好的方法。在这方面,Python的工作量很大,因此我们应该查看Python in Education。
根据我的经验,C ++是一种很棒的根级语言,它很难学习,但不如某些后来的一代语言那么庞大。逻辑是原始的,它是编程的精彩入门,也是让我热爱科学并希望学习更多知识的原因。
我同意@Jim。
我们是否考虑过尝试诸如Lego Mindstorms之类的东西。我们将获得一个非常直观的可视用户界面,该界面允许用户创建基本的编程结构而无需编写任何代码(例如,循环,条件等)。
当然,反馈是以工作机器/机器人的形式出现的。这肯定会加强很好地使用的编程概念。
我第一次接触编程世界是Visual Basic。我记得在它们上创建了简洁的小表格和按钮。我发现这很有趣,比做C语言要好得多。我仍然记得在VB中创建自己的计算器和记事本,然后在铁路预订系统中创建。
通常,在大多数情况下,编程课程是从研究C开始的。教授如何编写算法和绘制流程图。根据我的观点,从算法和流程图开始是一个好主意。它教授编程的基础知识,并使头脑进行逻辑思考。
我不想过多地讨论HTML和Javascript。学习以HTML编写代码无助于教授任何编程结构或者逻辑。
此处讨论了一项研究,当我们意识到其中有些人实际上将无法学习编程时,这是一本相关的读物,以避免过于沮丧。
就是说,我认为,如果我们继续使用HTML / JS(不一定是一个不错的选择),那么我将准备好将使用的所有HTML,并通过JavaScript对其进行调整。这样,他们就不必使用两种不同的模型,但是那些有兴趣和兴趣的人可以。
我想说的是,与这个小组做的最重要的事情是使材料有趣或者至少有趣。由于这是编程或者数字计算的第一手资料,我们可能希望避免一起教html和javascript,因为它们是不同的概念。我们不会在一个学期中教非程序员成为程序员,但是我们会激发一种兴趣,这种兴趣可能会导致编程或者相关领域的未来。我将尝试介绍一些硬件和软件的基础知识,以及它们之间的关系以及它们之间的交互方式。在甚至开始编写代码之前,他们至少应了解一些术语(编译器,服务器,客户端,网络等)。然后,我们可以逐步进行编码,希望可以进行互动或者有趣的操作,例如简单的游戏,计算器或者在"我的空间"页面上添加内容。
对于第一个问题:
不,我不会使用HTML和Javascript来教授编程概念。我可能会考虑使用像C这样的.NET语言,它隐藏了内存管理的难题,同时为初学者提供了一个不错的框架。客户端有许多有用的事情要做,我觉得网络的无状态本质实际上可以使初学者感到困惑。
我们要教的是诸如分配,键入,逻辑,循环之类的基本概念,然后是类,多态性和继承之类的后来的OO概念。我觉得要求学生然后担心标记会妨碍我们。保持简单简单。
第二个问题。
由于HTML + JS(我会在此堆中添加CSS)最初是关于表示的,所以我将使用提供WSYWIG设计图面和XHTML之间的拆分视图的工具开始初学者。显然,生成的XHTML必须是干净的,因此需要仔细选择这种工具。我觉得Aptana还不错。然后开始用简单的任务(例如div和表)来训练学生。让他们研究标记中的更改。然后介绍CSS技术来修饰事物。它们最终将形成有关XHTML / CSS如何影响网页的思维导图。
最后,将它们结合在一起,并运用了一些OO技术,并且对XHTML / CS的了解将javascript作为演示蛋糕的锦上添花,以完成更棘手的事情。教他们关于DOM等的知识。
如果我们想教别人HTML,那就去吧。如果要教他们编程,请从一些简单的过程语言开始,例如Basic或者Pascal。如果要教OOP,Smalltalk是必经之路。
至于HTML,这是一个相当广泛的东西。我将通过以下步骤:
1)布局
2)表格/基本控制
3)样式
4)脚本
我会给他们Head First HTML,让他们按照自己的步调前进。我认为,在介绍技术方面,没有什么比本系列更好。
我不屑一顾HTML和JavaScript。 (实际上,它被保存为Word文档为HTML,然后试图解释是什么,但这是另一回事)。我认为有一些不同的优点。首先,我们可以轻松地逐步构建一个基础页面。第二个HTML标签是显而易见的,并且很容易获得JavaScript来修改页面并在用户事件上触发。教学和演示递归,简单的OOP函数变量,数据类型等都非常简单。
此外,我们可以像其他任何东西一样在记事本中编写它,并使用"刷新"按钮对其进行测试。即时因果关系,修改代码:刷新页面:查看最新消息!
我会在HTML上保持简单(我什至不提CSS / AsyncXML / etc),并在JavaScript的基础上进行构建。
祝你好运。
我为通常是通信专业的学生举办HTML研讨会。通常从基本了解什么是网页开始。然后,我要拨出记事本,然后放下基本的HTML页面。此时,有些人想出了空白的凝视,但也有许多" AHA!"片刻。我只有一个半小时的时间来塞满所有基础知识,因此,如果有时间的话,我可能会事先做一些抽象的网络概念。
要引起他们的注意,最重要的一点可能是让他们在教教他们时执行示例,并让他们自己进行调整。给他们一个for循环,该循环将信息重复打印到页面上,然后让他们进行更改并查看会发生什么。我不确定我们是否处于实验室环境中,但这将是理想的选择。他们还将有样品带回家。
我认为教导普通人HTML绝对有价值,因此他们可以了解与他们日常交互的事物背后的幕后情况。另外,他们已经拥有开始创建文本编辑器和浏览器所需的一切。他们也很可能会在以后的生活中发现有用的东西,对于个人站点,甚至是像这样的字段。
如果目标是教人们编程的基础知识,为什么不使用像Alice这样的视觉语言呢?它可能不是最传统的方法,但它可以让我们将更多的时间集中在if / then和loop而不是语法上。
我在上课时采取的一种方法是从空手道小子(Karate Kid)那里引入一些"打磨地板,油漆围栏"。根据我给他们的打印输出,我让他们手动输入了一个由HTML和JavaScript组成的两页Web应用程序。
这项练习使很多人感到沮丧,因为这似乎很麻烦,尤其是当我本可以将应用程序作为文件提供给他们时。但是因为他们必须检查每个角色以查看他们可能在哪里犯了错误,所以他们还必须注意每个角色。
与在课堂上将所有资源作为文件提供的那些事情相比,我在本学期开始时分配本练习的班级肯定能更快地开始学习。
我发现重要的是要让他们对他们正在研究的最终产品感兴趣。对于那些不习惯标记和编程的人来说,繁琐的工作和对肛门的保持力实在令人沮丧。但是,如果为他们分配可以迅速看到结果的项目,并为他们的工作感到自豪,那么我们可能会保持他们的兴趣。
段落数量不匹配