【问题标题】:If you could take one computer science course now, what would it be? [closed]如果你现在可以上一门计算机科学课程,你会选什么? [关闭]
【发布时间】:2010-10-07 07:56:21
【问题描述】:

如果您现在有机会参加一门计算机科学课程,从而显着增加您在某个学科领域的知识,您会选择什么?本科或研究生水平。

编译器?分布式算法?并发理论?高级操作系统?

告诉我原因。

(请注意,我很欣赏这不是一个牵强附会的场景 - 但时间和惯性可能会阻止人们参加课程或阅读书籍或其他任何东西)

【问题讨论】:

  • 在这成为社区 wiki 之前给你代表 ;)
  • 你已经拥有计算机科学学位了吗?这是补充课程还是第一次?
  • @Steve:我几乎拥有三个 :) 但是 a) 总是有更多的东西要研究,我已经逐渐变得更加专业,b) 有趣的是,看看学术界的哪些部分仍然对可能感兴趣的人感兴趣把它抛在脑后了。

标签: computer-science


【解决方案1】:

网络。 (不是社交网络……尽管这可能是一门有趣的课程。)

【讨论】:

    【解决方案2】:

    数据结构和算法 - 本课程教您如何构建更高效的代码,还教您解决复杂问题的常用方法。我不是这方面的佼佼者,但我相信这类课程教你如何思考复杂问题的方式可以在许多其他领域为你提供帮助。

    【讨论】:

    • 这门课程很棒,但请尝试让一位捷克教授教给您,并在您出生之前写一本书。很痛苦。
    • 这种类型的课程非常重要,以至于我不知道如果没有上过这种类型的课程并且做得相当好,我不知道人们如何成为优秀的计算机程序员。
    • 我同意贝斯卡的观点。我的大学要求这两门课程是有充分理由的。
    【解决方案3】:

    任何使用最新语言的现代算法课程不仅教您算法,还教您语言!

    【讨论】:

    • 算法!= 编程。一门好的算法课程应该更像一门数学课程——解释设计、分析和证明算法的方法,并很好地介绍不同类型问题的特征(例如,P vs NP)。这是非常独立的语言。
    • 好吧,它们非常不同。我的意思是用流行的编程语言实现各种算法,这样你就可以同时学习。我有一个用 PASCAL 和伪代码教授的算法课,我发现这很痛苦而且有点没用,因为它根本没有教我新的语言!
    • 我的算法课上没有编程,但这绝对是我上过的最有价值的课程之一。当然,我不会直接在工作中使用这些知识,但这不是学位的重点。这门课对于我更好/更深入地理解软件至关重要。
    【解决方案4】:

    编译器。

    就像学习一门外语迫使你比以往任何时候都更仔细地考虑你的母语一样,我相信编写编译器会让你对你通常编写的所有代码有深刻的洞察力。

    【讨论】:

    • 参加了编译器课程后,我可以证明这一点,它使我成为一名更好的程序员,因为我现在对我最常用的工具之一有了更深入的了解。
    • 我已经把除此之外的所有以前列出的.. 所以我想这会赢得我的投票。
    • 当然不适合所有人;编译器是我上过的最无聊的课程!
    • 嘿,我上课的时候真无聊。 (我喜欢 CPU 架构和 OS 类)。但在那之后的几年里,它开始看起来更有趣了。不管怎样,不管无聊与否,这绝对是有用的东西。
    【解决方案5】:

    基因编程?

    【讨论】:

      【解决方案6】:

      我会选修一门涵盖我知道自己难以自学的材料的课程。例如,我对量子计算完全着迷,我很想知道更多关于它的信息,即使它可能对我没有专业帮助。

      【讨论】:

        【解决方案7】:

        隐私和匿名(实际上,我刚刚审核了这个,所以它确实不完全适合这个问题)。一旦您弄清楚使用最少的信息可以多么容易地在网络上唯一识别您,您将更加谨慎地处理您分发的信息(作为用户)和收集/显示的信息(作为开发人员) )。

        【讨论】:

          【解决方案8】:

          神经网络
          人工智能实践
          自然语言或语义处理简介。

          其中任何一个...哎呀,如果我有时间,我现在很乐意做任何一个。

          但是,如果您将范围扩大到涵盖任何课程,我将不得不选择会计课程。这在各种方面都会很有用。

          【讨论】:

          • 不幸的是,在我的(最少的)体验中,它们并不像听起来那么有趣......
          • @UncleZeiv 如果你还没有,你能分享你的经验吗?
          【解决方案9】:

          计算机网络或编译器构建 - 两者都是我学校的选修课,由于日程冲突,我从来没有机会参加。

          (从技术上讲,我的几门课程教授了编译器构建的各种元素——解析、管理符号表、激活记录——但它们更多地是关于机器/语言理论,而不是关于如何实际构建编译器)。

          【讨论】:

            【解决方案10】:

            操作系统。了解您在较低级别的刻度上如何开发该框有助于您以后掌握所有较高级别的概念,尤其是在出现问题时。

            【讨论】:

            • 上好课;出奇的密集。
            【解决方案11】:

            我很想参加硬核(如John Carmack 硬核)图形编程课程。涵盖从硬件级别到光栅化和渲染算法以及完成 3 维数据操作和数据存储技术的所有内容。我在大学时提供的那一份相当平庸。

            【讨论】:

            • 您的要求可能需要几门课程。硬核图形工作确实很有趣。
            • 或者一个非常长的课程,但无论哪种方式,我都会抓住机会接受它。
            【解决方案12】:

            This is a course I can recommend(这是一个远程学习课程)。

            您将了解逻辑、递归、二叉树/BST、真值表、效率、函数的正式定义。它不需要任何超出学校水平的数学背景。第 1 年的模块中涵盖了有关位操作、二进制计数等基本主题。

            尽管我听说很多大学都在使用 haskell,但您不使用它 - 它是一种 java 解释的函数式语言。

            【讨论】:

              【解决方案13】:

              信息技术法规

              诸如 SOX、PCI、HIPAA 和来自不同司法管辖区的其他法律要求,以及在 IT 领域工作时可能适用的隐私法。黑客也可能在某种程度上涵盖在这里,因为它是法律课程和信息技术之间的一种交叉,对某些人来说不一定是计算机科学。

              【讨论】:

                【解决方案14】:

                我有兴趣参加机器学习课程。我从事统计工作,与机器学习有很多重叠之处。我很乐意看到解决一些相同问题的不同视角。

                【讨论】:

                  【解决方案15】:

                  由于我已经学习了编译器、算法和所有其他标准 CS 内容,我可能会学习一些更有趣和“时尚”的东西,例如 IPhone development

                  【讨论】:

                  • 哇。如果你只能选择一门 CS 课程来学习,你会放弃算法、编译器、操作系统……而选择 iPhone 开发?
                  • 学习特定的课程并没有错,特别是如果你已经完成了其他所有事情。
                  【解决方案16】:

                  用户界面设计,在心跳中。

                  我在大学里学到了很多关于如何良好编程的知识,但从未提到过用户体验。在工作了十多年之后,我认为这种疏忽是彻头彻尾的犯罪。

                  【讨论】:

                  • +1。只有更多的人分享了你的观点......顺便说一句,我在大学时参加了这样的课程,出于兴趣,它不是课程的一部分。你猜怎么着,这门课程只有几个参加者。
                  【解决方案17】:

                  我希望我能拿一篇教一点汇编的论文。 我所做的所有论文都是用高级语言编写的。

                  我也希望我能早点进入数据库,我是在第二年才开始拿这些论文的。所以我一直没能拿Hibernate、JDBC等进阶论文。

                  【讨论】:

                    【解决方案18】:

                    我还没有完成我的硕士论文,所以我仍然可以选修任何我喜欢的 CS 课程。但我认为,通过阅读书籍和做一些练习,我可以更轻松地学习相同的东西,而无需参加课程(并且从练习和考试中获得压力)。另一种选择是只听讲座,但不正式参加课程(至少在赫尔辛基大学,讲座是公开的,任何人都可以听)。

                    下面是我接下来想学习的东西:函数式编程、分布式系统。编译器也是一个有趣的话题,但我现在不需要这些知识。

                    我的大学会有关于所有这些的课程,但现在我更喜欢自学。我将从 lambda 演算和 Haskell 课程中下载课程资料和练习,并阅读一两本关于分布式系统和算法的书。

                    【讨论】:

                      【解决方案19】:

                      算法(再次)。可悲的是,我认为我没有像第一次那样获得那么多。我的第二个选择是编译器。

                      【讨论】:

                        【解决方案20】:

                        还有编译器,因为它们在解析、模式匹配、语义分析、代码生成等许多领域都需要效率。

                        干杯

                        【讨论】:

                          【解决方案21】:

                          我的前两个(操作系统和编译器)已经用完了。我的下一个选择是关于数据库设计的一门很好的课程。数据库是任何 Web 项目的重要组成部分。了解它们在内部的工作方式将使以后的工作变得更容易。

                          【讨论】:

                            【解决方案22】:

                            极限编程。编程比赛的问题。 编码很多。快速编码。高效编码。 包括使用版本控制:)

                            【讨论】:

                              【解决方案23】:

                              “软件许可和相关版权法”将在未来几年大受欢迎

                              【讨论】:

                                【解决方案24】:

                                并行编程。我真的不认为它需要只是函数式编程。我对用非功能性语言探索这个话题同样感兴趣。

                                【讨论】:

                                  【解决方案25】:

                                  安全或密码学

                                  【讨论】:

                                    【解决方案26】:

                                    并行/分布式编程,因为 cpu 不会很快变得更快;多核和互联网将会出现一段时间。本科课程,因为我没有先验知识。

                                    【讨论】:

                                      【解决方案27】:

                                      计算几何。我从书本上学到的东西过得去,但我希望有机会时能真正深入了解。

                                      【讨论】:

                                        【解决方案28】:

                                        我很惊讶我没有看到任何人追求计算理论。这是我在大学学到的最令人讨厌的科目。这里肯定有人和我有同样的胃口。 :-)

                                        CS -> 1. 计算理论, 2.计算建模, 3. 编程语言

                                        1. 它让我对整体问题的解决有了更抽象的看法。我的经验告诉我,我越抽象,我就能为一个问题制定更好的解决方案。 :-)

                                        2. 建模非常强大,大多数问题的解决都依赖于它。有了它,我们通常以低层次的方式解决问题。这通常不是最好的解决方案。

                                        3. 它是计算机与程序员的接口。我有兴趣让所有人的编程变得更容易。所以如果界面能改进,大家都会受益。

                                        【讨论】:

                                          【解决方案29】:

                                          算法课,放下手。

                                          “如果你想成为世界级的程序员,你可以每天编程十年,也可以每天编程两年,然后上一门算法课。” - Erik Demaine 教授(麻省理工学院)

                                          学习算法复杂度、排序、合并和搜索算法非常重要。

                                          这是引用来自麻省理工学院的OpenCourseware algorithms class 视频的link 视频。

                                          【讨论】:

                                            【解决方案30】:

                                            【讨论】:

                                              猜你喜欢
                                              • 1970-01-01
                                              • 2022-12-11
                                              • 1970-01-01
                                              • 2023-03-26
                                              • 2013-01-29
                                              • 2010-11-08
                                              • 1970-01-01
                                              • 2010-10-28
                                              • 1970-01-01
                                              相关资源
                                              最近更新 更多