Files
iOS/iOS部2026十课初步规划.md
2026-09-03 13:19:13 +08:00

158 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# iOS 部 2026 十课初步规划
> 状态:定稿校对稿,待社团审核;保留现有文件名
> 建立时间:2026-07-22
> 最新修订:2026-09-03
> 上位文件:[教学方案](iOS部2026教学方案.md);本规划负责课程总体安排,逐课细则见下表链接
## 一、规划范围
iOS 部自主课程共 10 节:1 节试听课+9 节录取后的部门课,面向接近零基础的新生。课程定位、培养目标和评价原则以[教学方案](iOS部2026教学方案.md)为准。
本规划说明每节课讲什么、各课怎样衔接,以及共同的学习与提交安排。各节知识边界、作业最低与建议标准、验收重点由逐课课纲规定,不在总文件中重复维护另一套细则。
## 二、工作室时间线与课程位置(待确认)
| 时间阶段 | 工作室活动 | iOS 部在其中的职责 |
|---|---|---|
| 国庆前 | 面向全校的统一公开课 | 由教学部负责,不计入 iOS 部自主课程课时 |
| 国庆前、部门筛选前 | iOS 部试听课 | 部门介绍、iOS 科普、作品展示和报名答疑 |
| 国庆期间 | 笔试与部门面试 | iOS 部参与筛选,确认进入部门课的学员 |
| 国庆后至寒假前 | 各部门课程 | iOS 部完成 9 节轻量入门课 |
| 寒假期间 | 爱特杯 | 愿意继续实践的学员依据兴趣推进小项目 |
| 寒假结束后 | 第二次面试或成果交流 | 展示学习过程、作品和后续方向 |
| 大一下学期 | 自由立项、组队与竞赛 | 根据个人兴趣继续学习和实践 |
注:教学部统一公开课与 iOS 部试听课是两套不同活动。iOS 部试听课不要求学员提前安装 Xcode,也不以设备或技术基础作为参与门槛。
## 三、课程组织与时间口径
- 部门课以线上直播为主,预计学员不超过 10 人,约 2 名授课干部提供教学支持;具体排课和人员安排另行确认。
- 核心讲解尽量在约 40 分钟内完成;60 分钟是保守预估,不要求讲满,也不是硬性上限。实际节奏由授课干部结合内容、互动和答疑安排。
- 课程可采用共同跟做,或授课干部 Demo 讲解、学员课后完成同源作品两种形式,不按课次划分两套文件规则。
- 前七节作品原则上独立;部门课 08 优先整理旧作品,没有合适旧作品时由授课干部提供轻量起点,避免积累长期项目债务。
- 部门课 01 的基础要求是成功配置并运行 Demo,个人修改可选;部门课 02–08 保留个人可见修改与真实 Build/Run。
- 部门课 09 只作回顾、分享和答疑,不安排新技术作品、GitHub PR、Demo 或正式课后作业。
### 课后投入与分层
有实践作业时,每次基础课后实践建议按约 30–60 分钟控制范围,作为备课时估量负担的参考,不是计时验收或要求学员必须投入的时长。实际耗时尚未验证,具体提交时间由授课干部另行说明。
- **最低完成标准**:对应本课的基础作品和真实运行结果。
- **建议完成标准**:自愿选择的个性化、扩展或兴趣探索,不影响基础通过。
- 到达建议投入仍未完成时,可以提供当前项目、实际现象和已尝试步骤;未完成不成为下节课的功能欠债。
### 设备与首次配置
- 先了解学员可用的 Mac 和系统情况,尽量使用学员已有设备;没有合适设备时再协调社团机器。
- 社团 Mac mini 较旧,课程负责人个人 MacBook 使用较新的测试版系统,两者环境差异较大,不能以个人机器上的结果代表社团设备兼容性。
- 如需使用社团机器,课程负责人也准备同类社团机器核对环境;Xcode、macOS、Simulator Runtime、最低部署版本及 SwiftData 支持情况在备课阶段实际确认。
- 部门课 01 前提前发送安装说明和资料,鼓励先配置,不强制提前完成。课堂讲解完整流程,不集体等待大型下载;未完成者课后继续,尽量在部门课 02 前跑通环境。
## 四、课程衔接与授课方式
整体认识按“第一次运行 → AI 与 Git → 页面 → 交互 → 信息流 → 内存数据 → 持久化 → 项目组织 → 回顾与继续学习”递进。
共同跟做型课程可依次展示目标效果、解释核心关系、完成基础版本、尝试小改动并答疑。Demo 讲解型课程由授课干部运行并讲解基础示例,学员观察、预测、追踪关键关系,再参考资料完成同源作品。不统一规定分钟表、PPT 页数或完整试讲。
## 五、十节课程安排
| 课次与课纲 | 主题与核心认识 | 基础结果或参与方式 |
|---|---|---|
| [试听课:部门与开发概览](逐课课纲/iOS试听课_部门与开发概览.md) | 部门学习方式、iOS 开发地图、真实作品和后续课程 | 形成方向认识,提出兴趣与顾虑;不要求安装、编程或技术考核 |
| [部门课 01:第一次运行与 SwiftUI 组件万花筒](逐课课纲/部门课01_第一次运行与SwiftUI组件万花筒.md) | Xcode 配置、模板项目、模拟器和标准组件观察 | 成功 Build/Run 组件万花筒;个人修改可选,无正式上传要求 |
| [部门课 02:AI 与 Git 开发工具入门](逐课课纲/部门课02_AI与Git开发工具入门.md) | AI 小步开发循环,部门仓库、Fork、本地仓库、分支与 PR 的关系 | 尝试小型独立 SwiftUI 任务、运行并提交 PR;未完成或工具故障可记录当前状态 |
| [部门课 03:个人兴趣名片与页面组合](逐课课纲/部门课03_个人兴趣名片与页面组合.md) | View 层级、三种 Stack、Modifier 作用对象与顺序 | 完成个性化名片,保留内容与样式修改,实际 Build/Run |
| [部门课 04:小植物补水卡与交互状态](逐课课纲/部门课04_小植物补水卡与交互状态.md) | Button、唯一状态、`@State`、`@Binding` 和条件反馈 | 实现补水、上限、重置及重启归零 |
| [部门课 05:校园地点小指南与列表到详情的信息流](逐课课纲/部门课05_校园地点小指南与列表到详情信息流.md) | 轻量模型、数组、List、值驱动导航和只读详情参数 | 在课堂两条数据基础上补充第三个地点,不同选择进入对应详情 |
| [部门课 06:从输入到清单与内存数据](逐课课纲/部门课06_从输入到清单与内存数据.md) | 输入草稿、模型、数组和 List 更新 | 完成自选主题的单字段新增清单,不要求持久化 |
| [部门课 07:习惯印章簿与轻量持久化](逐课课纲/部门课07_习惯印章簿与轻量持久化.md) | `@AppStorage` 简单设置、SwiftData 新增与读取、跨启动恢复 | 完成个性化印章簿,并验证同一个 App 彻底终止后重新启动仍能恢复数据 |
| [部门课 08:项目组织与 MVVM 架构入门](逐课课纲/部门课08_项目组织与MVVM架构入门.md) | Treversi 工程阅读,Model、ViewModel、View 职责与数据流 | 渐进整理旧作品,保留核心行为和一处可见修改;说明用于本课作业反馈,不安排到部门课 09 技术抽查 |
| [部门课 09:学习回顾与继续出发](逐课课纲/部门课09_学习回顾与继续出发.md) | 回顾课程地图,交流学习、项目与比赛经验,介绍后续入口 | 约 2–3 分钟轻量分享与集中答疑;无新作品、PR、Demo 或正式课后作业 |
各节仍按原有独立作品与知识范围推进,不新增统一大型 App、完整 CRUD 或逐人技术答辩。
## 六、AI 与 GitHub 共同安排
### AI 使用
部门课 02 用授课干部另行发布的小型独立任务体验“提出目标 → 生成起点 → Build/Run → 观察结果 → 反馈与调整”。后续课程可继续用 AI 解释、局部修改和排错,但不要求所有作业使用 AI。
学员不必解释全部生成代码,应能简要说明自己的要求、实际结果和当前问题。AI 输出不能代替运行验证,不提供密码、令牌、私人资料或未经授权的项目内容。
### GitHub 作品提交
- GitHub 是课程作品与学习记录平台;社团 Gitea 是本套课程文件的审阅平台,两者不混用。
- 部门课 02 演示部门公开仓库、个人 Fork、本地仓库、分支、Commit、Push 和 PR 的最小关系。部门仓库可在本节现场演示时建立,不要求在文件审定前建成。
- 学员在个人 Fork 的作业分支中只修改自己的目录,向部门公开仓库发起 PR,不需要部门仓库直接写入权限。
- 后续提交前按课堂确认的流程同步 Fork、建立本次作业分支;具体登录方式、工具命令、远端关系、目录和 PR 模板在备课阶段结合实际仓库确定。
- PR 简要记录做了什么、是否使用 AI、实际运行结果和问题;本课要求的简短说明以对应课纲为准,不要求重复另写 README。
- 未完成可使用 Draft PR;若账号、网络或 Git 故障导致无法发起 PR,可按授课干部约定渠道提供当前项目、错误和尝试记录。参与记录不等于基础作品已完成或 PR 已合并。
- 不强制推送,不修改其他学员目录或公共结构;出现同步或提交错误时保留完整错误并求助。
### 隐私与运行证据
- 公开内容不包含真实姓名、学号、联系方式、账号凭证、密钥、未经授权的照片或私人轨迹;提交作者邮箱和附件同样需要检查。
- 仓库使用适合 Swift/Xcode 的忽略规则,避免提交构建缓存和个人环境文件;具体配置留待备课。
- 本人设备与获准借用的社团设备均需保护个人账号和凭证,不共用个人凭证;具体登录、邮箱隐私和退出安排留待备课。
- 真实 Build/Run 是实践底线。静态截图记录结果,动态交互和持久化需要通过实际操作核对,不能只看图片推断。
- 不统一要求 GitHub 视频附件,部门课 04 也不强制上传录屏。授课干部可运行源码,或按本课需要约定简短运行记录;媒体细节在备课时确定。
- 课堂复习可选择少量作品了解共同问题,不演变为逐人技术答辩;部门课 08 的职责说明留在本课作业反馈,不转移到部门课 09。
## 七、文件审阅与后续备课
当前工作是文件定稿校对,后续流程为:
- [x] 课程负责人完成文件校对。
- [ ] 提交 issue,请相关人员预览、审核并最终定稿。
- [ ] 审定后分发逐课课纲。
- [ ] 授课干部自行安排备课时间,准备具体讲解、Demo 和必要的作业材料。
逐课课纲是备课纲领,不是完成备课的证明。PPT、文案、Demo、起始项目、正式作业文档和 Treversi 源码在实际备课时准备,不作为本轮文件审定前置条件,也不由本轮自动创建。
不要求每名授课干部逐课试学或完整试讲一次。此前“干部试学”指课程负责人为了对知识点和技术栈有数而进行的学习梳理。授课干部仍需对实际采用的示例和流程进行必要核对,但具体准备方式与时间由本人安排。
部门课 09 只需课程回顾和交流材料,不要求代码 Demo 或正式课后作业文档。
## 八、备课阶段尚待实际确认的条件
以下是后续实施信息,不是本轮文件定稿的待办门槛,也不能视为已验证:
- 学员与社团设备能运行的环境组合,尤其是老旧 Mac 的 Xcode、系统、Runtime 和 SwiftData 兼容性。
- 部门 GitHub 仓库、登录与邮箱隐私设置、Fork/PR 实际流程、模板和工具失败时的求助方式。
- 各节起始项目、演示案例和正式题目能否在所用环境运行,实际课堂容量和作业耗时是否合适。
- Treversi 真实源码的项目结构、`GameState`、`PreviewBoardState` 和观察关系;课纲中的阅读方向不代表源码实现已核对。
- 试听课及部门课具体日期、停课安排、作品展示与报名信息。
- 爱特杯或其他比赛的当期规则,以及课程参与记录在后续部门安排中的正式用途。
若实际条件影响既定知识范围或最低标准,应单独提出调整并确认,不自行扩课、增加考核或替换已定主题。
## 九、课程资源角色
以下为备课参考入口,不是要求学员通读的教材,也不表示当前材料或流程已经验证:
- Apple Develop in Swift Tutorials:授课干部准备零基础示例时的实践参考。
- Swift Coding Club Meeting Plans:课堂活动、迷你作品和趣味变式参考。
- The Swift Programming Language:授课干部和有兴趣学员查阅 Swift 语法,不要求新生顺序通读。
- Apple App Dev Training、Stanford CS193p:授课干部进阶和课后自选资源,不作为九节课共同进度。
- AI 工具:解释概念、提出局部修改和协助排错,不能代替 Build/Run 与个人判断。
- [Apple View fundamentals](https://developer.apple.com/documentation/SwiftUI/View-fundamentals):授课干部准备部门课 3 的 View、`body` 和界面层级口径时使用。
- [Apple Stack 布局说明](https://developer.apple.com/documentation/swiftui/building-layouts-with-stack-views):授课干部准备三种 Stack、对齐和页面拆分示例时使用。
- [Apple Configuring views](https://developer.apple.com/documentation/swiftui/configuring-views):授课干部准备 Modifier 作用对象与顺序示例时使用。
- [Apple Managing user interface state](https://developer.apple.com/documentation/swiftui/managing-user-interface-state):授课干部准备部门课 4 的状态所有权、单一事实来源和 Binding 口径时使用。
- [Apple State](https://developer.apple.com/documentation/swiftui/state):授课干部核对 `@State`、`@Binding` 和 `$` 连接的基本行为时使用。
- [Apple Button](https://developer.apple.com/documentation/SwiftUI/Button):授课干部准备 Button label 与 action 的初学者解释时使用。
- [Apple TextField](https://developer.apple.com/documentation/SwiftUI/TextField):授课干部准备部门课 6 的输入草稿和 Binding 口径时使用。
- [Apple AppStorage](https://developer.apple.com/documentation/swiftui/appstorage):授课干部准备部门课 7 的简单设置、存储标识、默认值和 Binding 口径时使用。
- [Apple UserDefaults](https://developer.apple.com/documentation/foundation/userdefaults):授课干部核对简单非敏感设置的适用边界,不在课堂上展开直接调用。
- [Apple Preserving your app’s model data across launches](https://developer.apple.com/documentation/swiftdata/preserving-your-apps-model-data-across-launches):授课干部准备部门课 7 的持久模型、保存和跨启动读取因果链时使用。
- [Apple ModelContainer](https://developer.apple.com/documentation/swiftdata/modelcontainer):授课干部核对部门课 07 的模型存储容器;其他类型另参照对应官方文档。
- [Apple App organization](https://developer.apple.com/documentation/swiftui/app-organization):授课干部准备部门课 8 的 App 入口、Scene、View 和项目组成口径时使用。
- [Apple Managing model data in your app](https://developer.apple.com/documentation/swiftui/managing-model-data-in-your-app):授课干部准备部门课 8 的模型、可观察状态和 View 数据连接口径时使用。
- [GitHub CLI 登录说明](https://cli.github.com/manual/gh_auth_login):授课干部准备第 2 节浏览器授权和 HTTPS 登录流程时使用。
- [GitHub CLI Fork 说明](https://cli.github.com/manual/gh_repo_fork):授课干部验证创建并克隆个人 Fork 以及远端配置时使用。
- [GitHub CLI Fork 同步说明](https://cli.github.com/manual/gh_repo_sync):授课干部验证部门课 3 以后有作业提交时同步个人 Fork 的固定流程。
- [GitHub CLI PR 说明](https://cli.github.com/manual/gh_pr_create):授课干部验证从个人 Fork 的作业分支发起 PR 时使用。
- [GitHub 附件说明](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files):仅在实际选用附件时核对格式、限制和公开访问边界,不代表要求学员上传视频。
- [GitHub 提交邮箱设置](https://docs.github.com/en/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address?platform=mac):授课干部指导学员使用 `noreply` 地址保护公开提交中的个人邮箱。