> For the complete documentation index, see [llms.txt](https://advancedguideforsds.gitbook.io/advancedguide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://advancedguideforsds.gitbook.io/advancedguide/pei-yang-fang-an-jie-xi/da-san-qiu-ji-xue-qi/suan-fa-ji-chu-zhuan-ye-ji-chu.md).

# 算法基础（专业基础）

## 课程简介

本课程是计科、AIDS的专业基础课。课程主要涵盖了算法设计、算法分析和证明等，并主要介绍了以下内容：基础概念（复杂度分析、近似分析、输入量、随机化算法）、排序算法、分治算法（经典的平面最近点对、快速傅里叶变换等）、高级数据结构、动态规划、贪心与近似算法、均摊分析、图论算法、数论算法、字符串算法、线性规划、计算复杂性等。每位老师的授课内容和侧重点不同，可以在评课社区进一步了解

## 前置知识

C/C++, 数据结构，线性代数

## 往年经验

算法基础教的是不基础的基础算法。笔者的算法基础任课老师为陈雪老师。由于陈雪老师是曾经的信息学竞赛集训队，目前研究理论计算机科学(TCS)，因此课程内容对于学习过算法竞赛的同学可能较为利好，但是这仅限于算法设计方面。陈雪老师的课程强调如何严谨地分析算法的正确性和复杂性，对于数学和算法知识要求都较高。由于陈雪老师的上课的过程中除了授课语言使用中文外，课件和板书都使用英文，并且课件内容仅作为课程提纲，更详细的证明和分析都在板书完成，所以建议不要翘掉任何一节课。期中期末考试会有伪代码和算法证明与分析，建议平时做作业和备考看往年卷时多加练习。

当然了以上对于这门课的描述是否有点灰色，在学习算法基础这门课程的过程中，你也会感受到一些前人的智慧，在算法设计和证明过程中感受到算法的微妙。

对于初学算法的同学，建议刷leetcode进行算法设计的练习（更更往年学长的经验）；对于有算法基础的同学，上课务必认真听是否有没有学习过或不熟悉的算法，避免出现因过度自信而遗漏的情况

## 与后续课程的关系

后续各种编程方法的基础，与各种领域如网络、系统、AI、通信等都联系紧密，也是程序员工作面试的必备技能（leetcode的知识基本全在本课程有所讲授）。

## 课程资源

往年试题，后续将继续补充<https://pan.ustc.edu.cn/share/index/fa540fab500d4e88a67e>
