“停止让学生使用Eclipse”

在计算机科学专业的学生中,无论他们是要成为Web开发人员,系统软件工程师还是学术计算机领域的专家,在诸如IntelliJ IDEA,NetBeans,PyCharm或Eclipse之类的专业IDE中使用Java或Python都不是很好的编程入门。 科学研究人员。

Some IDEs, such as jGRASP,1 provide education-specific tooling, like the "automatic generation of visualizations for improving the comprehensibility of the software"; that is, when you write a linked list and run your code in jGRASP, you see a diagram of a linked list on the screen.

jGRASP是一种面向教育的IDE,可以单独使用,也可以与IntelliJ IDEA集成使用。

但是,大多数IDE主要为学生提供两个目的。 首先,在以Java为重点的课程中隔离学生来自Java语言命令行程序以及命令行环境本身。 其次,它捕获了一些基本错误,并使学生能够延缓学习关于那些不被视为课程核心的严格的语言要求,例如导入和文件命名要求。

Crucially, I do believe that these are real problems. A student who has not written an if statement doesn't need to understand the philosophy behind putting each public class in its own file, or what public or "class" even means.2

What's the deal with these IDEs?

IDE的全部目的是提供一个集成环境-甚至名副其实。 它还为教师提供了一个统一的教学环境。 而不是教学生如何在每个平台上安装Java和特定于平台的程序员的编辑器,他们只能说“安装此IDE,将其打开,然后单击“新建项目””。 这在入门课程中很有价值,因为它避免了浪费课堂时间并降低了进入门槛,但最终引入这些不便的细节至关重要。

根据我作为学生的经验,在CS课的第一年或第二年之后,学生倾向于掌握基本的控制结构。 他们可以编写分支,循环和函数,并使用基本数据结构(如列表和映射)。 ACM的2013年CS课程指南对此表示赞同。 他们建议重点关注编程语言和问题解决的基本结构。

除非他们自己弄清楚了,否则他们无法做的是在他们所教过的IDE范围之外操作计算机。 通过个人经验或阅读其他学生提供的教学大纲,我所见的课程都没有一个地方可以让学生摆脱构成现代计算机使用的无数障碍。

使用Windows的学生没有被教导,尽管他们的文件系统不区分大小写,但并非所有文件系统都是如此。 直到300级别的操作系统课程,他们可能才被告知“文件系统”是一个概念。 使用Mac OS的学生未获悉.DS_Store目录,或者为什么它与他们的项目提交无关。 学习Java的学生不知道Java语言是他们的编译器,爪哇他们的虚拟机,至少直到他们学习了编译器课程为止。 没有人关注ASCII,Unicode和UTF-8之类的东西,也不关注程序的互操作方式,也不关注如何共享和分发学生编写的程序。

CS入门课程侧重于编程的抽象概念,并使用IDE来实现这一点。

Why is this a problem?

因此,可以教给学生如何编写代码和解决数学问题的方法,而不是去解决现代操作系统eldrich怪兽的复杂细节。 那肯定是好事吗?

The issue is, as Kevlin Henney is fond of saying, "Software is nothing but the details."
When students don't understand what a file is, or haven't ever edited text in anything but Microsoft Word and don't realize they can edit code outside of an IDE3, they will not be able to do the crucial work of self-directed learning that is a hallmark of all computer science success.
When students have only ever programmed in Java using some bespoke learning library provided by their professor, it will take them much longer than necessary to figure out other languages, other libraries, and other approaches.
In a field that moves as fast as this one does, that's a very serious problem.

这也削弱了他们今后在教室中学习的能力。 在我的同学中,那些只做他们期望的事情的人-仅参加每堂课,阅读,做习题和作业-不准备学习网络,或者吉特或项目管理,因为他们的知识与现实世界脱节了。 教别人使用吉特如果从未有人教过文件是由字节和元数据组成的逻辑单元,这将非常困难。 如果从来没有向他们的教授或朋友分发过软件,就很难教他们敏捷方法论的重要性。

