计算机专业的学业该如何规划?

本人计算机科学与技术大一学生一枚,按学校的安排,现在学的是C++,高数,离散数学,数字电路。学了大半年,感觉很迷茫,不知道未来该往哪里发展。我想知道下我下一步的学习应该是哪些方面的内容,比如说下一步是数据结构,然后是计算机原理?或是说学习其他语言?希望能有过来人能给些指导意见,如果能推荐一些书就最好了。
另外,出于兴趣,本人也开始对linux进行初步了解,但缺少指导不知道从何下手,能否有好的书推荐下呢?现在基本上学的都是windows下的东西,有时候我很困惑的是有没有必要学linux。

推荐  (1) | 13人关注关注
11个答案
17 0

LZ的迷茫 是因为某种“需求缺失”
不知道什么样的研究,什么样的工程需要用到什么样的知识
学校的课程大而全,是为了保证你在毕业之后择业面更加广泛,为学校的就业率服务。(当然,其实计算机学科中很多课程倒是相辅相成,缺一不可的,例如数据结构,数学)

所以LZ既然选择了这个专业(默认LZ的兴趣在此,否则已经可以exit()了),那么首先需要找到你的兴趣点,到底是底层开发(linux内核,linux驱动),应用开发(UI,或者web)还是移动互联(Object-C,android)或是算法(算法导论,汇编语言,编译原理)等等(本人水平有限,分类可能比较粗略);人的经历是有限的,但是有一点可以明确,就是在专注一个领域,一定是可以成为专家的。而任何一个领域的专家,都可以说是有前途的。

至于linux和windows 这大概是因为linux 的开源带给人们更多的好感吧,操作系统本身不分好坏,重要的还是看是在什么方面应用。

当然对于语言的学习,也是必不可少的,国内一直流行的语言不重要,重要的是思想这个想法其实是很错误的。不同类型的编程语言在生产环境中的效率是很不一样的,命令式语言,解释性语言和函数是语言各有优劣,LZ可以都有所涉及,然后从项目入手,再深入的学习。因为毕竟编程是一个实践的过程,光看书是没有效果的,只有在实际的项目或工程中,才能比较好的使你得到锻炼。

既然说到了项目,就要说一下如何加入到项目之中,因为本科生确实很难涉及到实际的工程,但这也是最为锻炼能力的。说说我所了解的几个途径把。1. 开源项目 github上众多的开源项目,可以慢慢浏览,选择一个自己感兴趣的,加入他们的邮件列表然后研究源代码,自己编译了然后在社区中互动(这也是一个锻炼英语水平的好机会) 2. 学校的工作室或社团或实验室 如果认识学院有项目的老师或者工作室,加入他们也是一个不错的方法。

暂时想到这么多 如果有不清楚或者不对的地方 大家讨论

14 0

怒答
稍微秀一下本人简历以增强说服力(大牛们不要来喷我)
计算机科学与技术专业,三流学校毕业,毕业后在富士康“研发部”(我参与了完整的第一代iphone从原型机到推出市场的全过程)搞了3年嵌入式编程,之所以加引号是因为技术含量和苹果的比差太多,但仍然涉及了驱动的编写与移植等等写到简历上可以蒙到大部分人资的工作经历
之后成功骗过人资法眼,跳到华为,苦逼程序员一枚,偏应用层编程,也有系统编程,风河和Linux系统下的c语言,详细就不说了,我也不指望在这里秀工作经验能有猎头看上我,总之四年的合同,干了三年半,最后一年怒辞职。

