Computer science 哪门本科计算机科学课程最能让程序员为工作做好准备?

Computer science 哪门本科计算机科学课程最能让程序员为工作做好准备?,computer-science,generic-programming,Computer Science,Generic Programming,这里的想法是让更好的程序员从大学毕业 我想我必须使用算法,这并不是你能很容易地学会的东西,我认为它能让你在更深层次上观察软件的效率和正确性 我也相信教授实际的编程是有帮助的,但我在工作中学到了编程的大部分知识,这使我认为一些编程课程模块(不是全部)可以更好地使用 这些结果将成为我想写给母校计算机科学系的一封信的一部分,我认为我参加的很多课程根本没有帮助,还有一些我认为非常宝贵的课程。计算机科学!=编程 如果你想找更好的程序员,那么就找那些受过两年大学教育的人,他们专门专注于此。数据库设计 函数式

这里的想法是让更好的程序员从大学毕业

我想我必须使用算法,这并不是你能很容易地学会的东西,我认为它能让你在更深层次上观察软件的效率和正确性

我也相信教授实际的编程是有帮助的,但我在工作中学到了编程的大部分知识,这使我认为一些编程课程模块(不是全部)可以更好地使用


这些结果将成为我想写给母校计算机科学系的一封信的一部分,我认为我参加的很多课程根本没有帮助,还有一些我认为非常宝贵的课程。

计算机科学!=编程

如果你想找更好的程序员,那么就找那些受过两年大学教育的人,他们专门专注于此。

数据库设计

函数式编程

面向对象编程

x驱动设计

  • 商业101
  • 办公室政治200
  • 现实世界中没有什么是学术性的

事实上,进入编程工作后,从第一天起,你就不可能成为一名高级开发人员。学习一些编码基础知识当然需要很长的时间,但随着时间的推移,我看到相当多的计算机科学学生在现实世界中苦苦挣扎,因为他们不知道自己在第一天要做什么。他们与业务领域斗争,并理解他们为什么这么做。他们不知道该与谁沟通。

我认为这是数据库系统和软件工程项目课程之间的纽带。这两门课程都不是我学校本科学位的必修课,但本科生可以选修。对于大多数程序员来说,掌握一些数据库知识可能比算法更为必要。在项目团队中工作,甚至在课程项目中,都可以帮助您了解团队动态以及如何在团队环境中工作


另一方面,我坚信,对基础计算机科学主题的良好理解,包括数据结构、算法、操作系统等,对于培养程序员的成长能力至关重要。

没有什么能比通过构建项目获得的知识更优秀了,无论是哪门课程,如果你学的是关系数据库课程,构建一个库系统项目,如果你学的是汇编语言,构建一些类似于32/64位汇编的PC工具


你只有通过“编程”才能成为更好的程序员,而不仅仅是通过学习课程和获得较高的GPA。

这是一个很难回答的问题,但我认为在许多CS程序中阻碍程序员的一件事是缺乏动手编程。了解计算机科学的理论是很重要的,但我认为很多理论性很强的计算机科学课程都会因为在课堂上不需要编程练习而失败。例如,我见过很多AI类需要研究和论文,但没有代码。在我看来,理解计算机科学的理论是极其重要的,但能够应用它也同样重要。

我还没有找到一门好的CompSci课程,能够为工作场所的软件工程师做好充分的准备。如果你找到一个具有以下特征的软件[尽管我怀疑它是否可以被称为CompSci,但它更像是真实世界的软件设计,这是一个非常不同的野兽]

计算机科学是一门更具理论性的学科,具有非常现实的意义,但从学术角度来看更有用。例如,算法设计对软件工程师非常有帮助,但对消费者并没有直接的帮助。例如,知道如何构建快速排序算法,或者理解链表遍历在当今的软件工程环境中并不是很有用——当然,理解该理论有助于为工作选择正确的工具,请不要误解我的意思。作为开发人员,我们中的许多人依靠计算机科学界的成果来进一步开发我们的开发工具,事实上,如果没有这些工具,许多开发人员将陷入困境,但是,如果把一名计算机科学毕业生放在用户面前,让他们为他们设计一款有意义的软件,那么学术智慧就会崩溃,因为这两种语言完全不同

对于软件工程师来说,一门更有用的课程将包括尽可能多的(甚至可能更多的)我能想到的以下组件:

  • 编程语言-基本程序流程、范例、语法等。这门课大部分都教得很好,所以我不会太多地坚持这门课。虽然如果教授一些完全不同的编程语言课程会有帮助——例如,我学习了C、Pascal和VB3(?我不记得确切的版本)。如果程序员至少学会一种函数式语言、一种命令式语言和一种声明式语言,那将更有帮助
  • 调试-在编写nTier应用程序[许多/大多数现实世界的应用程序都是这样]时,能够找出哪里出了问题将非常有用,如果需要,可以直接到协议级别。WireShark等分析工具对此非常有用
  • 通信设备-XML、XQuery、XPath、XSL、XSD[因为它们似乎被广泛使用]
  • 关系数据库设计-这已经教得相当好了
  • 关系数据库性能调整-仅仅设计表是不够的,知道什么时候适合索引某些字段,什么时候不适合索引也很重要,很多课程似乎都没有涉及到这一点
  • 数据正常化