百科问答小站 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上就有一节数据结构的公开课,质量很高。其他的我没有看过,但仔细找的话应该都有。




  

相关话题

  在小县城里,程序员和公务员两种职业有何不同? 
  程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧? 
  美本top30里哪个cs专业比较好申请? 
  为什么美国如此反对中国留学生学习人工智能和量子技术?国内外这两种技术的发展现状如何? 
  学计算机,不太喜欢编程,有哪些出路? 
  你写代码的起手式是什么样的? 
  「闰秒」会对 IT 行业造成多大影响?有什么好的解决方法? 
  把BAT的机房炸掉,公司是不是就垮了? 
  为什么不把push ebp和mov ebp, esp的操作通过硬件方式做进call指令中? 
  有什么行为习惯昭示着你是个编程大佬? 

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





© 2025-04-24 - tinynew.org. All Rights Reserved.
© 2025-04-24 - tinynew.org. 保留所有权利