PPCA 2023
简介
时间
- ACM:2023.06.19~2023.07.28,周一~周五,共六周
- 工科:2023.06.19~2023.07.14,周一~周五,共四周
- 机考日:上午 9:00~11:00 下午 13:00~18:00
- 非机考日:上午 9:00~12:00 下午 14:00~17:00
地点
东下院 502
分数构成
- RISC-V CPU 模拟器(第 1 周、第 2 周)
- Verilog 硬件描述语言 小作业(第 2 周)
- 机考(第 2 周起,工科共 3 次,ACM 班共 5 次)
- 分组项目四选一(第 3 周到 PPCA 结束)
- 数据挖掘 (codemate)
- Ray Tracer 光线追踪
- DHT 分布式哈希表
- Raft 分布式一致性协议
- Network 网络协议
- 自选主题演讲 (bonus)
- 签到扣分:有事请提前与当班助教请假,有签到,无故缺席将被扣除分数。
机考
- 第 2 周周四、第 3 周起每周三下午 13:00~18:00,5 小时,可提前离场,工科共 3 次,ACM 班共 5 次
- A 卷为传统算法题,赛制同程序设计/数据结构课,工科前三题,ACM 班后三题
- B 卷为创新综合应用题,包含一道题
- A/B 二选一,最终评分只与每个人在两组试卷的答题者中的排名有关,二者取 min
- 对于 B 卷,分数将根据答案的优劣评判(这意味着,任何格式正确的答案大都是有点分数的)
- 如果某道题提交的答案得分达到了一条预先设定的 Ground Truth 的线(如果真的有的话),则此次机考这位参赛者可以不参加排名,成绩按满分计
- 机考允许并鼓励:
- 思考创新
- 寻找规律
- 机考严禁:
- 联网查询资料(有要求除外)
- 使用 OJ 上曾写过的代码
- 使用预先准备的模版
- 查看其它同学代码
- 把自己代码给同学看
- 帮助同学计算答案
- 其它一切不诚实行为
自选主题演讲
- 主动向助教报名,自定主题
- 限制主题类主题演讲,每人 20 分钟左右
- 要求
- 如果是针对某个特定的领域,限制为综述
- 如果是技术类的演讲,需要完整从背景到方法
- 可以参考的主题有:
- Some C++ features and design models: RAII, smart pointer, rvalue reference
- Concurrency: mutex, lock, conditional variable, etc.
- Common types of ISA
- Other programming languages
- PPCA 是一个非常好的交流想法的时机,希望有想法的同学积极报名演讲
RISCV 模拟器
使用 C++ 实现一个 CPU 模拟器,指令集为 RV32I。
提交链接:https://acm.sjtu.edu.cn/OnlineJudge/homework/572
材料:
Verilog 小作业
提交链接:https://acm.sjtu.edu.cn/OnlineJudge/homework/569
材料:文件:Verilog-Practice(2023).zip
Verilog 介绍:文件:Verilog(2023).pdf
数据挖掘 (codemate)
项目介绍:文件:基于大语言模型的数据挖掘任务(2023).pptx
时间安排
ACM 班
第一周:学习爬虫,爬取 wikipidia 和 CSDN 的网站数据
第二周:学习随机森林算法,使用 gpt3.5 自助标注数据集,最终训练爬虫数据分类器
第三周:学习爬虫高级技巧(并行爬虫)
第四周:学习更多分类器,通过不同的方式进行分类
工科
第一周:学习爬虫,爬取 wikipidia 和 CSDN 的网站数据
第二周:学习随机森林算法,使用 gpt3.5 自助标注数据集,最终训练爬虫数据分类器
Ray Tracer
项目仓库:https://github.com/ACMClassCourse-2022/Summer-Ray-Tracer
Tasks
Task 0: Preparation
Just do some preparation work, including:
- Read the README carefully, so that you know how to start your project
- Correctly install Rust and Cargo
- Figure out how to compile rust code, using
rustc
orcargo
- Learning Rust language. Read a few chapters of the Rust Programming Language book
- The first 6 chapters are enough for you to start your project
- Chapter 10, 15, 16... the more, the better
- Maybe at first you just know how to write a Hello World program or how to output the first image in the book, as long as you can complete the current task, it is enough
Task 1 (20 pts): Ray Tracing In One Weekend
- Complete the first book
- Save each output image in the output folder
Task 2 (20 pts): Ray Tracing: The Next Week
- Complete the second book
- Save each output image in the output folder.
Task 3 (20 pts): Ray Tracing: The Rest of Your Life
- Complete the third book
- Save each output image in the output folder
- Write a simple report about the PDF method in this book, at least 2 pages
Task 4 (20 pts): Advanced features
- Multi-threading to accelerate your ray tracer (strongly recommended)
- Make a benchmark for your ray tracer
- Support for
.obj
file- An obj-loader is needed
- Polygons are supported (optional)
- CG-related techniques
- Edge detection, normal mapping, interpolation, texture mapping, rasterization, etc.
- Lens flare, depth of field, axis shift, exposure, etc.
- Read interesting books(e.g. 《Unity Shader 入门精要》) and implement other fancy features
- Exploring some Rust features
- Some other interesting features. Please contact TAs if you have any ideas
- You can refer to artworks in raytracer-2022
Task 5 (10 pts): Final scene
- Complete a final scene, which should be more complex than the scenes in the books. If your work looks pretty or has aesthetic value, you will get extra points
- Or, your final scene can just be a banner or a logo of our project `Ray Tracing`. Look at the current banner at the top of this page, you can make a better one, with your own ray tracer
Distributed Hash Table
项目介绍:文件:DHT(2023).pdf
项目仓库:https://github.com/ACMClassCourse-2022/DHT-2023
安排
Week 1: Learn GoLang and start working on Chord.
Week 2: Debug Chord and pass the test. (Debugging concurrent programs takes a lot of time!)
Week 3: Start working on Kademlia.
Week 4: Finish Kademlia. Write an application (Optional).
评分政策
- Implement Chord Protocol (40%)
- Implement Kademlia Protocol (40%)
- Code Review & Report (20%)
- Bonus: a DHT-based application (No more than 10%)
Raft
项目介绍:文件:Raft(2023).pdf
项目仓库:https://github.com/ACMClassCourse-2022/Raft-2023
Network
项目介绍:文件:PPCA Networking 2023 Intro.pdf
项目仓库:https://github.com/ACMClassCourse-2022/ppca-networking
助教
Name | |
---|---|
杨晋晟 | modem514@sjtu.edu.cn |
范棋珈 | qweryy0566@sjtu.edu.cn |
刘祎禹 | liu_yiyu@sjtu.edu.cn |
梁亚伦 | liangyalun@sjtu.edu.cn |
周秉霖 | zhoubinglin@sjtu.edu.cn |
王俞皓 | jerx2y@sjtu.edu.cn |
黄健浩 | huang_jh2021@sjtu.edu.cn |
董珅 | shen-dong@sjtu.edu.cn |
林田川 | lingtianchuan@sjtu.edu.cn |
陈永杉 | chenyongshan@sjtu.edu.cn |
郑博阳 | bytetriper@sjtu.edu.cn |