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




  

相关话题

  如果一个算法空间复杂度是指数级,时间复杂度是多项式级,那么这个算法复杂度怎么算呢? 
  c++中超出char、int范围的整数怎么存储? 
  为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是强类型 + 静态? 
  2019 年了,C# 发展得怎么样了? 
  为什么有些人宁愿花费很多时间去自己手工配置Python环境, 也不用Anaconda? 
  国外程序员也烫屯锟斤拷吗? 
  有哪些网站用爬虫爬取能得到很有价值的数据? 
  为什么互联网的程序员比产品经理薪资要高? 
  一个程序员多年累计编写一百万行代码是什么体验? 
  如何看待奥巴马呼吁每个美国人都学习编程? 

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





© 2024-05-12 - tinynew.org. All Rights Reserved.
© 2024-05-12 - tinynew.org. 保留所有权利