Questions tagged «computer-science»

计算机科学或计算科学(简称CS或CompSci)是计算及其应用的科学方法。

11
如何确保我实际上在学习编程而不是简单地学习语言的细节?[关闭]
我经常听到一个真正的程序员可以在一周内轻松学习任何语言。有人告诉我,语言只是完成任务的工具。编程是必须学习和掌握的最终技能。 如何确保我实际上在学习编程而不是简单地学习语言的细节?以及我如何开发可应用于所有语言而不仅仅是一种语言的编程技能?

30
指针有什么好的解释?[关闭]
在您自己的学习中(无论是自己学习还是上课),当您最终真正理解指针时,您是否有一个“啊哈”时刻?您对初学者使用的解释是否似乎特别有效? 例如,当初学者第一次在C语言中遇到指针时,他们可能只添加&s和*s,直到它编译为止(就像我自己曾经做的那样)。也许是一张图片,或者是一个动机很好的例子,使指针为您或您的学生“点击”。那是什么,在那之前您尝试了什么却似乎没有用?是否有任何主题的前提条件(例如结构或数组)? 换句话说,当您可以放心使用&s和时*,要理解它们的含义是什么?仅学习语法和术语或用例还不够,有时需要将想法内在化。 更新:到目前为止,我真的很喜欢答案。请让他们来。这里有很多不错的观点,但是我认为在我们将概念内部化之后,许多都是对自己的很好的解释/口号。我正在寻找黎明时分的详细情况和情况。 例如: 我在语法上只稍微了解了C指针。我听到我的两个朋友向另一个朋友解释了指针,后者问为什么将a struct与指针一起传递。第一个朋友谈论了如何引用和修改它,但这只是另一个朋友的简短评论,它打动了我:“它也更有效率。” 我需要的最后一个概念上的转变是传递4个字节而不是16个字节。

29
为什么计算机科学学位对专业程序员很重要?[关闭]
我拥有计算机科学学位。对于开门,找工作来说很棒。就帮助我在C#.NET编程的专业领域(即使不是整个美国,如果不是整个世界上最受欢迎的OS,我在该领域中最受欢迎的平台和语言),它几乎没有用。您为什么认为这对您作为职业生涯的程序员有帮助(除了喷出prims算法外,还给某些面试官留下了深刻的印象)? 在当今的世界适应中,敏捷的思维,强大的沟通能力,OO和基本的设计技能使开发人员能够编写出客户会接受的软件。这些技能仅在CS程序中略过。在我看来,阅读Wrox撰写的500页C#书籍比4年来的com cici blaster课程提供了更多有用的技能。许多人不同意。那么,为什么计算机科学学位很重要?

4
我如何完全自学计算机科学?[关闭]
作为一个完全自学成才的程序员,如果我能通过自学针对一个典型的CS毕业生的计算机科学课程来提高自己的水平,我会很高兴。 在互联网上查找不同的资源非常容易,当然还有MIT开放课程软件,还有斯坦福大学和其他大学提供的Coursera课程。Internet上散布着许多其他开放资源,并且反复推荐了一些好书。 我已经学到了很多东西,但是我的学习分散了很多,这确实使我很烦。我很乐意如果在某个地方,我可以找到我应该走的路,应该限制自己的学习范围,这样我就可以确定自己学习了哪些计算机科学的重要组成部分,然后系统地处理了我没有学过的那些部分。 维基百科的问题在于它没有告诉您什么是必不可少的,而是坚持要作为完整的参考。 麻省理工学院针对计算机科学和电气工程的开放课程软件。有大量的课程列表,但并没有告诉您根据每个人的兴趣/要求哪些课程是必不可少的,哪些是可选的。我没有提到要学习不同学科的命令。 我希望创建一个可以跟踪的列表,例如这个假人 SUBJECTS DONE Introduction to Computer Science * Introduction to Algorithms * Discrete Mathematics Adv. Discrete Mathematics Data structures * Adv. Algorithms ... 您可以清楚地看到,我对计算机科学的具体主题一无所知。 即使有人按照推荐的学习顺序指出MIT课程软件中的基本课程(+ MIT OCW中没有提供的基本课程),这也将非常有帮助。 我将列出我已经经历过的帖子(但我没有得到我想要的信息) https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major-最佳答案表示不值得研究cse https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science-指向MIT OCW https://softwareengineering.stackexchange.com/questions/49167/studying-computer-science-what-am-i-getting-myself-into https://softwareengineering.stackexchange.com/questions/19912/overview-of-computer-science-programming

