谢正茂老师所授的13班在这里进行信息发布和课程讨论。
代码行数多了,没有bug是不可能的。欢迎同学们批判的学习这里的课程代码,发现并解决其中的bug。对于代码可读性和效率的改进,讲出自己的道理,更是非常欢迎的。
上机作业在openjudge子目录下,目前只收录两个来源的题目:
前者里面有200道题;后者随课程进度发布,共8次左右作业,每次5-7题。
请阅读该目录下的README文件,本学期针对先登荣誉,每登提供0.2分的加分;对夺旗荣誉,每旗提供0.8的加分。 为了让每个人都有参与的机会,限制每个github账户每天(GMT时间)只能发起一次pull_request; 同时在期末的加分表格中会列出每个人先登的题目和对应的时间,每人一天也只能获得一次先登加分,超出的加分顺延到本题的下一位提交者,但夺旗无此限制。
登录OJ账号之后请加入数算B谢正茂班,选择“数算B13班-2025春季”,把在班中的昵称改为“学号+姓名”,这样每次的作业和考试才会有成绩。
上机课时间为每周四5-6节,地点为计算中心7-8号机房
- 【腾讯文档】数算B-13班上机座次表
一种很受欢迎的写文档的工具。如果要写一本很“漂亮”的书,那是比不上LaTex的。Markdown可以通过嵌入html来获得一些丰富的格式,但对于在线文档,最简单的格式和功能就足够了。Markdown最大的好处是简单高效,高端的食材往往只需要最简单的烹饪方法。VScode就可以很好的编辑、预览md。
参考:
利用github.com的pull request功能,进行线上协作与讨论。
我们用的是一种Crowdsource的松散协作方式,maintainer之外的contributor对主仓库并不具有直接的写权限,需要先fork主仓库到自己的github账户下进行工作,根据工作的主题新开一个branch,在该branch下面完成工作后向主仓库提出pull request(pr)申请,maintainer和其他contributor可以review该pr,contributor根据别人的review可以修改pr的内容,最终满意后由maintainer把pr的工作内容合并进主仓库。流程基本就是:
fork ==> branch ==> commit* ==> pull_request ==> (review, commit)* ==> merge,close
contributor下次开新的branch的时候,并不需要每次都fork主仓库,和主仓库多同步以获得最新的内容。
常见的问题:
- contributor不要修改自己的main分支,而是新建branch上commit。为了避免版本冲突问题,main分支需要经常同步maintainer的仓库,尽可能每次branch前同步一次,在最新main上建新branch。
- 新建branch的名字应该与准备提交的内容有关,而且不应包含中文字符,否则github会报警;在发起pull request时应该对工作内容有简单的描述,描述中可以使用中文。
- 如果pr一个branch1有比较多的错误被退回,从main上新开一个branch2,比在branch1上作修改更方便。
- git主要的优势在于管理文本内容,因此非文本的内容在git仓库中尽量避免。非必要也不要在文档中插入图片。
- 对于一个pr,maintainer只能全部接受或全部拒绝,所以每次pr最好只有一个独立的工作。限制了一次pr频率,也即限制了工作的提交频率。
参考:
How to contribute to open source projects (our community project walkthrough)
由于在大陆地区访问github网站连接有不稳定的情况,这里另外提供了一个国内的镜像。需要注意的是,该镜像是只读的,前面的协作功能只在github上进行。
| 时间 | 课程进度 | 作业 | 备注 |
|---|---|---|---|
| 第一周 | 引言及概论 | 自学git,熟悉github、OJ功能 | |
| 第二周 | Python入门 | OJ作业Python入门 | |
| 第三周 | 算法分析 | ||
| 第四周 | 线性表 | OJ作业线性表 | |
| 第五周 | 递归与动规 | OJ作业递归与动规 | |
| 第六周 | 递归与动规,KMP | ||
| 第七周 | 排序与查找 | OJ作业排序与查找 | |
| 第八周 | 排序与查找 | ||
| 第九周 | 树及算法 | OJ作业树及算法 | |
| 第十周 | 期中模拟考试 | ||
| 第十一周 | 模拟题讲解,树及算法 | ||
| 第十二周 | 五一放假 | ||
| 第十三周 | 树及算法,图及算法 | OJ作业图及算法 | |
| 第十四周 | 图及算法 | ||
| 第十五周 | 图及算法,期末复习指导 |
- 2/25/2025 第三周(3/4/2025)上课时间随堂小测,考察Python基础技能。
- 3/25/2025 第七周(4/1/2025)上课时间随堂小测,考察线性表、递归与动规两章
- 4/15/2025 第十周(4/22/2025)上课时间随堂小测,考察排序与查找一章
- 5/13/2025 第十四周(5/20/2025)上课时间随堂小测,考察树及算法一章