PPCA 2024
外观
简介
时间
- 2024.06.24 ~ 2024.08.04,周一~周五,共六周
- 机考日:上午 9:00~11:00 下午 13:00~18:00
- 非机考日:上午 9:00~12:00 下午 14:00~17:00
地点
- 东上院 508(1-2周,周一、三、五)
- 东上院 408(1-2周,周二、四)
- 东下院 402(3-6周)
分数构成
- 分组项目四选一(第 1 周到第 4 周)
- Pacman AI 吃豆人
- Coq 形式化定理证明
- Ray Tracer 光线追踪
- DHT 分布式哈希表
- Raft 分布式一致性协议
- Network 网络协议
- RISC-V CPU 模拟器(第 5 周、第 6 周)
- Verilog 硬件描述语言 小作业(第 5 周、第 6 周)
- 机考(第 2 周起,共 5 次)
- 自选主题演讲 (bonus)
- 签到扣分:有事请提前与当班助教请假,有签到,无故缺席将被扣除分数。
机考
- 第 2 周周四、第 3 周起每周三下午 13:00~18:00,5 小时,可提前离场,共 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 是一个非常好的交流想法的时机,希望有想法的同学积极报名演讲
Pacman AI
项目介绍:文件:PacMan(2024).pptx
项目仓库:https://github.com/ACMClassCourse-2023/PPCA-AIPacMan-2024
Coq (Formal Verification)
项目介绍:文件:Coq(2024).pdf
项目仓库:https://github.com/ACMClassCourse-2023/PPCA-Formal-Verification-2024
Ray Tracer
项目仓库:https://github.com/ACMClassCourse-2023/Raytracing-2024
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(2024).pptx
项目仓库:https://github.com/ACMClassCourse-2023/DHT-2024
安排
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(2024).pptx
项目仓库:https://github.com/ACMClassCourse-2023/Raft-2024
Network
项目仓库:https://github.com/ACMClassCourse-2023/PPCA-Networking
助教
Name | |
---|---|
潘屹 | conlesspan@sjtu.edu.cn |
王冠杰 | irfnfnkemed@sjtu.edu.cn |
张世奇 | zsq259@sjtu.edu.cn |
王鲲鹏 | kunpengwang@sjtu.edu.cn |
陈圣尧 | sjtu15060022751@sjtu.edu.cn |
徐子绎 | xzy2022@sjtu.edu.cn |
刘泳霖 | sjtu18612959637@sjtu.edu.cn |
陈轶凡 | cyf13312236090@sjtu.edu.cn |
吴硕 | Wushuo123@sjtu.edu.cn |
王宇澄 | duang2000@sjtu.edu.cn |
万彤 | vaniusyyds@sjtu.edu.cn |