课程大纲与政策
目录
概览
在本课程中,我们的目标是为众多“标准”算法问题展示各种算法。我们将讲解算法设计技巧以及算法分析方法。此外,鉴于本课程为高年级本科生设计,我们还将介绍算法研究中的一些前沿分支领域,为进一步学习提供可能的方向。
在本课程结束后,学生们将学会:
- 基本的算法设计技巧及其应用
- 算法分析中使用的主要理论工具。
- 针对特定问题设计算法的能力
- 分析给定算法复杂性的能力
- 对算法的前沿分支领域的基本了解。
课程政策
关于作弊
这门课鼓励大家互相讨论,并从网上获取相关资源来完成作业。当然你也可以直接来询问老师。 然而,直接复制粘贴代码或者答案是被禁止的。 如果我询问时无法解释清楚你的作业是如何完成的,那我便会判断你是抄袭的。不要冒这个风险。
课程作业
课程作业HW将每周发布一次。 作业提交可以通过电子邮件或者纸质版的形式提交。 但请注意,发送电子邮件的时候,请务必将完成作业以pdf的形式并命名为学号-姓名-算法第k次平时作业放入邮件附件,并将邮件以学号-姓名-算法第k次平时作业命名成邮件名进行提交到邮箱 qzyang@shnu.edu.cn。
- 关于邮件提交,如果和编程作业一起提交的话,请将邮件名命名为学号-姓名-算法第k次作业,并分别放入平时作业和编程作业的附件,即以学号-姓名-算法第k次平时作业和学号-姓名-算法第k次编程作业命名的pdf文件。
请注意,迟交作业将受到25%的成绩惩罚。
编程作业
编程作业PA也将每周发布一次。 我们将选取Leet Code上的题目. 同学们需要完成一份报告,报告至少包含如下四部分:
- 题目描述:相应题目的描述。
- 算法介绍:用自然的语言描述你的算法思路,可采用伪代码或者自然语言的描述方式。
- 代码实现:你在Leet Code上提交的代码。
- 测试结果:你在Leet Code上提交代码后的测试结果截图,包含运行时间和内存消耗。你也可以对其结果有自己进一步的讨论。
相应报告请提pdf的形式并命名为学号-姓名-算法第k次编程作业放入邮件附件,并将邮件以学号-姓名-算法第k次编程作业命名成邮件名进行提交到邮箱 qzyang@shnu.edu.cn。这里提供了一个提交示例 示例.
关于编程作业,还请大家注意以下两点:
我不要求每位同学每次都交编程作业,我只要求大家至少完成8次即可。因此,你可以选择你感兴趣的题目来完成。 但请注意,编程作业的发布应该是第十四周会是最后一次。第十五周开始就没有编程作业发布了。也请大家不要扎堆提交。
每次编程作业提交后,我将随机选择一名提交作业的学生请他来分享自己的解决思路,也欢迎同学自主报名分享,主动报名并分享的学生将获得总评1分的奖励分(每位同学限一次)。 当然有个例外情况,如果这次作业没有提交,那我就会随机的选择一位同学来进行分享,当然这会被算进去一次作业提交次数,但是不会有奖励分。
请注意,迟交作业将受到25%的成绩惩罚。
期末考试
本课程只有一次期末考试,有关期末考试的信息将在之后再公布。
奖励分数
TBA.
分数计算
学生的最终成绩Grade将由下列四部分决定:
- 课程作业HW,
- 编程作业PA ,
- 期末考试Exam,
- 奖励分Bonus.
- 最终的成绩是上述四部分的加权平均:
Grade = MIN{25%* HW + 15%* PA+ 60%* Exam +5%* Bonus ,100}
课程资源
本网站算法设计与分析将包含本课程所需的所有课程资源,包括课程通知、课程课件、课程作业以及课程作业的解答。
LeetCode
Leet Code是一个提供大量编程挑战和问题的在线平台,主要旨在帮助个人提高编程和解决问题的能力。我们将使用该网站来完成我们的程序作业。
参考资料
下面是一些推荐的书籍:
- [1] M.H. Alsuwaiyel. Algorithms: design techniques and analysis.
- [2] S. Dasgupta, C. H. Papadimitriou, U. V. Vazirani. Algorithms
- [3] T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction to Algorithms
- [4] R. Sedgewick, K. Wayne. Algorithms
- [5] Jeff Erickson. Algorithms
- [6] 王晓东。 计算机算法设计与分析
- [7] 屈婉玲,刘田,张立昂,王捍贫。算法设计与分析