风也温柔

计算机科学知识库

java经典算法100例 计算机基础课程

  阶段一: Java从入门到进阶

  计算机导论与开发环境搭建

  本周是Java入门的第一步,学习Java语法规则,锻炼编程思维。学会环境搭建,掌握Java程序的执行流程,能够使用运算符和选择与循环结构进行编程。

  课程安排:1、计算机导论2、Java基本概念介绍3、和Mac下开发环境搭建4、数据类型、变量和常量的使用5、Java中多种运算符的应用6、选择结构的执行流程与应用

  Java语法之循环、数组与方法

  本周将继续学习语法基础,掌握循环结构、数组和方法的语法规则和应用,最后通过案例对所学知识进行综合应用。学完本周内容可以进行简单的程序逻辑开发。

  课程安排:1、基础语法综合案例——数组移位与统计2、while、do-while和for三种循环结构的使用3、嵌套循环的应用4、break和语句的特点及应用5、如何进行程序的调试,debug的使用6、一维数组和二维数组的应用7、Java自定义方法和方法调用

  面向对象之封装与继承

  面向对象是开发中非常重要的思想,在本周我们将学习到面向对象三大特征中的封装与继承,开始运用面向对象思想进行程序开发。

  课程安排:1、封装综合案例——学生信息管理2、类的定义和对象的创建3、理解构造方法的概念,并进行应用4、封装的特点,应用代码实现程序的封装5、包的创建和导入6、静态变量和静态方法的应用7、继承的概念和特点,父类和子类的概念及应用8、方法重写的特点及使用9、通过super关键字对父类方法进行调用

  面向对象之单例模式与多态

  本周将继续学习面向对象中重要的概念,并能够进行代码实现,学完后可以利用面向对象思想开发更复杂的应用。

  课程安排:1、所有类的父类类的使用2、使用final关键字定义最终类3、现阶段开发中涉及到的常用注解的使用4、单例模式的定义和使用5、懒汉模式和饿汉模式的特点及代码实现6、向上转型和向下转型的概念和应用7、接口和抽象类的定义和使用8、成员内部类、静态内部类、方法内部类和匿名内部类的应用

  异常、包装类、字符串与集合

  工具类是Java为我们提供的一些类,可以直接应用于程序开发中。学习工具类不但要学习常用工具类的使用,还要学会阅读工具类的文档,这是开发中非常重要的技能。

  课程安排:1、使用try-catch-处理异常2、理解throw和的区别,会使用自定义异常和异常链3、包装类的基本使用,理解装箱和拆箱的概念4、字符串处理类和的基本使用和应用场景5、集合List、Set、及实现类的特点和应用

  集合排序、泛型与多线程

  本周将继续学习常用工具类,应用集合排序、泛型和多线程解决问题。

  课程安排:1、使用和两个接口对集合进行排序2、泛型的使用,包括泛型作为方法参数、自定义泛型类和泛型方法3、线程的创建,理解线程的生命周期4、线程同步的使用和如何进行线程间通信

  输入输出流与播放器管理案例

  本周将继续学习常用工具类java经典算法100例,通过案例学习复杂业务逻辑的开发,同时实现增删改的功能,为后续课程内容的学习打下扎实的基础。

  课程安排:1、阶段综合案例——播放器管理2、使用字节流和字符流进行数据传输3、应用序列化和反序列化对对象进行读写

  阶段二: 数据库入门

  MySQL基础

  本周是数据库学习的第一步,能够理解数据库设计规范,并能够使用SQL语句进行表和数据的基本查询。

  课程安排:1、根据数据库规范设计数据库2、数据库的创建、表的创建和修改等操作3、数据表的增删改查等基本操作

  MySQL进阶

  掌握高级查询、数据的增删改查以及函数的SQL语法,通过案例掌握数据库的设计与应用。

  课程安排:1、数据库高级查询2、数据库的数字、日期时间、字符等常用函数使用3、事务的ACID属性和隔离级别4、SQL文件的导入和导出

  阶段三: 算法与数据结构基础

  线性查找法

  开课第一周,我们将学习最简单的算法:线性查找法。在学习这样一个最简单的算法的过程中,我们也将接触诸多概念:循环不变量,复杂度分析java经典算法100例 计算机基础课程,如何使用泛型让我们的算法更通用,以及简单的性能测试方式。

  课程安排:1、什么是算法2、为什么要学习算法和数据结构3、线性查找算法4、使用泛型让算法更通用5、自定义类测试算法6、循环不变量7、复杂度分析8、常见算法复杂度举例

  排序基础

  在这一周,我们将接触两个最基础的排序算法:选择排序法和插入排序法。虽然这两个排序算法很简单,但在这一周,我们将巩固我们之前学习的知识,将循环不变量的思路和复杂度分析应用在这些算法中。

  课程安排:1、选择排序法2、原地排序3、使用泛型约束4、 接口的使用5、插入排序法6、插入排序法的优化7、排序算法的测试数据生成8、排序算法的性能测试和比较

  数据结构基础:动态数组,栈和队列

  这一周java经典算法100例,我们开始接触最基础的数据结构:线性数据结构。这些数据结构看似简单,但是通过对他们的学习,会接触很多新的概念,包括对静态数组的扩容和缩容;均摊复杂度分析;数据结构的接口设计;循环队列,等等。

  课程安排:1、理解静态数组和动态数组2、如何封装属于自己的数据结构3、动态数组的扩容和缩容4、均摊复杂度分析5、数据结构的接口设计6、栈和栈的应用7、队列和队列的应用8、队列的优化:循环队列9、双端队列10、Java 语言中的设计问题讨论

  动态数据结构基础:链表

  在这一周,我们将接触最基础的动态数据结构:链表。在学习链表的过程中,我们将更深入透彻地理解程序设计中“引用”的概念,更会开始接触程序设计中最常用的一种逻辑搭建方式:递归

  课程安排:1、什么是链表2、链表的更删改查3、抽象数据接口4、使用链表实现栈和队列5、链表的性能问题6、链表天然的递归结构7、通过链表深入理解递归8、经典链表相关的面试问题

  归并排序法和快速排序法

  我们将学习两种高级排序算法:归并排序法和快速排序法。将看到更通用的递归算法的设计方法,归并排序法的优化,归并排序思想的实际应用,完成四个版本的快速排序算法,并看到算法对不同数据表现出的差异。

  课程安排:1、归并排序的算法思想2、归并过程3、复杂的递归算法运行机制解读4、归并排序法的复杂度分析5、归并排序法的优化6、自顶向下和自底向上7、使用归并排序法求逆序数对8、快速排序算法的基本思想9、随机化的快速排序算法10、二路快排和三路快排11、不同快速排序算法的性能比较12、快排的复杂度分析13、快排思想的实际应用

  二分查找法和二分搜索树

  本周我们将学一个看似基础但“变化多端”的算法:二分搜索法和第一个基础树结构:二分搜索树 ,还会接触两个最为常见的抽象数据类型:集合和映射。

  课程安排:1、二分搜索法的基本思想2、二分搜索的递归实现3、二分搜索的非递归实现4、刻理解程序设计中的边界问题5、二分搜索在浮点数据中的应用6、使用二分搜索解决寻界问题7、避免死循环8、二分搜索的模板9、使用二分搜索法的思路解决实际问题10、什么是树结构11、在数据结构中使用递归12、深度优先遍历和广度优先遍历14、 、抽象数据结构:集合和映射17、集合和映射的经典应用

  阶段四: 算法与数据结构进阶

  堆/优先队列/堆排序/冒泡排序和希尔排序

  我们将学习一个特殊的树结构:堆。学习后我们将看到数组也可以表示树结构。同时我们还会引出另外一种高级排序算法:堆排序。此外我们将再学习两个排序算法:冒泡排序和希尔排序法。

  课程安排:1、数组也可以表示树结构2、堆的基本操作3、Sift Up 和 Sift Down4、、堆排序和优先队列6、优先队列的应用7、广义队列8、冒泡排序的基本思想9、冒泡排序的优化10、希尔排序的基本思想11、希尔排序的优化12、什么是增量序列13、基于比较的排序算法总结14、稳定排序

  线段树/Trie/并查集/AVL和红黑树

  我们将学习三种应用在不同场合的树结构:线段树,Trie 和并查集和两种高级的二分搜索树结构:AVL 树和红黑树,此外我们还会学习一种树结构:2-3 树

  课程安排:1、线段树的基本操作2、区间查询问题3、Trie 树的基本操作4、使用 Trie 解决模式匹配问题5、并查集的基本原理6、不断优化六个版本的并查集7、并查集的应用8、什么是平衡树9、左旋转和右旋转10、AVL 树和2-3 树11、2-3 树和红黑树的等价性12、红黑树保持平衡的基本操作13、红黑树的添加操作实现14、二分搜索树,AVL 树和红黑树的性能对比15、词频统计应用16、使用真实数据测试不同底层封装的集合和映射结构

  哈希表和 SQRT 分解

  我们将首先学习哈希表这种重要的数据结构深入理解哈希的概念,并使用链地址法设计出属于我们自己的哈希表结构。同时将学习到分块这一概念并接触另外一个经典的使用分块的思想解决区间问题的数据结构:SQRT 分解

  课程安排:1、哈希的基本思想2、哈希函数的设计3、链地址法4、Java 中的哈希表5、分块思想6、SQRT 分解7、使用 SQRT 分解处理区间问题

  非比较排序

  在这一周,我们将看到:排序算法不一定基于比较,不进行元素的比较也可以对某类特殊的对象进行排序,即非比较排序算法。我们将学习计数排序法,桶排序法和基数排序法。

  课程安排:1、非比较排序2、计数排序法3、桶排序法4、基数排序法5、LSD 和 MSD6、非比较排序的性能测试7、非比较排序和比较排序的性能对比

  模式匹配

  我们将学习一类重要的算法:模式匹配。从基本的模式匹配出发,引出大名鼎鼎的 KMP 算法。对于 KMP 算法,我们会学习两种实现方式,并接触到计算机领域的一个重要的概念:状态机。

  课程安排:1.朴素模式匹配算法2.KMP 算法3.KMP 算法中的 LPS 数组4.状态机5.状态机的其他应用6.滚动哈希7.RK 算法8.RK 算法的经典问题

  随机算法,外存算法和更多

  最后一周,我们将看到更广阔的算法和数据结构的世界。将探索随机算法的世界,学习 Knuth 洗牌算法和蓄水池抽样算法。探索外存算法和数据结构的世界,学习 B 类树等,以及更多在外存中处理问题的方式和思想

  课程安排:1.随机算法2.Knuth 洗牌算法3.Knuth 洗牌算法的应用4.蓄水池抽样算法5.B 类树6.外排序7.更多外存算法和数据结构8.大规模数据处理方式9.更广阔的算法和数据结构

  阶段五: 操作系统与编译原理

  操作系统入门篇

  本周开始接触并熟悉操作系统,了解操作系统的演进历史,了解操作系统的基本功能,了解操作系统并发、并行、虚拟性以及共享性等概念;了解操作系统进程管理、作业管理、文件管理、设备管理、存储管理的功能。

  课程安排:1、操作系统概览2、进程管理之进程实体/五状态模型/进程同步3、Linux的进程管理4、作业管理之进程调度/死锁5、存储管理之内存分配与回收6、Linux的存储管理7、存储管理之段页式存储管理8、存储管理之虚拟内存9、操作系统的文件管理10、Linux文件的基本操作和文件系统11、操作系统的设备管理

  操作系统提升篇+操作系统实践

  本周将首先学习在编程中常见的操作系统知识,包括进程通信、线程同步等的知识;然后再此基础上,完成综合的实践项目,进一步巩固操作系统的相关知识。

  课程安排:1、线程同步之互斥量/自旋锁/读写锁2、线程同步之条件变量3、使用fork系统调用创建进程4、进程同步之共享内存/Unix域套接字5、实践环节-实现线程安全的队列、实践环节-编写测试用例7、实践环节-抽象异步任务、实践环节-实现任务处理现场、实践环节-封装任务处理线程池、实践环节-异步任务执行测试11、实践环节-异步任务结果的实现与测试

  编译原理入门

  本周串讲编译器的主要流程,介绍编译器和自然语言翻译的差异性,以及对编译原理的课程提供一个整体介绍。接着快速进入到动手部分,将采用先设计后实现逻辑,采用Java+Js双语式教学实现。

  课程安排:1、重点理解:编译器的主要流程2、掌握:编译器的基本功能设计3、了解:词法分析器基本原理4、:实现流的peek和操作(Java+Js双语言实现)5、掌握:词法相关理论和正则6、:词法分析器核心-有穷状态机的词语提取功能实现(Java+Js双语言实现)

  编译原理中级

  本周介绍语法分析的基本概念,如产生式、抽象语法树、递归向下方解析法等,并且在实战中帮助学员理解和处理更复杂的问题,如多级优先级表达式等。同时,向学员渗透跳跃结构——树和图的遍历算法以及相关理论知识。

  课程安排:1、 数据结构引导:树和抽象语法树2、 :定义抽象语法树(Java版+Js版)3 、理解:最简表达式分析过程4 、:实现最简(Java版+Js版)5、 理解: 表达式解析:优先级和去左递归6、 :表达式解析(Java版+Js版)7、 :树的后序遍历——表达式验证(Java版+Js版)8、理解:语法分析的整体程序9、:语法分析整体程序(Java版+Js版)10、拾遗——那些穿插在迭代中的重构11、补课——大批递归来袭之应对12、词法语法部分总结——领域驱动视角

  编译原理高级

  本章讲解语法树翻译的基本方法和理论、编译成中间语言,涉及:如到符号表、作用域如何被实现?类型检查如何进行?重点渗透树、图、哈希表等关键数据结构,算法;终极目标是:完成编译器的实现。

  课程安排:1、 三地址代码相关知识2、 构造三地址代码——基于SDD的翻译3、词法作用域和符号表4、:实现符号表(Java+Js双语)5、三地址代码的表示6、:三地址代码的表示(Java+Js双语)7、:翻译的整体过程和表达式(Java+Js双语)8、翻译——作用域的处理9、(编程 trans 04 java)翻译——作用域和整体程序(Java+Js双语)10、冲刺——用虚拟机执行程序11、:指令和程序表示12、理解:生成器——将三地址代码转化成指令13、:指令翻译过程讲解14、 :补课——神奇的位运算15、 :虚拟机—— 指令的编码和解码16、 :虚拟机执行程序17、 课程总结——如何做一个优秀的架构师

  阶段六: 计算机网络+组成原理+图形学

  计算机组成原理入门+组成篇

  c语言经典算法100例pdf_《java经典编程300例》_java经典算法100例

  本周开始接触并计算机组成原理,发展历史,计算机的分类,层次结构,能够对计算机体系有全面的认识;在此基础上,掌握计算机内部结构,深入冯诺依曼体系下的计算机组成,了解各个部分的工作原理及细节。

  课程安排:1、计算机的发展历史和分类2、计算机的体系与结构3、计算机的层次与编程语言/速度单位4、计算机的字符与编码集5、计算机的总线和输入输出设备6、计算机的存储器概览7、计算机的主存储器与辅助存储器8、计算机的高速缓存9、计算机的指令系统10、计算机的控制器11、计算机的运算器12、计算机指令的执行过程

  计算机组成原理计算篇+实践

  本周开始讲计算机内部运算的原理,二进制、原码、补码、反码,再了解计算机定点数、浮点数的运算原理,掌握计算机内部运算的细节;接着对计算机组成原理笔试常见知识点缓存置换算法进行加深理解的实践

  课程安排:1、进制运算的基础2、有符号数与无符号数3、二进制的补码和反码表示法4、小数的二进制补码表示法5、定点数的加减法运算6、浮点数的加减法运算和乘除法运算7、实践环节-实现双向链表的节点类8、实践环节-实现双向链表添加/删除节点9、实践环节-双向链表的功能测试10、实践环节-实现FIFO缓存置换算法11、实践环节-实现LRU缓存置换算法12、实践环节-实现LFU缓存置换算法

  计算机网络入门+网络层

  本周开始接触并计算机网络发展历史,了解计算网络的模型,现代互联网的网络结构,掌握物理层、数据链路层的基础知识;重点学习网络层的相关概念,包括IP地址、IP协议、路由算法、ICMP协议等知识点。

  课程安排:1、计算机网络层次设计的基本原则2、现代互联网的网络拓扑3、物理层/数据链路层讲解4、数据链路层的差错检测5、最大传输单元MTU6、以太网协议详解和IP协议的转发流程7、ARP协议与RARP协议8、IP地址的子网划分和网络地址转换NAT技术9、ICMP协议的应用10、内部网关路由协议之 RIP协议11、(迪杰斯特拉)算法12、内部网关路由协议之OSPF协议13、外部网关路由协议之BGP协议

  计算机网络传输层篇+应用层篇+实践

  本周继续学习计算机网络,按照有下到上的层次,掌握TCP协议的工作原理,应用层掌握HTTP协议、DNS服务等的原理;最后,设置抓包的编程实践,对网络不同协议的报文进行抓包和解包,了解报文结构,加深理解。

  课程安排:1、UDP协议详解、协议详解2、可靠传输的基本原理3、TCP协议的可靠传输、流量控制、拥塞控制4、TCP连接的三次握手和四次挥手5、DNS、DHCP和HTTP协议详解6、HTTP工作的结构和HTTPS协议详解7、实践环节-实现、实践环节-以太网报文和ARP报文的抓包和分析9、实践环节-IP报文的抓包和分析10、实践环节-ICMP报文的抓包和分析11、实践环节-UDP报文的抓包和分析12、实践环节-TCP报文的抓包和分析

  计算机图形学初级

  本周开启图形学的新世界,掌握计算机中如何表示图形的,包含:3d模型、世界描述、光照等图形学重要的内容。学习标准、生态以及写一个webgl的了解图形渲染管道的流程。

  课程安排:1、如何入门图形学2、图形学的基本概念和应用场景3、图形学历史概述4、向量的世界5、圆的世界6、向量的点乘和叉乘7、矩阵的乘法8、三角形网格9、渲染图形:从顶点到视区11、webgl入门与图形渲染管道12、传递数据给GLSL——管理13、 绘制3d图形——旋转的立方体14、2d变换和实战15、3d观察——投影和透视16、简单三维变换和模型的封装17、3D观察——眼睛和摄像头

  计算机图形学进阶

  学习为场景增加光照,以此来增加场景的真实感。重点理解图形学渲染核心算法:光线追踪算法,并带领同学通过实际编程解决问题去理解这个算法。最后实现一个3D类的射击游戏,帮助学员巩固和提高对图形学的理解。

  课程安排:1、学习GLSL2、为模型增加直线光源3、点光源4、制作手电筒效果6、游戏开发部分导学7、构造游戏地图——2.5D网格和基础架构8、为角色创建AI——Agent设计模式9、多个GLSL之间切换和、用户交互——选择3D模型11、多状态切换——战斗效果12、 图形学总结和后续学习建议

  文章来源:https://class.imooc.com/course/saveqa?mid=36281