菜单

核心编程

相关源文件

目的与范围

核心编程是 OSSU CS 课程结构中的编程方法论基础,它包含七门课程,总计 47 周的学时。该部分在 README.md135-159中定义,并建立在先修的《Python 计算机科学与编程入门》课程之上。

核心编程的实现侧重于系统化程序设计方法、多种编程范式和软件架构原则。课程主题包括 函数式编程为测试而设计程序需求常见设计模式单元测试面向对象设计静态类型动态类型ML 系列语言(通过 Standard ML)Lisp 系列语言(通过 Racket)Ruby

本部分采用基于进度的依赖系统,其中每门课程都建立在先前概念的基础上,通过主课程表定义的先修课程链来实现。

来源:README.md135-159

课程实施

核心编程实施了一个为期 47 周的课程序列,包含特定的外部平台依赖和自定义课程支持基础设施。

课程持续时间工作量平台先决条件实现文件
系统化程序设计13周每周 8-10 小时edX (已存档)coursepages/spd/README.md
基于类的程序设计13周每周 5-10 小时东北大学(直接)SPD、高中数学course.ccs.neu.edu/cs2510sp22
编程语言,第一部分5周每周 4-8 小时CourseraSPDcoursera.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 配置要求

课程需要特定的 Dr. Racket IDE 配置

  • 语言设置:通过“语言 > 选择语言”菜单选择 BSL/ISL 变体
  • 常量风格:true false empty(在“显示详细信息”面板中配置)
  • 自动括号:通过“编辑 > 首选项 > 编辑”选项卡启用
  • 重新缩进:Ctrl+I 用于整个文件的格式化

配置参考图片:coursepages/spd/change-dr-racket-notation.png coursepages/spd/automatic-parentheses.png

项目实现结构

太空侵略者项目

TA 解算器项目

  • 启动文件:ta-solver-starter.rkt 来自 ossu/spd-starters
  • 说明:嵌入在启动文件中
  • 完成要求:所有课程模块完成后

课程内容分布

  • 第 1A-6A 周:基本设计规范和数据结构
  • 太空侵略者项目:第 6A 周完成后
  • 第 6B 周+:高级设计模式
  • 补充视频:youtube.com/playlist?list=PL6NenTZG6KrqdcyTwGf09uBxjI5pbXuT7
  • 题库:额外的练习题和示例解决方案

来源:coursepages/spd/README.md1-49 coursepages/spd/README.md20-27

基于类的程序设计实现

课程访问和先决条件

基于类的程序设计直接通过东北大学在 course.ccs.neu.edu/cs2510sp22/index.html 进行,课程周期为 13 周,每周需要 5-10 小时。先决条件包括完成 系统化程序设计高中数学 背景。

技术要求

  • 周期:13 周
  • 先决条件:系统化程序设计高中数学
  • 平台:东北大学直接访问
  • Discord 支持:discord.com/channels/744385009028431943/891411727294562314
  • 语言:基于 Java 的实现

课程进度

该课程实施面向对象设计原则,建立在 SPD 的系统设计方法论之上,从函数式设计规范过渡到基于类的程序组织和继承层次结构。

来源:README.md153

编程语言系列实现

三门课程的 Coursera 系列

编程语言系列通过三门连续的 Coursera 课程,结合特定的先决条件链和 Discord 支持频道,进行比较语言研究。

编程语言,第一部分

  • 平台:coursera.org/learn/programming-languages
  • 周期:5 周,每周 4-8 小时
  • 语言:Standard ML
  • 先决条件:系统化程序设计
  • Discord:discord.gg/8BkJtXN
  • 讲师说明:SPD 先决条件已通过 coursera.org/lecture/programming-languages/recommended-background-k1yuh 验证

编程语言,第二部分

  • 平台:coursera.org/learn/programming-languages-part-b
  • 周期:3 周,每周 4-8 小时
  • 语言:Racket(完整语言)
  • 先决条件:编程语言,第一部分
  • Discord:discord.gg/EeA7VR9

编程语言,第三部分

  • 平台:coursera.org/learn/programming-languages-part-c
  • 周期:3 周,每周 4-8 小时
  • 语言:Ruby
  • 先决条件:编程语言,第二部分
  • Discord:discord.gg/8EZUVbA

技术焦点领域

  • 第一部分 (ML):静态类型、类型推断、模式匹配、函数式编程
  • 第二部分 (Racket):动态类型、宏、解释器实现、词法作用域
  • 第三部分 (Ruby):面向对象设计、动态分派、元编程、鸭子类型

来源:README.md154-156

高级设计课程实现

面向对象设计

课程基础设施

  • 平台:东北大学直接访问 course.ccs.neu.edu/cs3500f19/
  • 周期:13 周,每周 5-10 小时
  • 先决条件:基于类的程序设计
  • Discord:discord.com/channels/744385009028431943/891412022120579103
  • 语言:基于 Java 的实现

技术焦点

  • 设计模式实现
  • SOLID 原则应用
  • 重构方法
  • 面向对象测试策略

软件架构

课程基础设施

  • 平台:Coursera coursera.org/learn/software-architecture
  • 周期:4 周,每周 2-5 小时
  • 先决条件:面向对象设计
  • Discord:discord.com/channels/744385009028431943/891412169638432788

技术焦点

  • 架构模式实现
  • 系统设计权衡
  • 基于组件的架构
  • 可扩展性和性能评估

先决条件链完成

该系列完成了核心编程轨道,软件架构是进入核心系统、核心理论或核心应用轨道的终端课程。

来源:README.md157-158

技术能力和学习成果

编程方法论技能

实施领域技术能力课程实施
系统设计HtDP 设计规范、数据驱动程序设计、BSL/ISL 实现系统化程序设计 通过 coursepages/spd/README.md
面向对象设计类层次结构、继承、多态、Java 实现基于类的程序设计面向对象设计
函数式编程高阶函数、模式匹配、类型推断、ML 实现编程语言,第一部分
动态语言宏系统、动态分派、元编程、Racket/Ruby编程语言,第二部分/第三部分
软件架构架构模式、组件设计、系统分解软件架构
测试方法单元测试、check-random 测试、测试驱动开发所有课程集成

语言运行时熟练度

学生通过实践实现完成该系列

  • BSL/ISL/Racket:通过 Dr. Racket IDE 和 ossu/spd-starters 项目
  • Standard ML:通过 SML/NJ 或 MLton 编译器
  • Java:通过 Eclipse/IntelliJ 开发环境
  • Ruby:通过 MRI 解释器

评估和项目完成

主要实施项目包括SPD课程主页基础设施中的space-invaders-starter.rktta-solver-starter.rkt,它们展示了系统化设计方法在复杂状态管理和算法问题解决中的应用。

来源:README.md136-148 coursepages/spd/README.md20-26

课程整合与先修课程流程

核心编程与课程结构的关系

来源:README.md135-159 README.md193-380

结论

核心编程部分为学生提供了程序设计、编程范式和软件架构方面的全面基础。通过完成这些课程,学生将掌握在各种情境和语言中设计、实现和评估软件系统所需的技能。这些课程中教授的系统化程序设计方法构成了后续更高级计算机科学主题的基础。

来源:README.md136-159