Skip to content

Commit 56e7f30

Browse files
committed
Add academic integrity section
1 parent c8b2d3a commit 56e7f30

File tree

1 file changed

+56
-20
lines changed

1 file changed

+56
-20
lines changed

README.md

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,36 @@
44

55
### 1. 实验目标 🎯
66

7-
通过编写一个支持作业控制的Unix Shell程序,深入理解进程控制和信号处理的核心概念。
7+
通过编写一个支持作业控制的 Unix Shell 程序,深入理解进程控制和信号处理的核心概念。
88

99
### 2. 实验概述 📝
1010

11-
Shell是一个交互式命令行解释器,负责接收用户指令并执行相应程序。本实验要求实现一个简化版的Shell,包含基本的命令解析、进程创建、信号处理、作业控制和I/O重定向功能。实验提供了骨架代码和完整的命令解析器,你需要实现核心执行逻辑和控制机制。
11+
Shell 是一个交互式命令行解释器,负责接收用户指令并执行相应程序。本实验要求实现一个简化版的 Shell,包含基本的命令解析、进程创建、信号处理、作业控制和I/O重定向功能。实验提供了骨架代码和完整的命令解析器,你需要实现核心执行逻辑和控制机制。
1212

13-
关于Shell原理和实现方法的详细指导,请参阅[实验指导文档](docs/guide.md)
13+
关于 Shell 原理和实现方法的详细指导,请参阅[实验指导文档](docs/guide.md)
1414

1515
### 3. 实验要求 📋
1616

1717
#### 3.1 基本功能(必做)
1818