但怎么说呢?上学的时候我在同学里面很平庸,也整天打cs,有同学是真牛,我们打游戏的时候人家在编程,刚毕业就轻松找到6k的工作(那个时候的6k真的是6k啊!)。
在校学习的时候我也同样的迷茫,但无论如何还是拼命跟上进度了,大一高数和线代双双挂科,引为我毕生的耻辱。大一大二全都在学理论我也总是想他妈的学这些乱七八糟的跟工作有关系吗?后来开始学数据结构,数电模电,这才感觉有点靠谱,不过我由于迷茫,所以不敢小看任何一门课,不管是高等物理还是离散数学,反正你教的我就学,你没教的……我也不知道该学啥。
这时候有些牛人们就已经开始玩编程了,什么深入浅出MFC,什么红帽,他们看的书在我眼里基本上跟天书一样。我只学了c语言,因为是学校安排的课程,并且还是阉割版,连指针部分都跳过没教。
但是我因为迷茫,所以眼前的东西一律抓住,于是课本上有而学校不教的部分,我觉得这学了肯定会有帮助,于是就把那本被学校当作课本的谭浩强的c语言学完了,然后用盗版的vc做了书里的习题并且都跑了一遍,不会用对话框编程,全是编的控制台程序,顺便学会了怎么用vc的ide调试。不光是这个,其他课本上有而考试范围里没有的我也都尽量学完了。然后老师说c语言已经过时了,要学c++,好吧我又找c++啃,啃到继承多态虚函数模板的时候实在啃不下去了,直到现在我也特怵这部分。
然后找工作的时候就冲着专业对口,去赶富士康的场,然后人家发了个编程题,用链表实现一个栈,我一看哎呀这不要太简单,怒答,顺利被人资看上,混进富士康。至于混进去后又是怎么混到专业对口的研发部去的,这就按下不表了。
事后回过头来看这些经历,我得强调下学一门具体的计算机语言是最重要的,起码要用你学会的计算机语言,实现你数据结构课程上学过的大部分数据结构,链表栈二叉树队列是必须要实现一遍的。那些什么图,平衡二叉树、B+树,最短路径算法等等的可以凭兴趣玩一玩。因为凡是招毕业生当程序员的,必然要考你编程。你不用写很专业,但起码要能跑起来,要多少写一点注释,让人资的感觉你不是只会写伪码,至于编程风格编程规范什么的重要倒是重要,但人家本来就对毕业生期望值不高,你能表现的话是加分,不懂也没什么。
然后第二重要的是所有的专业课,不求你记得多清楚,但要完全的理解透彻,理解之后,就算你忘了,随时也能找回来。工作之后我发现,给我的任务里那些术语我竟然都懂,不懂的也就是层窗户纸,捅下就破了。之前一直盘旋在心里的诸如“我连最简单的对话框都实现不出来”、“我连架网站都不会”之类的恐惧,工作了才发现完全都不是个事儿。现在高中生都会编程序,但是科班出身的搞起研发来有先天的优势,优势就在于你系统的学习过专业课,这个理论体系不是一月俩月能搭建的起来的。有了这个知识体系,你理解现在流行的大部分技术都没有问题。
然后第三重要的是理论课和选修课,像高数线代复变积变离散概率高物等等这些课我现在其实大部分也都还给老师了,但是当时学这些课对我来说很有挑战性,非常锻炼脑子,让你的思维一下子有条理有逻辑性。选修课中我选的都是专业相关的,比如计算机图形学,EDA之类的。对今后的工作有帮助。

然后做到这些之后,你再去研究Linux或者Windows编程不迟。
至于Linux有无学习的必要,我告诉你不学死不了人,学了会有很大好处,我在学校的时候就完全是个Linux盲,盲到连自己都不知道自己在Linux方面有哪些不知道的。但是如果你在学校里要学习的话,下手点应该聚焦在如何在Linux系统下实现一个功能上,比如利用socket编程实现一个简单的网络对话程序。你首先以此为目标,然后看自己缺少哪方面的知识就去自学,书籍这方面不用太迷信经典的,市面上有一些傻瓜指导书就可以拿来学。顺便说一下Linux下编程一定要学会用vi编辑器,熟练之后受益匪浅(emac也行,但最好是学vi)。

4 0

