diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 012ecb6..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 conanhujinming - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae042e8 --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# 名校公开课程评价网 + +## 前言 + +近几年来,越来越多的名校课程选择公开课程的资源供大家学习。学习这些课程不仅能够让我们很好地学习和掌握知识,更能培养我们的学习兴趣和学习能力。公开的资源包括且不限于授课录像、课件(slide)、课程阅读资料(reading)、课程作业(lab)、自动评测系统(autograder)、期中期末试卷等等。因此,我们很幸运地能够免费地享受到这些最顶级的教育资源。另一方面,国内本科阶段的大部分课程的质量一言难尽,这也让我们更需要使用这些顶级的公开课程来学习知识。 + +我在过去的数年间就大大受益于这些公开的课程,前前后后自学了有几十门各种各样的课程,受益无穷。也因此,我也一直在不遗余力地推广我所学过的优质课程。在学习课程的过程中,我发现自学这些课程终究还是存在一些困难,如: + +1. 有多所名校公开了某门课程的资源,那么该用哪门课程学习呢?它们相互比较各有什么优缺点呢? +2. 我想学一门课程,但是这门课程的难度如何呢?适合现阶段的我吗? +3. 这门课程公开的资源有哪些呢?是否有视频呢?是否有自动评测系统呢? +4. 自己完成作业的时候常常碰到很多坑,又没有助教TA可以询问这些坑,导致常常在一些没意义的地方浪费大量时间。如果有前人总结出来有哪些坑、如何绕过就好了...... +5. 学这门课之前,需要有哪些前置课程呢?这门课学完之后,又有哪些合适的进阶课程可以学习呢? +6. 这门课程的授课质量如何呢?值得花时间去好好观看吗? +7. 这门课有没有非官方的优秀资源呢?(如课堂内容的中文翻译) + +....... + +正是因为有这些问题存在,我在写文章的时候往往也力求能给出这些问题的回答,帮助后人能够更高效更合理地去学习这些课程资源。然而写文章终究还是太散乱了,且一个人的力量终究是有限的。受启发于[CS公开课程学习群](https://zhuanlan.zhihu.com/p/253232863)一位同学的建议与[浙江大学课程攻略共享计划](https://github.com/QSCTech/zju-icicles),我们创立了这个项目,来整合大家对于高质量公开课程的评价、总结、与建议等等,期望这些评价能对后来的同学在选择、学习课程的时候能有一些帮助。 + +## 特性 + +本项目的目标是收录以下内容: + +- 课程资源链接 +- 是否有视频 +- 有哪些作业(homework)、实验(lab/assignment) +- 是否有自动测评程序(autograder) +- 课程简介,包括前置课程知识,适合哪个阶段学习等等 +- 课程评价,包括难度、有趣程度、讲课质量、作业难度与质量等等 +- 非官方的优质课程资源链接(如笔记、课程内容翻译等等) +- 后续课程推荐 + +等等。由于一门课程可能会有多个评价,大家可以在提供个人评价的时候附上自己的相关信息(如ID或主页)。 + +## 贡献 + +**欢迎贡献!** + +Issue、PR、纠错、资料、攻略,各种欢迎! + +来自大家的关注、维护和贡献,才是让这个项目质量越来越好的动力~ + +### 警告 + +下列内容为不适合上传的内容。如果你认为缺少这些资料将会影响资源的完整性,请优先考虑放在校内资源平台,或联系你的教师并由教师发布。建议你撰写一个 README 文档并放置一些链接或指引文字来帮助找到这些资源。 + +- 盗版电子书/付费电子书 +- 盗版/破解版/绿色版付费软件及其安装包 + +如果你认为本仓库的一些文件侵犯了您的权益,请 [向我们发送邮件](jinminghu233@qq.com) 。我们将会从仓库中彻底清除这些文件。 + +## 许可 + +由贡献者编写部分的许可如下: + +[CC-BY-NC-SA:署名-非商业性使用-相同方式共享](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh) + +> 资料仅供参考,请自己判断其适用性。 + +其他部分的版权归属于其各自的作者。 + +## 致谢 + +感谢提出这个想法的同学@itwangashao,同时本项目大量参考了[浙江大学课程攻略共享计划](https://github.com/QSCTech/zju-icicles),一并感谢~ \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..eb262d6 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,3 @@ +site_name: 名校公开课程评价网 +theme: readthedocs +repo_url: https://github.com/conanhujinming/comments-for-awesome-courses/ \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b854bca --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +mkdocs \ No newline at end of file diff --git a/update.py b/update.py new file mode 100644 index 0000000..8ea9138 --- /dev/null +++ b/update.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +from urllib.parse import quote + +EXCLUDE_DIRS = ['.git', 'docs', '.vscode', '.circleci', 'site'] +README_MD = ['README.md', 'readme.md', 'index.md'] + +TXT_EXTS = ['md', 'txt'] +TXT_URL_PREFIX = 'https://github.com/conanhujinming/comments-for-awesome-courses/blob/master/' +BIN_URL_PREFIX = 'https://github.com/conanhujinming/comments-for-awesome-courses/raw/master/' + + +def list_files(course: str): + filelist_texts = '## 文件列表\n\n' + readme_path = '' + for root, dirs, files in os.walk(course): + files.sort() + level = root.replace(course, '').count(os.sep) + indent = ' ' * 4 * level + filelist_texts += '{}- {}\n'.format(indent, os.path.basename(root)) + subindent = ' ' * 4 * (level + 1) + for f in files: + if f not in README_MD: + if f.split('.')[-1] in TXT_EXTS: + filelist_texts += '{}- [{}]({})\n'.format(subindent, + f, TXT_URL_PREFIX + quote('{}/{}'.format(root, f))) + else: + filelist_texts += '{}- [{}]({})\n'.format(subindent, + f, BIN_URL_PREFIX + quote('{}/{}'.format(root, f))) + elif root == course and readme_path == '': + readme_path = '{}/{}'.format(root, f) + return filelist_texts, readme_path + + +def generate_md(course: str, filelist_texts: str, readme_path: str): + final_texts = ['\n\n', filelist_texts] + if readme_path: + with open(readme_path, 'r') as file: + final_texts = file.readlines() + final_texts + with open('docs/{}.md'.format(course), 'w') as file: + file.writelines(final_texts) + + +if __name__ == '__main__': + if not os.path.isdir('docs'): + os.mkdir('docs') + + courses = list(filter(lambda x: os.path.isdir(x) and ( + x not in EXCLUDE_DIRS), os.listdir('.'))) # list courses + + for course in courses: + filelist_texts, readme_path = list_files(course) + generate_md(course, filelist_texts, readme_path) + + with open('README.md', 'r') as file: + mainreadme_lines = file.readlines() + + with open('docs/index.md', 'w') as file: + file.writelines(mainreadme_lines) \ No newline at end of file