mirror of
https://github.com/kmc7468/cs220.git
synced 2025-12-12 21:08:45 +00:00
Merge remote-tracking branch 'public/main' (syncing between public and
private)
This commit is contained in:
82
.github/ISSUE_TEMPLATE/assignment_question.yml
vendored
Normal file
82
.github/ISSUE_TEMPLATE/assignment_question.yml
vendored
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
name: Question about Assignment
|
||||||
|
description: Ask questions about assignment in this format.
|
||||||
|
title: '[Assignment #] (SUMMARIZE YOUR QUESTION AS CLEARLY AS POSSIBLE)'
|
||||||
|
labels:
|
||||||
|
- question
|
||||||
|
assignees:
|
||||||
|
- woojinnn
|
||||||
|
- jirheee
|
||||||
|
- AnHaechan
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
# Please read the followings before asking a question:
|
||||||
|
- When you're asking a question, please make sure,
|
||||||
|
- You clarify your questions as clear as possible.
|
||||||
|
- If possible, please make it a yes/no question.
|
||||||
|
- If possible, please summarize your question in one sentence at the beginning of an issue.
|
||||||
|
- If you're asking a question on concepts,
|
||||||
|
- You read the corresponding sections of the slide.
|
||||||
|
- You searched for the concepts using search engines and Wikipedia.
|
||||||
|
- If you're asking a question on Rust programming,
|
||||||
|
- You searched for error messages or any relevant logs using search engines.
|
||||||
|
- Your problem is reproducible in the provided server. Please describe how others can reproduce your problem.
|
||||||
|
- You paste code, if any, in text with [syntax hightlight](https://docs.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks). No images.
|
||||||
|
- You paste code, if any, that is minimized as much as possible. Your code should be immediately relevant to your question.
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
# 1. Related Issue
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Related Issue
|
||||||
|
description: >-
|
||||||
|
Please search to see if a related issue already exists. If so, give me
|
||||||
|
the links. If there are multiple issues, please write them all.
|
||||||
|
placeholder: 'https://github.com/kaist-cp/cs220/issues/<issue_number>'
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
# 2. Googling Result
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Googling Result
|
||||||
|
description: >-
|
||||||
|
Share the link that looks relavant to your situation. Multiple links are
|
||||||
|
welcomed.
|
||||||
|
placeholder: >-
|
||||||
|
https://stackoverflow.blog/2020/01/20/what-is-rust-and-why-is-it-so-popular/
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
# 3. ChatGPT Result
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: ChatGPT Result
|
||||||
|
description: >-
|
||||||
|
Before writing this issue, you should have asked ChatGPT. We want to see
|
||||||
|
how you used ChatGPT for troubleshooting your problem. You can upload
|
||||||
|
link like
|
||||||
|
[this](https://help.openai.com/en/articles/7925741-chatgpt-shared-links-faq).
|
||||||
|
It should contain the history of, including but not limited to, your
|
||||||
|
problem statement, the answer from ChatGPT, and your follow-up
|
||||||
|
questions. There should be at least 3 turns of conversation.
|
||||||
|
placeholder: 'https://chat.openai.com/share/<conversation-ID>'
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
# 4. Your question
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Your question here
|
||||||
|
description: 'Also tell us, what did you expect to happen?'
|
||||||
|
placeholder: YOUR QUESTION HERE
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
26
README.md
26
README.md
@@ -138,7 +138,22 @@ Make sure that you're capable of using the following development tools:
|
|||||||
|
|
||||||
- We'll announce **all** assignments before the semester begins.
|
- We'll announce **all** assignments before the semester begins.
|
||||||
- Submit your solution to <https://gg.kaist.ac.kr/course/17>.
|
- Submit your solution to <https://gg.kaist.ac.kr/course/17>.
|
||||||
|
- **How to submit your assignment:**
|
||||||
|
- To submit your solution, you should run `submit.sh` in `scripts` directory. In other words, you should run the following command:
|
||||||
|
```bash
|
||||||
|
# Run this command at the root directory of this repository.
|
||||||
|
$ ./scripts/submit.sh
|
||||||
|
```
|
||||||
|
- After running the command above, in the `target` directory, you can find a `assignment<NUMBER>.zip` file (`assignment09.zip` for example). Submit this file to <https://gg.kaist.ac.kr/course/17>.
|
||||||
- Read the documentation at <https://cp.kaist.ac.kr/cs220/cs220/>.
|
- Read the documentation at <https://cp.kaist.ac.kr/cs220/cs220/>.
|
||||||
|
- You can check your grade of each assignment by running the grading script.
|
||||||
|
- You can run the grading script with the following command:
|
||||||
|
```bash
|
||||||
|
$ ./scripts/grade.sh <assignment_number>
|
||||||
|
|
||||||
|
# E.g. To grade `assignment09`, run the following command:
|
||||||
|
$ ./scripts/grade.sh 9
|
||||||
|
```
|
||||||
- You're **allowed** to use ChatGPT or other LLMs. Instead, you'll solve more problems than previous semesters.
|
- You're **allowed** to use ChatGPT or other LLMs. Instead, you'll solve more problems than previous semesters.
|
||||||
|
|
||||||
|
|
||||||
@@ -150,8 +165,11 @@ Make sure that you're capable of using the following development tools:
|
|||||||
|
|
||||||
- Your physical apperance is required. If online participation is **absolutely necessary**, we'll use Zoom.
|
- Your physical apperance is required. If online participation is **absolutely necessary**, we'll use Zoom.
|
||||||
|
|
||||||
- You'll bring your own laptop. (You can also borrow one from School of Computing Admin Team.)
|
- You should bring your own laptop. (You can also borrow one from School of Computing Admin Team.)
|
||||||
We will use surveillance tools such as [Safe Exam Browser](https://safeexambrowser.org/) to monitor your laptop.
|
|
||||||
|
- We will use [Safe Exam Browser](https://safeexambrowser.org/) to prevent cheatings.
|
||||||
|
- You should have your laptop configured with Safe Exam Browser before the exam.
|
||||||
|
- TBA: Details will be announced later.
|
||||||
|
|
||||||
### Attendance (?%)
|
### Attendance (?%)
|
||||||
|
|
||||||
@@ -184,8 +202,7 @@ Make sure that you're capable of using the following development tools:
|
|||||||
|
|
||||||
- Ask questions on course materials and assignments in [this repository's issue tracker](https://github.com/kaist-cp/cs220/issues).
|
- Ask questions on course materials and assignments in [this repository's issue tracker](https://github.com/kaist-cp/cs220/issues).
|
||||||
+ Don't send emails to the instructor or TAs for course materials and assignments.
|
+ Don't send emails to the instructor or TAs for course materials and assignments.
|
||||||
+ Before asking a question, consult with the issue tracker, Google, Stack Overflow, and LLMs.
|
+ Before asking a question, ask it to [ChatGPT](https://chat.openai.com/). Or search for it in Google and Stack Overflow.
|
||||||
+ When creating a new issue, you are going to be asked to fill out a template. Make sure that you fill out the template properly.
|
|
||||||
+ Describe your question in as much detail as possible. It should include the following things:
|
+ Describe your question in as much detail as possible. It should include the following things:
|
||||||
* Environment (OS, gcc, g++ version, and any other related program information).
|
* Environment (OS, gcc, g++ version, and any other related program information).
|
||||||
* Command(s) that you used and the result. Any logs should be formatted in code. Refer to [this](https://guides.github.com/features/mastering-markdown/).
|
* Command(s) that you used and the result. Any logs should be formatted in code. Refer to [this](https://guides.github.com/features/mastering-markdown/).
|
||||||
@@ -193,6 +210,7 @@ Make sure that you're capable of using the following development tools:
|
|||||||
* Googling result. Search before asking, and share the keyword used for searching and what you've learned from it.
|
* Googling result. Search before asking, and share the keyword used for searching and what you've learned from it.
|
||||||
+ Give a proper title to your issue.
|
+ Give a proper title to your issue.
|
||||||
+ Read [this](https://github.com/kaist-cp/cs220#communication) for more instructions.
|
+ Read [this](https://github.com/kaist-cp/cs220#communication) for more instructions.
|
||||||
|
+ Questions will be answered within 2 days mostly.
|
||||||
|
|
||||||
+ I'm requiring you to ask questions online first for two reasons. First, clearly writing a
|
+ I'm requiring you to ask questions online first for two reasons. First, clearly writing a
|
||||||
question is the first step to reaching an answer. Second, you can benefit from the questions and answers of other students.
|
question is the first step to reaching an answer. Second, you can benefit from the questions and answers of other students.
|
||||||
|
|||||||
17
assets/why3/assignment05/README.md
Normal file
17
assets/why3/assignment05/README.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Assignment 5: Program correctness and logic
|
||||||
|
|
||||||
|
* The primary goal of this assignment is to grasp basic concepts about proving a program's correctness with deductive reasoning.
|
||||||
|
|
||||||
|
* You should fill in `TODO`s in three files: `max.mlw`, `binary_search.mlw`, `pascal.mlw`.
|
||||||
|
* You will get PARTIAL SCOREs for each of those three files.
|
||||||
|
* E.g. If `max.mlw` and `binary_search.mlw` get passed, 2 out of 3 points will be given.
|
||||||
|
|
||||||
|
* You may use [Why3 in your browser](https://why3.lri.fr/try/).
|
||||||
|
* Clicking `Verify` button at the top will open a panel on the right side.
|
||||||
|
* For each task in the panel (e.g. `loop invariant preservation`), you can right-click it and run the prover.
|
||||||
|
* Fill in `TODO`s until the prover can verify all tasks, notified with green check-marks.
|
||||||
|
|
||||||
|
* To submit your solution, run `./scripts/submit.sh` and submit `assignment05.zip` in the `target` directory to gg.
|
||||||
|
|
||||||
|
* More on Why3: <https://why3.lri.fr/doc/index.html>
|
||||||
|
* Why3 standard library: <https://why3.lri.fr/stdlib/index.html>
|
||||||
@@ -1,9 +1,14 @@
|
|||||||
(* Max
|
(* Max
|
||||||
|
|
||||||
Given an array `a` of natural numbers with length `n`,
|
Given an array `a` of integers with length `n` greater than `0`,
|
||||||
return the maximum element of the array.
|
return `max_idx`, the index of the maximum element of that array.
|
||||||
|
|
||||||
You should stengthen the loop invariant.
|
E.g. `max_idx [5, 12, 34, 10] 4` will return `2`
|
||||||
|
E.g. `max_idx [4, 3, 2] 3` will return `0`
|
||||||
|
E.g. `max_idx [1, 2, 3, 4] 4` will return `3`
|
||||||
|
|
||||||
|
Prove the below program indeed follows the given specification,
|
||||||
|
by giving an appropriate invariant.
|
||||||
*)
|
*)
|
||||||
|
|
||||||
module Max
|
module Max
|
||||||
@@ -12,18 +17,21 @@ module Max
|
|||||||
use ref.Ref
|
use ref.Ref
|
||||||
use array.Array
|
use array.Array
|
||||||
|
|
||||||
let max (a: array int) (n: int) : (max: int)
|
let max_idx (a: array int) (n: int) : (max_idx: int)
|
||||||
|
requires { length a > 0 }
|
||||||
requires { n = length a }
|
requires { n = length a }
|
||||||
requires { forall i. 0 <= i < n -> a[i] >= 0 }
|
ensures { 0 <= max_idx <= n-1 }
|
||||||
ensures { forall i. 0 <= i < n -> a[i] <= max }
|
ensures { forall i. 0 <= i <= n-1 -> a[i] <= a[max_idx] }
|
||||||
ensures { exists i. 0 <= i < n -> a[i] = max }
|
=
|
||||||
= let ref max = 0 in
|
let ref max_idx = 0 in
|
||||||
for i = 0 to n-1 do
|
for i = 0 to n-1 do
|
||||||
|
invariant { 0 <= max_idx <= n-1 }
|
||||||
(* IMPORTANT: DON'T MODIFY THE ABOVE LINES *)
|
(* IMPORTANT: DON'T MODIFY THE ABOVE LINES *)
|
||||||
invariant { true (* TODO: Replace `true` with your solution *) }
|
invariant { true (* TODO: Replace `true` with your solution. Your solution MUST be a single line, at line number 30. DON'T add another line of codes. *) }
|
||||||
(* IMPORTANT: DON'T MODIFY THE BELOW LINES *)
|
(* IMPORTANT: DON'T MODIFY THE BELOW LINES *)
|
||||||
if max < a[i] then max <- a[i];
|
if a[max_idx] < a[i] then max_idx <- i;
|
||||||
done;
|
done;
|
||||||
max
|
max_idx
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -10,13 +10,15 @@ module Pascal
|
|||||||
use ref.Ref
|
use ref.Ref
|
||||||
use array.Array
|
use array.Array
|
||||||
|
|
||||||
|
(* The mathematical combination, defined recursively. *)
|
||||||
let rec function comb (n k: int) : int
|
let rec function comb (n k: int) : int
|
||||||
requires { 0 <= k <= n }
|
requires { 0 <= k <= n }
|
||||||
variant { n }
|
variant { n }
|
||||||
ensures { result >= 1 }
|
ensures { result >= 1 }
|
||||||
= if k = 0 || k = n then 1 else comb (n-1) k + comb (n-1) (k-1)
|
= if k = 0 || k = n then 1 else comb (n-1) k + comb (n-1) (k-1)
|
||||||
|
|
||||||
(* Insert appropriate invariants so that Why3 can verify this function. *)
|
(* Computes the Pascal's triangle and returns the `n`th row of it. *)
|
||||||
|
(* Insert an appropriate invariant so that Why3 can verify this function. *)
|
||||||
(* You SHOULD understand the Pascal's triangle first to find good invariants. *)
|
(* You SHOULD understand the Pascal's triangle first to find good invariants. *)
|
||||||
let chooses (n : int) : array int
|
let chooses (n : int) : array int
|
||||||
requires { n > 0 }
|
requires { n > 0 }
|
||||||
@@ -30,7 +32,7 @@ module Pascal
|
|||||||
let new_row = Array.make (r+1) 1 in
|
let new_row = Array.make (r+1) 1 in
|
||||||
for c = 1 to r-1 do
|
for c = 1 to r-1 do
|
||||||
(* IMPORTANT: DON'T MODIFY THE ABOVE LINES *)
|
(* IMPORTANT: DON'T MODIFY THE ABOVE LINES *)
|
||||||
invariant { true (* TODO: Replace `true` with your solution *) }
|
invariant { true (* TODO: Replace `true` with your solution. Your solution MUST be a single line, at line number 35. DON'T add another lines. *) }
|
||||||
(* IMPORTANT: DON'T MODIFY THE BELOW LINES *)
|
(* IMPORTANT: DON'T MODIFY THE BELOW LINES *)
|
||||||
new_row[c] <- row[c-1] + row[c]
|
new_row[c] <- row[c-1] + row[c]
|
||||||
done;
|
done;
|
||||||
|
|||||||
@@ -16,6 +16,14 @@ run_linters || exit 1
|
|||||||
# Executes test for each runner.
|
# Executes test for each runner.
|
||||||
echo "Running with $RUNNER..."
|
echo "Running with $RUNNER..."
|
||||||
|
|
||||||
|
if [ $# != 1 ]
|
||||||
|
then
|
||||||
|
echo "==============================="
|
||||||
|
echo "Invalid argument."
|
||||||
|
echo "Usage: './grade.sh <assignment_number>'"
|
||||||
|
echo "Example: './grade.sh 1' to grade assignment01"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
TEST_NAME=$(printf "TEST%02d" $1)
|
TEST_NAME=$(printf "TEST%02d" $1)
|
||||||
case $TEST_NAME in
|
case $TEST_NAME in
|
||||||
TEST01)
|
TEST01)
|
||||||
@@ -95,11 +103,13 @@ case $TEST_NAME in
|
|||||||
)
|
)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo_err "Invalid test name: $TEST_NAME"
|
echo_err "Invalid assignment number: $1"
|
||||||
|
echo_err "Assignment number should be within 1 to 12."
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Runs tests.
|
# Runs tests.
|
||||||
SCORE=$(run_tests)
|
SCORE=$(run_tests)
|
||||||
echo Your score: $SCORE
|
NUM_TESTS=${#TESTS[@]}
|
||||||
|
echo Your score: ${SCORE}/${NUM_TESTS}
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
BASEDIR=$(dirname "$0")/..
|
|
||||||
|
|
||||||
mkdir -p $BASEDIR/target
|
|
||||||
|
|
||||||
zip -rj $BASEDIR/target/assignment04.zip src/assignments/assignment04
|
|
||||||
zip -rj $BASEDIR/target/assignment11.zip src/assignments/assignment11
|
|
||||||
22
scripts/submit.sh
Executable file
22
scripts/submit.sh
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BASEDIR=$(dirname "$0")/..
|
||||||
|
|
||||||
|
mkdir -p $BASEDIR/target
|
||||||
|
|
||||||
|
for i in {01..13} ; do
|
||||||
|
if [ $i -eq 5 ]
|
||||||
|
then
|
||||||
|
if [ -f $BASEDIR/target/assignment05.zip ]; then
|
||||||
|
rm $BASEDIR/target/assignment05.zip
|
||||||
|
fi
|
||||||
|
zip -rj $BASEDIR/target/assignment05.zip $BASEDIR/assets/why3/assignment05
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [ -f $BASEDIR/target/assignment$i.zip ]; then
|
||||||
|
rm $BASEDIR/target/assignment$i.zip
|
||||||
|
fi
|
||||||
|
zip -rj $BASEDIR/target/assignment$i.zip $BASEDIR/src/assignments/assignment$i
|
||||||
|
done
|
||||||
@@ -5,6 +5,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 1` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 1` works fine.
|
||||||
//! See `assigment01/small_exercises_grade.rs` and `/scripts/grade.sh 1` for the test script.
|
//! See `assigment01/small_exercises_grade.rs` and `/scripts/grade.sh 1` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment01.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod small_exercises;
|
pub mod small_exercises;
|
||||||
mod small_exercises_grade;
|
mod small_exercises_grade;
|
||||||
|
|||||||
@@ -5,6 +5,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 2` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 2` works fine.
|
||||||
//! See `assigment02/*_grade.rs` and `/scripts/grade.sh 2` for the test script.
|
//! See `assigment02/*_grade.rs` and `/scripts/grade.sh 2` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment02.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod small_exercises;
|
pub mod small_exercises;
|
||||||
mod small_exercises_grade;
|
mod small_exercises_grade;
|
||||||
|
|||||||
@@ -2,6 +2,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 3` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 3` works fine.
|
||||||
//! See `assignment03/*_grade.rs` and `/scripts/grade.sh 3` for the test script.
|
//! See `assignment03/*_grade.rs` and `/scripts/grade.sh 3` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment03.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod small_exercises;
|
pub mod small_exercises;
|
||||||
mod small_exercises_grade;
|
mod small_exercises_grade;
|
||||||
|
|||||||
@@ -14,6 +14,13 @@
|
|||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 4` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 4` works fine.
|
||||||
//! See `assignment04/grade.rs` and `/scripts/grade.sh 4` for the test script.
|
//! See `assignment04/grade.rs` and `/scripts/grade.sh 4` for the test script.
|
||||||
//! Run `/scripts/prepare-submissions.sh` and submit `/target/assignment04.zip` to <https://gg.kaist.ac.kr>.
|
//! Run `/scripts/prepare-submissions.sh` and submit `/target/assignment04.zip` to <https://gg.kaist.ac.kr>.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment04.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod context;
|
pub mod context;
|
||||||
mod grade;
|
mod grade;
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 6` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 6` works fine.
|
||||||
//! See `assignment06/*_grade.rs` and `/scripts/grade.sh 6` for the test script.
|
//! See `assignment06/*_grade.rs` and `/scripts/grade.sh 6` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment06.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod semiring;
|
pub mod semiring;
|
||||||
pub mod symbolic_differentiation;
|
pub mod symbolic_differentiation;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use std::ops::*;
|
|||||||
/// Rational number represented by two isize, numerator and denominator.
|
/// Rational number represented by two isize, numerator and denominator.
|
||||||
///
|
///
|
||||||
/// Each Rational number should be normalized so that `demoninator` is nonnegative and `numerator` and `demoninator` are coprime.
|
/// Each Rational number should be normalized so that `demoninator` is nonnegative and `numerator` and `demoninator` are coprime.
|
||||||
/// See [`normalize`] for examples. As a corner case, 0 is represented by Rational { numerator: 0, demoninator: 0 }.
|
/// See `normalize` for examples. As a corner case, 0 is represented by Rational { numerator: 0, demoninator: 0 }.
|
||||||
///
|
///
|
||||||
/// For "natural use", Rational also overloads standard arithmetic operations, i.e, `+`, `-`, `*`, `/`.
|
/// For "natural use", Rational also overloads standard arithmetic operations, i.e, `+`, `-`, `*`, `/`.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 7` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 7` works fine.
|
||||||
//! See `assignment07/*_grade.rs` and `/scripts/grade.sh 7` for the test script.
|
//! See `assignment07/*_grade.rs` and `/scripts/grade.sh 7` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment07.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod generator;
|
pub mod generator;
|
||||||
pub mod my_itertools;
|
pub mod my_itertools;
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 8` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 8` works fine.
|
||||||
//! See `assignment08/*_grade.rs` and `/scripts/grade.sh 8` for the test script.
|
//! See `assignment08/*_grade.rs` and `/scripts/grade.sh 8` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment08.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod church;
|
pub mod church;
|
||||||
pub mod small_exercises;
|
pub mod small_exercises;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ use std::{iter::zip, ops::*};
|
|||||||
/// For example, the vector `vec![44,345,3]` represents the integer
|
/// For example, the vector `vec![44,345,3]` represents the integer
|
||||||
/// `44 * (2^32)^2 + 345 * (2^32) + 3`,
|
/// `44 * (2^32)^2 + 345 * (2^32) + 3`,
|
||||||
/// and the vector `vec![u32::MAX - 5, u32::MAX - 7]` represents the integer
|
/// and the vector `vec![u32::MAX - 5, u32::MAX - 7]` represents the integer
|
||||||
/// `- (5 * 2^32 + 8)
|
/// `- (5 * 2^32 + 8)`
|
||||||
///
|
///
|
||||||
/// You will implement the `Add` and `Sub` trait for this type.
|
/// You will implement the `Add` and `Sub` trait for this type.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 9` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 9` works fine.
|
||||||
//! See `assignment09/*_grade.rs` and `/scripts/grade.sh 9` for the test script.
|
//! See `assignment09/*_grade.rs` and `/scripts/grade.sh 9` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment09.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod bigint;
|
pub mod bigint;
|
||||||
pub mod matmul;
|
pub mod matmul;
|
||||||
|
|||||||
@@ -3,6 +3,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 10` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 10` works fine.
|
||||||
//! See `assignment10/*_grade.rs` and `/scripts/grade.sh 10` for the test script.
|
//! See `assignment10/*_grade.rs` and `/scripts/grade.sh 10` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment10.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod labyrinth;
|
pub mod labyrinth;
|
||||||
pub mod small_exercises;
|
pub mod small_exercises;
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ impl SubGraph {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns true iff the subgraph contains a cycle. Nodes that do not belong to this subgraph
|
/// Returns true iff the subgraph contains a cycle. Nodes that do not belong to this subgraph
|
||||||
/// are ignored. See https://en.wikipedia.org/wiki/Cycle_(graph_theory) for an algorithm.
|
/// are ignored. See <https://en.wikipedia.org/wiki/Cycle_(graph_theory)> for an algorithm.
|
||||||
pub fn detect_cycle(&self) -> bool {
|
pub fn detect_cycle(&self) -> bool {
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,13 @@
|
|||||||
//! You should fill out `todo!()` placeholders in such a way that `/scripts/grade.sh 11` works fine.
|
//! You should fill out `todo!()` placeholders in such a way that `/scripts/grade.sh 11` works fine.
|
||||||
//! See `assignment11/*_grade.rs` and `/scripts/grade.sh 11` for the test script.
|
//! See `assignment11/*_grade.rs` and `/scripts/grade.sh 11` for the test script.
|
||||||
//! Run `/scripts/prepare-submissions.sh` and submit `/target/assignment11.zip` to <https://gg.kaist.ac.kr>.
|
//! Run `/scripts/prepare-submissions.sh` and submit `/target/assignment11.zip` to <https://gg.kaist.ac.kr>.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment11.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod graph;
|
pub mod graph;
|
||||||
pub mod linked_list;
|
pub mod linked_list;
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
//!
|
//!
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 12` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 12` works fine.
|
||||||
//! See `assignment12/*_grade.rs` and `/scripts/grade.sh 12` for the test script.
|
//! See `assignment12/*_grade.rs` and `/scripts/grade.sh 12` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment12.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod card;
|
pub mod card;
|
||||||
pub mod demux;
|
pub mod demux;
|
||||||
|
|||||||
@@ -5,6 +5,13 @@
|
|||||||
//! Refer to your solution for assignment 09. You will implement the parallelized version of assignment 09.
|
//! Refer to your solution for assignment 09. You will implement the parallelized version of assignment 09.
|
||||||
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 13` works fine.
|
//! You should fill out the `todo!()` placeholders in such a way that `/scripts/grade.sh 13` works fine.
|
||||||
//! See `assignment13/small_exercises_grade.rs` and `/scripts/grade.sh 13` for the test script.
|
//! See `assignment13/small_exercises_grade.rs` and `/scripts/grade.sh 13` for the test script.
|
||||||
|
//!
|
||||||
|
//! To submit, run
|
||||||
|
//! ```bash
|
||||||
|
//! # At the cs220 home directory,
|
||||||
|
//! ./scripts/submit.sh
|
||||||
|
//! ```
|
||||||
|
//! and submit the generated `assignment13.zip` file in `target` directory.
|
||||||
|
|
||||||
pub mod small_exercises;
|
pub mod small_exercises;
|
||||||
mod small_exercises_grade;
|
mod small_exercises_grade;
|
||||||
|
|||||||
Reference in New Issue
Block a user