关键词: MIT挑战 自我学习 CS4挑战
0.前言
这半个月想了很多的事情,关于未来工作城市的选择,工作的方向,自己适合什么样的公司和岗位,以后在哪里定居等等,思前想后也没能给自己一个满意的答案,反而变得十分焦虑浮躁,没法深入地去阅读和钻研。于是9月21日辞掉了寒武纪的实习,顺便把论文答辩的批次延迟到下个批次,也没有撒网式地投简历,把买房等等未来的事情搁置,暂且算是在给自己做减法吧。很久没有心平气和地与自己对话了,如果没法理清楚自己的真正需求,理清楚自己的优势和不足,理清楚下一步自己应该培养的习惯,估计对于即将毕业工作的我来说,生活状态很有可能会不太令我满意。
其实这一阶段焦虑的根本原因在于自己的生活节奏被完全打乱。寒武纪实习占据了大量的时间,论文的项目又没有自己的贡献,基础的计算机课程也没法系统性地去学习,找工作的目的和方式又比较迷茫,每件事情都要耗费精力和时间,但自己又没养成高效做事的习惯,由此陷入自我怀疑和未来的迷茫之中。这种紊乱的思维和不健康的生活方式在身体方面体现最为明显—自己有了小肚腩,同时晚上的睡眠质量非常不好。我必须把自己的生活节奏给调整过来,只有这样,一件一件事情地去解决,才能解决根本问题。
所以首先的出发点还是生活方式上。早睡早起,保持慢跑,准备半马,饮食有度。说容易做很难,一步一步调整。并行的是计算机基础课程的补充,借鉴于MIT挑战,我也想实现一个自己的CS4挑战,即在规定时间内,完成自己选择的美帝四大CS高校(MIT, Stanford, CMU, UCB)的计算机课程,以此完成计算机基础知识的补充,也帮助自己在秋招和接下来的春招找到满意的工作。
1.正文
1.1 CS4挑战的目的
扪心自问,自己从刚进入大学对电脑一窍不通的状态,到现在要从事IT行业,没有兴趣的指导,肯定是没法进行下去的。从第一次利用Python完成一个微信公众号的自动回复功能,到现在学习了Coursera吴恩达的机器学习课程,我知道我对于编程有一定的感觉,并且愿意为此付出精力,而且这种喜欢也可以帮助自己在世俗社会中实现经济独立。但是,自己毕竟是半路出家,计算机的基础和体系都不够扎实,面对深层次的问题和完整性工程问题的解决能力很欠缺,这也正是我自己给自己设定CS4挑战的目的。
- 完成C/C++/Java/Matlab/Python/Shell等语言的入门学习,了解、熟悉并总结各个语言特性,利用语言独立解决在CS4中各个课程项目的编程作业和练习。
- 完成微积分、线性代数等基本数学知识的复习,通过课程期末考核的标准。
- 完成数据结构、算法、操作系统、编译原理、计算机体系结构等计算机核心基础课,建立起计算机知识体系。
- 完成深度学习、IOS开发等工程课,为工作简历积累经验。
1.2 CS4挑战的内容
1.2.1 CS4挑战课程列表(暂定)
MIT:
6.0001 Introduction to Computer Science Programming in Python6.0002 Introduction to Computational Thinking and Data Science- 6.004 Computer Structure
- 6.006 Introduction to Algorithms
- 6.042j Mathematics for Computer Science
- 6.046j Design and Analysis of Algorithms
- 6.087 Pratical Programming in C
- 6.088 Introduction to C Memory Management and C++ Object-Oriented Programming
- 18.01 Single Variable Calculus
- 18.02 Multi-variable Calculus
- 18.06 Linear Algebra
CMU:
- 15-213 Introduction to Computer Systems
- 15-112 Fundamentals of Programming and Computer Science
- 15-605 Operating System Design & Implementation
- 15-641 Computer Networks
- 15-619 Cloud Computing
Stanford:
- CS106A Programming Methodology
- CS106B Programming Abstractions
- CS106X Programming Abstractions(Accelarated)
- CS107 Computer Organization & Systems
- CS143 Compilers
- CS193P Developing Apps for IOS
- CS224N Natural Language Processing with Deep Learning
- CS231N Convolutional Neural Networks for Visual Recognition
UCB:
- CS162 Operating Systems & Systems Programming
课程关系:
注:加黑表示核心课程,绿色底色表示已完成此课程。
1.2.2 CS4挑战计划细节
课程列表是可以动态修正的,但是如何落实每个课程的学习必须是铁打不动的。现在写下这些计划很容易,但实行计划很有可能失败。我必须锻炼自己设定目标完成目标的能力。对于选择的课程来说,课程通过的标准是完成所有的课程作业和项目,若有期末考试,则需通过期末考试的60%。设定完标准,则需对计划细节进行详细描述:
- 对于有视频资源的课程,在开始之前预估视频观看时间,并以1.25x倍速迅速观看,并使用印象笔记记录课程重点,最后的课程作业和项目打包上传GitHub。数学类课程以通过期中和期末考试为标准,若考试失败,重复上述流程。
- 对于无视频资源的课程,重点结合PPT和课程作业,以完成课程作业和项目为标准。
- 数学类基础类课程完成时间为一周,核心课程可放宽至两周,中间多个课程可同步进行。
- 保持早晨8点前开始学习的节奏,中午吃饭和午休的时间为2小时左右,下午晚饭前6点结束当天任务。
- 每完成一个课程,进行博客更新,也可用视频方式记录所感所想。
- 关于休息的一些准则休息准则。
- 待补充。。。
1.2.3 CS4挑战外其它事宜
很显然,这阶段里除了想要完成CS4挑战,生活中还有很多其它的事宜。比如秋招相关公司的准备、11.11日的合肥半程马拉松的日常训练、论文项目中难点的攻克和可能出现的生活意外事件。生活肯定是第一位,但前提我的生活节奏必须是有节奏有节制的。完成我的CS4挑战,和生活中的这些事情也并不冲突,自己必须锻炼并行处理多个任务的能力。
2.愿景
目前的计划只是初步的框架性的计划,后期肯定随着计划的实施有着相应的变动。但是无论如何,去完成它,静下心来花一段时间完成技术的进一步积累,磨练自己的脾性,让自己更加圆润敦实一些。还是那句话勉励自己:道阻且长,行则将至。