# Hướng dẫn sử dụng CAS cho Học viên (HV)
## 1. Đăng nhập:
Nhập tài khoản HV, gồm `Email` và `Password` đã được đăng ký trên CAS. Click `Log in` để đăng nhập.
Hệ thống chuyển đến màn hình mặc định `Dashboard`, bạn sẽ thấy các đề thi hiện có trên CAS.

---
## 2. Vào đề thi:
Thứ tự hiển thị các đề thi trên màn hình Dashboard được sắp xếp mặc định theo **thứ tự thời gian mở đề (Available From)** từ trước đến nay.
Tìm đề thi bạn cần làm rồi click `View` để vào đề thi.

Tường hợp đang có nhiều đề thi, để tiết kiệm thời gian, bạn có thể nhập một phần tên đề thi mà bạn nhớ được vào khung `Type to search` rồi gõ `Enter`. Ví dụ:

> **Lưu ý:**
> Nếu đề thi chưa đến thời gian mở đề (`Available From`) thì tính năng `View` sẽ bị ẩn đi, tức là bạn chưa thể vào xem đề để làm được, phải đợi đến đúng hoặc sau thời gian mở đề quay lại làm.
> 
Tiếp theo, bạn cần chú ý đến cột Thời gian kết thúc (`Available To`), có 3 loại sau:
- Đề không có thời gian kết thúc, tức là luôn mở: trạng thái là `always`.
- Đề đã qua thời gian kết thúc.
- Đề chưa đến thời gian kết thúc.

> **Giải thích ý nghĩa việc có Thời gian kết thúc:**
> - Thời gian kết thúc là để phục vụ cho mục đích tính điểm. Với các đề thi chưa đến thời gian kết thúc, HV làm bài rồi nộp bài sẽ được tính điểm.
> - Ngược lại, với các đề thi đã kết thúc, thì HV không được phép làm bài và không được tính điểm. Riêng đối với bài tập Coding (*) thì HV được vào làm bài, được chạy thử code, biết trạng thái đúng hết các trường hợp kiểm thử (`testcases`) hoặc không và không được tính điểm.
> - Như vậy, với các đề thi được thiết lập không có thời gian kết thúc thì HV không bị giới hạn số lần làm bài, nộp bài và luôn được tính điểm.
> - (*) có điều kiện áp dụng (xem thêm mục **2.1** và **2.2**)
---
### 2.1. Nếu đây là lần đầu bạn làm đề thi này:
Đối với đề **chưa đến thời gian kết thúc** hoặc **đề không có thời gian kết thúc** thì khi click `View` hiển thị ra như sau:

- Lúc này nút `Start Contest` luôn hiển thị màu xanh. Click nút này để bắt đầu làm bài.
- `6 problems` có nghĩa là đề thi này có tổng cộng 6 bài tập.
Đối với đề đã **đến thời gian kết thúc** thì khi click `View`:

- Ta chỉ xem được thông tin đề (đề có bao nhiêu câu và mô tả của đề).
- Lúc này nút `Start Contest` bị vô hiệu, không cho phép bắt đầu làm đề.
---
### 2.2. Nếu muốn làm tiếp:
Dành cho các trường hợp đây không phải lần đầu bạn làm đề này, tức là trước đó bạn vào đề thi được rồi và lần này bạn quay lại muốn làm tiếp:
Đối với đề **chưa đến thời gian kết thúc** hoặc đề **không có thời gian kết thúc** (`Always`) thì sau khi click `View` sẽ hiển thị như sau:

- Nếu trạng thái là `In progress`, nghĩa là thời gian làm đề vẫn còn, nộp bài được tính điểm (xem lại phần **Giải thích ý nghĩa việc có Thời gian kết thúc** ở mục **2.**).
- Click `Continue` để tiếp tục làm đề. Nếu bạn click `Start Contest` sẽ hiển thị lỗi `Please finish the submission before start a new submission.` Vì lúc này `Start Contest` được hiểu là ta đã nộp bài rồi và muốn bắt đầu một phiên làm bài mới.

Đối với đề đã đến **thời gian kết thúc** thì sau khi click `View` sẽ hiển thị như sau:

- Nếu trạng thái là `Time out`, nghĩa là đã quá hạn thời gian cho phép để làm đề.
- Chỉ được click vào `View` để làm, không được click `Start Contest`.
> - **Lưu ý:**
> - Không được làm bài tập Trắc nghiệm hoặc Điền đáp án.
> - Chỉ được làm các bài tập Coding, được chạy thử code, biết trạng thái đúng hết các trường hợp kiểm thử (`testcases`) hoặc không và không được tính điểm (xem lại phần **Giải thích ý nghĩa việc có Thời gian kết thúc** ở mục **2.**).
---
## 3. Hướng dẫn làm từng loại hình bài tập:
> **Lưu ý:**
> - Không giới hạn số lần nộp bài (click `Submit`), miễn là chưa hết giờ kết thúc đề thi và chưa click vào `End Contest`. Hệ thống sẽ ghi nhận điểm tại lần `Submit` gần nhất.
> - Click`End Contest` khi bạn muốn kết thúc một phiên làm bài và để tính điểm (xem thêm **mục 4**).
> - Khi refresh hoặc tắt trình duyệt, bài làm hiện tại sẽ không được lưu.
### 3.1. Bài tập lập trình (Coding):
Giao diện của một đề thi lập trình trông như sau:

Cách làm là:
- Viết code vào trong ô màu đen ở tab `Editor` (trình soạn thảo code).
- Click `Run Code` để chạy thử, tính năng này giúp bạn biết được code của bạn đúng được bao nhiêu testcases.
- Nếu code của bạn đúng hết testcases, hiển thị dòng thông báo màu xanh lá `Your code passed our testcases` như ảnh dưới:

- Lúc này bạn click `Submit` để nộp bài, `Submit` thành công sẽ hiển thị dòng thông báo màu xanh lá `Success!`, tag nhỏ bên dưới tên bài tập sẽ chuyển trạng thái thành `Submitted` và hệ thống sẽ tính điểm cho bạn.

Ngoài ra CAS có hỗ trợ tính năng lưu tạm code:
- Ngay khi bạn click `Run Code`, phiên bản code hiện tại sẽ được lưu tạm, mục đích để bạn có thể xem lại các phiên bản code của mình (debug, ...). Các phiên bản này được lưu ở tab `History`.

- Trong trường hợp bạn muốn chỉnh sửa một phiên bản code đã được lưu trước đó, bạn click chọn phiên bản ở danh sách bên trái, click `Load code to the editor` để chuyển sang tab `Editor`:

### 3.2. Bài tập trắc nghiệm 1 đáp án (Single Choice) hoặc nhiều đáp án (Multiple Choices):
Giao diện của loại bài tập này trông như sau:
> **Lưu ý:** Bạn để ý tag bài tập (khung màu đỏ) để biết loại hình bài và chọn **số lượng** đáp án đúng.

Cách làm là bạn chọn (các) đáp án đúng và click `Submit`, `Submit` thành công sẽ hiển thị dòng thông báo màu xanh lá `Success!`, tag nhỏ bên dưới tên bài tập sẽ chuyển trạng thái thành `Submitted` và hệ thống sẽ tính điểm cho bạn.
### 3.3. Bài tập Điền đáp án (Free Text):
Giao diện bài tập này trông như sau:

Bạn cần đọc kỹ yêu cầu điền đáp án trong đề bài để **điền đáp án cho đúng với format** và click `Submit`, `Submit` thành công sẽ hiển thị dòng thông báo màu xanh lá `Success!`, tag nhỏ bên dưới tên bài tập sẽ chuyển trạng thái thành `Submitted` và hệ thống sẽ tính điểm cho bạn.

---
## 4. Xem điểm
### 4.1. Cách xem điểm chung cho các đề thi:
- Click `End Contest`:

- Click `Back to contest and view result`, tại đây bạn chọn phiên làm bài bạn muốn xem điểm và click `Score`:

- Bảng điểm hiện ra trông như sau:

### 4.2. Đối với đề thi lập trình:
Ngoài cách xem điểm trên, CAS hiển thị và cập nhật điểm số theo mỗi lượt `Submit` thành công của học viên và chỉ áp dụng cho đề thi chỉ gồm các bài tập lập trình. Do đó bạn có thể biết được ngay điểm số của mình trong quá trình làm bài.
