跳到主要内容

现代编程思想

课程简介

编程是一门拥有悠久历史的学科,可以追溯到 19 世纪,当时 Ada Lovelace 写出了早期的程序。自此以后,经过一个世纪的演进,编程语言如雨后春笋般涌现,各种编程范式被提出,各行各业都逐渐有了数字化的需求,程序开发规模也愈加庞大。

在这个背景下,我们推出现代编程思想公开课,旨在让更多的人接触编程,了解现代编程思想,并掌握软件开发的要领。

这门课程主要讲授程序设计与实际应用。课程将会介绍多种编程范式,包括函数式编程、命令式编程与面向对象编程等。同时,我们将演示如何使用 MoonBit 编程语言来开发复杂软件项目。

这门课程适合广泛的受众,从编程初学者到有经验的开发者。不需要特定的先决条件,我们将持续打磨课程,提供清晰易懂的内容。

课程将采用多种教学方法,包括公开课录播、实际项目、编程练习和论坛讨论。同时我们还将提供在线 PPT、代码仓库和推荐阅读等学习资源,以支持学生的学习。

授课的示例代码使用MoonBit 月兔编程语言,由基础软件中心开发。月兔支持多范式编程,同时提供云原生开发环境支持,可以无需安装额外软件即在浏览器中开发。

致谢

本课程参考宾夕法尼亚大学 CIS1200 课程设计

课程安排

课程主题幻灯片视频代码仓库推荐阅读
1课程介绍与程序设计第一课.pdf课程介绍与程序设计样例代码
2月兔开发与月兔中的表达式第二课.pdf2.1:月兔开发环境的准备2.2:月兔中的表达式(上)2.3:月兔中的表达式(下)2.2 样例代码CODING 入门指南, 适合初学者的简单 Git 教程——nulab, [“玩转 VS Code”公众号 > 服务 > 基础 及公众号其他内容],月兔构建系统教程月兔语法教程
3函数, 列表与递归第三课.pdf3.1: 函数与列表3.2:递归与动态规划函数列表与递归样例代码斐波那契数列样例代码Software Foundations 前三章 或 Programming Language Foundations in Agda 前三章;《算法导论》第十四章
4多元组, 结构体,枚举类型第四课.pdf4: 多元组,结构体,枚举类型样例代码Category Theory for Programmers 第六章
5数据类型:树、二叉树、二叉搜索树、AVL树第五课.pdf5.1:树与二叉树 5.2:二叉搜索树与二叉平衡树5.1 样例代码5.2 二叉平衡树5.2 AVL树《算法导论》第十二、十三章
6泛型与高阶函数第六课.pdf6.1:泛型,栈和队列 6.2:高阶函数,列表折叠与映射6.1 样例代码 6.2 样例代码Software Foundations 第四章 或 Programming Language Foundations in Agda 第十章
7命令式编程:命令,可变数据结构,循环第七课.pdf7.1:命令式编程 7.2:循环7.1 引用不透明 7.1 可变数据结构 7.2 样例代码
8队列:可变数据实现第八课.pdf8: 队列:可变数据实现循环队列(整数) 链表
9接口第九课.pdf9: 接口接口的定义与使用 方法的定义与使用 表的简易实现
10哈希表与闭包第十课.pdf10.1:哈希表:直接寻址 10.2:哈希表:开放寻址与闭包10 哈希表《算法导论》第十一章、《算法》第3.4节
11案例:语法解析器与Tagless Final第十一课.pdf11.1:词法分析器 11.2:语法分析器11 语法解析器与Tagless Final调度场算法 斯坦福CS143 第1-8课 或 《编译原理》前五章 或 《现代编译原理》前三章
12案例:自动微分第十二课.pdf12:自动微分12 自动微分 样例代码3Blue1Brown 深度学习
13案例:神经网络第十三课.pdf13:神经网络13 神经网络 样例代码
14案例:堆栈虚拟机第十四课.pdf14上:堆栈虚拟机:以WebAssebmly为例 14下:堆栈虚拟机:以WebAssebmly为例14 样例代码

开发环境准备

学习社群

Bilibili

欢迎大家关注我们的 B 站帐号:MoonBit 月兔,我们课程的视频都会存放于此(✅ 一键三连 ❌ 下次一定)。

QQ群

欢迎大家加入我们的公开QQ群,我们会在群里实时同步开课信息。如果你有任何问题与反馈,请扫码添加小助手微信。

MoonBit 月兔开发者论坛

欢迎大家加入我们的MoonBit 月兔开发者论坛。在 MoonBit 月兔开发者论坛,我们欢迎来自各个领域的开发者、技术爱好者和学习者。这里是一个充满创意、共享知识和互相帮助的社区。

你可以在我们的论坛找到:

🔍 问题答疑:遇到技术问题?在这里,你可以提出问题,得到解答,并帮助其他成员解决他们的问题。

📢 作业展示:展示你的项目和作业,与社区分享你的创造力。得到反馈,提高你的技能。

💬 交流讨论:不仅限于公开课内容,我们欢迎社区成员分享自己的项目、经验和疑惑。在这里,你可以找到同道中人,共同解决挑战。

📒 学习打卡:在学习的旅程中,坚持打卡是提高技能的关键。我们提供一个地方,你可以记录学习进度,随时与他人分享你的学习心得。

💻 课程反馈:在这里,你可以分享你对课程的看法、建议和反馈,帮助我们不断改进课程质量,让你的学习体验更出色。

🔗 点击这里加入MoonBit 月兔开发者论坛,一起探索、学习和成长。MoonBit 月兔开发者论坛期待你的加入,一起建立充满创造力的技术社区。