最重要的是,它限制了他们的能力同行学习。 如果300级别的软件工程课程的预算为一周,以教授基本的版本控制技能,则需要绕开两天的时间来教Windows用户如何在提交中摆脱CRLF,并教Mac用户删除该内容。.DS_Store从他们的存储库中下载文件,然后让每个人都在Eclipse EGIT中进行设置,那是浪费时间。 如果教授不得不安排课外时间与学生展示代码,因为很多学生无法以能够在教授计算机上成功运行的形式提交代码,那么这对教授和学生来说都是浪费时间。 破坏了有关可移植性和良好实践的重要教训。

最终,我的核心信念是:学生需要认真学习计算机的使用程序,然后才能进行认真的编程。

Moving forward - or backwards, or sideways?

我应该清楚-我不是在谈论MIT。 我不是在谈论CMU或UC Berkeley(哦,对不起,“ Cal”)。 我什至没有在谈论斯坦福大学。 我说的是其他地方-拥有四,五名CS教授的SLAC,理工大学以及其他地方。 “计算机科学”和“计算机工程”的专业可能并不相同,即使他们不是真正的不同部门,不同建筑物,不同学校。

那么我们如何前进呢? 我们如何建立计算机科学程序,以帮助学生建立自己的未来? 我们必须认识到自2002年以来ACM一直在告诉我们-“计算机科学”有两三个方面:我们可以称之为“理论计算机科学”; 我们所谓的“计算机工程”; 以及我们所谓的“软件工程”。 我们向前迈进,让学生在进入该领域时对这三个领域都有自己的品味,并让他们按照自己的意愿进行专业研究。

我非常同意让学生快速编程很重要的想法。 这样吧。

  • 提供标准化的环境-可能作为VM,或者使用诸如repl.it或ideone之类的东西-也许是专门为教育设计的类似软件。使用一种可以教授您感兴趣的范例基础知识的语言,例如Scheme或Python。 (请,请不要使用Java。)为有兴趣做自己的事情的学生提供支持。 这意味着要有助教(并付钱!),他们不仅可以回答有关作业的问题,还可以帮助学生。

即使只是有效的Python或Scheme课程达到100级也将是一个很大的进步,但这还不够。 我们需要教学生电脑他们自己。

  • 在第一次尝试编程之后,请花一些时间向学生介绍UNIX命令行。 (如果由于某种原因您真的非常致力于Windows,PowerShell也是很棒的软件!)向学生展示他们所熟悉的事物-例如图形文件管理器-与这些新的命令行技能进行交互,以及他们的编程语言如何与这些交互。致力于教授所有学生都可以使用的标准化环境。 Ubuntu LTS对此非常有用,因为拥有自己计算机的人可以在VM中运行它,而学校可以提供计算机,喜欢冒险的Windows用户可以使用WSL。

当然,数学是计算机科学的基础。 将这种观点与更多实际元素相结合非常重要,这样学生的学习算法就可以在现实世界中实现它们,而学生构建软件可以对其进行适当的分析。 除了纯粹的数学理解和计算模型之外,还应该接触“怪异”的编程语言,例如Haskell,Erlang,Prolog,Elm等。

对于许多部门来说,这些都是艰巨的变化,尤其是那些拥有数十年未编写生产软件或者长期使用非UNIX OS的教师。 我认为没有充分的理由迫使学生自己弄清楚这些东西。

对理论有很好的了解,在标准UNIX环境中具有某些选择的语言并且对其他语言有所了解的学生将是更好的教授,更好的工程师和更好的Web开发人员。 让我们为计算的未来改进这一领域!


  1. Cross, Hendrix, and Umphress, 2004. DOI 10.1109/FIE.2004.1408803 

  2. This is why I think Python 3 is a better teaching language than Java, but that's beside the point here. 

  3. Example given by feonixrift 

from: https://dev.to//noracodes/stop-making-students-use-eclipse-jf5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值