编程是一门拥有悠久历史的学科,可以追溯到 19 世纪,当时 Ada Lovelace 写出了早期的程序。自此以后,经过一个世纪的演进,编程语言如雨后春笋般涌现,各种编程范式被提出,各行各业都逐渐有了数字化的需求,程序开发规模也愈加庞大。
在这个背景下,我们推出现代编程思想公开课,旨在让更多的人接触编程,了解现代编程思想,并掌握软件开发的要领。
这门课程主要讲授程序设计与实际应用。课程将会介绍多种编程范式,包括函数式编程、命令式编程与面向对象编程等。同时,我们将演示如何使用 MoonBit 编程语言来开发复杂软件项目。
这门课程适合广泛的受众,从编程初学者到有经验的开发者。不需要特定的先决条件,我们将持续打磨课程,提供清晰易懂的内容。
课程将采用多种教学方法,包括公开课录播、实际项目、编程练习和论坛讨论。同时我们还将提供在线 PPT、代码仓库和推荐阅读等学习资源,以支持学生的学习。
授课的示例代码使用MoonBit 月兔编程语言,由基础软件中心开发。月兔支持多范式编程,同时提供云原生开发环境支持,可以无需安装额外软件即在浏览器中开发。
本课程参考宾夕法尼亚大学 CIS1200 课程设计
课程 | 主题 | 幻灯片 | 视频 | 代码仓库 | 推荐阅读 |
---|---|---|---|---|---|
1 | 课程介绍与程序设计 | 第一课.pdf | 课程介绍与程序设计 | 样例代码 | |
2 | 月兔开发与月兔中的表达式 | 第二课.pdf | 2.1:月兔开发环境的准备,2.2:月兔中的表达式(上),2.3:月兔中的表达式(下) | 2.2 样例代码 | CODING 入门指南, 适合初学者的简单 Git 教程——nulab, [“玩转 VS Code”公众号 > 服务 > 基础 及公众号其他内容],月兔构建系统教程 ,月兔语法教程 |
3 | 函数, 列表与递归 | 第三课.pdf | 3.1: 函数与列表,3.2:递归与动态规划 | 函数列表与递归样例代码,斐波那契数列样例代码 | Software Foundations 前三章 或 Programming Language Foundations in Agda 前三章;《算法导论》第十四章 |
4 | 多元组, 结构体,枚举类型 | 第四课.pdf | 4: 多元组,结构体,枚举类型 | 样例代码 | Category Theory for Programmers 第六章 |
5 | 数据类型:树、二叉树、二叉搜索树、AVL树 | 第五课.pdf | 5.1:树与二叉树 5.2:二叉搜索树与二叉平衡树 | 5.1 样例代码,5.2 二叉平衡树,5.2 AVL树 | 《算法导论》第十二、十三章 |
6 | 泛型与高阶函数 | 第六课.pdf | 6.1:泛型,栈和队列 6.2:高阶函数,列表折叠与映射 | 6.1 样例代码 6.2 样例代码 | Software Foundations 第四章 或 Programming Language Foundations in Agda 第十章 |
7 | 命令式编程:命令,可变数据结构,循环 | 第七课.pdf | 7.1:命令式编程 7.2:循环 | 7.1 引用不透明 7.1 可变数据结构 7.2 样例代码 | |
8 | 队列:可变数据实现 | 第八课.pdf | 8: 队列:可变数据实现 | 循环队列(整数) 链表 | |
9 | 接口 | 第九课.pdf | 9: 接口 | 接口的定义与使用 方法的定义与使用 表的简易实现 | |
10 | 哈希表与闭包 | 第十课.pdf | 10.1:哈希表:直接寻址 10.2:哈希表:开放寻址与闭包 | 10 哈希表 | 《算法导论》第十一章、《算法》第3.4节 |
11 | 案例:语法解析器与Tagless Final | 第十一课.pdf | 11.1:词法分析器 11.2:语法分析器 | 11 语法解析器与Tagless Final | 调度场算法 斯坦福CS143 第1-8课 或 《编译原理》前五章 或 《现代编译原理》前三章 |
12 | 案例:自动微分 | 第十二课.pdf | 12:自动微分 | 12 自动微分 样例代码 | 3Blue1Brown 深度学习 |
- VSCode 下载地址
- VSCodium 下载地址(可以选择其中一所大学的镜像站进行下载)
- 腾讯云 Coding
- 开发模板(
https://github.com/peter-jerry-ye/moonbit-template.git
) - 课后练习(
https://github.com/moonbit/MPI-exercise.git
)
欢迎大家关注我们的 B 站帐号:MoonBit 月兔,我们课程的视频都会存放于此(✅ 一键三连 ❌ 下次一定)。
欢迎大家加入我们的MoonBit 月兔开发者论坛。在 MoonBit 月兔开发者论坛,我们欢迎来自各个领域的开发者、技术爱好者和学习者。这里是一个充满创意、共享知识和互相帮助的社区。
MoonBit Course © 2024 by DII, International Digital Economy Academy is licensed under Attribution-NonCommercial-NoDerivatives 4.0 International
Copyright 2024 DII, International Digital Economy Academy
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.