经院不是一个特别重编程的学院,但是在这个信息时代,掌握程序设计的技术和艺术还是非常重要的。

首先强调一点,编程语言只是工具,重要的是背后的思想,千万不要陷入工具的选择,学会了思想方能融会贯通

基础

从这届(2019级)的培养方案上的计算机类来看,经院学妹和学弟为了毕业必须修读大计基,然后在 C程序设计基础Python程序设计 之中至少修读一门。培养方案的推荐修读时间是大计基大一上,其他两门大一下。(注意课程名称,浙三本很多课程名字很像,例如 C程序设计基础 程序设计基础 程序设计专题 ,讲的其实都是C,名字也很像,但不是要修的课程)。

大学计算机基础(简称是大计基就对了)。讲一些计算机的比较基础的概念。小白可以听听,如果稍微懂一点的就滑滑水就好了,课程讲的内容都比较基础。

关于C程序设计基础 ,正如基础二字所说,讲的是比较基础的内容,在没有任何编程经验,没有接触过编程语言的情况下非常建议选。因为这可以从0开始培养你的程序设计思维和技巧。如果你没有编程经验(VB在此不当作编程经验),那建议大一下选这门课。

关于Python程序设计 ,很多人说它简单,是因为它的语法简单,对初学者友好,但是从考题上来看也没有比C简单。和C一样,很多考题会出的比较刁钻,而且对于没有编程经验的人来说,上课内容并不友好。如果说C考题范围是少而精,那么Python考题范围就是多而广。所以我建议没有编程经验的人不要直接上Python。换句话说,如果你没学过C但是学了Java或其他语言也是可以直接上Python的。

未来

关于经院以后要用到编程的方向,主要集中在大数据的处理和分析,在这方面以前主要是R语言的天下,因为R语言就是为了统计和计量而设计出来的一种语言。但是在这两年,Python有逐渐替代R语言的趋势。因为随着各种库和包的增多,Python有了越来越多数据分析的工具,而且在人工智能,机器学习方向更有优势。最新的Julia语言目前看来也很有潜力,但尚不成熟。若假以时日,可能是大数据处理和科学计算的更合适的语言。

总结

综上所述,我推荐的针对大多数人的学习路径是:

大一上 大一下 大二下
大学计算机基础 C Python

从毕业的角度来看,只要 C 和 Python 任选一门即可,不过,多学一点总没坏处不是嘛?

当然经院毕竟不是计院,不是每个方向都要用到程序设计。为什么不建议大一下直接上Python,是因为,从目前来看,Python的考试题目相对于C来说过于刁钻,这不是两种语言的问题,完全是浙大出题的问题。

不上 C 直接怼 Python当然是可以的,只是如果你本身编码实力不强的话容易考不好(还是那句话,题目出得太差了,不是你能力差)。

上了C不上Python也是可以的。但是一定要自学Python。有了C的基础,自学Python也是相当容易的。

补充

如果你对这方面非常有兴趣的话,你还可以在大二继续学习数据结构基础面向对象程序设计数据库系统Linux。再往上的话,可能就没有太大必要了。

编程也是非常适合自学的。而且非常建议自学。可以看看中国大学MOOC翁恺老师C课程。

上课里教的只会是皮毛,仅仅在于语法的掌握。如果要想很好地运用一种语言,想能完成一个项目,还需要非常多的后续自学。

暑期充电,其实个人更建议学一些诸如GitMarkdown(本文即Markdown所编辑)Linux甚至是双拼这些与计算机相关的比较容易上手的小技巧或是小工具,学习成本低但是很快能看到收益。

如果你是OI竞赛ACM竞赛的大佬,那我这些话就统统无视就好了。

有关 Python

前文已经讲了很多 Python ,但是考虑到它的热度和它的江湖地位,我觉得有必要把它单独拉出来谈谈。

首先亮明观点,我建议每一个人都要学会Python3, 但是不一定要跟着学校里的课上

为什么要学 Python3 ?

经济学院里用到的编程,一般都是计量分析里的,换句话说就是数据分析。数据分析有哪些软件或者语言呢?一些课使用eviews,一些课使用stata,一些课使用SAS,还有一些使用MatlabR。语言没有好坏,但是前面几个多少显得有些老态龙钟,而Julia有显得太过前沿。所以目前的建议的最好的选择就是学Python,而且是更新的Python3

Python 强在哪?它以非常简单的语法解放了劳动力。譬如对于目录和文件的批量操作,对于excel文件的批量处理,都大大降低了门槛,解放了疲惫的双手。但是它更为强大的就是在科学计算和数据科学上的应用。像机器学习,深度学习,自然语言处理等等时髦的人工智能上的应用,Python3 是最强大的平台和最广阔的资源。

为什么不建议跟着学校里的上?

如果你是必修那当然上就完事儿了。如果不是必修的话,有必要斟酌一下。

我很不喜欢ZJU教Python的方式。它会注重于细致末节,语法底层,而不注重于实践。它不会教你PyCharm怎么装,不会教你Anaconda怎么装,只讲非常浅的debug,非常浅的OOP,甚至完全不讲非常基础的map(),reduce(),filter(),反而会考底层的内存池的缓冲机制。

所以我推荐自学。而且越早越好

自学的资源?

问对人了。我对Python的教学和自学经过了很多的摸打滚爬,总结如下:

前提部分

  • 计算机的常识,我默认你有了。至少在安装Python,调环境变量能够看着教程能跟上

基础部分

书籍推荐

  • Learn Python the Hard Way
  • Think Python: How to Think Like a Computer Scientist

进阶部分

  • Data Science from Scratch
  • Python for Data Analysis
  • Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
  • Deep Learning with Python
  • Beginner’s Guide To Using PyTorch For Deep Learning

进阶部分就是一些数据科学相关的内容了。

关于我

  • 多次参加丹青学园的C语言和Python语言辅导(其实是因为有工资拿)
  • Github 上 Data-Analysis 项目协同开发者(和Will Koehrsen教授合作)
  • Udacity 深度学习学位证书
  • 求是潮技术研发中心 维护求是潮手机站安卓版
  • Python 98/5.0
  • 网易游戏实习
  • 招商银行 Fintech 金融科技挑战赛全国百强(58名)

算是一个数据科学的竞赛,我的题目是一个时间序列分析客户借款还款日期。当然是用Python写的啦

  • 浙江大学C语言趣味竞赛 二等奖
  • 浙江大学信息安全挑战赛 62名
  • 美国大学生数学建模大赛 H奖

写这些的目的是想请你相信我的推荐和“权威性”。

关于IDE和文本编辑器的选择

个人建议用IDE上手。

C 推荐新手用Dev C++,熟练后也建议尝试Clion,可能你要学如何配置环境。不建议直接用VS,过于臃肿,对新手并不友好。

Python 推荐新手用IDLE,熟练后也建议尝试Pycharm,可能你要学如何配置环境。对于经院来说,适合数据处理的Anaconda可能会是更佳的选择。但是我仍然建议使用Pycharm来写代码,而用 Anaconda来作分享。

文本编辑器,个人选择是VS Code,不建议新手使用文本编辑器,因为配置环境会比较复杂。

开发环境的选择是次要的,只要自己用的顺手就是最好的开发环境。千万不要喧宾夺主,陷入纠结。

如果你看不懂上面这些,就无视掉好啦~