跳转到内容

PPCA 2023

来自ACM Class Wiki

简介

文件:2023PPCA介绍.pptx

时间

  • 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。

作业要求:文件:RISCV模拟器作业(2023).pdf

提交链接: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

项目介绍:文件:Raytracing(2023).pptx

项目仓库: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 or cargo
  • 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

Task 2 (20 pts): Ray Tracing: The Next Week

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 Email
杨晋晟 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