关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
8年前关闭。
Improve this question
多年来,我一直以顾问身份进行编程,我热爱我的工作,其中涉及使用托管语言(即软件工程)进行的大量面向对象分析和软件系统设计。但我最终想获得博士学位,我从来没有真正“获得”过计算机科学理论,这让我感到困扰。在大学里,我在这些类(class)中的表现只是略胜一筹,因为它们的教学方式对我不起作用。我通过观察概念的应用来学习,而不是死记硬背。
我以前克服了这样一个障碍的一个例子 - 我有一个可怕的第一年。教授(我现在知道他几乎没有资格,而且是一个不称职的老师)从 C++ 开始,教我们过程编程。从技术上讲,我已经了解了对象是什么,但直到我看到面向对象分析和设计(使用设计模式和其他结构,如链表)的应用,我才真正理解它们的用途。
我将如何学习编译器、编程语言理论和算法分析等科目?什么是开始这些的好方法?例如,我最终想编写一个编译器(为了好玩),但我不知道从哪里开始。有人遇到过这种情况吗?任何关于教程、免费在线讲座视频或引用的建议(像 w3schools 这样的东西会很棒)?
(我想补充一点,浏览 Stackoverflow 已经教会了我加载,但我希望它更正式一点:)
编辑:谢谢大家的建议。我已经标记了一个对我个人有用的答案,但请继续提供答案:)
最佳答案
我喜欢 Sedgewick 的“算法”(isbn 0201066734 1988 604p)
因为它以一种对话式的方式通过算法进行对话,
并有很好的例子。
查看 Amazon 下的评论.
(有许多变体版本,多卷 C++ Java 等)
(2 月 2 日添加:)虽然算法是基本的和有趣的,
他们相当偏远——在高地徒步旅行,而不是每天的交通拥堵。
Bentley 的“编程珍珠”(isbn 0-201-65788-0 2000 239p
pearls )
“充满了小案例研究、真实示例和有趣的练习,用于学习如何编程”。
对于大型团队软件项目,Brooks 的“Mythical Man-month”(isbn 0201835959 2ed 1995 322p
Amazon )
是必须的:
“产品的概念完整性至关重要”。
并在 p. 上引用 Parnas。 221:
instead of teaching people that O-O is a type of design, and giving them design principles, people have taught that O-O is the use of a particular tool. We can write good or bad programs with any tool. Unless we teach people how to design ...
最后,可视化/GUI/UI 通常有很大的改进空间。
我不知道在这方面有什么好的介绍书,与上述相提并论;还有谁 ?
关于programming-languages - 我想回到 CS 的基础。对教程或注重应用的引用资料有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150919/