基础课先学好呗。大一还早,数学别挂了。四大基础课准备好好学吧。按照课程走就行了,不用太提前预习。平时按照自己兴趣学点科学或者做点工程就好。
多实践,你能确保你认真做的项目里,你了解大部分方法的实现以及整体的工作流程和原理?
除非考研翻身否则二本院校搞学术基本没出路,发出来的paper不太有机会有科学含量。
想搞linux就安装个linux先啊!当年ubuntu还送光盘的时候,真是大大推动我院的安装率啊。
原来一直在windows下开发,但是有些东西确实不适合,例如hadoop那个生态圈,windows下玩开玩笑呢?
只要不玩游戏,linux下我觉得找不到替代的软件也就是qq和owa了。习惯了shell和vi的话,linux很容易入门的。强迫自己去做一些提高效率的事,linux下捣鼓捣鼓就理解了。

4 0

作为一个曾经的OIer/ACMer,我自然会建议楼主趁年轻去搞一把……好处么就真是谁用谁知道了。

其他的话,我看了楼主的贴觉得楼主可能对计算机科学这个领域比较迷茫……其实也是,计算机涉及的方面太宏大了。我个人觉得楼主还是要按自己的兴趣入手,Linux下的东西相当多的。当然楼主也可以去关注一下计算机导论学的东西。我记得我大一上就这一门专业课,上课的老师说这门课并不是要你精通计算机,了解计算机的各个方向并找到自己感兴趣的。你可以看看《计算机科学导论》 http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E5%AF%BC%E8%AE%BA-%E4%BD%9B%E7%BD%97%E8%B5%9E/dp/product-description/B001O4WS1U/ref=dp_proddesc_0?ie=UTF8&s=bookshttp://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E5%AF%BC%E8%AE%BA-%E4%BD%9B%E7%BD%97%E8%B5%9E/dp/product-description/B001O4WS1U/ref=dp_proddesc_0?ie=UTF8&s=books 找到自己感兴趣的,然后再在Google上搜自己感兴趣的东西如何入门。

最后提醒楼主两句话:1、专业课能不挂争取别挂;2、数学一定要搞好,至少对于《具体数学》这本上面的东西一定要搞好。

3 0
支持者: 果壳娘 窗敲雨 Markov

基础方面的如数据结构、计算机原理、网络等课程学校应该会开的,一定要好好学。
可以试试ACM。
编程语言可以自学,多涉猎几种不同类型的,比如python,lisp。
做一个自己的项目,并一直完善下去。
linux不要去为了学而学,而是应该为了用而学。

2 0
支持者: 布欧 Ing Ghu

计算机系最牛逼的两门课,就是数据结构和算法。
学好他写程序就基本上思路非常的清晰了。

其它的java、c#、c++这些语言只是个工具。

当然数据库、计算机网络、操作系统这些也很牛逼。但是看个人兴趣学习。

我学这么久,这东西确实需要天赋的。不是所有人都可以拯救世界的。

1 0
支持者: 布欧

以荒废过3年的学生的资历告诉你
不用迷茫
教你的基础课程都好好学
以后那些具体语言 你上高年级选修课的时候直接现学就行了
目前把C/C++学学扎实 数据结构搞搞好

以后你要往linux方向发展的话你可以去研究, 否则只要掌握一般性的Linux操作就行了
具体不需要什么书指导的 多用用就熟悉了

1 0

ASphoebus1412数学控 语言fan 编程爱好者

2012-04-15 11:15
支持者: 窗敲雨

专业课还是要好好上的,程序员这东西吧,你先好好钻研好C/C++,等你完全掌握一门编程语言,其他的编程语言都是很容易的,只要去了解了解其语法就行了,关键是你在学习C的时候能把算法和数据结构融会贯通,不过做到这一点也是很有难度的。
像Linux的话,看你以后是干什么的咯,其实Windows这个东西,除开个人机根本就没有市场,其它的都是LINUX,UNIX之类的系统。

1 0
支持者: Ing Ghu

推荐《黑客与画家》
然后 C站上正在上课,startup engnerring

0 0

@ASphoebus1412 其实Windows这个东西,除开个人机根本就没有市场
---------------------------
个人机的市场再小也比geek市场大

0 1

少壮不努力,老大做IT。赶紧改行吧!嘿嘿

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2015] 0609-239号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区