大家好,今天小编来为大家解答以下的问题,关于软件工程的学生需要学些什么,硬件与软件冷知识这个很多人还不知道,现在让我们一起来看看吧!
本文目录
软件工程的学生需要学些什么
1.软件工程的学生需要学除了C语言基础,C++基础,java语言外,计算机操作系统、计算机网络、计算机组成原理、编译原理、数据库这几门课也是一定要学的,我着重提一下是因为很多人觉得麻烦,不愿意认真去学。但是学好的好处是非常大的,毕竟我们学习编程语言不能只是为了写计算器这样的小程序,更深入的学习和理解,都需要设计、硬件、原理的知识。
2.同时,不要忽略英语,英语不一定要多么优秀,但是一定不能就抛弃它。要知道很多非常好的资料书籍都是用英文写成的,即使是有翻译版的,但是看原版的有时候会更加深刻的理解知识。而且,程序都是用英文写的,相信写过程序的人都了解,写程序的过程中会碰到为很多变量、函数、对象等等命名,而命名需要的就是‘望名而知其意’,所以学好英语,能为你带来很多便利,而且也是帮助你能更加容易的看懂别人的程序。
3.面向对象程序设计(OOP),并会通过具体的编程语言(建议Java和C#二选一)实现。如果要入门,推荐网易云课堂北京大学唐大仕老师的《C#程序设计(上)》。
《C#程序设计(下)》这个课程比较基础,需要进阶的,可以学习北京理工大学@金旭亮老师的《面向对象软件开发实践之基本技能训练》和《面向对象软件开发实践之专业技能训练》。不过真的有难度。Java的话可以考虑浙江大学@翁恺老师的《程序设计入门—Java语言》与《Java语言程序设计进阶》。当然,顺带掌握语言相对应的IDE,如VisualStudio或者MyEclipse。
4.基本的数据结构与算法。可以看网易云课堂上浙江大学陈越老师和何钦铭老师的《数据结构》。也可以看学堂在线上清华大学邓俊辉老师的《数据结构》。数据库,至少掌握SQL以及一个主流的DBMS(MySQL,SQLServer,Oracle等)的使用,具体种类取决于你打算主要发展的技术路线,如你选择C#,那么可以考虑SQLServer。如果需要更进一步的提高,如如何设计较好的数据库,可以学习王珊《数据库系统概论(第5版)》中关于数据库设计规范(主要是范式)方面的章节。
硬件工程师的发展如何
本人是硬件工程师,目前毕业3年多,毕业一开始岗位是EMC工程师,做了1年又10个月,对电磁兼容和卖硬件设备的公司有了一定的了解,觉得EMC工程师没前途,于是跳槽去新公司做硬件工程师,到目前为止设计过7、8块单板。
计算机硬件如PC、手机、摄像机、路由器、交换机、服务器等产品的基础就是硬件单板,硬件工程师就是设计合格的单板。之前做EMC的时候,觉得硬件工程师无非就是参考设计那来一抄,原理图连连线就好,后来发现不是。
硬件工程师的职责与定位
首先,介绍下一个硬件产品的研发流程,如下图所示:
公司内所有的岗位是同等重要的,有些公司可能没有研发或者部分研发工作外包。虽然各团队的重要性是一致的,研发团队在产品开发中的位置应该更加核心,研发人员可以转去做市场、测试、供应链或者质量管理等,但市场等岗位的人却很难转做研发。一来研发门槛较高,二来研发工作接触面广。
硬件工程师在研发团队中重要的一员,硬件产品的研发团队大致组成如下图所示:
一个硬件产品的项目团队中,有两个和所有人打交道的角色,一是项目经理,另外一个就是硬件工程师。硬件工程师需要和各种研发人员打交道,协调工作,这也要求硬件工程师具有丰富的知识面、强大的协调能力。
硬件工程工程师的本职工作,如下图所示:
硬件工程师可以大致分为如下四个阶段:
?初阶的硬件工程师
在别人指导下完成阶段三和四的一部分工作,应届毕业生入职3个月基本可以达到。
?普通的硬件工程师
独立完成阶段三和四的工作,一般工作1到2年即可
?资深的硬件工程师
主导完成阶段三和四的工作,参与完成阶段二总体设计的工作
?专家级硬件工作师
主导完成阶段一和二的工作
这里,你可以定位一下自己目前处于哪个阶段。
硬件工程师的发展方向
不管什么岗位都想明白自己的职业发展方向,软件工程师不想一辈子写代码,硬件工程师也不想一辈子奋战在最基层画原理图、调板子。
就我理解,硬件工程师的发展方向大概有以下几种:
1.产品经理
产品经理负责一条产品线工作、规划及发展。硬件工程师由于工作涉及面比较广,对产品整个流程的工作及问题都涉及到,适合向产品经理发展。
2.团队管理者
管理者协调资源、管理员工的工作分配以及绩效、设计完善流程等。
3.技术专家或系统工程师
专家提供的是什么?不是源代码、不是原理图,而是产品实现的方案、思路以及技术发展的方向。
4.创业
虽然国家鼓励这样做,但创业是困难的,如果创业卖硬件,就更难了。做好准备,也是一个选择。
无论选择什么方向,对我们这群目前毕业几年还在底层的硬件工程师来说最需要做的就是积累,明白自己的路需要什么。
硬件工程师所需关注的事情
关注本职工作以外的事情
1.技术上,关注软件或者FPGA工程师的工作。这不是让我们学习写代码,而了解软件或FPGA实现功能的方法、流程和思想。也就是从系统的角度思考产品是如何工作。研发的过程会经常出现各种BUG,产品出现问题,研发的每个人都有份,不能说这个问题是软件BUG,我就不管了。和软件或FPGA工程师之间都讨论或者争论有利于提高效率,打开思路。
2.关注市场,也就是提高产品的竞争力。目前国内硬件产品貌似不停走向低成本,costdown是公司永恒的主题,越来越多的产品被做烂了。换一个角度思考,市场上那么多同质的产品,有没有不完善的地方?可不可以通过增加某项功能,突出自己产品的竞争力?进而和研发团队思考功能如何实现。
3.关注项目管理、质量管理上的事情。硬件工程师不可避免要面对这些问题,产线的问题要找你,物料供应的事情要找你,产品返修要找你,现场维护要找你,这些都是提升的机会,问题来了要用科学的方法做事情,多学习质量管理,可靠性设计的知识。
注重学习,任何行业的人都要不停的学习
个人觉得硬件工程师需要知识储备比较多,电子信息领域的技术和知识本来就很多,人需要不断的学习。我大概列举一些,是自己工作以来学习的方向,当然工作中会不断遇到各种更新、更深入的问题需要学习。
1.EMC与安规
EMC与安规在规模较大的公司都有专门的团队,但小公司只能硬件工程师亲手来。
CE认证测试项目最多,学习可以先关注CE的相关标准。不同行业的标准是不一样的,汽车电子和信息技术设备的测试方法和要求都不一样。
EMC理论个人觉得已经发展的比较形象(不像电磁场那么理论抽象),精髓就是EMC三要素,干扰源、敏感源和耦合路径。设计分析就是关注共模电路的回流路径或者泄放路径。
2.RF与天线
同样的RF与天线在规模较大的公司也有专门的团队。
行业发展到现在,硬件工程师的RF和天线设计工作基本就是选型了。因此,需要明白一些基本的参数如增益、P1dB、IP2、IP3、天线的方向性等等。
3.电源
电源部门在规模较大的公司也有专门的团队,无论板级DCDC电源还是电源适配器都有专人完成设计、选型或测试工作,硬件工程师应用时标准电路拿来用即可。
关于电源大概就以下几个方面:DCDC有几种基本拓扑?效率与什么有关?LDO原理是什么?设计需要注意哪些参数?POE协议是否熟悉?
4.时钟
晶体和晶振有什么区别?怎么设计?时钟信号有哪些关键参数?PLL的原理是什么?环路带宽是什么意思?PLL失锁的可能有哪些?时钟芯片如何选型?
5.小模拟电路和小逻辑电路
硬件工程师的工作是系统级应用,不是IC设计的大神,工作中很少用分立器件设计电路。
二极管、三极管、MOS管和运放的特性要熟悉会分析,简单的电路要设计。
如三极管电平转换电路怎么设计,为毛低温就不工作了?
如MOS管双向电平转换怎么设计?要关注什么参数?
如MOS管的米勒效应,能不能定量的用公式分析?
6.高速信号及信号完整性
建立时间与保持时间?
时钟的抖动分哪几类?
数据相关抖动是什么?
CDR是什么?
抖动与误码率的关系是什么?
EQ、去加重、预加重?
7.低速信号
I2C、UART、SPI是什么?会不会通过示波器测量判断通信数据对不对?
8.RAM和ROM
NANDFLASH和NORFLASH有什么区别?
DDR3SDRAM原理是什么?CL、AL、RL、WL是什么?各种参数的会不会设置?
9.CPU、SOC、FPGA
X86、ARM、MIPS、POWERPC有什么区别?FPGA设计需要注意什么?IC设计领域了解嘛?
关注自己的行业
不同行业的技术是不一样的,应用环境及解决方案也不一样
如你是设计智能电视的:
1、视频相关知识?BT1120是啥?H.264是啥?YUV是啥?4:2:2是啥?什么是HDMI?具体协议是啥?
2、思考下产品,内容重要还是硬件重要?能不能优化下3D?
如你是设计交换机的:
1.802.3了解嘛?啥是MAC?啥是PHY?GMII接口如何设计?
2.交换机如何工作的?VLAN是啥?
3.客户是啥?教育网还是运营商?
如果你设计无线路由器的:
1.802.11a/b/g/n/ac的区别?TCP/IP协议是啥?ARP是啥?路由的工作原理?
2.天线如何设计的?增益、方向图是什么?各种PA、LNA如何选型?
3.客户是啥,需求如何?150块卖给普通人,还是1000块卖给企业级用户?
以上都是我思考的一些点,水平有限,也不够深入。
最后几点
硬件工程师最大的优势就是在研发工作中可以涉及到各种各样的问题、学习各个领域的知识,这是成长的基石,不停地总结,可以从整个产品的角度思考问题。有人说什么都懂得一点的人注定只是普通的硬件工程师,但我们必须都要懂一点,这是硬件工程师的基础。但我们还需要在自己的领域成为专家,因此需要在技术上对一个行业非常的了解。
个人觉得有两个领域值得去深入研究,以后是物联网的时代,网络和无线通信的应用会越来越多。
1.网络
也是交换机和路由器等应用与组网。现在互联网基于以太网,802.3标准规定了MAC和PHY规范。上层协议如TCP/IP、UDP、ARP、环网等等,总之网络的水很深,值得一探。
2.无线通信
如移动通讯、WIFI、sub1GHz等等应用会越来越多,之前国家发布的什么旅游规划,有一条就是景区要实现免费WIFI覆盖。无线通信也基本是802.x协议族。基带和RF都可以深入学习。
我现在也很迷茫,不知道往那条路上走,但有一条是不变的那就是学习,硬件工程师需要保持好奇心,不断学习新的知识。
什么是硬件设计师
硬件工程师需要会的东西太多了,首先你要熟悉了解电子方面的很多基础知识,然后在这基础上开始深入。
1、学会设计、建构和测试各种计算机硬件及其相关设备,要会调试电路板、调制解调器和示波器等。
2、要会看任务书,如何将任务书转换为原理图来实现,这个过程你要会看很多文档,一般多数都是英文,要有基础的功底。
3、根据任务书,画出原理图和PCB,这个过程一定要大胆假设,小心求证。画PCB板的时候,要注意布线和元器件摆放位置,无论是高层板还是低层板,都要注意电磁兼容设计。
4、设计原理的同时,要根据所选的芯片不同,开始设计程序,这个一般最好本人要会设计,这样才算一个合格的硬件工程师
5、通过各种电子设备来调试程序,确保其按设计要求正常运行。
6、负责产品开发相关资料的整理、总结与归档。
7、维护管理或协助管理所开发的软硬件。
初级的硬件工程师太多了,以至于看不到希望。在平时工作中,最好工作是首要的,下了班还要给自己多充能才行,毕竟硬件这个行业精通设计的话,还是很吃香的。
计算机软件应用有哪些科目
计算机科学与技术专业:C语言程序设计、计算机组成原理、数据结构、操作系统、微机原理及汇编语言、计算机网络、计算机系统结构、软件工程、面向对象程序设计等。计算机软件专业:面向对象程序设计、计算机组成原理、操作系统、数据结构、计算机网络、软件工程、编译原理、分布式系统、软件项目管理、Oracle数据库系统等。
电子商务专业:管理学原理、电子商务、物流管理、计算机网络、供应链管理、电子商务平台及核心技术、国际商务管理、电子商务案例分析、商务网站建设等。本专业是计算机硬件与软件相结合、面向系统、侧重应用的宽口径专业。通过基础教学与专业训练,培养基础知识扎实、知识面宽、工程实践能力强,具有开拓创新意识,在计算机科学与技术领域从事科学研究、教育、开发和应用的高级人才。本专业开设的主要课程有:电子技术、离散数学、程序设计、数据结构、操作系统、计算机组成原理、微机系统、计算机系统结构、编译原理、计算机网络、数据库系统、软件工程、人工智能、计算机图形学、数字图像处理、计算机通讯原理、多媒体信息处理技术、数字信号处理、计算机控制、网络计算、算法设计与分析、信息安全、应用密码学基础、信息对抗、移动计算、数论与有限域基础、人机界面设计、面向对象程序设计等。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
声明:本文内容来自互联网不代表本站观点,转载请注明出处:https://bk.oku6.com/13/141255.html