[编程开发] 如何在大学四年修炼成一个高级编程人才?

[复制链接]
晚间天使 发表于 2023-10-4 18:56:40|来自:中国 | 显示全部楼层 |阅读模式
首先简单介绍一下自己,本人是国内一所普通985大一(马上升大二了)的学生,就读于计算机科学与技术专业(我校优势专业,偏软件方向)。
我们学校每年都号称本专业就业率90%+,这导致了身边的很多同学盲目乐观(当然,这是我个人看法)。但是,确实有不少人都表现出浮躁的一面,比如:平时根本不努力,学习也是慢慢悠悠地跟着学校课程走(而且,大部分人的目标是及格就好),天天打游戏。在大多数人看来,似乎只要在这个专业毕业,就能工资8k+,似乎只要毕业就前途一片光明。
但我可能个人危机感比较强,总在想如果这样混完四年,怎么可能一毕业就8k+?就业率虽然高,但一毕业就8k+估计还是说那些混得好的学长学姐吧。
所以,我一直想在课外时间去尽量多学一些东西。我也试着去多学几门编程语言,除了学校课程里的C++,我试着接触过Python、Java。当然肯定学不了那么多,所以主要在学前端的东西,比如最近在学JS(我想和几个同学合伙办网站)。也在学着操作Linux系统。
可是,自己这样盲目地学,总还是很迷茫的,虽然我想做些什么,却没有明确的计划。我想最好能跟将来就业多挂钩。
所以,我想问一下软件这方面的大牛们,在我的大学四年中,该怎么去自己学些东西(实用的,最好在将来工作中真正能用到的),将来能找到高薪职业(其实自己也想创业,但估计肯定得先工作几年吧)。
同时,我是想要考研的。
所以,这些想法让我感觉很纠结,很迷茫,我真的是不想浪费自己的大学时光,想让自己变强。
希望有大神能够指导建议一下。
万分感谢!
全部回复5 显示全部楼层
sohosky 发表于 2023-10-4 18:57:28|来自:中国 | 显示全部楼层
看下国际顶尖CS名校(如四大)的本科生需要学习哪些课程:
还挺多的,并且越来越多,因为 CS 越来越卷。
以下是计算机专业的核心必修和选修课程,并给出mooc链接。有些选修课程暂时没找出相关学习资料:  

