###### tags: `專題規劃`
<!-- [TOC] -->
# 軟體設計(Software Design)
## ToDo
- [ ] APCS測資
- [ ] Backend Design
## 架構
- [Database](#Database)
- [Backend](#Backend)
- [Judger](#Judger)
- [Frontend](#Frontend)
## Database
### 題目
* APCS
- 題目:[YUI HUANG 演算法學習筆記](https://yuihuang.com/)
> 這個網站有整理APCS、CPE題目(來自zerojudge)。APCS考古也有列出命題範圍
- 測資:
* CPE
- 題目
* [一顆星選集](https://cpe.cse.nsysu.edu.tw/environment.php#starList)
* [Lucky貓的 UVA(ACM)園地](http://web.kshs.kh.edu.tw/academy/luckycat/index.htm):主要收集中文題目和難度
* [UVa官網](https://onlinejudge.org/):對應的英文題目和解題狀況
- 測資
* [uDebug](https://www.udebug.com/UVa/)
- 解答
* [CPE歷屆考題](https://cpe.cse.nsysu.edu.tw/cpe/test_data/problems):可收集解答和測資
* [codeforces](https://codeforces.com/problemset/status):可以觀看別人的程式碼和測資,但好像沒有UVa題目
## Backend
Online Judge Backend...
:::warning
Incompelete block
:::
## Judger
The judger give used to compile source user submitted, execute it and **judge** the result.
The judger should have following features.
**Basic Requirement**
* Compile compiled language
* Execute source and generate output
* Compare user output and correct output, and return the result
**Advance Requirement**
* Execute source in `sandbox` to protect our system from crashing by running malicious code
## Frontend
Online Judge's frontend built with `Next.js` may have following features
* Should able to submit code
* Member could check its solving problem history