我是一名本科计算机科学专业的学生并在线学习。我必须自己做很多自学,独立研究和实践。我想知道在编程中选择这个主题组合是多么有益:
虽然我也可以选择使用DLD(数字逻辑设计)或数据通信课程而不是汇编语言。我的兴趣在于编程,我也是当地软件公司的程序员。 任何人都可以给我一些很好的建议和意见。
答案 0 :(得分:5)
数字逻辑设计和计算机体系结构将帮助您理解低级计算机概念,并对优化编译器为您所做的精彩工作表示赞赏。列出的课程听起来像是一个很好的组合。
答案 1 :(得分:3)
看起来很好。如果你在大学期间可以学习一些函数式编程,我认为你应该这样做,因为这会扩大你的视野。
如果您希望在此结束时获得编程工作,您可能需要考虑加入一个开源项目并获得一些真实的世界体验。通过学习如何在课堂上编程,您将学习更多关于编程和程序员通过实际编程实现项目的工具。虽然拥有理论知识和经验都很重要。
答案 2 :(得分:3)
您可能会考虑延迟的列表中唯一的事情是OOP。我小心区分面向对象的设计和面向对象的编程:
面向对象的设计是今天学习用数据抽象编程的术语。它是每个程序员工具箱的重要组成部分,它应该是数据结构中任何优秀课程的一部分。
面向对象的编程是通过继承重用实现的艺术。多年的本科生教学经验告诉我,这是一个困难的高级主题,除非在非常专业的环境中建立二维图形用户界面。
尽可能早地获得尽可能多的OO设计,但在您拥有更多经验之前,请避开继承。
最后,如果您要深入了解计算成本,那么汇编代码和机器架构是必不可少的主题。强烈建议使用这些主题。绝对采用这门课程而不是逻辑设计(一个光荣的话题,但远离编程)或数据通信(无论它是什么)。
至少还有一张海报发现,一旦你掌握了这些主题,一些功能性编程就会很好。
答案 3 :(得分:1)
前两个主题(数据结构和OOP)似乎有依赖关系 - 在进入数据结构之前,您应该了解OOP。
最后一个主题(汇编语言和计算机体系结构)可以与数据结构同时使用 - 但我会参加一个基础编程课程并在深入组装之前学习OOP。
作为参考,这是我学校的荣誉课程所采用的结构(到目前为止一直很棒):
1st Semester:
Data Structures and Algorithms
Intro to Logic
2nd Semester:
Intro to Computer Architecture
Discrete math
3rd Semester:
Advanced Computer Architecture
Application of theory(e.x. compression, encryption, error correction)
Programming languages
4th Semester:
Operating Systems(done in x86, uses MIT course material) - challenging but very fun and rewarding class
Sometime after 4th semester:
Algorithms or Automata Theory
在我学校的第四学期之后,你几乎可以自由地学习任何你想要的东西(作为一名荣誉学生) - 大多数人都会参加毕业班。
我列出这一点的目的是为了证明我的学校使用“双轨”理论模型(逻辑,离散匹配等)和实现(架构,操作系统等)。如果你对CS很感兴趣,那么两者都很熟练很重要。你需要理解这个理论,以及如何很好地实现它,成为一个优秀的“全面”的计算机科学家。
我的建议是遵循类似的模式。参加建筑类课程,同时学习理论课程。
答案 4 :(得分:0)
算法课程是必要的。编译器设计课程也非常有用。然后是人工智能领域广阔而有趣的领域。