Computer science 我在上CS课程。我应该关注什么编程主题?

Computer science 我在上CS课程。我应该关注什么编程主题?,computer-science,Computer Science,现在最重要的是什么?我知道我以后可以获得编程经验。毕业后,我应该学习以下哪项才能成为一名优秀的程序员或分析师 数据结构 算法 软件工程 低级方面 设计模式与面向对象分析 [编辑] 谢谢你的回答。我想包括其他重要主题,以供其他学生参考: 当前编程 操作系统 [/Edit] 注:我认为列表的第一项应该是学习英语。清单上的每件事都很重要 让我们看看 您需要了解复杂性、数据结构和算法,以便做出重要选择。不幸的是,你需要真正理解这些话题,解决复杂的脑筋急转弯,因为它们在面试中的作用要比你以后实际工

现在最重要的是什么?我知道我以后可以获得编程经验。毕业后,我应该学习以下哪项才能成为一名优秀的程序员或分析师

  • 数据结构
  • 算法
  • 软件工程
  • 低级方面
  • 设计模式与面向对象分析
[编辑]

谢谢你的回答。我想包括其他重要主题,以供其他学生参考:

  • 当前编程
  • 操作系统
[/Edit]


注:我认为列表的第一项应该是学习英语。清单上的每件事都很重要

让我们看看

您需要了解复杂性、数据结构和算法,以便做出重要选择。不幸的是,你需要真正理解这些话题,解决复杂的脑筋急转弯,因为它们在面试中的作用要比你以后实际工作中的作用大得多。因此,出于实际原因,这些是最重要的事情


软件工程、设计模式和分析非常重要(尽管我有偏见)。不幸的是,除了设计模式之外,如果不在主要项目中积极实践,就无法真正学习这些主题。重点理解面向对象编程和虚拟函数/动态绑定的概念,因为它们非常重要,而且很多人没有正确理解它们。尽最大努力获得一个好的实习机会。

所有这些都很好,但算法是一个很好的起点。也许你应该先研究离散数学课程的理论。

我个人会研究以下内容:

  • 一种类似C的语言(C/C/C++/C#/Java)
  • 一种脚本语言
  • 一种函数式编程语言
    • 特别是因为我们正在走向一个多核世界,这将派上用场,因为它允许并行化,而不是其他语言目前所能做到的。例如,整个电信基础设施都在Erlang上运行
  • 数据结构
    • 你将在任何地方使用这些。他们是编程语言不可知论者,你在整个职业生涯中都需要他们
  • 算法
    • 这些最有可能与上述项目一起使用。某些数据结构具有访问它们的特定算法
  • 设计模式
    • 是的,我们当然要学习各种设计模式,但同时也要知道它们并不是软件工程的全部

你清单上的所有其他项目也都非常重要,因此,虽然我建议你列出上述项目,但它们并不比你列出的其他项目更重要。这些都是我希望从学校里得到的东西,我很难过地说,我没有把它们作为课程提供,但我不得不在学习其他课程的同时自己学习它们。

在这里插入Joel似乎是合适的;-)


清单上的所有内容都很重要,但你也需要正确的态度。你需要深入了解你学习的每一件事情是如何运作的,以及为什么要这样做,而不仅仅是做课堂作业。这才是让你成为未来专家的真正优势所在。

所有这些都是强制性的

你在想什么?我希望你在专注(例如,游戏设计与安全和加密)之间做出选择


你不能在“算法、面向对象、数据结构、软件工程等”之间做出选择。这些是最基本的!你必须全部学习。

我将从数据结构和算法开始,没有竞争。面向对象设计很有用。 有点低级,是的。 可以跳过S/W工程(这是可以接受的)

此外,以下是一些想法:

  • 关系数据库基础(不仅仅是“如何使用oracle”,而是实际的关系代数)
  • 操作系统
  • 编译器+解释器
  • IR中的一些东西(/遗传算法/神经网络)
是的,我对“硬核”CS的东西有偏见。繁忙的工作、超繁重的流程和其他PM垃圾,你很快就会在行业中学到,不需要在这些方面浪费你的教育资源。:-)

  • 多线程和分布式系统
  • 如何使用漂亮的GUI构建用户友好的应用程序
    我认为你已经走上了正确的道路,因为你的列表中没有提到任何特定的语言。我认为这是CS学生犯的第一个错误——专注于一种语言或一种范式


    你的整个清单非常重要;我唯一要补充的是对多线程的相当深入的研究。它在未来将变得越来越重要:()

    您列出的所有内容都是体面的计算机科学教育的基本组成部分,尽管您确实应该添加以下内容:

    • 操作系统
    • 联网
    • 数学(离散、微积分、代数、证明、统计入门课程)
    • 数据库
    • 基础(有限自动机、正则表达式、图灵机等)
    这两个列表将使你对计算机科学有一个很好的核心理解,之后你应该选择一些更专业的主题(你最感兴趣的主题)

    • 人工智能
    • 加密/安全
    • 图像/信号处理/识别
    • 编译程序
    • 图形
    • 游戏设计
    • 等等
    你会发现,一旦你开始深入到一个主题,所有的核心课程,包括数学,都将开始发挥作用!例如,我目前正在学习图像识别,必须使用和理解统计、人工智能、微积分、证明、代数、算法、数据和统计等方面的知识