核心编程是 OSSU CS 课程结构中的编程方法论基础,它包含七门课程,总计 47 周的学时。该部分在 README.md135-159中定义,并建立在先修的《Python 计算机科学与编程入门》课程之上。
核心编程的实现侧重于系统化程序设计方法、多种编程范式和软件架构原则。课程主题包括 函数式编程、为测试而设计、程序需求、常见设计模式、单元测试、面向对象设计、静态类型、动态类型、ML 系列语言(通过 Standard ML)、Lisp 系列语言(通过 Racket) 和 Ruby。
本部分采用基于进度的依赖系统,其中每门课程都建立在先前概念的基础上,通过主课程表定义的先修课程链来实现。
核心编程实施了一个为期 47 周的课程序列,包含特定的外部平台依赖和自定义课程支持基础设施。
| 课程 | 持续时间 | 工作量 | 平台 | 先决条件 | 实现文件 |
|---|---|---|---|---|---|
系统化程序设计 | 13周 | 每周 8-10 小时 | edX (已存档) | 无 | coursepages/spd/README.md |
基于类的程序设计 | 13周 | 每周 5-10 小时 | 东北大学(直接) | SPD、高中数学 | course.ccs.neu.edu/cs2510sp22 |
编程语言,第一部分 | 5周 | 每周 4-8 小时 | Coursera | SPD | coursera.org/learn/programming-languages |
编程语言,第二部分 | 3周 | 每周 4-8 小时 | Coursera | 第一部分 | coursera.org/learn/programming-languages-part-b |
编程语言,第三部分 | 3周 | 每周 4-8 小时 | Coursera | 第二部分 | coursera.org/learn/programming-languages-part-c |
面向对象设计 | 13周 | 每周 5-10 小时 | 东北大学(直接) | 基于类的程序设计 | course.ccs.neu.edu/cs3500f19 |
软件架构 | 4周 | 每周 2-5 小时 | Coursera | 面向对象设计 | coursera.org/learn/software-architecture |
该实现包括每个课程部分的 Discord 聊天频道以及针对复杂设置要求的自定义课程页面文档。
来源:README.md150-159 coursepages/spd/README.md1-104
课程先决条件和实施依赖
来源:README.md150-159 coursepages/spd/README.md29-31
语言和工具链映射到课程基础设施
来源:README.md145-147 coursepages/spd/README.md20-26 coursepages/spd/README.md34-42
SPD 在 coursepages/spd/README.md 提供了全面的课程页面,其中包含特定的工具链要求和通过 github.com/ossu/spd-starters 分发的启动文件。该课程使用已存档的 edX 版本 learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015,并为寻求证书者提供其他活跃版本。
课程需要特定的 Dr. Racket IDE 配置
true false empty(在“显示详细信息”面板中配置)配置参考图片:coursepages/spd/change-dr-racket-notation.png coursepages/spd/automatic-parentheses.png
太空侵略者项目
space-invaders-starter.rkt 来自 ossu/spd-startersyoutube.com/shorts/wUg3psZl7vMcheck-random 用于随机值测试TA 解算器项目
ta-solver-starter.rkt 来自 ossu/spd-startersyoutube.com/playlist?list=PL6NenTZG6KrqdcyTwGf09uBxjI5pbXuT7来源:coursepages/spd/README.md1-49 coursepages/spd/README.md20-27
基于类的程序设计直接通过东北大学在 course.ccs.neu.edu/cs2510sp22/index.html 进行,课程周期为 13 周,每周需要 5-10 小时。先决条件包括完成 系统化程序设计 和 高中数学 背景。
系统化程序设计,高中数学discord.com/channels/744385009028431943/891411727294562314该课程实施面向对象设计原则,建立在 SPD 的系统设计方法论之上,从函数式设计规范过渡到基于类的程序组织和继承层次结构。
来源:README.md153
编程语言系列通过三门连续的 Coursera 课程,结合特定的先决条件链和 Discord 支持频道,进行比较语言研究。
编程语言,第一部分
coursera.org/learn/programming-languages系统化程序设计discord.gg/8BkJtXNcoursera.org/lecture/programming-languages/recommended-background-k1yuh 验证编程语言,第二部分
coursera.org/learn/programming-languages-part-b编程语言,第一部分discord.gg/EeA7VR9编程语言,第三部分
coursera.org/learn/programming-languages-part-c编程语言,第二部分discord.gg/8EZUVbA课程基础设施
course.ccs.neu.edu/cs3500f19/基于类的程序设计discord.com/channels/744385009028431943/891412022120579103技术焦点
课程基础设施
coursera.org/learn/software-architecture面向对象设计discord.com/channels/744385009028431943/891412169638432788技术焦点
该系列完成了核心编程轨道,软件架构是进入核心系统、核心理论或核心应用轨道的终端课程。
| 实施领域 | 技术能力 | 课程实施 |
|---|---|---|
| 系统设计 | HtDP 设计规范、数据驱动程序设计、BSL/ISL 实现 | 系统化程序设计 通过 coursepages/spd/README.md |
| 面向对象设计 | 类层次结构、继承、多态、Java 实现 | 基于类的程序设计、面向对象设计 |
| 函数式编程 | 高阶函数、模式匹配、类型推断、ML 实现 | 编程语言,第一部分 |
| 动态语言 | 宏系统、动态分派、元编程、Racket/Ruby | 编程语言,第二部分/第三部分 |
| 软件架构 | 架构模式、组件设计、系统分解 | 软件架构 |
| 测试方法 | 单元测试、check-random 测试、测试驱动开发 | 所有课程集成 |
学生通过实践实现完成该系列
ossu/spd-starters 项目主要实施项目包括SPD课程主页基础设施中的space-invaders-starter.rkt和ta-solver-starter.rkt,它们展示了系统化设计方法在复杂状态管理和算法问题解决中的应用。
来源:README.md136-148 coursepages/spd/README.md20-26
核心编程与课程结构的关系
来源:README.md135-159 README.md193-380
核心编程部分为学生提供了程序设计、编程范式和软件架构方面的全面基础。通过完成这些课程,学生将掌握在各种情境和语言中设计、实现和评估软件系统所需的技能。这些课程中教授的系统化程序设计方法构成了后续更高级计算机科学主题的基础。