Answers:
我刚离开学校时看到的大多数开发人员都没有OO开发经验。他们听说过,但是大多数事情只是在“上课”。
在学校,您会获得大量有关汽车和人的示例,这些示例可以放在OO框架中。这将教您多态性,重载之类的东西。而是“基本”的东西。知道这些事情以及它们如何工作是一件好事,但是我从来没有一个实际的例子。我认为向学生展示一些使用某些设计的真实场景非常重要。
我在大学里想念的另一件事是使用(或滥用)了可用的设计模式。我认为这些天最重要的模式应该在第一年末或第二年初引入。学生应该熟悉它们。
编写干净的代码是学校没有(足够)教的。我们可以把代码弄得一团糟,仍然得到A +。如果应用程序能够正常工作,那就很好。是座右铭。学生应该学习如何编写干净,高质量的代码并因此而获得回报,这也意味着重构和使用他们学到的模式或最佳实践。
当然,那些渴望的学生会自己学习所有这些东西,但是其他没有那么渴望的学生却没有。这可能会缺乏动力,或者他们只是不知道在哪里或如何看。当为一所学校花很多钱时,我认为他们应该真正教您这种半高级的知识。
而且,对于大多数人来说,一些体面的(专业的)写作是一种技巧。太糟糕了,因为它在现实世界中非常重要。最重要的是能够用您的母语表达自己的意思。如果您不能用主要语言写清楚,则在公司中很难沟通。
我不知道您是否可以教这个年龄的人写作,他们应该已经熟悉这种技能。一个人可以重复在高中教的东西。也许教学生如何写评论和技术文档。我仍然发现很难编写技术文档,因为似乎没人知道怎么做,或者默认格式是什么。
我觉得我应该在统计上多投入42%的精力。
功能编程。当时似乎是一大堆括号,无济于事。现在,lambda表达式已被广泛使用,我不得不重新训练大脑以这种方式思考。在大学里,我只是想让LISP和Scheme尽可能地进入后视镜,并且永远不要回头。如果我对函数式编程的某些方面有多大用处,我会给予更多的关注。
常用表达。我清楚地记得在大学里把他们赶走了。他们是工作必不可少的。
我最喜欢的答案(统计数据)已记录下来,因此我将给出第二个我最喜欢的答案。Big-O表示法,并且了解各种关键算法的效率。对我来说,它不如统计数据更像是“秘密武器”,但它仍然非常有价值。
必须是有限语言和自动机理论的课程。
认为这太理论化了,直到我的工作要求我从头开始做一个领域特定的语言编译器。
我会说C和UNIX。尽管我上大学后不久就学习了UNIX,但我认为早先对UNIX和C更加深入的了解将使我受益匪浅。
技术写作。我花费大量时间来撰写需求,与客户和同事沟通。这是我在大学里修过1个学分时的课程。在我的职业生涯中唯一真正帮助过的课程是另外一个1学时的课程。那是在C编程中。剩下的虽然很有趣,并且可能帮助了我的整体分析技能,但这并没有真正给我的职业带来直接好处。
当然,我20年前上学了,C被认为是电气工程系的佼佼者。CS人员正在使用Lisp和C ++做一些事情,但可能还不如我希望今天的毕业生所进行的OO那么多。
第二外语。以我为例。在我周围的空间中,有许多书籍,资源以及更多使用该特定语言的书籍。
电子产品
我在学校没有太多与软件有关的东西。啊-信息学,但我取消了。:)但是稍后学习很容易。而电子产品,我常常不明白。微控制器,PWM,GPIO-wtf?我希望我能理解这些东西。
设计模式:呈现它们的方式实际上并没有告诉您它们有多有用,因为从那时起,我已经阅读了几本关于它们的书,并认为它们非常有用。
经济学。它可能很无聊(并且有点残酷),但是无论如何,它是这个社会中唯一真正必要的东西。之后,进行统计。
这么多人在谈论文科,真是可笑:我是认知科学专业(哲学/ CompSci /解剖学)...最终以一门英语重的辅修转向哲学/ CompSci(我本可以获得文学学士学位,但并没有打扰我跳过的101”。
我将花一个星期的故事来告诉您我从CS同学那里获得的所有这些文科课程的废话。不管有六个逻辑类对我的编程所做的贡献都比任何微积分都多。不管我所有最好的AI课程都是哲学课程。不管我的英语课上有没有骗人的女孩。不,不,我是那些从事这些课程的不拘一格的装腔作势者。
振作起来。至少当有人看着您的简历时,您不必解释自己的学历。
二次方程和三角函数。
对于传统工程学科而言,在编写软件中非常重要。