『壹』 成为一名软件工程师要学哪些课程
中国计算机软件设计师考试大纲
一、考试说明
1.考试要求:
(1) 掌握数据表示、算术和逻辑运算;
(2) 掌握相关的应用数学、离散数学的基础知识;
(3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理;
(4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;
(5) 熟练掌握常用数据结构和常用算法;
(6) 熟悉数据库、网络和多媒体的基础知识;
(7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言;
(8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;
(9) 熟悉掌握软件设计的方法和技术;
(10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;
(11) 了解信息化、计算机应用的基础知识;
(12) 正确阅读和理解计算机领域的英文资料。
2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。
3.本考试设置的科目包括:
(1) 计算机与软件工程知识,考试时间为150分钟,笔试;
(2) 软件设计,考试时间为150分钟,笔试。
二、考试范围
考试科目1:计算机与软件工程知识
1.计算机科学基础
1.1 数制及其转换
· 二进制、十进制和十六进制等常用制数制及其相互转换
1.2 数据的表示
· 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)
· 非数值表示(字符和汉字表示、声音表示、图像表示)
· 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)
1.3 算术运算和逻辑运算
· 计算机中的二进制数运算方法
· 逻辑代数的基本运算和逻辑表达式的化简
1.4 数学基础知识
· 命题逻辑、谓词逻辑、形式逻辑的基础知识
· 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)
· 排列组合、概率论应用、应用统计(数据的统计分析)
· 运算基本方法(预测与决策、线性规划、网络图、模拟)
1.5 常用数据结构
· 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作
· Hash(存储地址计算,冲突处理)
1.6 常用算法
· 排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法
· 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性
2.计算机系统知识
2.1 硬件知识
2.1.1 计算机系统的组成、体系结构分类及特性
· CPU和存储器的组成、性能和基本工作原理
· 常用I/O设备、通信设备的性能,以及基本工作原理
· I/O接口的功能、类型和特性
· I/O控制方式(中断系统、DMA、I/O处理机方式)
· CISC/RISC,流水线操作,多处理机,并行处理
2.1.2 存储系统
· 主存-Cache存储系统的工作原理
· 虚拟存储器基本工作原理,多级存储体系的性能价格
· RAID类型和特性
2.1.3 安全性、可靠性与系统性能评测基础知识
· 诊断与容错
· 系统可靠性分析评价
· 计算机系统性能评测方式
2.2 软件知识
2.2.1 操作系统知识
· 操作系统的内核(中断控制)、进程、线程概念
· 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)
· 存储管理(主存保护、动态连接分配、分段、分页、虚存)
· 设备管理(I/O控制、假脱机)
· 文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)
· 作业管理(作业调度、作业控制语言(JCL)、多道程序设计)
· 汉字处理,多媒体处理,人机界面
· 网络操作系统和嵌入式操作系统基础知识
· 操作系统的配置
2.2.2 程序设计语言和语言处理程序的知识
· 汇编、编译、解释系统的基础知识和基本工作原理
· 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用
· 各类程序设计语言主要特点和适用情况
2.3 计算机网络知识
· 网络体系结构(网络拓扑、OSI/RM、基本的网络协议)
· 传输介质、传输技术、传输方法、传输控制
· 常用网络设备和各类通信设备
· Client/Server结构、Browser/Server结构
· LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接
· 因特网基础知识以及应用
· 网络软件
· 网络管理
· 网络性能分析
2.4 数据库知识
· 数据库管理系统的功能和特征
· 数据库模型(概念模式、外模式、内模式)
· 数据模型,ER图,第一范式、第二范式、第三范式
· 数据操作(集合运算和关系运算)
· 数据库语言(SQL)
· 数据库的控制功能(并发控制、恢复、安全性、完整性)
· 数据仓库和分布式数据库基础知识
2.5 多媒体知识
· 多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式
· 简单图形的绘制,图像文件的处理方法
· 音频和视频信息的应用
· 多媒体应用开发过程
2.6 系统性能知识
· 性能指标(响应时间、吞吐量、周转时间)和性能设计
· 性能测试和性能评估
· 可靠性指标及计算、可靠性设计
· 可靠性测试和可靠性评估
2.7 计算机应用基础知识
·信息管理、数据处理、辅助设计、自动控制、科学计算、人工智能等基础知识
· 远程通信服务基础知识
· 常用应用系统
3.系统开发和运行知识
3.1 软件工程、软件过程改进和软件开发项目管理知识
· 软件工程知识
· 软件开发生命周期各阶段的目标和任务
· 软件开发项目管理基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具
· 主要的软件开发方法(生命周期法、原型法、面向对象法、CASE)
· 软件开发工具与环境知识
· 软件过程改进知识
· 软件质量管理知识
· 软件开发过程评估、软件能力成熟评估基础知识
3.2 系统分析基础知识
· 系统分析的目的和任务
·结构化分析方法(数据流图(DFD)、数据字典(DD)、实体关系图(ERD)、描述加工处理的结构化语言)
· 统一建模语言(UML)
· 系统规格说明书
3.3 系统设计知识
· 系统设计的目的和任务
· 结构化设计方法和工具(系统流程图、HIPO图、控制流程图)
· 系统总体结构设计(总体布局、设计原则、模块结构设计、数据存储设计、系统配置方案)
· 系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)
· 系统设计说明书
3.4 系统实施知识
· 系统实施的主要任务
· 结构化程序设计、面向对象程序设计、可视化程序设计
· 程序设计风格
· 程序设计语言的选择
· 系统测试的目的、类型,系统测试方法(黑盒测试、白盒测试、灰盒测试)
· 测试设计和管理(错误曲线、错误排除、收敛、注入故障、测试用例设计、系统测试报告)
· 系统转换基础知识
3.5 系统运行和维护知识
· 系统运行管理基础知识
· 系统维护基础知识
· 系统评价基础知识
3.6 面向对象开发方法
· 面向对象开发概念(类、对象、属性、封装性、继承性、多态性、对象之间的引用)
· 面向对象开发方法的优越性以及有效领域
· 面向对象设计方法(体系结构、类的设计、用户接口设计)
· 面向对象实现方法(选择程序设计语言、类的实现、方法的实现、用户接口的实现、准备测试数据)
· 面向对象程序设计语言(如C++、Java、Visual、Bsasic、Visual C++)的基本机制
· 面向对象数据库、分布式对象的概念
4.安全性知识
· 安全性基本概念
· 防治计算机病毒、防范计算机犯罪
· 存取控制、防闯入、安全管理措施
· 加密与解密机制
·风险分析、风险类型、抗风险措施和内部控制
5.标准化知识
· 标准化意识、标准化的发展、标准制订过程
· 国际标准、国家标准、行业标准、企业标准基本知识
· 代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识
· 标准化机构
6.信息化基础知识
· 信息化意识
· 全球信息化趋势、国家信息化战略、企业信息化战略和策略
· 有关的法律、法规
· 远程教育、电子商务、电子政务等基础知识
· 企业信息资源管理基础知识
7.计算机专业英语
· 掌握计算机技术的基本词汇
· 能正确阅读和理解计算机领域的英文资料
考试科目2:软件设计
1.外部设计
1.1 理解系统需求说明
1.2 系统开发的准备
· 选择开发方法、准备开发环境、制订开发计划
1.3 设计系统功能
· 选择系统结构,设计各子系统的功能和接口,设计安全性策略、需求和实现方法,制订详细的工作流和数据流
1.4 设计数据模型
· 设计ER模型、数据模型
1.5 编写外部设计文档
· 系统配置图、各子系统关系图、系统流程图、系统功能说明书、输入输出规格说明、数据规格说明、用户手册框架
· 设计系统测试要求
1.6 设计评审
2.内部设计
2.1 设计软件结构
·按构件分解,确定构件功能规格以及构件之间的接口
· 采用中间件和工具
2.2 设计输入输出
· 屏幕界面设计、设计输入输出检查方法和检查信息
> 2.3 设计物理数据
· 分析数据特性,确定逻辑数据组织方式、存储介质,设计记录格式和处理方式
· 将逻辑数据结构换成物理数据结构,计算容量,进行优化
2.4 构件的创建和重用
· 创建、重用构件的概念
· 使用子程序库或类库
2.5 编写内部设计文档
· 构件划分图、构件间的接口、构件处理说明、屏幕设计文档、报表设计文档、文件设计文档、数据库设计文档
2.6 设计评审
3.程序设计
3.1 模块划分(原则、方法、标准)
3.2 编写程序设计文档
· 模块规格说明书(功能和接口说明、程序处理逻辑的描述、输入输出数据格式的描述)
· 测试要求说明书(测试类型和目标、测试用例、测试方法)
3.3 程序设计评审
4.系统实施
4.1 配置计算机系统及其环境
4.2 选择合适的程序设计语言
4.3 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中任一种程序设计语言,以便能指导程序员进行编程和测试,并进行必要的优化
4.4 系统测试
· 指导程序员进行模块测试,并进行验收
· 准备系统集成测试环境和测试工具
· 准备测试数据
· 写出测试报告
5.软件工程
· 软件生存期模型(瀑布模型、螺旋模型、喷泉模型)和软件成本模型
· 定义软件需求(系统化的目标、配置、功能、性能和约束)
· 描述软件需求的方法(功能层次模型、数据流模型、控制流模型、面向数据的模型、面向对象的模型等)
· 定义软件需求的方法(结构化分析方法、面向对象分析方法)
· 软件设计(分析与集成、逐步求精、抽象、信息隐蔽)
· 软件设计方法(结构化设计方法、Jackson方法、Warnier方法、面向对象设计方法)
· 程序设计(结构化程序设计、面向对象程序设计)
· 软件测试的原则与方法
· 软件质量(软件质量特性、软件质量控制)
· 软件过程评估基本方法、软件能力成熟度评估基本方法
· 软件开发环境和开发工具(分析工具、设计工具、编程工具、测试工具、维护工具、CASE)
· 软件工程发展趋势(面向构件,统一建模语言(UML))
· 软件过程改进模型和方法
『贰』 如果想当一个软件工程师要学习什么
1、计算机硬件原理:了解硬件怎么工作,知道软件是怎样在硬件上工作的,CPU架构,指令,怎么做运算,内存如何工作,内容地址是怎么回事,硬盘如何存储,数据和指令如何通过电路和元器件转化成电流和脉冲,可能需要数据电路的原理。无论从事计算机哪方面,比如网络、软硬件,这个原理都必须精通。因为计算机技术是很抽象的,但是在现实和具象上是依赖硬件。
2、操作系统原理:在了解了硬件原理后,了解操作系统是怎么工作的。因为所有的软件都是基于操作系统的,而操作系统本身也是一个软件。这些结合硬件来理解,就更容易了。
3、编译原理:了解软件从源文件到目标文件,到执行的全过程。如果有必要,其中的东西也要专门买书去研究。这样代码上不容易犯错误。了解了硬件原理和操作系统原理的基础上,了解编译原理也就比较简单。当然每种语言编译过程都不一样,但是原理都是基本相同。
4、数据结构和算法分析:好的算法,事半功倍,此外可能还要补一些高中数学、高等数学的知识。
以上每部分,都要至少1-2个月或者150个小时以上的钻研,要做到基本掌握。如果不掌握以上部分,不是说学不了软件,但是如果想学精通,想比一般人强,是不可能的,因为你只知道怎么做,但是为什么这样做不清楚,就是死记硬背了,反反复复的记忆效率也很差。
有时候很多独立的软件开发的工具书,没有讲的那么细致,只是告诉你如何做,但是不会告诉你为什么这样做,另外一些好的方法也无法告诉你,因为都需要从基础的硬件电路电流原理来介绍,如果从原理上说,那会说的没完没了。
大约半年甚至1年后,此时你所有软件开发需要掌握的基础知识,都比较明白了。再开始研究程序开发,就会觉得开发很简单,事半功倍。因为你已经从原理上理解了,软件是怎么工作的。所以也知道软件开发的学习周期至少在1年以上。 达到能够开发中型软件,至少也要1年半,而且这个时间还是每天都在钻研的时间。
『叁』 软件工程师要学习什么课程
想成为软件设计师你要看的书包括:
1:数据结构 目前清华大学严蔚敏老师的数据结构是一个经典.可能的话,再搜罗其他版本的教程,这样可以互相印证.
2:操作系统(第三版),主要从资源管理的角度来分析系统功能的实现。假设你要设计一个新的操作系统,如何实现它?操作系统理论就是向读者逐步介绍和解释。重点是五大管理职能的实现及其原理。
3:计算机网络(第三版),要学习ISO/OSIRM七层的划分以及各种协议的功能。传输理论、互联设备、Internet知识,和参考模型理论.
4:计算机专业英语,不是软件考试特有的,是专业知识+英语水平,考前不需专业准备,平时有意识地上网读点英文专业资料.
5:软件工程(第二版) 要熟悉数据流图和流程图
6:数据库理论.这要求熟悉SQL的语言.
7:C语言或者VB语言应该掌握
最后要学习统一建模语言UML,它代表了软件工程的发展趋势,目前是可视化建模的事实上的工业标准。
计算机学习要经历一个从理论———实践———理论的认识不断深化的过程,这一过程是非常艰辛的.但是要相信“天道酬勤”的道理,你最终会成为一名优秀的软件设计师的~~祝你成功
第一阶段课程内容 序号 课程名称 主要内容 参考资料 课时 ① 编成基础 计算机硬件,软件简介,可视化编成 20课时 ② Java基础 面向对象编程,JAVA开发环境,JAVA语法,异常处理,集合框架,数据结构,I/O输入输出流,JDBC,线程,jdk新特性。 Java就业培训教程.pdf 80课时 ③ XHTML HTML4.0 XHTML1.0 HTML完全手册.chm 20课时 ④ Javascript+css 客户端脚本语言 jscript中文参考手册.chm css2.0.chm 20课时 开发工具 MYECLIPSE插件,TOMCAT,ANT, Websphere, resin ⑤ JSP动态网站 servlet ,JSP运行原理,JSP语法,HTTP协议,JSP内置对象,COOKIE,JDBC。案例:(购物车,聊天室程序,通讯录,留言板)。 80课时 ⑥ JSTL标签库 JSTL标签库,自定义标签库。 20课时 ⑦ B/S软件架构 JSP+Servlet+JavaBean+JDBC(MVC架构) 20课时 ⑧ 数据库原理 数据库系统简介,数据库原理 数据库操作,sql语句,范式,关系,约束,存储过程,触发器,事务。 20课时 ⑨ 软件工程( 组件化) 软件需求分析,软件数据建模,软件架构设计,软件开发规范,原形+迭代开发模式,软件架构分析。 20课时 10 项目实践 常用组件详细讲解,上传文件组件,分页组件,主键生成组件,权限处理,考试管理系统,小型论坛,网上书店管理,等电子商务系统。 20课时 软件工程概论 简介, 开发模式,CMMI 12课时 项目管理 项目计划(项目的整体时间,人员安排,阶段性工作内容),任务跟踪。 需求分析 需求管理与配置管理:需求调研,分析,系统范围配置标识,版本控制,配置审核(VSS,CVS),实际项目需求数据建模PowerDesigner 业务建模rose2007(类的关系)。拓展:svn 40课时 软件测试概论 1.测试基础(概述,角色,测试所需条件) 2.测试目的以及原则 3.测试分类 4.测试方法 5.静态白盒测试,静态黑盒测试,动态白盒测试,动态黑盒测试 6.测试计划,测试用例 7.需求评审 8.原型评审,设计评审 9.实际项目需求评审 10. bug管理工具 28课时 Web2.0 Flex(语法,控件应用,远程方法访问) AJAX。拓展:dwr深层研究 40课时 原型开发 原型设计规范 软件设计 数据库设计 概要设计 架构设计 详细设计 设计评审 面向对象设计 20课时 XML 扩展的标记语言,XML, XSLT,DTD,SAX,DOM, JDOM等解析 20课时 STRUTS2 过滤器,Struts1,Struts2高级部分(标签库,验证框架,拦截器,源码分析,连接池,国际化,插件安装),AOP基础,JNDI。拓展:JSF, Tapestry,velocity 40课时 Spring IOC,JDBC,MVC,AOP,事务。 hibernate 数据持久化。拓展:EJB3.0, ibatis,搜索功能lucene webservice Soap协议,分布式。拓展:JMS Oracle数据库 大型数据库开发。拓展:DB2 20课时 软件测试 单元测试 集成测试 系统测试 验收测试 60课时 毕业答辩 演讲能力,面试技巧,面试题,答辩 20课时 以上是学成软件工程师的课程体系。
『肆』 Java软件工程师一般要学习哪些课程
java SE:jdk基础类库
java EE:java企业级应用开发框架(spring框架,spring boot框架)
主流中间件:redis、mq。。。
学有余力:数据结构与算法、设计模式
『伍』 学软件工程师从低到高都要学哪些课程,急
1、软件工程师主要是你对程序的理解能力,你学计算机维修出身还是选择网络比较容易入门一点。 2、这种属于人事考试,连培训加考试你起码要有三千块钱的准备(这还不一定够)。 3、软件工程师比网络工程师的就业范围略窄,网络工程师在任何涉及到IT的东西都能用的到。 4、 [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手! [2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师! [3]不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此! [4]多交社会三教九流的朋友!不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低! [5]知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!! [6]抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉!应该说这才是前途的真正支柱!!! [7]逐渐克服自己的心里弱点和性格缺陷!多疑,敏感,天真(贬义,并不可爱),犹豫不决,胆怯,多虑,脸皮太薄,心不够黑,教条式思维。。。这些工程师普遍存在的性格弱点必须改变!很难吗?只在床上想一想当然不可能,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想!不克服这些缺点,一切不可能,甚至连项目经理都当不好--尽管你可能技术不错!
『陆』 Java软件工程师主要学习哪些课程
1.软件技术基础、java基础编程、java语法,SQL Server 2005基础编程...2.SQL server 高级编程、网页设计与制作、javascrit编程、java高级编程...3.数据库:MySql、Oracle、DB2;4.JDBC Java数据库连接。使用Java程序操作数据库。这部分非常重要。几乎所有的企业...5.HTML、CSS、Java scrit。 HTML-(Hyer Text Mark-u ...
『柒』 软件工程师要自学,有哪些课程
没事 ,不做底层的开发的话 .这些其实不是非常重要. 建议去做web开发. 不用英语和数学要多好 .学习的话, 先学java基础. 在学一些 网页制作(jsp,javascript)
『捌』 软件工程师需要学习哪些课程
计算机导论
内容提要:为新学生提供一个关于计算机科学与技术学科的入门介绍,使他们对该学科有一个整体的认识,并了解该专业的学生应具有的基本知识和技能以及在该领域工作应有的职业道德与应遵守的法律准则。
数字电路与数字逻辑
内容提要:介绍数字逻辑与数字系统的基本概念、分析方法和设计原理,包括开关理论基础、组合逻辑、时序逻辑、可编程逻辑器件、数字系统等。
计算机组成原理与汇编语言
内容提要:以冯诺依曼计算机模型为出发点,介绍计算机的组织结构和工作原理,剖析计算机的运算器、存储器、控制器和输入输出设备的结构、工作原理和相互关系;介绍 80X86指令系统、汇编语言与汇编指令、汇编程序与汇编过程、简单汇编程序设计、汇编语言与高级语言的接口、宏汇编等。
计算机网络
内容提要:介绍数据通信的基本概念和计算机网络的基本原理,包括计算机网络的体系结构、数据通信的基本方法和协议、计算机网络的主要应用协议;同时介绍计算机网络系统的安全和管理知识,使学生对数据通信和计算机网络有一个全面理解。
计算机体系结构
内容提要:研究计算机系统结构的基本概念、基本原理、基本结构和基本分析方法,使同学在具有一定的软硬件知识基础上能综合认识计算机系统的软硬件功能分配与各种不同结构类型机器的特性和性能评价方法。为研究、开发、应用高级计算机系统打下基础。确立全面、系统的观点和学会定量分析问题的方法。
离散数学
内容提要:包括集合论、数理逻辑、图论、组合数学等内容,形式化的数学证明贯穿此课程。
高级程序设计语言
内容提要:分别以 C、C#或JAVA为例,介绍程序设计和语言,程序的基本数据结构、类型定义、简单类型和结构化类型、程序的基本控制结构、结构化程序设计、面向对象的程序设计等。
算法分析与设计
内容提要: 本课程延续数据结构课程的学习,从算法分析和设计的角度出发,除去传统的分类查找算法和一般的设计方法外,主要内容包括如下几个部分:算法研究的理论基础,递归分析技术,基本算法设计策略(几类经典算法学习), 多项式运算与 FFT ,串匹配,概率分析算法。 希望通过这一课程的学习,使学生能对现代的算法设计及分析的基本工具能有较全面的掌握。
数据结构
内容提要:介绍线性表及其链接存储结构与算法、数组与矩阵、堆栈与队列、广义表的存储结构与多元多项式表示、串与文本编辑、排序、树、图、文件结构。
数据库系统原理
内容提要:介绍数据库系统的基本概念、原理、方法及应用,主要包括数据库系统概论、数据库管理系统实现技术、数据库存储结构及其他类型的数据库系统。
编译技术
内容提要:介绍编译原理的理论和实践,包括编译程序设计、词法分析、语法分析、符号表、声明和存储管理、代码生成以及优化技术。
操作系统
内容提要:介绍操作系统的设计与实现,包括操作系统各组成部分的概述、互斥性和同步性、处理器实现、调度算法、存储算法、设备管理和文件系统。
『玖』 软件工程要学什么课程!
不要把时间浪费在所谓的大学课程上,很多都是没有营养的。其实软件工程的知识体系也就是那样,各个大学也是照着这个思路编排课程的。所以,自学的时候直奔主题就可以了。
软件工程。包含两个部分:软件和工程。软件是程序员做的,而工程是项目负责人管理、程序员实践的。
软件又包含两部分:语法和算法。语法,即要掌握某种编程语言。一般来讲,要想工作中用的上,那么面向过程的语言和面向对象的语言都得掌握。一般学C、C++、Java、Dephi等等。面向过程的程序比较好学,条目也很清晰。而面向对象的编程需要学两方面的内容:语法本身和庞大的类库。算法,这是编程的灵魂。一般包括:数据结构和经典算法。学无止境,一般性的工作话,掌握基本的就够了,如果工作较复杂得多看看算法方面的期刊。
工程。现代软件越变越大,大型的编写工作动不动就涉及万人。工程的方法只是为了更好的组织、协调编写过程。《软件工程》本身就是一本书,很厚的。主要讲软件的生命周期,比较抽象和繁杂,但是规范的工作方式就是从这本书里来的。另外关注一些编程习惯的知识。这也是工程的一部分。
软件只是计算机科学中的一种。所以,比如计算机基础、计算机系统等等宏观的知识也需要理解。特别是对于高级程序员,计算机运行的底层知识就更重要了。操作系统、80x86以及汇编语言是底层知识中的一部分。
软件行业分工很多:网络编程、数据库编程、应用程序编程、游戏编程以及操作系统编程等(中国似乎还没有商业化的操作系统),研究任何一个都挺累人的。学习完上面的基础知识后,就需要给自己选一个专业方向了。
建议一个学习流程。如果你什么都没有学。
1】计算机基础知识。主要是硬件方面(大一水平)
2】同时,学习C语言,语法就够了
3】透彻的理解C++需要用C语言去编写一个图形化的应用程序,但是,似乎也有一些直接上手的C++教材。学习语法,简单的类库。(现在就是大二的水平)
4】数据结构,C++表述的。《数据结构》的书里面会有一些经典的算法的。
5】操作系统、80x86与汇编(大三水平,大四几乎没有几本书要念的。)
6】专业学习。一方面是专业上的知识,另一方面是类库在专业上的使用。(我想,应该可以工作了,大学里关于这方面的知识是很浅薄的,仅仅建立一个概念而已。但是要拿来谋生的话,就需要学多点了,前面所有的积淀都是为了这个目标的)
先学着,自己有体会后,就能确定自己应该学到什么程度。如果一切顺利的话,大概两年多一点就可以完成这个过程。