想自学硬件的软件工程专业学生

【来信】
  不知道老师是否还记得我,刚上大二那时,我因为感到前途迷茫而给您写过两封信。经过大二一年的学习,我找到了方向和自信。由当初的迷茫变成了当前的少许疑惑,因此再次写下了这封信。
  我是某大学软件外包专业的学生,今年开学上大三了。刚上大二时,我并不了解本专业的培养计划,现在我已经完全知晓我们大学四年来安排下的所有课程以及教学方案。大概的说,我们专业偏重于开设开发类课程,从大一大二的sql,javaSE基础,以及Android 开发,再到HTML+CSS+JS&Dom+JQuery 前端开发,还有大三即将要学的javaEE 包括 servlet jsp 和ssh框架。总体来说,是一个侧重于java方向的培养方案。(当然还有软件工程)而专业基础课开设的极少,相对于一本专业,我们取消了数电,计算机组成,体系结构等一系列硬件课程。基础课只开设: 数据结构 操作系统 计算机网络 离散数学。确切一点就只有这四门。其实就算是这几门课,我也觉得只学到了些皮毛。令我最不满的是,学校取消了包括操作系统实验课在内的很多实验课程。这种纯理论应试化的学习,我仍然认为很没有意义可言,大多学生唯一的学习来源就是考前的那一张考纲和重点。
  刚上大二时,我确信自己找到了一些方向。不仅专业课学的很认真,其他基础类课程也要求上进。相比于我的其他同学,我在学习理工科方面的逻辑思维渐渐展现出了优势,对于大多数同学都很头疼的工程数学如线代、概率论之类的课程,我甚至具备了考到满分的能力。我逐步发现自己是一个逻辑思维和数学思维都比较强的学生,对我来说学习某样东西很少存在学不会的问题,阻碍大多来自坚持与否,以及教学资源是否限制。
  和许多同学一样,我也十分注重专业的开发类课程。老师说过的学习到实践,然后再学习再实践的过程我一直牢记在心。大二这一年总体来说,我付出的学习时间并不少。编程能力有了不小的提高,并且打下了比较牢固的java基础,(具体是从面向对象 IO 多线程 Swing 一直到 网络、反射机制等)再学习完HTML等前端知识之后,这个假期我也开始提前学习javaEE的相关技术并且每天保证3个小时的代码量,为日后的学习做准备。虽然只接触了为数不多的项目,但我知道开发经验并不是一蹴而就的,我对学技术始终保持着很耐心的态度。于是成为一个软件架构师就成了我这一生最大的目标,尽管这个目标对我目前来说是一件遥不可及的事情,但我发誓我会用终身学习和长时间的努力来争取这一切。(最好是向我的班主任那样,先专攻Web方向,到后面再转到大数据方向上来)
  那天我在听麻省理工大学的网上计算机公开课时,我发现对许多计算机硬件底层的原理都不清楚,甚至可以说是闻所未闻。经过网上查询,我渐渐了解到,原来想要在软件方向上走的更远,硬件知识是必备的。于是我想到了一条新的学习路线,想要从基础学起,重新系统化的学习硬件知识,与我正在学习的课程同时进行。而由于学校开设的课程限制,我并没有机会走进学校的硬件实验室,而我认为学习硬件原理,仍然要以实践为基础,这无疑给我在学习过程中造成了障碍。我想问一下老师:
  我听说,一个优秀的软件高手一定需要掌握底层的知识,从而更加清楚地了解操作系统,这样才能做好软件工作。这样的说法是否有道理?一个优秀的软件工程师所掌握的知识到底要对底层或者说其他基础知识有怎样深度的了解?如果我现在学习硬件或底层知识,老师想推荐哪几门课程?或者是一个正确的先后顺序?最重要的是学习这些课程,总体需要用怎样的方法去学习?
  我认为我的能力完全可以驾驭更多的课程知识,其实这一年来我最大的变化主要是以理想信念为主的学习动力转变为了以兴趣为主的学习动力。下半年我打算火力全开,重点加强专业和英语的学习力度。等到过了年底,再将我的主战场转到考研任务上来。很希望老师对我的现状再理顺一下学习方向,对此我感激不尽,谢谢!

【回信】
  很欣慰你的进步!大学阶段的自主把握很关键,大学就是给愿改变,能自主的人准备的。
  对于你们专业取消硬件基础类的课程,我知道学校背后的隐情,不多说接受吧。而作为你,还想再多了解一些,仍然还是可以借助于自主安排,其实,这更是学习中的常态,是个性化的体现。
  近几年来,有一种观点是,计算机类专业的学生,应该能够从整个系统的角度看待计算机,而不是将其割裂开来看待,清晰地分开来学习。所以,既然你有心,适当云探一探,好事一件。
  具体的学习资源,可以到网易云课堂的“计算机专业课程体系”中看一看,那儿有一门计算机组成原理课可以参考。另外,要看书,可以选经典的《深入理解计算机系统》。你的目标是软件架构师,从软件开发者的角度理解系统,不见得一定要从很底层的电路实验做起,我们的学习也要讲究成本,相关的实验,可以采用软件形态的方式进行,在程序设计中,能够体现针对硬件特点做同的安排,使计算机能够“很舒服”地执行,或者在有些地方,想当然对的,或者有潜在危险的,由于对底层原理的熟悉,一眼就能看出,或对你不成问题。完全可以用程序设计的实验,体现对底层原理的“做中学”。
  我没有在计算机系统方面做过工作,这点意见仅供参考。你可以再通过其他途径,了解一些硬件类知识的自学途径。
  相信你可以做得更好!

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值