我对EE学科知识体系的一点理解
前言
研究生一年级的分都出完了,鉴于学分已经修够了,可以说学生时期上课、写作业、考试的日子也基本上到头了。
有幸高中升大学时挑选了一个自己感兴趣的专业(电子信息工程),学习之路虽然难言轻松,但还是乐在其中的。按照本科4年+研究生1年来算,共5年的学习时间,北京理工大学和中国科学院大学的课堂算是帮助了我对整个EE领域有了基本的认识,建立了一套相对系统的学科观念。
尽管在实际做项目时,只有课本知识是完全不够用的,但学科的思维模式却是贯彻始终的,能够快速帮我上手解决具体问题。我是一个先求广再求精的人,事实上广博的学习也帮助了我在做项目时能够快速的有一个全局的认识,进而掌控大方向,也有助于我和每一个负责具体方向的同学的沟通。
下面从我现在的高度来具体聊聊我对每个板块的认识。
基础类
工科,基础默认是数学和物理。尽管对人文社科有着浓厚的兴趣,但自高中以来我就是个不折不扣的理科生。靠着高二时打物理竞赛留的底子,大学的数学和物理我还算上手的比较愉快。而在后续的学习中,我也反复的感受到基础确实很重要,专业课里一般学不懂的地方都是数学或者物理上搞不定,没理解透。
数学
基础数学
数学分析是重中之重,多元微积分,微分方程,泰勒展开,傅里叶展开,拉格朗日乘子法......每一个数学工具都是有非常有用的,这里不得不感慨,万幸当时跟了一个好的老师,并且投入了大把时间做题。线性代数同样重要的,是大量后续学科的基本数学工具。而概率论,说来惭愧,学完后放了很久,一直到学习随机信号时才重新捡起,尽管也是必不可缺的,但其地位在我心中比不上前面两者。
专业数学
数值分析主要是讨论近似方法,本科EE课群中其实并没有这门课程,但是我在学高性能计算时接触了,里面的数学工具在讨论计算机求解数学问题时是很有用的。复变函数,重要且难学,重点是把握思想,信号与系统及其后续课程对于复变有比较高的要求,复数是非常好用的描述工具。我们当时在同一学期开了复变和信号与系统,学的很难受,其实前者应该设为后者的先修课程。数学物理方程讨论了一些特殊偏微分方程的求解问题,对于学习电磁场和量子力学还是很重要的,直接关联到微波和微电子的专业课程。
物理
基础物理
大学物理,一门在我看来有点大而无当的课,尽管确实起到了拓展知识面的作用,但是力学,热力学,光学,相对论等物理分支其实对专业知识体系没有太大的帮助。当然,如果往半导体工艺和设备发展的话,就比较吃这些物理基础了。理论物理导论,相当于大学物理plus,不过是从理论力学、统计力学、电动力学、量子力学的高度来讲,对数学要求更高。
专业物理
电磁学理论和半导体物理两门课分别算是微波方向和微电子方向的内功心法,电磁学理论围绕麦克斯韦方程组;半导体物理从量子力学中的波函数出发,讨论能级,能带,再讨论载流子漂移、扩散等现象。
专业类
由于具体方向不同,EEer可能只会学一些子集,但其实各个专业方向之间的勾连程度挺高的。我的个人感受是对于做电路的人来说,电路本身那点方法学是不够支撑一个人去做完整项目的,因为电路本身只是实现目标的手段罢了,而这个目标往往是和应用相关的学科来决定的(计算机、通信、算法.......),我做AIOT芯片时的感受就是真的什么都得会一点,一个SoC里如果同时包含了数字、模拟、射频,那就需要一锅EE学科知识大杂烩。但我个人也很享受这种所有知识都能派上用场的场景,说明没有白学。
专业基础
电路类
电路分析是最基础的,但是里面的工具会在后面的电路类课程里反复用到(模拟类),包括基尔霍夫方程组,戴维南等效,诺顿等效,RLC网络分析法(尽管这里如果没有学过复变函数的情况下只能用常微分方程的视角来进行理解)等。数字电路主要是组合逻辑和时序逻辑两大块,组合逻辑围绕布尔代数,最小项之和与最大项之积,卡诺图等工具以后还是有用的,时序逻辑中状态机是重中之重,Milly型、More型,状态转移图,状态转换表,时序图等是以后做数字非常常用的工具。模拟电路是一个很复杂的课程,满打满算下来我模拟学了三遍,但是依然不敢说自己完全理解了,首先模电讨论了运放,二极管,BJT,MOS等基本元件,BJT和MOS的几种组态,这些都是很常用的。进行频率分析时得动用信号与系统的相关知识,主要是把握电路中的零极点。而反馈,电路的稳定性分析会需要自动控制原理的相关知识。通信电路需要模电和一些通信原理的底子,讨论了振荡器,VCO,PLL,功放等部件,以及AM、FM、PM调制解调的原理和电路实现。
信号类
信号与系统是我个人很喜欢的一门课,也是以后所有信号类,以及模拟电路类课程的知识基础。本质上是通过傅里叶变换这一工具给我们提供了看信号的另外一重维度的视角。里面一些时域,频域分析方法,卷积定理等是非常有用的工具。
通信类
信息论与编码,讨论了基本的信息学概念,信息熵,信道等,后续通信原理会用到。编码里面的一些技术很重要,CRC在我做项目时反复碰到,存储器做ECC时需要纠错编码的知识。
微波类
微波工程技术基础,我学的比较痛苦的课,吃电磁学底子。传输线模型,史密斯圆图,负载匹配,功率匹配等工具做射频电路时很常用。后续讨论波导(矩形波导,圆波导,平面微带线)是做天线的基础。
计算机类
C语言程序设计,没有什么好说的,连带着一点计算机常识和编程一起学的课,系统性不是很强,大把时间在教语法,但实用性很强。数据结构与算法系统性强了很多,堆、栈、队列、链表、树、图等数据结构,排序、归并、查找、规划等算法,给编写程序提供了一定的理论支持。其中图,Dijkstra算法和Floyd算法在后面计算机网络,通讯网理论里面有应用。计算机原理与应用,比较系统的讲了计算机结构,拜其所赐好好的啃了一顿8086,写了不少汇编,后续学计算机体系结构时还是比较感谢这门课的。
专业应用
电路类
集成电路工程,大三下修的,同样感觉大而无当,想同时教模拟集成电路和数字集成电路,但是最后因为课时不够变成了通识教育。ICer真正的必修课还是这三个:数字集成电路,模拟集成电路,射频集成电路。数集在数电的基础上补充了HDL的方法学,时序约束(Setup、Hold),以及Pipeline、总线、存储器、乘法器、加法器、函数运算器(Cordic)等常用组件,算是给做数字IC开了道门缝,门后的世界更精彩(指天天敲代码)。模集在模电的基础上拓展了MOS的玩法,另外用随机信号的知识做了一些比较完善的噪声分析,电路方面最开始是电流镜,差分对等基本组件,经典两级密勒补偿放大器之后,就开始讲各种放大器trick,套筒,自举,折叠等等,之后是基准源,开关电容,ADC等电路,这些东西单独拆出来都可以作为一门课,并且目前依然是学术界的研究对象,模集也就提供一些经典例子作为入门。我的感受是模集的入门比数集难很多,并不是会连电路,跑仿真,画版图就over了,方法学上更加复杂(结构上面往往就有很多做文章的空间,即使结构定了,确定参数依然是个多约束条件下的非线性优化问题,虽然有gm/Id法等方法论,实际做的时候还是会碰到一些烦人的trade-off问题),时至今日我也依然不知道自己是否真的踏进那扇门了,也许得等到有朝一日自己真的做一次模拟IC的流片才能有所领悟吧。射集不仅是模集plus,研究把模集那套东西搬到高频段后遇到的一些新问题,也有自己的独特问题,包括需要通信原理知识的一些调制解调原理(收发机架构),通信电路讲过的那些模块的集成电路版本,进行射频放大器设计时讨论匹配问题,以及天线需要微波的知识。
信号类
数字信号处理核心是讨论信号与系统在离散域下的情况,所以采样定理,Z变换等基本概念是共用的,还会FFT这一重要的快速算法,以及FIR、IIR滤波器设计等。这些数学工具是可以直接指导在数字系统上面搭建信号处理电路的,非常实用。随机信号处理很难学,但是提供了随机信号的数学模型和谱分析方法,这些非常关键的数学工具,做模集和通信是绕不开的。自动控制原理,和控制类专业相比,我们只讲完了经典(SISO)的情况,用传递函数来做稳定性分析,以及如何调节一个系统的增益裕度,相位裕度等,PID控制器甚至还是做比赛时自学的,状态空间法开了个头,就没有往下深挖了,但就我目前体验来说,这套工具已经够满足需求了。
通信类
数字通信原理,挺有趣的一门课,也有可能是因为当时讲这门课的老师讲的比较精彩。过了一遍信息论,编码,模拟调制等前置知识,后续讨论了数字调制解调方法(ASK,FSK,PSK) ,匹配滤波,最佳接收等理论。目前实际上也没有多少模拟通信系统在用了,做射频的基本上都会用到数字通信原理的知识。通信网理论,指导通信网搭建,讲了很多排队论,网络拓扑的东西,当时给我的印象是一个很抽象但是和其他学科又没有多少结合的东西,直到学计算机网络才把这边的东西捡起来了一点,可能是因为我并不专门做这块吧。
微波类
天线理论与技术,一门没学明白的课,在微波工程和电磁场理论的基础上讨论了一些经典天线的设计(喇叭天线,八木天线,透镜天线,微带天线等等),最后拿HFSS做了做仿真就草草了事,但其实做的时候就明白自己底子不扎实了,并不能很好的理解参数的作用,只是为了凑指标使劲调参数一遍遍的试。只能说这个方向对于电磁学的理解要求很高,我还是下的功夫不够。
计算机类
计算机体系结构,除了计算机原理包含的一些内容,还重点讲了CPU设计的各种技术,包括但不限于指令集,动态流水线,多发射,转移猜测,Cache,存储管理(TLB)等,我非常喜欢的一门课,很酷。高性能计算系统,讨论了并行计算技术,用到了一些数值计算的理论,然后就主要是MPI的编程模型了。计算机网络,很杂的一门课,大框架是ISO七层协议,具体到每一层都是不同的学科和方法论,做路由器,做数据中心,做应用,做安全.......不同方向的人着眼点不同。嵌入式系统原理,基本上是对着ARM重新讲了一遍计算机原理,稍微贴近实践一些,但我的建议是不如好好玩玩单片机。操作系统原理,同样是我很喜欢的课,进程、线程,调度,进程同步,死锁,虚拟内存,文件系统等,得要和计算机原理,计算机体系结构配合做理解。
算法类
数字图像处理,讨论图像变换,图像表征,图像压缩,图像恢复,图像增强,图像处理等一系列任务,被深度学习技术颠覆的很厉害的学科,传统方法环节很多,数学上也很复杂,但最后被深度学习模型end-to-end的解决掉了,指标上还更好,可以说CV是AI重灾区了(笑。自然语言处理同理,经典方法很多很复杂,马尔科夫链描述的语言模型,词法分析,句法分析,语义分析,环节多,数学难,结果被深度学习一力降十会了,NLP和CV并列AI重灾区,学的时候就感觉前面教的经典方法和后面教的深度学习范式两者几乎不在一个层面。强化学习及应用,与前两者相比并未被深度学习完全颠覆,大的理论框架依然是马尔科夫决策过程,深度学习技术在这里主要是当作价值函数和策略函数的拟合手段在用,尽管有AlphoGo之类的重量级demo,这门学科发展相对于前两者感觉还是缓慢一些。我对AI有着复杂的看法,但不可否认它是驱动这近10年以来科学界的一个主要推动力量,人们热衷于把其范式应用到各类问题中,并且也确实产生了一些奇妙的化学反应,身处时代潮流中,我没办法做到给它一个高度的历史性评价,何况自己也在做相关的东西,我们姑且拭目以待吧。
微电子类
微电子器件,在半导体物理出发去上去讲了模拟电路中会使用的基本元件——二极管,BJT,MOS的电学特性,一门有趣的桥梁性课程。半导体工艺,比较杂的一门课,讲了很多制造中的工艺步骤和理论,光刻,扩散,氧化,刻蚀,离子注入等,对我来说主要是拓展知识面。
总结
EE本身涉及的面很广,但是从系统工程的角度来看,对于串行环节来讲,效率也好,稳定性也好,本身是一个乘算的关系。所以某个环节拉跨了最后整个系统也不行,这个环节就成了瓶颈。最后聊聊我的学科观:我们讨论出身科班与否,其实就是在看一个人知识结构的系统性。尽管在某个子方向上去深挖,并不需要广阔的视野,甚至最后变成了一些经验性的工程问题,但如果我们想要往高的层次去走就得重视学科知识。知识是可以改造一个人的世界观,认知方法,思考模式的,即使具体的公式和知识点有的记不得了,这5年的学习也给我打下了很深的烙印。
最后,我归纳的知识树如下,各个学科的关联见上面的文字部分,图里就不拉箭头了,太难看:

我对EE学科知识体系的一点理解的更多相关文章
- [软件工程/数据工程] 软件工程&数据工程知识体系
1 概述 本篇是为了重新总结.重新编写5年前(2018-12-31 00:06),临近毕业时的一篇文章软件工程专业知识体系[求职/就业]而作,至此篇文章发布时,原文文章应已被删除.但第1章节中仍会存在 ...
- PureStudy:学科知识分享——个人网站开发全解
PureStudy:学科知识分享--个人网站开发全解 项目描述 PureStudy,学科知识分享网站. 学生可以使用这个网站,来浏览相应学科的知识点.学习总结,获取相关的资料.此外,他们可以选择上传文 ...
- DAMA数据管理知识体系指南-V1
注:只摘抄了部分个人认为需要记录的笔记,如果想完整了解请看原文 中文版序 数据管理是把业务和信息技术融合起来所必须的一整套技术.方法及相应的管理和治理过程. 它的特殊定位决定了它涉及的知识体系面广且度 ...
- 一个优秀windows C++程序员的知识体系[转]
转自:一个优秀windows C++程序员的知识体系 思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的 ...
- Web前端知识体系精简
Web前端技术由html.css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知 ...
- 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. ...
- android项目架构 -----Android 知识体系与常用第三方框架
好东西值得分享 ,这是网络上总结的一些开源的东西直接就拿过来了 .... Android通用流行框架大全 先把这张图放在这 ,先来谈一谈项目结构 .我喜欢将东西按模块来划分: 都知道module . ...
- JVM核心知识体系(转http://www.cnblogs.com/wxdlut/p/10670871.html)
1.问题 1.如何理解类文件结构布局? 2.如何应用类加载器的工作原理进行将应用辗转腾挪? 3.热部署与热替换有何区别,如何隔离类冲突? 4.JVM如何管理内存,有何内存淘汰机制? 5.JVM执行引擎 ...
- javaee, javaweb和javase的区别以及各自的知识体系
javaee, javaweb和javase的区别以及各自的知识体系 来源 https://blog.csdn.net/weixin_39297312/article/details/79454642 ...
- Web前端知识体系
看到一篇不错的文章,拿来收藏和分享. 原文:http://mp.weixin.qq.com/s/UFTfdE7LYhHquWEzwZKLCQ Web前端技术由html.css和 javascript三 ...
随机推荐
- linux 终端词典
不知道为什么我的电脑是 Ubuntu 16.04 的安装有道词典就是安装不上,古董版本你的 终端词典的安装参考了其他地方的文章 owl 首先这里所说的字典是工具书类的字典,是翻译工具 其次这里的字典是 ...
- CC BY-SA 4.0 是什么?--九五小庞
CC BY-SA 4.0 是一种许可协议,最近改版的CSDN在公开博客中推出了该协议. 该协议的赋予遵守者两项重要权利: 一.共享的权利.允许通过任何媒介和任何形式复制.发行作品.二.改编的权利.允许 ...
- c# 字典键值排序
此种排序将按照字典键值ASCII码进行排序 //字典键值排序 var sortDic = dic.OrderBy(x => x.Key).ToDictionary(x=>x.Key,x=& ...
- linux 搭建gitlab git仓库迁移
gitlab搭建 https://www.cnblogs.com/yanjieli/p/10605381.html 注意里面会进入vim修改配置文件,修改好后,按Esc 输入 :wq 保存并退出 ...
- 第一个程序HelloWorld
HelloWorld 首先要创建一个文件夹存放代码,最好是英文名称. 新建一个java文件. 文件创建后,注意后缀名为.java HelloWorld.java 注意:系统是默认隐藏文件的后缀名的,我 ...
- CVE-2016-3088 (ActiveMQ任意文件写入漏洞) 复现
本文采用写入webshell的方式复现 终端进入CVE-2016-3088目录 touch shell.jsp创建测试文件往里写入: 保存退出 访问 http://your-ip:8161/admin ...
- go学习笔记-报错记录及解决方法
问题1: go install golang.org/x/tools/gopls@latest 失败 解决方法:执行go env -w GOPROXY=https://goproxy.cn,direc ...
- 调试 mouseover 才显示的元素
temp1.dispatchEvent( new MouseEvent('mouseover', { view: window, bubbles: true, cancelable: true, }) ...
- form表单属性补充
form表单属性补充 1.form表单功能 表单用于向服务器传输数据,从而实现用户与Web服务器的交互 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含te ...
- MyEMS能源管理系统后台配置-空间管理
MyEMS开源能源管理系统适用于建筑.工厂.商场.医院.园区的电.水.气等能源数据采集.分析.报表,还有光伏.储能.充电桩.微电网.设备控制.故障诊断.工单管理.人工智能优化等可选功能. 本文介绍My ...