19-
- 命令提示符为`"tsh> "`
19+
- 命令提示符为 `"tsh> "`
2020
- 执行命令行程序(前台或后台运行)
21-
- 实现作业控制(bg、fg等
21+
- 实现作业控制(bg、fg 等
2222
- 处理键盘信号(Ctrl+C、Ctrl+Z)
23-
- 实现基本的I/O重定向`<``>`
23+
- 实现基本的 I/O 重定向`<``>`
2424
- 回收终止的子进程
2525

2626
#### 3.2 内建命令
2727

28-
- `quit`/`exit`终止shell
28+
- `quit`/`exit`终止 shell
2929
- `jobs`:列出所有后台作业
3030
- `bg <job>`:将一个停止状态的后台作业转为运行状态
3131
- `fg <job>`:将一个后台作业转为前台运行
3232
- `cd <dir>`:切换当前工作目录
3333

3434
#### 3.3 输出格式规范 📋
3535

36-
为了确保自动化测试的正确性,你的Shell必须严格遵循以下输出格式
36+
为了确保自动化测试的正确性,你的 Shell 必须严格遵循以下输出格式
3737

3838
##### 作业状态消息
3939

@@ -56,10 +56,10 @@ Shell是一个交互式命令行解释器,负责接收用户指令并执行相
5656

5757
##### `bg`/`fg` 命令输出
5858

59-
- `bg`命令输出:`[%d] (%d) %s &`
59+
- `bg` 命令输出:`[%d] (%d) %s &`
6060
- 例如:`[1] (12345) /bin/ls -l &`
6161

62-
- `fg`命令输出:不需要特殊输出,只显示命令本身
62+
- `fg` 命令输出:不需要特殊输出,只显示命令本身
6363

6464
##### 错误消息
6565

@@ -75,7 +75,7 @@ Shell是一个交互式命令行解释器,负责接收用户指令并执行相
7575
- 进程不存在:`(%d): No such process`
7676
- 例如:`(12345): No such process`
7777

78-
- 作业ID不存在`%%%d: No such job`
78+
- 作业 ID 不存在`%%%d: No such job`
7979
- 例如:`%1: No such job`
8080

8181
### 3.4 附加任务(选做)🌟
@@ -128,16 +128,23 @@ Shell是一个交互式命令行解释器,负责接收用户指令并执行相
128128
├── include
129129
│ └── shell.h # 头文件,包含函数声明与数据结构
130130
├── Makefile # 用于编译项目
131-
└── src
132-
├── builtins.c # 内置命令的实现
133-
├── jobs.c # 作业控制相关函数
134-
├── main.c # 主函数
135-
├── parser.c # 命令解析相关函数
136-
├── shell.c # Shell 核心逻辑
137-
├── signals.c # 信号处理函数
138-
└── utils.c # 工具函数
131+
├── src
132+
│ ├── builtins.c # 内置命令的实现
133+
│ ├── jobs.c # 作业控制相关函数
134+
│ ├── main.c # 主函数
135+
│ ├── parser.c # 命令解析相关函数
136+
│ ├── shell.c # Shell 核心逻辑
137+
│ ├── signals.c # 信号处理函数
138+
│ └── utils.c # 工具函数
139+
├── tests # 测试用例目录
140+
│ └── cases # 包含多个测试点
141+
└── tshref # 参考实现
139142
```
140143

144+
> [!NOTE]
145+
>
146+
> 提供的代码框架更像是一个起步代码(starter code),如果你觉得现有框架限制了你的实现方式,可以根据需要直接修改代码结构,只要最终实现满足功能要求且能通过测试即可。
147+
141148
命令解析器提供了以下结构:
142149

143150
```c
@@ -214,7 +221,7 @@ python grader.py -d 5-jobs
214221
- 命令执行与进程管理
215222
- 信号处理
216223
- 作业控制
217-
- I/O重定向
224+
- I/O 重定向
218225
- 代码风格与注释
219226

220227
- 选做任务(20%)
@@ -239,6 +246,35 @@ python grader.py -d 5-jobs
239246

240247
参与评优无需额外申请,所有按时提交的作业都将自动纳入评选范围。我们期待看到你富有创意且高质量的 Shell 实现,展现你对操作系统概念的深刻理解和实际应用能力。
241248

249+
#### 6.2 学术诚信 🔍
250+
251+
我们高度重视学术诚信,它是计算机科学教育的基石。我们期望你能够独立完成实验,真正掌握系统编程的核心概念和技能。
252+
253+
- **鼓励的行为**
254+
- 与同学讨论实验的概念性问题和整体设计思路
255+
- 在课堂或实验课上请教助教关于实验中遇到的困难
256+
- 查阅官方文档、教科书和其他公开学习资源
257+
258+
- **禁止的行为**
259+
- 抄袭或共享代码(包括但不限于同学之间、网络资源等)
260+
- 试图绕过或破解测试系统
261+
- 让他人代为完成作业
262+
263+
> [!WARNING]
264+
>
265+
> 我们使用代码相似度检测工具对所有提交的代码进行检查。一旦发现抄袭或其他学术不端行为,将严格按照学校相关规定处理。
266+
267+
#### 6.3 关于 AI 工具使用 🤖
268+
269+
在现代编程环境中,ChatGPT、Claude、DeepSeek 等大型语言模型以及基于它们的工具(如 GitHub Copilot、Cursor 等)已成为许多开发者的辅助工具。我们认可这些工具在学习过程中的价值,同时也希望你合理使用它们:
270+
271+
1. **理解优先**:AI 工具可以帮助解释概念、提供思路或优化代码片段,但不应替代你对底层原理的理解。使用这些工具前,请先尝试自己分析问题。
272+
2. **学习而非依赖**:将 AI 工具视为学习助手而非解决方案提供者。如果使用 AI 生成代码,确保你完全理解每一行代码的作用及其背后的原理。同时,使用 AI 工具直接生成完整的实验解决方案并提交为自己的工作是不允许的。这不仅违背了学术诚信原则,也会阻碍你获得通过实验设计的学习体验。
273+
3. **批判性思考**:AI 生成的内容可能存在错误或不适合特定场景。建议始终以批判性思维评估其建议,并根据你对操作系统概念的理解进行调整。
274+
5. **在报告中声明**:如果你在实验过程中使用了 AI 工具获取重要帮助,建议在实验报告中简要说明使用方式和范围。
275+
276+
合理使用AI工具可以增强学习效果,但最终的理解和代码实现应反映你自己的努力和思考。操作系统是计算机科学的核心领域,亲自实现这些机制将为你的技术成长奠定坚实基础。
277+
242278
### 7. 提交方式 📤
243279

244280
使用 GitHub Classroom 进行提交。请你确保所有代码已提交到你的对应仓库,GitHub Actions 会自动运行测试,其输出作为我们的评分依据。

0 commit comments

Comments
 (0)