从小见着代码就高兴,没办法。这玩意说什么都要学的,不可能不学的,这辈子都不可能不学的。
维护了一个github仓库https://github.com/PiperLiu/CS-courses-notes,存储我的CS课程自学笔记,欢迎star!
文章目录
个人情况评估:较为乐观
主修专业:管理学中的工科
本科学位管理学(一级学科:管理科学与工程,二级学科:工业工程),已经获得保研资格,依旧是管理科学与工程专业,研究方向可能包含但不限于:交通调度、交通管理、强化学习、数据科学描述社会经济现象等。
管理学给人的感觉可能偏文,实际上是不对的,尤其是对于管理科学与工程,更不能这样说。在我看来,管理科学与工程,就是用工程技术手段,系统地研究社会经济现象、公司结构、基础作业、多方博弈关系等问题。
比如,在运筹学中,我们要学习工序与最短路问题,因此也会接触到与数据结构中图论部分极为相似的内容与算法。当然在我看来,难度小了很多,也没有涉及到具体代码实现or伪代码,对编程逻辑没有任何训练。
我本科所学的专业是工业工程,与制造业紧密相关,要学习很多工科课程,比如:工程制图(非机类)、工程力学(静力学+材料力学)、金属工艺学、电气工程学概论、机械设计基础,对于电子电路、机械原理多少有一些了解,并且具备一定工科思维。
当然,我们也会学习到一些全校通修的计算机课:C++与数据结构基础、数据库。我对这两门课程的讲解、重心不太满意,尤其是数据库,除了给概念(什么是第三范式,去背吧,考试默写名词解释)、念叨考点、生硬怼SQL(告诉你SQL考试考插入、删除等),没别的了。因此这两门课对我帮助很小。计网也是全校通修的,内容也停留在概念上的,但是老师很负责,因此不能说不满意。C++老师也很负责,但是毕竟是全校通修的课,深度和效率上,嗯。
综上,我的主修专业对我自学CS有一定帮助。
个人基础:从小感兴趣、通过数模锻炼(主要工具为matlab转python)
从小有个“做游戏”的梦想,因此并不反感代码。高中毕业自学java,但是过完后不敢说当时就“理解了面向对象编程”的思想(实际上,真正“开始理解面向对象编程思想”是大三看C#时,老师给出许多实例,讲解为什么要有接口、委托等等技术)。
大学认认真真捡起编程是在大二。运筹老师留了一个大作业,要求用matlab求解一个大型的线性规划问题。由于线性规划很大,直接把每个约束敲出来很费力(人工录入容易出错,也不是我的风格),因此我花了很长时间,寻找数字规律,用好几套多层嵌套的for循环生成了约束矩阵A和B。最后放入intlinprog()中进行求解。
由此也得到了学霸们的认可,与他们开启了一段“数学模型竞赛冒险之旅”。比赛几乎全部用的matlab,当时没学过数据结构,解决拓扑连接规划问题时自创了“连通域”等概念和算法,后来学了数据结构,发现,哟,和连通分量还挺像,有那么点异曲同工的意思。
后来实现一个机器学习项目时,发现matlab没有孤立森林(注意,不是随机森林,是周志