谁可以学习编程?[关闭]


17

与教授交谈时,我总是会犹豫,要设法提高拥有CS型学位的人所占的百分比,而不是开始认为自己想要的人的比例。一方面,我确实确实认为,让专业人士参与并提供反馈非常重要,另一方面,如果较少的中等学生获得CS学位,那就更好了。

我认为并不是每个人都为这个领域而生,因此您必须成为一名终身好学生。您必须具备高度的耐心和解决问题的能力,以备不时之需。如果您确实有“正确”的大脑,那么这些难题将驱使您继续前进。如果您只是一小堆容易解决的问题,就会感到无聊,因此这些人实际上并不擅长重复性工作。我不需要进入所有细节...如果您正在阅读此书,您可能知道我在说什么。

所以问题是:您如何找到学位课程的平衡,可以让足够多的人获得资助并被认为是成功的,但是却没有找到真正没有工作机会的人?也许更好的问题是,您使用什么度量标准来了解学位课程中所做的更改是否使其变得更好?我不知道更高的毕业率是一个很好的指标。看来,多年以后您可能试图收集的有关毕业生所从事工作的反馈可能会太迟了。

我已经为这个问题苦苦挣扎了很长时间,主要是因为我认为没有答案。但是我想问一下是否有人知道对它进行过任何研究。

另外:最近我有一位非常明智的教授提醒我,并不是每个拥有CS学位的毕业生甚至在真正意识到这意味着什么后,甚至都不想成为一名全职程序员。但是,通过他们的教育,他们可能会成为出色的项目经理,经理,系统管理员等。我认为这是一个很好的观点,我在这里没有考虑过。有很大比例的人最终没有在他们所专业的领域工作,CS也不例外。拥有更多的人不仅可以帮助他们节省学位的预算,而且可以扩大仍对编程工作足够了解的非程序员的比例。


@ Job-谢谢,这很重要,确实让我感觉好很多。
贝丝·怀特泽尔2010年

2
@job:从心理学专业来讲,现在正在编程NMR机器,我可以证明这一点。
马特·艾伦

Answers:


33

好吧,受大众需求...让自由市场弄清楚。您知道,95%的心理学专业学生最终会做其他事情。并非每个具有CS学位/未成年人的人都可以编程,但是与没有的人相比,他们可以提供更好的经理,分析师和项目经理。不要将世界的重担放在肩膀上。CS学位只是一张纸。那些拥有数学,物理,化学和生物学学位的人继续成为程序员,而不是每个拥有CS学位的人都成为程序员。没有成千上万的孩子渴望成为最好的棒球运动员,我们就不会有如此伟大的明星。该系统是自我调节的。


我在某种程度上同意,但是我还必须支持那些以物理学,数学和机械工程学士学位为基础的人编写的代码。仅仅因为某人为自己的工作做某事并不意味着他们做得很好……
Joel C

7
我已经看到许多CS学生编写的错误代码。我看过由数学或物理学或其他方面的人编写的惊人代码。您所研究的内容与代码质量之间几乎没有关联。
2011年

1
另外,去生物学!
2011年

11

虽然我确实确实要记住Job的答案很重要,但相同的答案也可以应用于学位课程。“我付了我的$ 199.95,现在给我我的CS学位。”

根据什么是“真正的程序员”的标准来宣扬学生的身材并不是您真正的工作。教学生如何编程/设计(大概是?)。如果您没有改变大学的思维方式,那您就浪费了时间。您的目标是向所有对成为程序员有兴趣的学生表明,他们会改变他们的思维方式,从而变得更好。您可以通过向他们展示来间接地做到这一点...

  1. 真正的编程是什么...
  2. 他们可以做到。

我们做错了

有大量的研究表明,我们95%的大学课程教授编程/ CS的方式都很糟糕。平均CS程序开始于

  • 一个学期的C ++ / Java / C#基础编程学期,花了16周的时间来教授一些比“这是一个for循环”更高级的内容。打个比方,如果物理系在开始运动学之前就花了一个学期研究希腊字母。
  • 大学二年级的学生进入基础数据结构,通常完全落后学生的三分之一至一半。
  • 大二时,会花一些时间在汇编,数据结构,算法分析,道德课程以及您的第一门主题课程中。在这一年中,您往往会失去另外一半的新生。
  • 初中和高年级的学生以“图形”,“网络I和II”,“操作系统”为名,这是学生们看到的第一个真正有趣的材料。

几乎所有其他东西都更好

