跳转至

机器人实验室第一阶段培养计划

目标

  1. 熟练使用C/C++编写代码
  2. 算法/数据结构模块 - 1
  3. 熟练使用Linux指令以及Shell脚本

基础知识与编程环境

计算机基础

计算机的基本构成(CPU、内存、I/O设备等)
Windows、Linux等操作系统的基本概念及其常见操作
计算机网络和Internet的基本概念
计算机的历史和常见用途
位、字节与字
程序设计语言以及程序编译和运行的基本概念
使用图形界面新建、复制、删除、移动文件或目录
Windows系统下的集成开发环境(例如Dev C++、VSCode等)
使用Linux系统下的集成开发环境
GNU、Clang、MinGW软件集合中等常见编译器的基本使用

第一阶段大纲

Linux基础

Linux环境部署

Windows-WSL
虚拟机
双系统
Docker
云服务器

Linux概述

Linux历史
系统启动过程
Linux目录结构

Vim编辑器

Linux常用指令精学

文件管理
diff
diffstat
file
find
ln
locate
mv
od
paste
rm
split
tee
touch
whereis
which
cat
chgrp
chmod
chown
cksum
cmp
cp
cut
indent
磁盘管理
cd
df
dirs
du
equota
lndir
ls
mkdir
pwd
quota
quotacheck
quotaoff
quotaon
repquota
rmdir
stat
tree
umount
mount
系统管理
systemctl
adduser
chfn
chsh
date
exit
free
finger
groupdel
groupmod
halt
id
kill
last
login
logname
logout
newgrp
nice
ps
reboot
renice
who
clear
shutdown
su
sudo
top
htop
uname
useradd
userdel
userconf
usermod
w
whoami
whois
系统设置
文档编辑
col
colrm
comm
csplit
ed
egrep
fgrep
grep
fold
join
look
sed
sort
uniq
tr
wc
网络通讯
ssh
sshd
iptables
ufw
smbd
telnet
ifconfig
httpd
cu
dnsconf
nc
netstat
ping
talk
tcpdump
traceroute
tty
uuname
wall
write
arpwatch
apachectl
mail
备份压缩
ar
bzip2
bzip2recover
bunzip2
zip
unzip
zipinfo
tar
其他常用
性能调优
网络分析

Linux用户身份和文件权限

使用者和群组
Linux文件权限
文件种类以及扩展名

储存结构以及硬盘管理

Linux文件系统
文件系统的操作
磁盘分区/格式化/检验/挂载
swap分区

Shell脚本

Shell是什么
变量
条件
控制结构
Shell中的命令

C++程序设计

程序基本概念

标识符、关键字、常量、变量、字符串、表达式的概念
常量与变量的命名、定义及作用
头文件与名字空间的概念
编辑、编译、解释、调试的概念

基本数据类型

整数型:int、long long
实数型:float、double
字符型:char
布尔型:bool

程序基本语句

cin语句、scanf语句、cout语句、printf语句、赋值语句、复合语句
if语句、switch语句、多层条件语句
for语句、while语句、do while语句
多层循环语句

基本运算

算术运算:加、减、乘、除、整除、求余
关系运算:大于、大于等于、小于、小于等于、等于、不等于
逻辑运算:与(&&)、或(||)、非(!)
变量自增与自减运算
三目运算
位运算:与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)

数学库常用函数

绝对值函数、四舍五入函数、下取整函数、上取整函数、平方根函数、常用三角函数、对数函数、指数函数

结构化程序设计

顺序结构、分支结构和循环结构
自顶向下、逐步求精的模块化程序设计
流程图的概念及流程图描述

数组

数组与数组下标
数组的读入与输出
二维数组与多维数组

字符串的处理

字符数组与相关函数
string类与相关函数

函数与递归

函数定义与调用、形参与实参
传值参数与传引用参数
常量与变量的作用范围
递归函数

结构体与联合体

结构体
联合体

指针类型

指针
基于指针的数组访问
字符指针
指向结构体的指针

文件及基本读写

文件的基本概念、文本文件的基本操作
文本文件类型与二进制文件类型
文件重定向、文件读写等操作

STL模板 - 1

栈(stack)、队列(queue)、链表(list)、向量(vector)等容器
容器(container)和迭代器(iterator)
对(pair)、元组(tuple)
集合(set)、多重集合(multiset)
双端队列(deque)、优先队列(priority_queue)
算法模板库中的常用函数(min、max、swap、sort等)

数据结构

线性结构

链表:单链表、双向链表、循环链表
队列
双端栈
双端队列
单调队列
优先队列
ST表(Sparse Table)

简单树

树的定义与相关概念
树的表示与存储
二叉树的定义与基本性质
二叉树的表示与存储
二叉树的遍历:前序、中序、后序

集合与森林

并查集
树的孩子兄弟表示法

特殊树

完全二叉树的定义与基本性质
完全二叉树的数组表示法
哈夫曼树的定义和构造、哈夫曼编码
二叉搜索树的定义和构造
二叉堆

简单图

图的定义与相关概念
图的表示与存储:邻接矩阵
图的表示与存储:邻接表
稀疏图
偶图(二分图)
欧拉图
有向无环图
连通图与强连通图
双连通图

算法

算法概念与描述

算法概念
算法描述:自然语言描述、流程图描述、伪代码描述

复杂度分析

时间复杂度分析
空间复杂度分析

入门算法

枚举法
模拟法
离散化

基础算法

贪心法
递推法
递归法
二分法
分治算法
倍增法

数值处理算法

高精度的加法
高精度的减法
高精度的乘法
高精度整数除以单精度整数的商和余数

排序算法

排序的基本概念
冒泡排序
选择排序
插入排序
计数排序
归并排序
快速排序
堆排序
桶排序
基数排序

搜索算法

深度优先搜索
广度优先搜索
记忆化搜索

图论算法

深度优先遍历
广度优先遍历
最小生成树:Prim和Kruskal等算法
次小生成树
单源最短路:Bellman-Ford、Dijkstra、SPFA等算法
单源次短路
Floyd-Warshall算法
有向无环图的拓扑排序
泛洪算法(flood fill)

动态规划

动态规划的基本思路
简单一维动态规划
简单背包类型动态规划
简单区间类型动态规划

数学与其他

数及其运算

自然数、整数、有理数、实数及其算术运算(加、减、乘、除)
进制与进制转换:二进制、八进制、十进制、十六进制

初等数学

代数
几何

初等数论

整除、因数、倍数、指数、质素(素数)、合数
取整
模运算与同余
整数唯一分解定理
辗转相除法(欧几里得算法)
素数筛法:埃氏筛法与线性筛法

离散与组合数学

集合
加法原理
乘法原理
排列
组合
杨辉三角

高等数学

线性代数

概率论与数理统计

离散数学

其他

ASCII码
格雷码