最终项目
这门课程的高潮是最终项目。最终项目是你将新学到的编程技能付诸实践的机会,去开发你自己的软件作品。只要你的项目基于这门课程的课程内容,项目的具体形式完全由你决定。你可以用任何编程语言实现你的项目。你欢迎借助 CS50 Codespace 之外的其他基础设施。我们只要求你构建一些你感兴趣的东西、解决一个实际问题、影响你的社区,或改变世界。努力创造一些能在这门课程结束后继续流传的作品。
由于软件开发很少是一个人的工作,你可以与一两位同学合作完成此最终项目。不用说,期望组内每个学生对小组项目的设计和实现做出平等的贡献。此外,两个或三人小组项目的规模应分别是一个典型单人项目的两倍或三倍。而一个单人项目,提醒一下,应该比这门课程每个问题集所需的时间和精力更多。
请注意,CS50 的工作人员会审核 CS50x 的提交,包括此最终项目。被发现违反学术诚信政策的学生将被从课程中移除,并被视为不符合证书资格。已完成 CS50x 的学生,如果被发现在最终项目中违规,其 CS50 证书(以及 edX 证书,如果适用)将被撤销。
创意想法
- 使用 JavaScript、Python 和 SQL 的 Web 应用
- 使用 Swift 的 iOS 应用
- 使用 Lua 和 LOVE 的游戏
- 使用 Java 的 Android 应用
- 使用 JavaScript 的 Chrome 扩展
- 使用 C 的命令行程序
- 一个基于硬件的应用程序 你需要为某个设备编程
- …
入门
创建一个完整的项目可能看起来令人生畏。以下是一些你应该在开始时思考的问题:
- 你的软件将做什么? 它将有哪些功能? 它将如何运行?
- 你需要获取哪些新技能?你需要研究哪些主题?
- 如果与一两位同学合作,谁将负责什么?
- 在软件的世界里,几乎所有事情的实现时间都比你预期的要长。所以在固定的时间内完成的内容比你希望的少,这并不罕见。你认为你的项目一个不错的成果是什么?一个更好的成果呢?最好的成果呢?
考虑设定目标里程碑,以帮助你保持进度。
如果使用 CS50 Codespace,创建一个名为 project 的目录来存储你的项目源代码和其他文件。你欢迎在 CS50 Codespace 之外开发你的项目。
对于你的最终项目(且仅限最终项目!),合理使用 CS50 自有之外的 AI 软件(例如 ChatGPT、GitHub Copilot、Bing Chat 等)是可以的,但工作的核心仍必须是你自己的。你已经学得足够多了,可以把这些工具当作助手使用。将这些工具视为增强你的生产力,而非取代它。但你仍然必须在代码注释中引用对这些工具的任何使用。
如何提交
你必须在 2026-12-31T23:59:00+00:00 之前完成所有三个步骤!
步骤 1 / 3
创建一个短视频(不超过 3 分钟),向世界展示你的项目。你的视频必须以开场画面开头,显示:
- 你项目的标题;
- 你的姓名;
- 你的 GitHub 和 edX 用户名;
- 你所在的城市和国家;
- 以及你录制此视频的日期。
之后应该展示你的项目的实际运行情况,可以使用幻灯片、截图、配音和/或实际操作演示。关于如何制作”屏幕录制”,请参见 howtogeek.com/205742/how-to-record-your-windows-mac-linux-android-or-ios-screen,不过你也欢迎使用真实相机拍摄。将你的视频上传到 YouTube(或者如果在你所在国家被屏蔽,则上传到类似网站),并记下其 URL;将其标记为”不公开”是可以的,但不要标记为”私享”。
提交此表单!
步骤 2 / 3
在你的 project 文件夹中创建一个 README.md 文本文件(文件名必须完全一致!)来解释你的项目。此文件应包含你项目的标题、视频的 URL(在上述步骤 1 中创建的)以及你项目的描述。你可以用以下内容作为模板。
# 你的项目标题
#### 视频演示: <此处填写URL>
#### 描述:
待完成
如果不熟悉 Markdown 语法,你可能会发现 GitHub 的基本书写和格式语法很有帮助。你也可以通过点击"预览"图标来预览你的 .md 文件,详见:vscode 中的 Markdown 预览。标准的软件项目 README 文件通常可以达到数千甚至数万字;你的不需要那么长,但至少应该有几百字来详细描述内容!
你的 README.md 文件最少应有多个段落的长度,应该解释你的项目是什么,你编写的每个项目文件包含什么内容、做什么功能,以及如果你对某些设计选择有过权衡,解释你为什么做出这些选择。确保投入足够的时间和精力来撰写一份全面记录你项目的 README.md。为它感到自豪!一份 750 字左右的 README.md 应该足以描述你的项目及其所有功能方面。如果无法达到这个门槛,那可能意味着你的项目不够复杂。
在你的 project 目录(或包含 README.md 文件和你项目代码的任意目录,这些也必须一并提交)中执行下面的 submit50 命令,在提示时使用你的 GitHub 用户名和密码登录。为了安全,你输入密码时会看到星号而不是实际字符。
submit50 cs50/problems/2026/x/project
提交遇到问题?
如果你因为项目太大而遇到问题,请尝试将该目录中的所有内容(除了 README.md)打包成 ZIP 文件再提交。如果还是太大,尝试移除某些配置文件,将提交大小减少到 100MB 以下,或者通过访问 github.com/me50/USERNAME(其中 USERNAME 是你自己的 GitHub 用户名)并手动拖放文件夹,尝试使用 GitHub 的 Web 界面直接上传,确保上传时操作的是你的 cs50/problems/2026/x/project 分支,否则系统将无法检查它!
步骤 3 / 3
请务必在你提交后的几分钟内访问你在 cs50.me/cs50x 的成绩册。只有载入你的成绩册后,系统才能检查你是否已完成这门课程,这也将触发你的免费 CS50 证书的(即时)生成,以及 edX 验证证书的(30 天内)生成,前提是你已完成所有其他作业。请务必在 2026-12-31T23:59:00+00:00 之前领取你的免费证书(点击你成绩册顶部的链接)。
不要跳过上述步骤!只有在你完成上述操作并看到绿色横幅显示你已经完成这门课程后,这门课程才算完成。如果你在 2026-12-31T23:59:00+00:00 之前没有完成上述操作,你在这门课程中的状态将受常见问题中的结转规则约束。工作人员不会在截止日期当天或之后因此进行任何手动修正!
就这样!你的项目应该在几分钟内被评分。如果你在成绩册中没有看到任何结果,最好只携带 README.md 文件重新提交(重新运行上述 submit50 命令)。无需重新提交你的表单。
这就是 CS50x!