首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该学习什么来“学习”比较科学?

我应该学习什么来“学习”比较科学?
EN

Software Engineering用户
提问于 2010-11-07 21:16:30
回答 6查看 1.1K关注 0票数 6

这个问题最初是在堆栈溢出时提出的,但建议将问题移到这里。

我找不到和我要问的问题完全一样的问题,所以如果已经有类似的事情,请原谅我,请自由地指出我的正确方向。这也需要一些背景解释,请原谅我。

背景故事

基本上,我大约18个月前从大学毕业,获得了商业信息系统和日语学位。日本人占了学位的一半,因此国际清算银行只是一个联合机构。我只在语言方面学习PHP,基本上没有计算理论--一切都是职业的(网络、编程基础、CMS开发、Office和VBA,然后是大量的商业理论课程)。

因此,我决定教自己C#和ASP.Net,并尝试获得程序员的职位。我创建了一个在线商店风格的网站和一个Windows表单中的小型CRM应用程序,既教我自己,又构建一个组合,幸运的是,我成功地抓住了一个开发人员的位置。

坏的一面?我是我公司唯一的开发商。别误会我,在过去的一年里,我学到了很多东西,我做了一些很有意义的事情。大学之前,所以知道基本的无论如何,但这是一个非常“从书本学习”的工作-每天晚上。

那么现在..。我现在正处在一个时刻,我正在定期地构建软件,对时间尺度做出正确的判断,甚至有人告诉我,我的代码和方法是好的,其他专业人士在游戏中的时间比我长,而且他们为我提供了工作机会。

/backstory

这整件事归结起来就是,我现在想学习那些我不做CS就会错过的话题。更重要的是,你能推荐书籍/免费在线课程吗?我想学习计算机科学理论,而不仅仅是更好的编码。

谢谢!

EN

回答 6

Software Engineering用户

回答已采纳

发布于 2010-11-08 14:21:31

这里的关键是尝试吸收概念,而不是细节。例如,与其学习Java,不如了解它带给表的虚拟机以及它与C# CLR的区别。

您想要涵盖的主题类型如下(不按特定顺序排列):

  • 算法。气泡排序与QuickSort (QS并非总是最快的)、二进制搜索是什么相比较,等等。
  • 编译器。所有现代编程语言都有从源代码编译到字节码或机器代码的概念。如果您知道编译器所经历的痛苦,那么它有助于理解如何编写高效的代码。一些处理器架构理论可能会帮助您理解--参见Andrew的书。
  • 缩放。例如,超级计算机的编程和手机的编程有一些不同,尽管它们都可能运行相同的操作系统。找出差异和挑战,例如,malloc()失败时为什么/行为。
  • 并发性。有了多个核心,桌面电脑现在实际上可以同时运行不同的代码。这导致了各种各样的问题-锁定,种族状况,饥饿等。
  • 调试。熟悉工具或测试代码,找出如何在出错时最好地修复这些问题,特别是当它处于活动状态,并且无法重新启动/重新启动时。
  • 数据库。不管是哪个数据库,了解数据库组织和它们的工作方式都有帮助。大多数数据库书籍的介绍章节给出了一个很好的概述--页面、行、锁定、乐观、索引、执行计划等等。
  • SDLC学习需求>规范>设计>代码>构建>测试>提交> QA >部署>维护生命周期,而不考虑实际的项目方法。
  • 方法。看看传统的BUFD,瀑布,敏捷,Scrum,XP等等。
  • 工具。除了编辑器和编译器之外,SE实践中还使用了很多工具,从代码生成器到静态分析。
  • 功能性的还是程序性的。越来越多的函数式编程结构最近进入了过程语言--这是有充分理由的。去找出为什么Lisp/Prolog/Haskell仍然在使用,以及像F#这样的东西是如何将概念向前推进的。

有大量的资源-MSDN的第九频道,雅虎!/Google视频,YouTube,VideoJug等。

如果你真的想跟上一个科普·斯奇的人,那么看看任何一所大学的课程招股说明书,来了解他们在CS课程中所涵盖的主题。就我个人而言,我会更多地关注软件工程课程,而不是计算机科学,因为你有编程的历史,但也许不需要学习微电子来理解它们(在英国,CS =编程+硬件,SE =编程+理论)。

票数 5
EN

Software Engineering用户

发布于 2010-11-07 22:01:15

数学。

你必须真正擅长数学。这并不是因为为了编写代码,您可能会遇到求解微分方程的需要,而是因为您需要解决数学问题所需的相同技能,才能真正精通软件工程。我建议你在当地社区学院上几门高级数学课。也许是一种数值方法或离散数学课。

几年前,我修了一门软件工程课程,攻读计算机科学学位,教授使用了麻省理工学院的开放式课程软件的一些材料。他用了6.170道菜。我建议学习这门课,并学习一门关于面向对象编程,特别是设计模式的好课程。如果你还有时间,想学更多,那就继续学习人工智能和计算理论。如果我不得不选择一门在我作为开发人员的职业生涯中最有帮助的课程,那就是设计模式的研究。

因为我的名声很低,所以我不能发布更多的链接。做一个谷歌搜索“四人帮设计模式”的书,是经典地用来教这门学科。

祝好运!

票数 10
EN

Software Engineering用户

发布于 2010-11-07 23:03:28

如果你能负担得起,可以无限订阅在线狩猎书籍。你将有数千本与计算机有关的书籍(和其他技术书籍)。选择一个主题:算法是一个很好的起点。然后介绍了数据结构和程序设计。面向对象编程选择一种不同于您已经知道的新语言--比如Ruby或Python。浏览一些关于每个主题的书籍,以及那些你喜欢的书,深入阅读。

然后,选择一些您感兴趣的主题,比如操作系统、编译器、密码学、图像处理等等。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/17525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档