百科问答小站 logo
百科问答小站 font logo



如何向一个零基础的人,解释学习计算机编程的正确顺序和原因? 第1页

  

user avatar   an-shi-ren-jian-chou-chang-ke 网友的相关建议: 
      

我大一刚入学的时候也是零基础,我读的是哥伦比亚大学本科的计算机专业。核心的专业课包括:

1. java入门:主要是借着java讲一些OOP的理念和写程序的基本思路,顺带草草过一下计算机科学领域比较重要的分支。

2. 数据结构:用的语言是java和scala,比较侧重于数据结构的实现和复杂度分析。整个学期的作业都是实现主流的数据结构,比如堆、栈、树、哈希表等等。

3. c语言编程:主要目的是通过指针和c语言里比较底层的功能来介绍内存、进程、网络一类的知识。期末最后是用c语言写个服务器。

4. 计算机理论:以证明为主,讨论可计算性。从finite state machine到context free grammar再到图灵机,最后讲了一些P和NP的问题。

5. 计算机硬件系统:从下而上讲计算机是怎么实现计算的,粗略地介绍了一下cpu的运行原理。

核心课程里面还有几节必修的数学课:多元微积分,线性代数,离散数学,概率统计。个人感觉对机器学习方向的人会非常有用,对系统方向的学生感觉实际用处不大,只能算是普及一下理工科通识。

上完核心课程每个人可以选个track,比如我选系统工程就学编译原理,操作系统,计算机网络,分布式系统,数据库等等。

总结下来感觉哥大课程设置比较中规中矩,该覆盖的都覆盖到了。而且比较侧重理论,侧重理解而不侧重实践。我还是比较推崇这样的方式的,因为理论扎实的话,其实上手实践非常容易。但反过来就不一定了。

学了一些函数式编程后,甚至认为入门课程可以更加偏向理论一点。如果入门课不讲OOP而是讲lambda calculus,类型系统,和代数类型的话,我当时对程序的理解还会更深一些。作为大一新生,如果你时间允许的话,我认为可以挑一个functional language自学,比如Haskell或者OCaml。

补充一句,我上面说到的课在各大教育网站上都可以找到类似版本。比如说普林斯顿大学在Coursera上就有一节数据结构的公开课,质量很高。其他的我没有看过,但仔细找的话应该都有。




  

相关话题

  GCC 4 编译警告:warning: dereferencing type-punned pointer will break strict-aliasing rules 有什么比较好的解决办法? 
  对C++的匿名函数应具有怎样的态度? 
  我是不是应该放弃 C# 了? 
  买鼠标键盘要不要看电流电压和电脑是否匹配? 
  如果英特尔一直以挤牙膏的方式研发 CPU,CPU 的性能是否会进入一段停滞期? 
  程序员想转行当医生,可行吗? 
  怎样「尽可能」健康地通宵熬夜? 
  如何通俗地解释一下 TCP/UDP 协议和 HTTP、FTP、SMTP 等协议之间的区别? 
  如何在程序里留下彩蛋? 
  编程语言为什么有变量类型这个概念? 

前一个讨论
据统计广东 2021 年末常住人口达 12684 万人,较上年末增加六十万人,这一数据说明了什么?
下一个讨论
北冥神功可以无限吸而且不打折扣么?





© 2025-01-23 - tinynew.org. All Rights Reserved.
© 2025-01-23 - tinynew.org. 保留所有权利