acm-header
登录

ACM通信

BLOG@CACM

加强计算机科学教育


安东达的道格·梅尔

我是一名职业软件工程师,在过去的十年里,我有机会以多种方式与计算机科学专业的学生接触。作为正式课程的补充,我做过一些客座讲座,也为计算机科学学生小组做过技术讲座。我当过黑客马拉松的评委。我还支持技术招聘,这很重要,因为新人才是任何繁荣组织的命脉。在这些互动中,大多数学生的问题都有一个共同的主题:学生应该学习什么技能?计算机科学专业的学生需要知道什么才能在行业中获得成功?这些都是重要的问题,也是我通常会给出的建议。

标准的序言

正规的计算机科学教育具有挑战性,因为技术主题的数量和这些主题的复杂性不断增加,但可用的教学学时数是恒定的。这是一个棘手的问题,我并不羡慕专业教育者的工作。我把重新构想或重新创建计算机科学核心课程的任务留给那些专业人员。这篇文章是关于“强化”课程——不管它是什么。

我向学生强调的第一件事是,技术在变化,所以要为终生学习做好准备。这听起来很老套,但却是事实。Pascal曾一度是热门语言,然后是C,然后是c++,然后是Java,在编写Python的时候,Python有多种主流用途。但基本原理通常不会改变,所以学生应该确保他们理解了核心概念和这些概念的实现,它们跨越了尽可能多的技术堆栈,从操作系统到网络到数据存储到编译器到编程语言、数据结构和软件工程等等。

其次,每个行业都有不同的挑战。例如,决定金融行业成功的因素不一定与医疗行业相同。有些差异是领域本身固有的(例如,会计/金融知识vs.生物/解剖学/药理学、法规),有些则是特定于该领域的技术挑战(例如,交易平台vs. EHRs)。因此,当学生问及“在行业中取得成功”时,关键问题是“是哪个行业?”虽然计算机科学的基础是广泛适用的,但这只是一个开始。

核心的阅读

多年来,我向学生们推荐了三本软件工程书籍,每本都涵盖了这门艺术的一个特定方面。

  • 《有效Java》(Effective Java, Bloch)——Myers以《有效c++》的风格编写的一本书,涵盖了他们可能没有意识到的Java语言陷阱,以及对一些关键设计模式的温和介绍。
  • 重构,福勒- - - - - -本书首先假设您继承了一堆代码,然后必须识别和纠正糟糕的气味。虽然代码示例是用Java编写的,但这个概念是基础的,因为这种继承代码的体验实际上是一种仪式。
  • 设计模式,Gamma等人。- - - - - -可以这么说,虽然几乎每个计算机专业的学生都熟悉软件设计模式的某些方面,但读过“原始希腊文”设计模式的人却很少。c++中的代码示例。阅读最后这篇文章,因为它往往是更有意义的代码在一个人的手指下。

虽然这两本书都以java为中心,而所有的书本质上都是面向对象的,但我仍然认为这些书在描述“编程”和“软件工程”之间的区别方面做得很好。

冒着违背我自己不建议改变学术核心的假设的风险,我强烈建议计算机科学专业的学生也接触数据科学和人工智能。传统计算机科学程序设计和统计程序设计之间的历史差异曾经非常明显。现在,人工智能、机器学习和数据科学平台不仅与许多主流开发平台融合,而且现代解决方案有望结合两者的元素,而不是单独交付。

学生团体

学生群体是计算机科学强化的一个重要方面。我最喜欢的例子是我有幸在凯斯西储大学(Case Western Reserve University)合作的一个团体,叫做黑客协会(Hacker’s Society),简称HacSoc。这是一个“案例研究”,原谅我的双关语。

Case HacSoc始于2007年,作为计算机科学学生的合作支持,因为一些计算机科学学生比其他人有更多的经验,而不是像它的名字所暗示的那样关于恶作剧或特技。虽然最初HacSoc确实强调计算机安全(例如,SQL注入是如何工作的,以及如何保护应用程序免受攻击矢量的攻击),但它主要关注的是教育自卫:Linux命令行要点,源代码控制系统如何工作,后来随着小组的发展,它开始关注如何准备技术面试。没有申请流程;一个刚出现。“任何人都能做到!”也就是你自己!”在早期,它不仅仅是学生组织的,它几乎完全由学生的演讲组成。

据我所知,虽然计算机科学系支持HacSoc,但大学的其他部门对“黑客协会”的消息却没有同样的热情。凯斯不仅是一个拥有本科、硕士、博士学位的研究机构,还设有医学院和法学院。要考虑的名誉损害不仅仅是计算机科学系,而且一个被认可的大学团体被认为参与了被公众理解为“电脑黑客”的活动,在一些人看来,这只比要求地狱天使摩托车俱乐部(Hell’s Angels Motorcycle Club)的学生执照稍微不那么离谱。HacSoc试图解释,“黑客”可以追溯到1970年代MIT的探索和HAKMEM风格的知识共享,这一术语被腐蚀成了最初被理解为“破解”的东西。为了避免争议,该大学要求该组织更改名称。然而,HacSoc回答说,由于它从未真正申请成为一个被认可的组织,大学不能要求做出改变,并礼貌地拒绝了。由于官方的校园组织有资格获得适量的资金,这不仅仅是对计算机术语的原则性立场。无论如何,HacSoc都不会改名,披萨的钱就见鬼去吧。因此,HacSoc作为一个准叛逆实体开始了多年的存在。不是无政府主义,只是打破常规。