根据学生对主题,课程注册和毕业率的理解程度,几乎任何实验都能改善这种情况。我在ACM CSE期刊上看到的一些实验是...

  • 从非常简单的理论状态机到汇编再到C的构建,在大四时以C#/ Java结尾。重点是慢慢地爬上抽象层。
  • 选择一种非常“简单”的语言,使学生专注于数据结构和抽象。在大一学生年底之前,我已经看到学生用方案变体编写相当复杂的Web应用程序的良好结果。(这是一个经过修改的Wiki,可以在显示...排序之前通过方案运行页面文本)
  • 使初学者集中于某个特定领域(网络),并将每个Java结构/语句作为“旁观者”来教。第二周的学生对邮件服务器执行ping操作以查看其电子邮件列表,最终项目是一个简单的IM客户端。重点是向学生展示程序员如何使世界成为工作的一部分。
  • 一些程序专注于机器人技术。大一新生在乐高头脑风暴中玩耍...大二学生使用类似C的API,大三学生与ME和EE在跨校园协作中共同构建相当复杂的系统。
  • 一个程序使学生在上半学期专注于阅读代码。他们在X11系统中分析代码以教授流控制和基本语法长达8周左右,甚至还没有开始编写代码。他们的第一个程序是一些小的补丁,可以修改一些行为。

这些实验中的每个实验都极大地提高了学生的最初兴趣,知识转移和保留直到毕业的能力。有些课程比某些课程更适合某些大学环境,但是如果您遵循以上段落中描述的结构,请问自己:“在该计划的前两年中,我会坚持吗?”


我同意您的看法,因为我们应该专注于向他们展示编程的全部内容,以及无论以后您做什么,它都将如何改变您的思维过程。好主意;心存善念;睿智哲思。
Beth Whitezel

2

编程是指以逻辑方式进行指令,以实现某些所需的输出。换句话说,它告诉计算机执行某些任务。前进的唯一途径是练习。

就像学习英语或其他任何语言一样,您需要先学习语法(字母),然后再学习语法和其他结构。所需时间取决于语言的复杂程度。使用SQL之类的高级语言进行编码,Python 几乎就像写英语一样。


2

我认为有几个方面会有所帮助-

  • 认识现代现实世界的教授。如果他们能够谈论当前技术及其如何适用于理论框架,那么与不了解当前技术的VAXen剖析相比,与无历史认识的本科生更为相关。

  • 部门支持的实习。如果该部门能够保证至少有2个暑假与科技公司一起工作,那么就有很大的动力来坚持。

坦白说,现代计算机科学专业的学生比5至10年前的学生更加幸运。能力购买低端系统,然后再安装一个虚拟机,并学习多国语言,操作系统等,自由就是这样一个推动者,这是很难夸大它。

当然,像Hopper和Knuth这样具有开创性的人自学成才。天才会出来的。


虽然这个主意很棒,但是很遗憾,两个夏天不能保证有薪实习工作是不现实的。是的,有带薪实习,但是大多数应届毕业生很幸运现在能拿到一份薪水,而且常常不得不解决无薪问题。在其他状态下可能会有所不同。我认为您对他们拥有更多操作能力是正确的。与几年前一样,它们可以为更多的开源项目做出贡献。
Beth Whitezel

@BitOff:我从来没有听说过没有薪水的CS实习。
保罗·内森

不开玩笑吗?那一定是本地化的东西。
Beth Whitezel

1

为学位课程之外的潜在成功学生创建过渡区域,以降低风险。这可能包括赞助当地高中的AP CompSci课程,以抢先将小麦与谷壳分开。如果发现这太困难了,请尝试在高中或大学部门使用面向CS的程序渗透到本地DECA章节(或创建一个新的章节)。相反,您将向寻求管理技能(可能具有未实现的CS潜力)的企业家学生展示,这是一种通过您的学术媒介实现其业务愿望的新途径。


是的,我完全同意我们需要做更多的工作才能在大学之前引入CS。我知道大多数高中都提供一门或两门高级计算机课程,可以使用编程语言,但我认为这还不够。我经常想到,如果您可以向4-6年级的孩子讲一种简单的,适合孩子的语言,那么您会在合适的年龄吸引他们的兴趣。我在8或9岁的时候就开始学习基础知识,尽管我又花了10年左右的时间才真正开始学习它,但这给我留下了很多“编程”的记忆。
Beth Whitezel

1

我认为关键在于理解此类程序的不同级别:

大学-这往往是人们为了学习而可以学习的地方。在这种情况下,在创建程序和调整程序方面可能存在完全不同的标准,因为这可能是理论上的,或者至少这是我在高年级学习计算机科学时所记得的。

大学-这些大学通常以职业为导向,这是行业反馈以及将公司与大学联系起来的关键所在。查看毕业后6到12个月的安置情况,可以用来衡量人们毕业后的表现如何,因为关键的问题是有人是否认为自己的时间和金钱值得接受这种教育。更新课程的频率可能会更高,因为此处的课程可能会更短一些,例如,大学荣誉学士学位课程通常为4年,而大学文凭课程则可能为18-24个月。因此,面临的挑战更多是使这一部分与公司建立联系,以便人们可以接触到工作并了解对他们有用或不起作用的东西。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.