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