一、5门计算机基础课程(全部必修)
1、算法
Coursera
2、计算机组成原理
入门:Coursera
高级:Coursera
3、数据结构
数据结构(2015春)-学堂在线慕课(MOOC)平台
4、逻辑及其运算
逻辑:语言和信息 1
Coursera
逻辑:语言和信息 2
Coursera
逻辑学导论
Coursera
5、编程原理 (只给出C/C++和Python的mooc,但作为成熟的developer还掌握Java,C#和Ruby等语言)
程序设计基础 TsinghuaX 30240233X
程序设计基础-学堂在线慕课(MOOC)平台
C++语言程序设计 TsinghuaX 00740043X
C++语言程序设计
C语言
Coursera
Python交互编程入门
Coursera

二、5门数学基础课 (全部必修)
1、微积分
微积分-1(2015春) TsinghuaX 10421145X
微积分-1(2015春)
微积分-2 TsinghuaX 10421065X
微积分-2-学堂在线慕课(MOOC)平台
2、组合数学
解析组合数学
Coursera
组合数学(2015春) TsinghuaX 60240013X
组合数学(2015春)
3、线性代数(1) TsinghuaX 10421094X
线性代数(1)-学堂在线慕课(MOOC)平台
矩阵程序开发:通过计算机科学应用学习线性代数
Coursera
4、Discrete Mathematics 没找到Mooc。建议拜读《离散数学及其应用》Kenneth H. Rosen著 《离散数学及其应用(原书第5版)》 Kenneth H.Rosen, 袁崇义, 等【摘要 书评 试读】图书
5、概率统计
概率论——不确定性的科学 MITx 6.041x
一门关于概率模型的导论课,同时涵盖了随机过程和统计推断的一些基本知识。
概率论——不确定性的科学 棒球统计学入门:棒球分析导论 BUx SABR101x
一次对棒球资料的统计分析,棒球分析学,数据科学,R语言和SQL(结构化查询语言)的介绍。
棒球统计学入门:棒球分析导论

三、深入课程(至少选5门)
第一部分、算法
1、算法分析
A,Coursera
B, Coursera
2、自动机理论
Coursera
3、Discrete Structures (目前没有找到相关mooc和书籍)
第二部分、数据库理论
1、Database Design and Theory
Coursera
第三部分、数据分析课程和人工智能
1、大数据系统基础 TsinghuaX 64100033X
大数据系统基础
2、大数据算法 HIT GO90300700
大数据算法-学堂在线慕课(MOOC)平台
3、数据挖掘 UIUC
Coursera - Specializations
4、人工智能 UC BerkeleyX CS188.1x
人工智能-学堂在线慕课(MOOC)平台第四部分、程序设计和软件工程
1、编译器
Coursera
2、Object Oriented Analysis and Design(没找到mooc和书籍)
3、操作系统
操作系统-学堂在线慕课(MOOC)平台 或者
Coursera4、软件工程 TsinghuaX 34100325X
软件工程-学堂在线慕课(MOOC)平台
第五部分、网络安全与通信理论
1、Computer Cryptography
1讲、Coursera
2讲、Coursera
2、Network Security
UMD网络安全系列课程
Coursera - Specializations
3、计算机网络概论
计算机网络概论
或者
Coursera
4、雾网络和物联网
Coursera
第六部分、计算机安全
1、计算机安全
Coursera
2、操作系统与虚拟化安全(云安全的基础)
Coursera
第七部分、云计算
1、SaaS
1讲
云计算与软件工程 · 第 I 部分
2讲
软件即服务 (SaaS)
2、云计算系列课程 UIUC
https://www.coursera.org/specialization/cloudcomputing/19?utm_medium=listingPage

第八部分、软件定义网络
Coursera

四、至少选4门选修课
1、数据库和系统管理:  
Database Programming
Database Administration
Scripting/Query Languages (such as Perl or SQL)
System Administration
System Engineering
2、通信和网络
Introduction to Telecommunications(可以用北邮的《通信原理》)
Net-centric computing
Network Administration
3、图像和人机互动:
Graphics and Visual Computing
Human Factors in Information Systems
4、项目管理
Program/Project Management
Information Management
5、网站建设
User interface design
Web Programming
Web Site Development
引用来源 :作者:Shen Li 链接:https://www.zhihu.com/question/21246239/answer/36594193
最近很多同学问我大厂面试的核心知识点,东哥熬夜整理出来了9大核心知识点,需要的自取:
BAT大佬整理的进大厂必看秘籍!​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487114&idx=1&sn=3daf22898b8149910b297f48376395a3&chksm=fdb3f054cac47942e2dcd43ba8a33ab414e0dafb2300ac2eebc9fe18af5cd9f4618b3b4f3266#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487114&idx=1&sn=3daf22898b8149910b297f48376395a3&chksm=fdb3f054cac47942e2dcd43ba8a33ab414e0dafb2300ac2eebc9fe18af5cd9f4618b3b4f3266#rd另外,我当初在准备各大公司技术笔试的时候刷了大量的算法题,其中就是参考了一本谷歌大神的LeetCode刷题笔记,帮我整理了解题思路,归纳了出刷题方法,非常不出错,转给需要的同学:
BAT大佬写的Leetcode刷题笔记,看完秒杀90%的算法题!​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247485348&idx=1&sn=02ede6b715b20a6b981af1d021d77d5d&chksm=fdb3f97acac4706cc193bec80b984255bb33db2b35366682bd566280326b7029f1dae632abb2#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247485348&idx=1&sn=02ede6b715b20a6b981af1d021d77d5d&chksm=fdb3f97acac4706cc193bec80b984255bb33db2b35366682bd566280326b7029f1dae632abb2#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247485348&idx=1&sn=02ede6b715b20a6b981af1d021d77d5d&chksm=fdb3f97acac4706cc193bec80b984255bb33db2b35366682bd566280326b7029f1dae632abb2#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247485348&idx=1&sn=02ede6b715b20a6b981af1d021d77d5d&chksm=fdb3f97acac4706cc193bec80b984255bb33db2b35366682bd566280326b7029f1dae632abb2#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247485348&idx=1&sn=02ede6b715b20a6b981af1d021d77d5d&chksm=fdb3f97acac4706cc193bec80b984255bb33db2b35366682bd566280326b7029f1dae632abb2#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247485348&idx=1&sn=02ede6b715b20a6b981af1d021d77d5d&chksm=fdb3f97acac4706cc193bec80b984255bb33db2b35366682bd566280326b7029f1dae632abb2#rd最后给大家介绍一份计算机经典书籍,送大家一份硬核书籍资源:读大学跟工作期间,我买了很多书,大部分是一些技术书籍,也收集了这些书籍的电子版,都在这里,现在免费share给大家,包括了计算机类常用电子书,包括C,C++,Java,Python,Java,Linux,Go等,希望大家能认真阅读。点击下方链接直达获取:
计算机经典必读书单(含下载方式)​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487238&idx=1&sn=c63594d794bed494ff91bebd4c8de37c&chksm=fdb3f1d8cac478ce0bb20b69a930567c8790e1c3fe4629aacb805a5c2ac9f39035772855738e#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487238&idx=1&sn=c63594d794bed494ff91bebd4c8de37c&chksm=fdb3f1d8cac478ce0bb20b69a930567c8790e1c3fe4629aacb805a5c2ac9f39035772855738e#rd码字不易,硬核码字更难,希望大家不要吝啬自己的鼓励,给我 :
@码农出击
一个点赞,鼓励下我!
hnlzc 发表于 2023-10-4 18:57:43|来自:中国 | 显示全部楼层
GitHub上有个学习项目,详细的记不清了,意思是一个老外自学编程,一年的时间成功入职AWS做开发。他这套学习list可不简单,不是21天学Java那种低幼级别的。
还有一个网红老外,文科背景,写了本书叫超速学习,用一年时间,挑战自学MIT CS四年全部课程且都通过考试。
这两个case,如果你愿意,不妨选一个拿来做目标尝试一下。尤其第一个,挑战成功,无论你的学业还是职业都能有个非常高的下限。
我没有试过,因为已经就业,实在没那么多闲工夫,也没有动力。
--------更新--------
很多同学对case 1感兴趣,我找到了链接:
coding-interview-university/README-cn.md at main · jwasham/coding-interview-university (github.com)
项目发起者当时已工作十五年,参军两年,经营公司好几年,一开始做web开发,后来转做产品经理,到后来做ceo。单纯就是为了进入Google工作(看来老美也不少人有大厂情节),放弃所有,从头开始扎扎实实学习,用时8个月,每天学习8-12小时,强度非常高。虽然最终也没拿到google的offer,但成功面到amazon,在AWS部门。
特别适合学生党,大把时间。我这种中年人,白天上班晚上看娃周末溜娃的,实在无力挑战。

-------又更---------
多说一句,容易被大家忽略的case 2的方法,也非常有价值。我就挑战了一把,自学日语,很有效果。case 2的主人公一年时间挑战学习四门外语,达到基本的听说水平,包括难度极高的汉语和韩语。

------------------再更---------------------
这个答案两天时间访问量突破了10万,着实有些出乎意料。广大同学们的进取心还是很强的,能够给大家提供有参考价值的信息感觉很棒。
case 1 看来是更适合同学们提升能力,case 2有一些争议,有些同学质疑Scott Young涉嫌虚假宣传,夸大学习效果。是的,很有可能,当初刚看到时我也惊掉了下巴,感觉不可思议。我二话不说就买来了书(给京东点赞,上午下单下午送达),一两天读完了。
学术圈面对效果炸裂的新成果,大家不是空口质疑,是要根据论文的实验条件和代码复现的。通常主要是检查一下样本是否有污染。
Young的学习方法论,其实不是面向就业的,而是面向生活的。他学多门外语,学素描,学MIT CS课程,单纯是兴趣驱动,是对未知领域的入门,并不是为了当翻译,当平面设计,当程序猿。所以,效果上有折扣我认为是能够理解且容忍的。
在他书的鼓动下,我也尝试学习了日语和围棋,日语大概学了几个月,围棋学了几周,虽然没坚持下来,但我感觉多多少少入门了点,自我感觉还可以。这也就是为什么有同学说,CS的科班对Young自学MIT CS达到专业水准不屑,因为衡量标准不同,Young是个票友,他觉得我学会了就好,而在科班看来,还差的远呢。两者评判标准不同。
而虚假宣传,我认为真够不上,夸大是有的。我们其实处在一个夸大宣传的环境中,比如同学们的学校和专业,是否夸大了自己的学术地位。我用了一款牙膏,regenerate,告诉我一个月就能美白牙齿,我用了半年了,还是不白。大环境如此。
Young的方法的价值在于,对我而言,带来了学习的信心,就是可以短时间入门一个全新领域。包括我后来学钢琴,学分子生物学,都不打怵。CS科班的同学,如果能啃下来MIT CS四年课程,并做完lab作业,并通过考试。也是很了不起的成就。
哎哟 发表于 2023-10-4 18:58:10|来自:中国 | 显示全部楼层
题主马上大二,想修炼成高级编程人才,可以按照 编程入门指南 v1.5 - 知乎专栏 里面的方式学习,文章里列出了学习的方向,比如计算机系统基础、数据结构和算法基础、编程语言基础。学生有大把时间来修炼这些内容,制定好计划,一点一点掌握好这些知识,成为高级编程人才不会有问题。
题主提到最近在学习 js,我觉得在掌握 js 的情况下可以花时间学习 web 的其他知识,按照题主毕业的时间来看,web 是个挺不错的就业方向。

掌握 js 后继续学习 node 是很自然的选择,我认为有几个挺有意思的项目可以尝试。
比如可以尝试用 node 写一个 web server。按照下面的顺序不断添加功能。
接收请求消息,返回响应数据
解析请求的 method 和 path,然后能根据 method 和 path 返回相应的响应数据
处理请求的 query 和 body 数据,能处理这些数据并且返回响应
处理响应为 html 文件的情况
...
如果题主不清楚 node 怎么实现或者更喜欢 python(其实用 node 还是 python 几乎没有什么区别),这里有一个 python 版本的教程 Let’s Build A Web Server. Part 1. 还行(实际上他的实现方式算比较复杂,不过用来学习没啥问题)。
假如实现 web server 之后还有剩余的时间,题主可以考虑写一个解释器,上面那个网站也有解释器的教程。或者看看 @sumNer 的 sumNerGL/FakeLispInterpreter 项目,代码逻辑清晰,风格良好,测试完备,拿来学习挺不错的。
写完 lisp 的解释器之后,顺势写一个 JSON parser (参考 @sumNer  的 sumNerGL/JSONParser)也没有什么难度了,JavaScript 语言精粹最后就有一个 JSON parser 的代码,拿来学习也是个不错的选择。
题主做到这步之后,能力和眼界都会高于很多程序员,后续再选自己感兴趣的方向深挖就可以了。
qijian 发表于 2023-10-4 18:58:19|来自:中国 | 显示全部楼层
谢邀。
首先得明确修炼目标是什么,什么是高级编程人才? 难道是把所有知识都学全了?显然不是,那样四年不够用。四年的时间,应该努力挖掘自己的潜力,构建扎实的基础,备战未来职场。既然邀请了我,我帮你制定几个小目标供参考:
1.  基础知识的掌握。
A 数学。不要以考试为目标,而是以了解数学的本质,提升学习数学的兴趣为目标,当然是偏计算机科学的数学,比如微积分、概率、线代、具体数学、抽象代数、组合数学等。进阶部分是学习编程语言理论相关的知识,提升自己的思想境界。
B 英语。听说读写,尽量追求全面吧。
C  计算机体系结构、操作系统、编译原理、网络基础、汇编、C/C++、Rust语言。 了解这些的目的不是为了精通,而是为了构建一个Big Picture,在你心中建立一个完整的计算机世界的心智模型,你以后(包括工作以后)所思所学构建的知识体系树将在其上生长。否则以后学上层的编程语言,就仅仅只能玩哲学了。
D  数据结构和算法。这是值得你花4年时间精通的,可能有的人根本用不了4年。但4年时间足够一个智力平凡的人精通了。精通,并不代表你去参加ACM能拿冠军,而是对基本常用的数据结构和算法了如指掌;给你一段代码可以熟练的对其进行算法分析;可以轻松的应对面试(变态级的另说了,就算做不出来,起码你也得有自己的思路);平时写代码的时候,碰到具体的问题可以熟练的应用合适的数据结构和算法。
2.  深入的掌握一门求职语言。 当然你学JS很好,但是目前市场前端人员空前的多,除了JS,你最好掌握一门可以写后台的语言(我知道NodeJS也可以写),比如Ruby、Python、Java、PHP、Go。记住,多动手,知行合一才是真的学到了。
3. 调整学习态度。 先不要管将来毕业能拿多少钱,毕业第一份工作重要的不是工资,而是你毕业以后未来职业发展的第一步,所以你应该花4年时间,好好想想未来的职业规划。 多参加一些社会的活动,多了解了解社会。不要为了薪资去学习,也不要为了装逼赶时髦去学习,而是为了提升自我,构建自己的知识体系去学习,学习的过程中,多思考总结适合自己的学习方法,将来工作中会大有帮助。不断的挑战自己,挑战困难,突破舒适区,你才能锻炼自己解决问题的能力,你才能建立自信。
4. 培养读书的习惯。读书、写作是提升你自身能力的重要方法。读书和写作,也是对抗迷茫的一种方法,读书是一种交流和沟通,写作是和自己内心的对话。不要局限于技术类的书,读书应该全方位一些,可以选择哲学类、文史类等,扩展自己的思维。
5. 培养健康的作息习惯,早睡早起。这点我算是吃亏了,大学期间天天通宵,没想到工作以后也要熬夜。年轻人要珍惜生命,身体是革命的本钱。
有了目标以后,就根据大学四年的课程安排,把时间规划好,不要和学校的课程冲突,其实根本不冲突,其实计算机专业的课程设计培养目标跟上面说的的基础培养是一致的。
毕业,找到第一份工作,才是真正的起点,把握好大学四年的时间,才能更好的成就将来的职场,至于你4年后是否打算考研,我想你坚持下来应该会有自己的答案。
最后给你一句忠告:永远记住,不要急功近利。
omygod 发表于 2023-10-4 18:58:42|来自:中国 | 显示全部楼层
从你的描述中看得出来你是个很努力和上进的人,在大学的时候确实不能盲目自信,该学习的还是得学习,那些只知道玩和享受的人,毕业找工作的时候会被现实教训的。

大学是通识教育,培养的是分析问题和解决问题的能力,把专业课基础学好很有必要。你说的那些编程语言和技术其实都很有用,只不过这些在你未来工作中,可能不会全部都用到,但是也保不准你哪天会用到。
所以,你要知道,你学习的这些,不是浪费时间,说不定哪天都会派上用场。

给你一些学习的思路:
1. 学好专业课理论知识。特别是编程语言和计算机算法,对今后打算做软件的你很有用。
2. 开始做一个项目。这一点在面试的时候,跟其他没做过项目的同学比,会很有优势。你说了最近跟同学一起做网站,这就是个很好的项目,在这个过程中,你可以学习到很多的知识,包括前后端,编程语言,计算机网络,数据库,数据结构算法等,而且通过实践来的知识会很扎实。学好其他的固然重要,但是更重要的是,你只要把其中之一做好,就能够轻易的找到高薪的工作。

切忌三天打鱼,两天筛网,先把你的网站做好,再去搞别的吧。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则