8
有哪些方法可以避免递归算法中的堆栈溢出?
题 解决由递归算法引起的堆栈溢出的可能方法是什么? 例 我正在尝试解决Project Euler问题14,并决定尝试使用递归算法。但是,该程序以java.lang.StackOverflowError停止。可以理解 该算法确实使堆栈溢出,因为我尝试为大量生成Collat​​z序列。 解决方案 所以我想知道:假设您的递归算法编写正确,并且最终会导致堆栈溢出,那么有什么标准方法可以解决堆栈溢出的问题呢?我想到了两个概念: 尾递归 迭代 想法(1)和(2)是否正确?还有其他选择吗? 编辑 最好查看一些代码,最好使用Java,C#,Groovy或Scala。 也许不要使用上面提到的Project Euler问题,这样它就不会被其他人宠坏,而是采用其他算法。阶乘可能,或类似的东西。

8
“抽象层”和“间接级别”之间有什么区别?
我不确定这两个术语是否可以互换使用。也许计算机科学上有一些学术上的区别与日常编程无关?还是我可以在不误的情况下互换使用这两个术语?也许这取决于我同时使用这两个术语的环境? 编辑:关于为什么我发现两个术语可能可以互换的原因是有关抽象层的Wikipedia条目。在那里,您可以找到David Wheelers引述的“计算机科学中的所有问题都可以通过另一种间接解决方案来解决。”

2
“不组成”是什么意思?
我看到很多文本,特别是函数式编程文本,声称某些CS概念“不构成”。例如:锁不组成,单子不组成。 我一直很难找到这句话的确切含义。当我想到组合时,我想到的是函数组合或对象聚合(如“在继承中偏爱组合”),但这似乎并不是人们在这里使用它的意义。 有人可以解释在上述两个示例(即锁和单子)这样的表达式中使用该短语时的含义吗?

16
计算机科学专业学位会否损害我的就业能力?[关闭]
我经常看到,有许多可行的程序员没有计算机科学,信息学等专业的大学学历。 现在,我已经阅读了更多有关教育表现不佳和大学学位(尤其是程序员)的微不足道的文章,大学学位是否会损害我的就业能力?(从我毕业以后也算了四年) PS我要去加州大学欧文分校。学校本身对学位的意义有影响吗?

11
当编码开始变得无聊时,该怎么办?[关闭]
我从6岁开始使用Commodore 64编程。现在我28岁,我必须完成计算机科学一级学位的4门课程。 这些年来,我开始对编写代码感到无聊。我已经学习了理论计算机语言的计算机科学课程,并且在网络安全领域学习了10年的C系统编码,但是编写代码并没有带来任何刺激。 我可以用C,C ++,Python或任何您想要的语言编写代码,但是我对自己的工作并不感到兴奋。我感觉不到任何挑战。我已经编写了多线程代码,HTTPS MITM代理和WSGI应用程序,而无需任何特定的算法技能。 我觉得所有这些新东西都是一样的,其中包含了更简单(或更多个)的抽象或自动化,但是对我来说,这些听起来都是一样的。一遍又一遍地。可计算语言都是图灵可计算的,因此编码仅是部分函数此子集中相似模式的复制。 在日常工作中,即使寻找错误,对代码进行基准测试或解决X,Y,Z库问题,也感到无聊。 我是一个很好奇的人。我总是被某些东西刺激。但是,即使我查看出色的代码,我也无法做到。我对事情的运作方式感到更自在。 现在是时候提高我的职业了吗?还是要获得更多具有挑战性的计算机科学知识?也许会获得CS的专业学位? 我已经开始阅读有关项目管理“ Peopleware”的第一本书,并且我对软件开发生命周期越来越感兴趣。您建议做什么? 也许像我的一些朋友一样试图进入Google或Microsoft或Apple。或者,也许是更具管理性的职业道路。我还试图找到一本有关沟通规则和“人格特征”的好书,以使我为进入管理领域做好准备。 有什么建议么? PS:我很感兴趣,我并不沮丧 :)我喜欢爬山,徒步旅行,照相和我是运动登山者,我喜欢游泳和运动,有时候我会跑步,实际上我读了一本关于我的国家(意大利)从AC到今天的故事的书,我很喜欢旅行(今年夏天,我赚了4000Km,看到西班牙有很多地方可以爬上去,仅用了3周的时间,这不是假期,而是马拉松,长达24公里的徒步旅行使我的疝气受伤),我热爱戏剧和生活。 多亏了所有人,思考所有答案为我提供了使自己的道路更加清晰的机会。 出于总结目的,我们可以概括投票最多的答案。 首先,所有的人的票了必要性,以使我们的工作支持你的生活,而不是唯一的理由留在生活中(这不是我的情况),所以,如果你唯一的理由生活,如果工作,你来的太快真的很沮丧 正如人们所说的那样,维也纳不等您:) 在此提醒之后,人们建议: 增加技术复杂性我实际上正在努力增加挑战并减少对此的无聊。 将专业领域更改为非技术领域,试图成为经理,或者在与您的工作相关的非技术领域取得一些进步。 在另一种技术挑战中改变专业领域,您是系统程序员吗?尝试减少对人的应用程序的开发,以便您可以使用有用的软件更轻松地查看人 在您的学术道路上提高计算机科学学位 出于我的目的,正确的答案是在计算机科学领域取得进步,就我的感觉而言,我认为编程不是获得计算机科学的唯一途径,而且我认为与计算机工程专业人士不同的是,获得计算机科学的其他道路会更好。


