1. 小班讨论课的设计初衷与价值
在计算机系统课程的教学实践中,传统的大班授课模式往往难以兼顾每个学生的个性化需求。HNU计算机系统课程组创新性地引入了小班讨论课机制,将原本50-60人的大班级拆分为10-12人规模的小组,由助教带领开展深度研讨。这种模式特别适合系统类课程的特点——既需要理解底层原理,又要培养解决实际工程问题的能力。
我在担任课程助教期间发现,小班讨论能有效解决三个教学痛点:一是弥补理论课与实验课之间的断层,二是及时发现并纠正学生的理解偏差,三是通过同伴学习(Peer Learning)提升知识留存率。以第一次讨论课为例,我们围绕"程序在计算机中的执行过程"这个主题,设计了层层递进的问题链,引导学生从高级语言逐步深入到机器指令层面。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 讨论课1的核心议题解析
2.1 从Hello World看程序生命周期
讨论课以经典的Hello World程序为切入点,但要求学生们思考远比表面更深入的问题:
c复制#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
我们引导学生追踪这个简单程序的完整生命周期:
- 预处理阶段:头文件展开与宏替换的实际表现
- 编译阶段:如何通过
gcc -S观察生成的汇编代码 - 链接阶段:动态链接与静态链接的差异对比
- 加载运行:操作系统如何将程序映射到内存空间
关键技巧:使用
gcc --verbose选项可以显示完整的编译过程细节,这对理解工具链工作流程非常有帮助。
2.2 内存布局的实践观察
通过实际案例演示不同变量在内存中的分布情况:
c复制// memory_layout.c
int global_var;
static int static_var;
const int const_var = 10;
int main() {
int stack_var;
static int local_static;
char *heap_var = malloc(100);
// 打印各变量地址观察分布
}
讨论重点包括:
- 使用
size命令查看程序段大小 - 通过
objdump -h分析可执
