第22周
操作系统入门篇
本周开始接触并熟悉操作系统,了解操作系统的演进历史,了解操作系统的基本功能,了解操作系统并发、并行、虚拟性以及共享性等概念;了解操作系统进程管理、作业管理、文件管理、设备管理、存储管理的功能。
课程安排:
1、操作系统概览
2、进程管理之进程实体/五状态模型/进程同步
3、Linux的进程管理
4、作业管理之进程调度/死锁
5、存储管理之内存分配与回收
6、Linux的存储管理
7、存储管理之段页式存储管理
8、存储管理之虚拟内存
9、操作系统的文件管理
10、Linux文件的基本操作和文件系统
11、操作系统的设备管理
第23周
操作系统提升篇+操作系统实践
本周将首先学习在编程中常见的操作系统知识,包括进程通信、线程同步等的知识;然后再此基础上,完成综合的实践项目,进一步巩固操作系统的相关知识。
课程安排:
1、线程同步之互斥量/自旋锁/读写锁
2、线程同步之条件变量
3、使用fork系统调用创建进程
4、进程同步之共享内存/Unix域套接字
5、实践环节-实现线程安全的队列Queue
6、实践环节-编写测试用例
7、实践环节-抽象异步任务AsyncTask
8、实践环节-实现任务处理现场ProcessThread
9、实践环节-封装任务处理线程池ThreadPool
10、实践环节-异步任务执行测试
11、实践环节-异步任务结果的实现与测试
第24周
编译原理入门
本周串讲编译器的主要流程,介绍编译器和自然语言翻译的差异性,以及对编译原理的课程提供一个整体介绍。接着快速进入到动手coding部分,将采用先设计后实现逻辑,采用Java+Js双语式教学实现。
课程安排:
1、重点理解:编译器的主要流程
2、掌握:编译器的基本功能设计
3、了解:词法分析器基本原理
4、Coding:实现流的peek和putBack操作(Java+Js双语言实现)
5、掌握:词法相关理论和正则
6、Coding:词法分析器核心-有穷状态机的词语提取功能实现(Java+Js双语言实现)
第25周
编译原理中级
本周介绍语法分析的基本概念,如产生式、抽象语法树、递归向下方解析法等,并且在实战中帮助学员理解和处理更复杂的问题,如多级优先级表达式等。同时,向学员渗透跳跃结构——树和图的遍历算法以及相关理论知识。
课程安排:
1、 数据结构引导:树和抽象语法树
2、 Coding:定义抽象语法树(Java版+Js版)
3 、理解:最简表达式分析过程
4 、Coding:实现最简Parser(Java版+Js版)
5、 理解: TinyScript表达式解析:优先级和去左递归
6、 Coding:TinyScript表达式解析(Java版+Js版)
7、 Coding:树的后序遍历——表达式验证(Java版+Js版)
8、理解:语法分析的整体程序
9、Coding:语法分析整体程序(Java版+Js版)
10、拾遗——那些穿插在迭代中的重构
11、补课——大批递归来袭之应对
12、词法语法部分总结——领域驱动视角
第26周
编译原理高级
本章讲解语法树翻译的基本方法和理论、TinyScript编译成中间语言,涉及:如到符号表、作用域如何被实现?类型检查如何进行?重点渗透树、图、哈希表等关键数据结构,算法;终极目标是:完成编译器的实现。
课程安排:
1、 三地址代码相关知识
2、 构造三地址代码——基于SDD的翻译
3、词法作用域和符号表
4、Coding:实现符号表(Java+Js双语)
5、三地址代码的表示
6、Coding:三地址代码的表示(Java+Js双语)
7、Coding:翻译的整体过程和表达式(Java+Js双语)
8、翻译——作用域的处理
9、(编程 trans 04 java)翻译——作用域和整体程序(Java+Js双语)
10、冲刺——用虚拟机执行TinyScript程序
11、Coding:指令和程序表示
12、理解:生成器——将三地址代码转化成指令
13、Coding:指令翻译过程讲解
14、 Coding:补课——神奇的位运算
15、 Coding:虚拟机—— 指令的编码和解码
16、 Coding:虚拟机执行程序
17、 课程总结——如何做一个优秀的架构师