4
即将进行的Google面试,寻求一些准备建议[关闭]
好吧,我一直在尽可能地打书。我即将通过电话采访一位软件工程师的职位。我已经阅读了所有博客文章,已经阅读了所有采访记录(有些还很老),而Google本身甚至建议阅读一本书,但这些都不会令这里的人感到惊讶。尽管如此,经过一段时间的准备,我仍然无法撼动有这么大的覆盖面的感觉,而且我永远不确定是要深度还是要广度。我发现自己重新学习了compsci的整个领域,但是在我继续学习另一个方面时却忘记了大多数细节。 因此,我不知道这个问题有一个很好的答案,但是我正在寻找关于如何在面试之前解决剩余几周的任何实用建议。我的一部分大脑因塞满而感到疲倦,当然,其余部分必须用于我目前的工作场所中的一些棘手问题。

18
我应该知道的计算机科学理论知识是什么?[关闭]
以拥有电子工程学位而不是计算机科学学位的人的身份讲,要使我成为一个更好的现实世界程序员,我应该知道的一点计算机科学知识是什么? (在现实世界中,我的意思是我在作为程序员的日常工作中会使用并从中受益—例如,我建议理解数据库规范化比理解快速的分类更实用。的图书馆)。

17
对于今天的学生来说,入门课程有哪些好的任务?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我定期教授使用Java编程课程的简介。我想给我的学生一些激动人心的作业,他们可以与之联系或找寻有趣的事物。至少,我希望分配的指令有意义并具有内部凝聚力(例如,某些非常糟糕的编程练习似乎是人为设计的,因此您必须使用所介绍的最新编程构造)。 为了让您对范围有所了解,这里介绍了以下内容: 分配必须使用Java,可以使用一些外部库来完成,但是它必须是简单的API而不是完整的框架 变量,基元和字符串 控制台输入和输出 if,for,while 算术和逻辑运算符 带有线条和形状图的简单图形 静态方法 一维数组 学生不会进入高级主题(例如,不递归,不强调继承)。因此,我不是在寻找复杂的项目:“让他们编写C编译器。我5岁时就做了,这是我学习的唯一方法!” 如果您有比范围更高级的想法,请将其发布在下面链接的“具有挑战性”的问题上,而不是此问题上。 相反,我正在寻找的有趣的想法可以在一个简短的程序中完成。例如: 学生可以编写控制台版本的“星球大战名称”生成器。这实际上是读取Strings并使用substring,但我认为这很有趣。类似的变化是“ Mad Libs ”程序。我在五年前使用了此功能,也许它已经“过时”了。 使用提供给他们的一些三角架,学生可以绘制规则的多边形,并创建有趣的螺旋形状。 使用一些简单的动画类以及提供给他们的大多数代码也不是没有问题。而且,如果您知道可以通过简单的API访问的Twitter或Facebook服务,我将非常感兴趣。 请注意,该问题不同于“ 向初学者挑战Java问题 ”的问题。我并不是要挑战本身,只是很有趣。我认为,如果学生从事的工作很容易回答“为什么有人要编程呢?” 他们就会学得更好。 甚至计算每加仑英里数之类的简单问题也可能很好。虽然,如果有一种方法可以使其更相关,那就更好了。如果您从其他地方(书籍或网站)进行练习,请引用资料来源。 为了帮助您思考当今典型的新生,请查看Beloit Mindset列表,其中有许多示例肯定会让您感到老去。

5
为什么琴弦这么慢?
自从我上高中的第一门编程课开始,我就听说字符串操作比神话中的“平均操作”要慢,也就是成本更高。为什么让它们这么慢?(这个问题是故意留下的。)

17
“计算机科学!=软件工程”难道是教授编程知识差的借口吗?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我们都听过;每当有关于CS毕业生的开发技能差的讨论时,有人最终说, 计算机科学不是软件工程。 我看到的问题是编程和软件开发是在CS课程中教授的。他们通常被教得很差。如果要教它,那为什么不第一次就教它呢?* 所以我想看看对两个问题有何看法: CS!= SE参数是否是没有正确教授编程技能的结果或借口? 不管您对问题1的回答如何;如果您处于做出这样一个决定的全能位置:您是否会强调在CS课程中正确编程的教学? *。根据我在整个学习过程中获得的轶事证据,我感到怀疑,该领域的大多数学者都不必编写代码来维护代码,也不必维护代码,因此没有知识/技能。有效地教它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.