教学流程 · 16 周 64 学时
本课程的完整教学安排:每周讲哪些讲次、上机练什么、学时怎么分、怎么考核。节奏参照《Hive数据仓库工具》(16 周 / 64 学时 / 每周 2+2),结构参照《数据库原理与应用》(章—讲两级),练习强度参照《Java 程序设计》。
一、学时分配
与 Hive 课程一致:64 学时 / 4 学分 / 16 周
| 项目 | 学时 | 说明 |
|---|---|---|
| 理论讲授 | 32 | 每周 2 学时,对应 28 讲 + 4 学时阶段回顾 |
| 上机实践 | 32 | 每周 2 学时,16 次实训,与讲授内容同步推进 |
| 合计 | 64 | 4 学分 |
二、16 周教学进度表
理论 2 学时 + 实践 2 学时
| 周次 | 讲次 | 教学内容 | 上机实训 / 作业 | 学时 |
|---|---|---|---|---|
| 第1周 | 1.1 / 1.2 | Scala 是什么、JVM 生态位置;环境搭建、REPL 与第一个程序 | 实训1:装 JDK + sbt(或 scala-cli),跑通 HelloWorld 与 REPL | 2+2 |
| 第2周 | 2.1 / 2.2 | val 与 var、类型推断;基本类型与三种字符串插值 | 实训2:个人信息卡输出(val + 插值 + 类型转换) | 2+2 |
| 第3周 | 2.3 / 3.1 | 运算符与块表达式;if/else 作为表达式 | 实训3:成绩等级判定与分段计费(表达式写法) | 2+2 |
| 第4周 | 3.2 / 3.3 | while、for、for-yield 与守卫;match 表达式 | 实训4:九九乘法表、列表筛选与成绩分级 match | 2+2 |
| 第5周 | 4.1 / 4.2 | 定义函数与参数;函数是值(匿名函数、函数类型、柯里化、闭包) | 实训5:带默认参数的工具函数 + 匿名函数排序 | 2+2 |
| 第6周 | 4.3 | 高阶函数:map / filter / reduce / flatMap / foreach | 实训6:用高阶函数重写实训 4 的循环代码 | 2+2 |
| 第7周 | 5.1 / 5.2 | List / Array / Vector;Map、Set、Tuple | 实训7:成绩表的增删查改与去重 | 2+2 |
| 第8周 | 5.3 / 6.1 | 可变与不可变集合、ListBuffer;class 主构造器与访问控制 | 实训8:按班级分组统计平均分;写一个 Student 类 | 2+2 |
| 第9周 | 6.2 / 6.3 | object 伴生对象与 apply;trait 混入与多重继承 | 实训9:伴生对象工厂 + 用 trait 组合“可打印/可比较” | 2+2 |
| 第10周 | 7.1 / 7.2 | 继承、抽象类、override 与多态;case class 与自动方法 | 实训10:抽象类与多态示例;用 case class 重建学生模型 | 2+2 |
| 第11周 | 7.3 | sealed trait + match:用模式匹配做数据建模与穷尽检查 | 实训11:订单状态模型(sealed)与分支匹配 | 2+2 |
| 第12周 | 8.1 / 8.2 | try/catch/finally 与自定义异常;Option 取值与链式处理 | 实训12:把“层层判空”的代码改成 Option 链 | 2+2 |
| 第13周 | 8.3 / 9.1 | Either 与 Try 的选型;类型参数与上下界 | 实训13:写一个返回 Either 的校验函数;泛型方法收敛重复代码 | 2+2 |
| 第14周 | 9.2 / 10.1 | implicit 隐式参数、隐式类与 Scala 3 的 given;文件读写 | 实训14:读 CSV 统计并按规则筛选(Source / Using) | 2+2 |
| 第15周 | 10.2 | JSON 解析与分组统计、报表输出 | 实训15:成绩/新闻 JSON 解析 + 报表生成 | 2+2 |
| 第16周 | 10.3 | Future 并发;综合项目验收与答辩 | 实训16:并发计算 + 综合项目演示与答辩 | 2+2 |
三、十章与教学的对应
| 章 | 标题 | 讲次 | 周次 | 对应实训 |
|---|---|---|---|---|
| Scala 入门与环境 | 入门 | 1.1、1.2 | 第1周 | 实训1 |
| 变量、类型与表达式 | 语法 | 2.1、2.2、2.3 | 第2-3周 | 实训2-3 |
| 控制结构 | 流程 | 3.1、3.2、3.3 | 第3-4周 | 实训3-4 |
| 函数与高阶函数 | 函数 | 4.1、4.2、4.3 | 第5-6周 | 实训5-6 |
| 集合 | 集合 | 5.1、5.2、5.3 | 第7-8周 | 实训7-8 |
| 类与对象 | 面向对象 | 6.1、6.2、6.3 | 第8-9周 | 实训8-9 |
| 面向对象进阶 | 进阶 | 7.1、7.2、7.3 | 第10-11周 | 实训10-11 |
| 异常与 Option | 健壮性 | 8.1、8.2、8.3 | 第12-13周 | 实训12-13 |
| 泛型与隐式 | 类型系统 | 9.1、9.2 | 第13-14周 | 实训13-14 |
| 实战:文件、JSON 与并发 | 实战 | 10.1、10.2、10.3 | 第14-16周 | 实训15-16 |
四、考核与成绩构成 建议方案,可按教学实际调整
| 类别 | 组成部分 | 占比 |
|---|---|---|
| 平时成绩 | 出勤与课堂表现 | 10% |
| 平时成绩 | 上机实训(16 次) | 30% |
| 期末考试 | 综合项目(含代码与答辩) | 40% |
| 期末考试 | 闭卷机试(语法 + 集合 + 模式匹配) | 20% |
说明本课程为自主设计,没有上级下发的课程标准,考核方案为建议值:强调“过程 + 项目”,平时实训占 30%,期末以项目与机试为主。若学校已有考核要求,以学校文件为准。
五、与另外几门课的教学节奏对比
对照结论:Scala 的周次/学时/章讲密度与另外几门课处于同一量级
| 课程 | 章/单元数 | 讲/节数 | 总学时 | 周次 | 每周节奏 | 实训形式 |
|---|---|---|---|---|---|---|
| Hive数据仓库工具 | 8 单元 | —(按任务拆分) | 64 | 16 周 | 2 理论 + 2 实验 | 15 个周实训 |
| 数据库原理与应用 | 5 章 | 25 讲 | 材料未标注 | — | 每讲 1 个知识点闭环 | Navicat + SQL 实操 |
| Java 程序设计 | 11 章 | —(773 页课件) | 材料未标注 | — | 每章 4-8 个知识点 | 示例代码 + 上机 |
| Python 程序设计 | 10 章 | 28 讲 | 64 | 16 周 | 2 理论 + 2 实验 | 16 个周实训 + 1 个综合项目 |
| 动态网页数据采集与预处理 | 7 项目 | 14 个任务 | 64(建议) | 16 周 | 2 理论 + 2 实验 | 16 次实训 + 1 个综合系统 |
| Scala 程序设计(本课) | 10 章 | 28 讲 | 64 | 16 周 | 2 理论 + 2 实验 | 16 个周实训 + 1 个综合项目 |
为什么这样排Scala 的语法密度高于 Python、低于 Java,所以 10 章可以覆盖到“函数式 + 面向对象 + 工程实践”;但“函数是值”(第 4 章)与“case class + 模式匹配”(第 7 章)必须放慢——这两块既是 Scala 的特色,也是学 Spark 的地基;最后两周留给综合项目,与其他课程一致。
六、每周怎么上(课堂结构建议)
| 环节 | 时长 | 做什么 |
|---|---|---|
| 回顾与提问 | 10 分钟 | 回顾上次实训问题,抽查 2-3 个知识点 |
| 讲授(2 学时) | 80 分钟 | 按讲次推进:概念 → REPL 演示 → 学生跟敲 → 常见编译错误 |
| 上机(2 学时) | 90 分钟 | 按实训任务练习,教师巡回答疑;结束前 10 分钟点评 |
| 作业布置 | 5 分钟 | 布置本周实训报告与练习(见“编程练习”页) |