在这个小组成立几年后,我第一次给HacSoc做客座演讲时,有人向我指出,他们在校园里还不是一个正式的组织。我看得出来,这是一个虽小但充满好奇心和智慧的群体,而且从个人经验来看,这群人不怕向嘉宾提问。在接下来的几年里,又发生了一些事情。HacSoc和ACM学生团体之间的成员关系达到了一个临界点,这两个组织或多或少是同一件事。不完全是,但也足够了。黑客松等大型活动由ACM正式组织,但也打着HacSoc的旗号进行宣传。同样重要的是,HacSoc在专业技术方面建立了声誉,尽管并不总是因为gpa最高,因为兼职项目有时会妨碍课程作业。它还在获得实习机会和有趣的工作方面树立了声誉。这引起了大学的注意。现在看来,校园里有一个“黑客社团”似乎并不疯狂。 In defense of the university's initial reticence, the HacSoc proved itself to be true to the original hacker ethos with results.

所以,找一个学生小组,或者如果其他方法都失败了,那就自己创建一个!

活动,

黑客松经常是学生团体的产物,大型活动变成了整个周末的活动,有比赛和赞助。这是很好的合作和联系的机会。然而,我要提醒学生团体不要太过沉迷于竞争方面。我见过一两个项目,我非常确定它们是提前几周完成或计划好的,虽然这些项目令人印象深刻,但这并不是黑客马拉松的真正意义所在。我建议竞赛中考虑“最大胆失败”之类的奖项,以奖励“在周末完成”的探索和黑客的原始精神。

开源软件

开源项目是看到实际软件开发的一个很好的机会。开源软件不仅仅是代码本身,它需要一个围绕着代码的社区来获得成功。由于开源项目是由人类创建和维护的,因此它们往往具有人类风格的优点、缺点、特性和戏剧性,因此成为令人着迷的观察实验室。

在选择要关注的开放源码项目时,选择个人感兴趣的项目。任何时候都有“热门”项目,但最合适的项目应该是您想要花费大量时间并在理想情况下使用的项目。有时候项目的技术复杂性会让人不知所措,所以要有耐心,一天一天来。此外,根据前面关于人的优缺点的评论,并不是所有的项目都同样欢迎和支持新成员。你自己判断是否合适。

对于那些不熟悉开源的人,我建议采取以下步骤:

  1. 查看代码
  2. 阅读文档
  3. 让代码在本地(或其他地方)运行
  4. 注册distdist列表
  5. 查看问题或票(例如,Jira)
  6. 了解项目的开放源码许可
  7. 贡献!

仅仅通过步骤1-6就可以是一个巨大的学习经验,就如何组织相当大的代码库而言,理解项目任务的文档记录有多好(以及它是否实际上遵循其文档记录的任务),以及社区如何行为和组织自己而言。仅仅是开源并不能保证成功,例如,Apache Attic充满了死亡的项目。了解开源许可的具体内容超出了本文的范围,但足以说明这是一个复杂的主题,应该添加到需要研究和理解的事项列表中。

贡献也有多个层次。许多刚接触开源开发的人认为,贡献只是意味着编写新特性的代码,但这是不正确的——一个成功的开源项目需要很多人的参与。贡献可以有多种形式:

  1. 在dist-list上回答人们的问题。
    1. a.建议:在发布问题之前,一定要仔细阅读文档,并查看以前的帖子,看看是否有问题之前被问过。这样你会更快地交到朋友。
  2. 发现错误时记录错误。
  3. 日志记录建议(特别是“开始”类型的日志)。
  4. 改进单元测试(创建或改进)。
  5. 改进文档。
  6. 性能测试。
  7. 改进构建过程。
  8. 错误修正。
  9. 功能的改进

我自己在Apache HBase项目早期的经验包括改进文档和参与编写HBase参考指南,以及在dist-lists上参与大量的问题回答。我在一家初创公司做过不止一份全职工作,HBase是我晚上和周末的工作。文档工作与我的兴趣、需求、技能以及同样重要的我的日程安排相一致。在一个成功的开源项目中,总是有更多的工作要做,每一点都有帮助!

祝你好运,黑客愉快!

作者的注意

特别感谢Tim Henderson和Stephanie Hippo对凯斯西储大学黑客协会的历史贡献。

参考文献

HAKMEM——20世纪70年代麻省理工学院的“黑客备忘录”。https://en.wikipedia.org/wiki/HAKMEM

Apache软件基金会-开源的“Apache之路”https://www.apache.org/theapacheway/

Apache Attic -已死项目列表https://attic.apache.org/

另请参阅

黑客的喜悦:一本关于位运算的好书,在对“黑客”的原始理解上。我希望这本书经常与网络安全方面的书混淆。https://en.wikipedia.org/wiki/Hacker%27s_Delight

2018年,我写了一篇关于如何使用开源软件的个人博客:https://themeildeal.blogspot.com/2018/11/how-to-get-involved-with-open-source.html

道格·梅尔是onada公司的投资组合架构师。他还创立了克利夫兰大数据聚会在2010年。更多Doug的ACM文章可以在这里找到https://www.linkedin.com/pulse/publications-doug-meil


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map