在世界上的某些地方,人们通常无法访问计算机(因而对计算机知之甚少),即使可以使用,硬件和软件也已过时,并且由于停电等原因而使使用受到困扰。也往往缺少对(好)书的访问。在这种情况下如何教授计算机科学?
我担心如果无法进行实验并运用所学知识,他们将根本无法学习(好),即使他们的动机非常强烈,并且将大部分时间都花在了这个爱好上。是否可以仅在理论上讲授CS?
在世界上的某些地方,人们通常无法访问计算机(因而对计算机知之甚少),即使可以使用,硬件和软件也已过时,并且由于停电等原因而使使用受到困扰。也往往缺少对(好)书的访问。在这种情况下如何教授计算机科学?
我担心如果无法进行实验并运用所学知识,他们将根本无法学习(好),即使他们的动机非常强烈,并且将大部分时间都花在了这个爱好上。是否可以仅在理论上讲授CS?
Answers:
询问如何在没有计算机的情况下学习计算机科学有点像询问在没有望远镜的情况下如何研究宇宙学。当然,能够看待您正在研究的事物真是太好了,并且能够玩弄事物通常非常有帮助。但是,您可以在没有计算机的情况下做很多事情:在极端情况下,您几乎可以在没有计算机的情况下完成所有本科课程。
实际上,访问计算机有助于巩固您在计算机科学课程中学到的很多知识。显然,使用计算机可以使编程课程更加自然。另一方面,被迫在纸上编写代码确实会鼓励人们思考他们的代码并确保它确实有效,而不是仅仅一次又一次地通过编译器运行直到编译,然后再一次运行琐碎的测试用例。直到明显的错误消失。
如果没有计算机,最自然的主题将是数学性更高的主题。所有背景数学,例如组合数学和概率论。可计算性,形式语言,逻辑,复杂性理论,算法设计和分析,信息和编码理论。与量子计算有关!
纸和铅笔的用途很明显。当我学习信号处理时,我们无法直接使用特殊的信号处理器,我们只提交了纸质报告。
请注意,伟大的计算机科学家Dijkstra显然并没有使用太多计算机:
1972年以后出现的该系列几乎所有文章都是手写的。在发明了许多软件技术之后,Dijkstra数十年来一直在自己的工作中避免使用计算机。即使在他屈从于UT同事的鼓励并购买了一台Macintosh计算机之后,他仍然仅将其用于电子邮件和浏览万维网。
这表明您无需计算机即可完成出色的计算机科学!
除了纸和铅笔计算机科学问题,也可以“在现实世界中”解决,例如,由萨皮恩蒂亚大学(Sapientia University)演示用卡片或更不寻常的卡片分类算法。
有关一些很棒的想法,请参见http://csunplugged.org/。Google是赞助商之一。
从站点:
CS Unplugged是免费学习活动的集合,这些活动通过使用纸牌,绳子,蜡笔和大量跑来跑去的有趣游戏和拼图来教计算机科学。
这些活动向学生介绍了基本概念,例如二进制数,算法和数据压缩,与我们通常在计算机上看到的干扰和技术细节分开了。
CS Unplugged适用于所有年龄段的人,从小学到老年人,以及来自许多国家和背景的人。Unplugged已在世界各地使用了二十多年,用于教室,科学中心,家庭,甚至用于公园的度假活动!
您可以,很明显如何进行。我不确定这对人们有多大用处,但您可以。
但是我什至不知道计算机科学老师会如何,不会问你如何在没有计算机的情况下教授计算机科学。
因为如果您可以教计算机科学,那么您就会知道。
如果您知道-
-Algorithms can be written on pen and paper, and traced on pen and paper.
-Flow charts are written on paper.
研究归一化,可以用笔和纸完成数据库数据表的结构。(当我研究关系数据库时,我只是在笔和纸上这样做的)
计算机科学教科书不需要计算机。
如果您曾经读过一本计算机科学教科书并在图书馆中学习过,您会知道您不需要计算机就可以理解它。
但是您应该知道,任何参加过计算机科学课程的人都可以看到大多数人无法编程,这超出了他们的范围。对人来说太抽象了。在大学水平上甚至如此。
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf
在英国每所大学的入门课程中,绝大部分学生都未能通过。尽管进行了英勇的学术努力,但这些年来,这一比例有所增加而不是减少。尽管对教学方法和学生反应进行了大量研究,但我们不知道原因。
我要补充一点,称其为少数,是轻描淡写。可以编程的人很少。
但我要指出的是,他目睹了下降的原因。随着计算机的普及,例如在2000年至2010年之间(他在那十年中写道),越来越多的人对研究“计算机科学”感兴趣。在此之前,只有更多狂热的人感兴趣。在更早的时候,使用计算机更具技术性,但是随着计算机对普通人的使用变得更容易,并且在他们可以运行的应用程序中变得更加强大,那么越来越多的人正在使用它们,而更多的人只对他们的工作感兴趣而不是他们如何做以及如何做。
没有计算机,就可以教授计算机科学的概念。当然,如果没有计算机,学习计算机科学的真正好处是什么?
当我在高中学习计算机科学时,我们的前几节课根本没有涉及计算机。相反,我们从一本名为Karel ++的书中学习,该书教授了面向对象的概念。组合语言可以很容易地在白板或黑板上“运行”,因为所有代码都在图形上执行操作。我们最初的几项作业都是手写的,教授将在下一堂课开始时在黑板上演示正确的解决方案。
当我们开始讨论算法时,我们的教授打电话到会议室的最前面,告诉我们站成一排。他继续演示了几种不同的排序算法-从他称为“猴子排序”的愚蠢的东西开始,他将随机交换我们两个人,然后检查是否每次迭代都对我们进行了排序,然后执行气泡排序和外壳排序 -在我们身上“奔跑”他们。
他在板上绘制了图表,解释了计算机内存和堆栈如何工作的基础知识。他演示了变量和指针(这是一个C ++类),并从那里到链表和树。
如果我回顾了我在那堂课上记下来的笔记,我可能会补充一点,但这就是我现在所记得的。如果这些建议很有趣,我可以扩展这个答案。
我获得了计算机科学学位,并且认为我们被教导了很多编程(各种语言),还被教导了许多数学方面(以及一些硬件)。
数学部分对于第一年更重要-考虑矩阵数学,这对3d图形至关重要(如何计算用于照亮顶点的表面法线?)。我们进行了大量统计-考虑作业吞吐量分析,您可以在系统阻塞之前将多少作业传递给系统?对于许多集中式系统和网络而言,这非常重要。
您可以教很多算法,这里提到的一张海报给学生一个数字,然后让他们使用各种算法(主动的和信息性的)对自己进行排序。实际上,可以用这种方法来教授可以在互联网上的动画图像中描述的任何算法。同样,计算基础- 程序计数器,累加器和寄存器可以用相同的方式或在纸上进行教学。以学生为基础的多线程处理方式-在一组经典的多线程练习(或1个共享的问题)中,为一组学生设置一个纸牌游戏,每个学生之间都有一个堆栈。或者说设计模式,我认为黑板体系结构非常适合学生学习如何实现多进程通信,或者描述为一种中国耳语游戏或有限状态机的n层体系结构适合学生扮演。 “生活计算机”中的模块。您可以教授二进制数学或基于堆栈的(即反向抛光)执行。
当然,如果您可以使用电子产品,则可以使用运算放大器来构建模拟计算机。他们很棒。
不幸的是,所有这些似乎更像是数学,而不是计算,但是它会持续很多,有一天他们会明白为什么要教它(假设他们进入了计算行业)。请记住,任何一台计算机可以做的,一个人可以做的-它会只是把他大量的时间和无聊来达到同样的效果。您只需要举一些简单的例子来演示计算机的功能,并想像一下,以一种不太干的方式描述计算基础,就可以追溯到:)
询问如何在没有计算机的情况下学习计算机科学有点像询问在没有望远镜的情况下如何研究宇宙学。
我主要是为了回应这个陈述而回答,因为我强烈不同意其他答案。我认为正确的比较是
询问如何在没有计算机的情况下学习计算机科学有点像询问如何在没有宇宙的情况下学习宇宙学。
计算机科学是关于计算机的,而不仅仅是使用计算机。的确,许多计算机科学都是基于数学的,因此无需计算机即可学习数学部分(因此您要教数学)就像代替宇宙学一样,您可以学习物理学,一旦宇宙出现(或可以使用望远镜),但最终您仍在学习物理学。
现在,每个人在这里所做的回答都表明,本科学历的计算机科学在很大程度上是理论性的,不需要计算机,恕我直言的人们忘记的是,直到那时,同一个人已经广泛使用计算机。没有自然的理解,直接钻研理论知识只会导致许多学生放弃或者对计算机科学的看法极为不匹配。因此,请教一些程序设计,首先了解什么是计算机,然后才了解理论。
就像我要在非洲教授一般水平的知识外不懂计算机但又渴望学习高级计算机科学并将大部分时间投入到这一爱好的学生一样?
取决于预算:
因此,我要说清楚,我并不是说没有计算机就不能教授计算机科学,只是您需要习惯计算机并且对计算机非常了解之前,您才应该开始考虑这样的事情。
计算机科学是关于算法的,而不是(严格地)关于计算机(和电子)的。
这样,对算法(甚至是基本算术)的研究可以带来对计算机科学和编程的理解。请记住,甚至“算法”一词也是一本算术书(《旧书报》,约9美分,公元9世纪)作者的措辞。
对算法的研究可以使用基本手段完成,但应涵盖算法的工作原理,产生的方式以及如何实际证明其正确工作的内容。
不可低估计算机科学,算法和程序设计背后的历史。例如,Babbage / Ada的计算器,Enigma机器,Konrad Zuse的plankalkul,ENIAC等。
然后可以引入编程(和编程语言)作为形式化算法的一种方式。这也可以使用基本手段来完成(在很大程度上)。
注意,一些研究表明,peole学习编程在理解上有两个主要困难(与符号重载有关,例如赋值与相等性测试以及RAM机器的操作)。
因此,可以确保人们清楚地理解和理解了这些内容。
而且,如果可以访问任何计算机(甚至可以编程的计算器),也可以用来提供应用示例和动手经验。其他人可以使用模拟计算机。这可以通过多种方式来完成,例如,一群人可以模拟计算机的各个部分,而班级可以设计算法来解决该模拟计算机的各种问题并查看其运行方式。这也可以看作是一种游戏,具有创造力和创造力。
然后,可以引入一些(抽象的)计算模型(例如Turing Machines),并将其与先前有关算法和形式化的材料(一种编程语言)相关联。
如果要介绍一台实际计算机的电子设备,也可以分为两个部分。
请记住,即使在大学中,一些电子和计算机体系结构课程也是理论性的(实际上并没有接触过CPU或设计课程)。
因此,可以介绍与计算机体系结构有关的电子(和基础物理学)操作的一些原理(半导体,固态能量区,p-np门等)。
然后,您可以利用先前有关编程和算法的材料,并介绍行业中使用的(现代)CPU设计(和描述)技术(逻辑门,触发器,FPGA,VHDL,CMOS电路等)。
这可以进一步考虑到CPU设计架构问题,例如并行性,流水线,高速缓存,矢量地址,微编程,DMA等。
好吧,也许这可能太多了,但可以使答案自成一体。
您要教编程吗?
小时候,我们去野营度假,我随身带了计算机手册。我能够用纸和笔写一个简单的游戏。
我猜这是我的第一个实际程序,因此涉及很多学习。我知道自己想做的事,但是当我发现它的时候有很多错误的开始。但是最终我能够写出整个代码。
我想我想说的是从伪代码和/或流程图开始,以计划项目,然后转换为代码。只需阅读即可调试很多代码。您也可以在此处使用同行评价。
回想一下以前的答案:阅读和做纸笔练习可以学到很多东西。如果您可以在纸上解决问题,那么您将很难接受。但是,我也想提及存在相当便宜的方式让学生接触CS。您是否熟悉 Raspberry Pi项目?即使需要共享几个人,或者您只能负担1个或2个单元,这仍然值得考虑,可以让您的学生接触到该技术。
我将尝试稍微摆动一下并“在框外思考”。配备齐全的计算机确实很昂贵,有时资源需求很大,而且维护起来很棘手。但是,有许多廉价的电子系统可以模仿功能成熟的计算机,例如带有LCD屏幕等,并且可以应用许多基本的编程原理,许多电池供电。EE原理与诸如建立二进制逻辑电路之类的计算也有着紧密的联系;如今,某些玩具也具有可编程能力。
可编程计算器。有些内置了完整的编程语言(不是那么高级,但更像汇编语言)。有些会支持高级程序。
Raspberry pi小型计算机/微控制器是为此目的而开发的,并运行linux。在许多情况下不到40美元。
机器人系统。有许多便宜的具有一些可编程逻辑的逻辑。乐高机器人思维风暴/ nxt是最好的机器人之一,而且价格便宜。
一些游戏机内置了编程原理。例如Little Big Planet内置了惊人的编程功能。有一些掌上游戏机版本。有许多关于复杂结构的youtube视频可供您借鉴。
智能手机是新的编程世界。他们有运行javascript的浏览器,并且有许多与编程相关的应用程序,甚至可以通过Internet连接(包括wifi)浏览编程站点。
还建议在构建TM程序(例如添加等)并尝试手动跟踪它们的注释中提出建议。