我想回到CS的基础知识。有关教程或具有应用意识的参考资料的任何建议吗?

时间:2010-01-27 22:49:47

标签: programming-languages computer-science theory

我多年来一直担任顾问编程,我喜欢我的工作,涉及大量面向对象的分析和使用托管语言的软件系统设计(即软件工程) 。但是我最终想获得一个博士学位,让我感到困扰的是我从未真正“获得”计算机科学理论。在大学里,我在这些课程中只做得很好,因为他们的教学方式并不适合我。我通过观察概念的应用来学习,而不是死记硬背。

我之前已经克服了这样一个障碍的一个例子 - 我第一年可怕。这位教授(我现在知道他几乎没有资格,也是一位不称职的老师)从C ++开始,教我们程序编程。从技术上讲,我已经了解了一个对象是什么,但直到我看到面向对象分析和设计的应用(具有设计模式和其他结构,如链接列表),我才真正理解它们的用途。

我将如何学习编译器,编程语言理论和算法分析等课程?什么是开始这些的好方法?例如,我想最终编写一个编译器(为了好玩),但我不知道从哪里开始。有没有人遇到过这种情况?任何关于教程,免费在线讲座视频或参考(像w3schools这样的东西都会很精彩)的建议吗?

(我想补充一点,浏览Stackoverflow已经教会了我的负载,但我希望它更正式一些:)

编辑:谢谢大家的建议。我已经标记了一个对我个人有用的答案,但请保留答案:)

9 个答案:

答案 0 :(得分:5)

我喜欢Sedgewick的“算法”(isbn 0201066734 1988 604p) 因为它通过算法以会话风格谈论, 并有很好的例子。 查看Amazon下的评论。 (有许多变体版本,多卷C ++ Java等。)

(已添加2feb :) Althoough算法基本且有趣, 他们相当遥远 - 在高原地区徒步旅行,而不是每天的交通堵塞 宾利的“编程珍珠”(isbn 0-201-65788-0 2000 239p pearls
“充满了小案例研究,真实案例,以及有关如何编程的有趣练习”。

对于大型团队软件项目,布鲁克斯的“神话人月”(isbn 0201835959 2ed 1995 322p Amazon) 是必须的:
“产品的概念完整性至关重要”。 并引用Parnas的话。 221:

  而不是教人们O-O是一种设计,并给予他们   设计原则,人们已经教过O-O是一种特殊的用途   工具。我们可以用任何工具编写好的或坏的程序。除非我们   教人们如何设计...

最后,可视化/ GUI / UI通常有一个很多的改进空间。 我不知道这方面的一本好的介绍性书籍,与上述同等;还有其他人吗?

答案 1 :(得分:4)

如果你打算获得博士学位总有一天,为什么不立刻回到学校呢?作为博士,你需要学习很多课程。候选人,并在更多CSish领域(算法等)寻找研究将更有助于你进行这项冒险。

答案 2 :(得分:4)

我正在寻找相同类型的内容,人们告诉我,最好先看一下Structure and Interpretation of Computer Programs

令我痛苦的是,我仍然无法阅读,但我相信我会尽快阅读。

它应该是一本好书,作者给出的讲座是avaiable online

我相信你会在你提到的整个第一年的第一堂课中学到很多关于编程的知识。

另外,如果我没有弄错的话,这本书实现了一个用方案编写的方案编译器。

答案 3 :(得分:3)

Cormen,Leiserson和Rivest的Introduction to Algorithms不会出错。

答案 4 :(得分:2)

与w3schools.com不同,通常我发现计算机科学理论书籍不是围绕大众消费而设计的。

据报道欧几里德已经说过,“没有皇家之路”。

我发现Hopcroft和Ullman关于自动化的书可读;它具有很强的理论性,但我把它的高级概念作为大学里的sophmore。我发现Sara Baase关于Algorithms的书是一本很好的(尽管是干的)介绍。 Cormen有一本关于算法的书,可能是目前编写的最完整的教科书。

当然,如果您想要 经典计算机科学文本,您需要阅读Knuth的计算机编程艺术。没看过;这对我来说有点贵。

答案 5 :(得分:2)

Academic Earth中有

OpenCourseware和麻省理工学院的Bill Gates Blog。此外,YouTube EDUGoogle Tech Talks上有大量教育视频(称为Google engEDU)。

现在还有CourseraUdacityedX

答案 6 :(得分:2)

:)我是一名目前正在完成编译器设计课程的学生。 Aho,Ullman和Sethi的这本书名为“编译器设计 - 原理,技术和工具”。有一本关于编程语言理论的书叫做编程实践 - 由Kernighan和Pike最近开始的简单,清晰和通用......这是一个非常方便的证明。来到视频课程我知道一些视频资源,这些资源对他们来说很有帮助,但我相信它们至少值得一看,只是google NPTEL资源,最后,我发现印度作家的书很容易理解,因为我是印度人,因为它喜欢你想重新开始...你可以看看这个网站有用的东西.. www.kicit.com ...快乐学习... :)我和你在一起学习东西的想法更实际地(例如,可能比个人经验更好)比理论上... ... cya .. :)

答案 7 :(得分:2)

它可能有点随机,但Project Euler可以很好地在同时编程时试验计算机科学的理论和数学方面。

答案 8 :(得分:1)

我发现iTunes U非常好。他们拥有来自麻省理工学院,斯坦福大学和加州理工学院等众多知名学院的各种免费教材。我有一段时间没有看过它们,所以我不知道它们是如何适合你的学习方式的,但是在你再次开始上学之前,IMO最好先看看这样的东西,这样你才知道它会是什么样子