diff --git a/.github/ISSUE_TEMPLATE/assignment_question.yml b/.github/ISSUE_TEMPLATE/assignment_question.yml new file mode 100644 index 0000000..1b2e5d9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/assignment_question.yml @@ -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/' + 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/' + 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 diff --git a/README.md b/README.md index aa151b1..7d77b9b 100644 --- a/README.md +++ b/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. - Submit your solution to . +- **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.zip` file (`assignment09.zip` for example). Submit this file to . - Read the documentation at . +- 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 + + # 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. @@ -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. -- You'll 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. +- You should bring your own laptop. (You can also borrow one from School of Computing Admin Team.) + +- 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 (?%) @@ -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). + 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. - + 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. + + Before asking a question, ask it to [ChatGPT](https://chat.openai.com/). Or search for it in Google and Stack Overflow. + 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). * 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. + Give a proper title to your issue. + 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 question is the first step to reaching an answer. Second, you can benefit from the questions and answers of other students. diff --git a/assets/why3/assignment05/README.md b/assets/why3/assignment05/README.md new file mode 100644 index 0000000..77a4db3 --- /dev/null +++ b/assets/why3/assignment05/README.md @@ -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: +* Why3 standard library: diff --git a/assets/why3/assignment05/binary_search.mlw b/assets/why3/assignment05/binary_search.mlw index 17cd0c9..92fb42d 100644 --- a/assets/why3/assignment05/binary_search.mlw +++ b/assets/why3/assignment05/binary_search.mlw @@ -20,4 +20,4 @@ module BinarySearch (* IMPORTANT: DON'T MODIFY THE ABOVE LINES *) 0 (* TODO *) -end \ No newline at end of file +end diff --git a/assets/why3/assignment05/max.mlw b/assets/why3/assignment05/max.mlw index 49c168e..ff04fa9 100644 --- a/assets/why3/assignment05/max.mlw +++ b/assets/why3/assignment05/max.mlw @@ -1,9 +1,14 @@ (* Max - Given an array `a` of natural numbers with length `n`, - return the maximum element of the array. + Given an array `a` of integers with length `n` greater than `0`, + 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 @@ -12,18 +17,21 @@ module Max use ref.Ref 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 { forall i. 0 <= i < n -> a[i] >= 0 } - ensures { forall i. 0 <= i < n -> a[i] <= max } - ensures { exists i. 0 <= i < n -> a[i] = max } - = let ref max = 0 in - for i = 0 to n - 1 do + ensures { 0 <= max_idx <= n-1 } + ensures { forall i. 0 <= i <= n-1 -> a[i] <= a[max_idx] } + = + let ref max_idx = 0 in + for i = 0 to n-1 do + invariant { 0 <= max_idx <= n-1 } (* 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 *) - if max < a[i] then max <- a[i]; + if a[max_idx] < a[i] then max_idx <- i; done; - max + max_idx + +end -end \ No newline at end of file diff --git a/assets/why3/assignment05/pascal.mlw b/assets/why3/assignment05/pascal.mlw index c3cd28f..4601099 100644 --- a/assets/why3/assignment05/pascal.mlw +++ b/assets/why3/assignment05/pascal.mlw @@ -10,13 +10,15 @@ module Pascal use ref.Ref use array.Array + (* The mathematical combination, defined recursively. *) let rec function comb (n k: int) : int requires { 0 <= k <= n } variant { n } ensures { result >= 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. *) let chooses (n : int) : array int requires { n > 0 } @@ -30,7 +32,7 @@ module Pascal let new_row = Array.make (r+1) 1 in for c = 1 to r-1 do (* 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 *) new_row[c] <- row[c-1] + row[c] done; @@ -38,4 +40,4 @@ module Pascal done; row -end \ No newline at end of file +end diff --git a/assets/why3/exercises/ex1_eucl_div.mlw b/assets/why3/exercises/ex1_eucl_div.mlw index 24fa3af..c4aaf20 100644 --- a/assets/why3/exercises/ex1_eucl_div.mlw +++ b/assets/why3/exercises/ex1_eucl_div.mlw @@ -26,4 +26,4 @@ module Division done; q -end \ No newline at end of file +end diff --git a/assets/why3/exercises/ex2_fact.mlw b/assets/why3/exercises/ex2_fact.mlw index bef4c59..adad25e 100644 --- a/assets/why3/exercises/ex2_fact.mlw +++ b/assets/why3/exercises/ex2_fact.mlw @@ -46,4 +46,4 @@ module FactLoop done; r -end \ No newline at end of file +end diff --git a/assets/why3/exercises/ex3_two_way.mlw b/assets/why3/exercises/ex3_two_way.mlw index 836722e..24705bd 100644 --- a/assets/why3/exercises/ex3_two_way.mlw +++ b/assets/why3/exercises/ex3_two_way.mlw @@ -48,4 +48,4 @@ module TwoWaySort end done -end \ No newline at end of file +end diff --git a/assets/why3/exercises/solutions/ex1_eucl_div_sol.mlw b/assets/why3/exercises/solutions/ex1_eucl_div_sol.mlw index f8580e7..7a28ad7 100644 --- a/assets/why3/exercises/solutions/ex1_eucl_div_sol.mlw +++ b/assets/why3/exercises/solutions/ex1_eucl_div_sol.mlw @@ -27,4 +27,4 @@ module Division done; q -end \ No newline at end of file +end diff --git a/assets/why3/exercises/solutions/ex2_fact_sol.mlw b/assets/why3/exercises/solutions/ex2_fact_sol.mlw index cfd514b..d5d6322 100644 --- a/assets/why3/exercises/solutions/ex2_fact_sol.mlw +++ b/assets/why3/exercises/solutions/ex2_fact_sol.mlw @@ -34,4 +34,4 @@ module FactLoop done; r -end \ No newline at end of file +end diff --git a/assets/why3/exercises/solutions/ex3_two_way_sol.mlw b/assets/why3/exercises/solutions/ex3_two_way_sol.mlw index 72a6bb7..3286ab5 100644 --- a/assets/why3/exercises/solutions/ex3_two_way_sol.mlw +++ b/assets/why3/exercises/solutions/ex3_two_way_sol.mlw @@ -46,4 +46,4 @@ module TwoWaySort end done -end \ No newline at end of file +end diff --git a/scripts/grade.sh b/scripts/grade.sh index eacee07..6ef01ba 100755 --- a/scripts/grade.sh +++ b/scripts/grade.sh @@ -16,6 +16,14 @@ run_linters || exit 1 # Executes test for each runner. echo "Running with $RUNNER..." +if [ $# != 1 ] + then + echo "===============================" + echo "Invalid argument." + echo "Usage: './grade.sh '" + echo "Example: './grade.sh 1' to grade assignment01" + exit 1 +fi TEST_NAME=$(printf "TEST%02d" $1) case $TEST_NAME in 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 ;; esac # Runs tests. SCORE=$(run_tests) -echo Your score: $SCORE +NUM_TESTS=${#TESTS[@]} +echo Your score: ${SCORE}/${NUM_TESTS} diff --git a/scripts/prepare-submissions.sh b/scripts/prepare-submissions.sh deleted file mode 100755 index 35ee7ac..0000000 --- a/scripts/prepare-submissions.sh +++ /dev/null @@ -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 diff --git a/scripts/submit.sh b/scripts/submit.sh new file mode 100755 index 0000000..4a50fb1 --- /dev/null +++ b/scripts/submit.sh @@ -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 diff --git a/src/assignments/assignment01/mod.rs b/src/assignments/assignment01/mod.rs index 6db0c9c..034f208 100644 --- a/src/assignments/assignment01/mod.rs +++ b/src/assignments/assignment01/mod.rs @@ -5,6 +5,13 @@ //! //! 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. +//! +//! 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; mod small_exercises_grade; diff --git a/src/assignments/assignment02/mod.rs b/src/assignments/assignment02/mod.rs index cceadfd..df4deb5 100644 --- a/src/assignments/assignment02/mod.rs +++ b/src/assignments/assignment02/mod.rs @@ -5,6 +5,13 @@ //! //! 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. +//! +//! 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; mod small_exercises_grade; diff --git a/src/assignments/assignment03/mod.rs b/src/assignments/assignment03/mod.rs index 59b0201..8128e3e 100644 --- a/src/assignments/assignment03/mod.rs +++ b/src/assignments/assignment03/mod.rs @@ -2,6 +2,13 @@ //! //! 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. +//! +//! 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; mod small_exercises_grade; diff --git a/src/assignments/assignment04/mod.rs b/src/assignments/assignment04/mod.rs index 29a218e..a1857d2 100644 --- a/src/assignments/assignment04/mod.rs +++ b/src/assignments/assignment04/mod.rs @@ -14,6 +14,13 @@ //! 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. //! Run `/scripts/prepare-submissions.sh` and submit `/target/assignment04.zip` to . +//! +//! 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; mod grade; diff --git a/src/assignments/assignment06/mod.rs b/src/assignments/assignment06/mod.rs index fc94881..9d1f959 100644 --- a/src/assignments/assignment06/mod.rs +++ b/src/assignments/assignment06/mod.rs @@ -4,6 +4,13 @@ //! //! 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. +//! +//! 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 symbolic_differentiation; diff --git a/src/assignments/assignment06/symbolic_differentiation.rs b/src/assignments/assignment06/symbolic_differentiation.rs index 2269d13..f46c5fc 100644 --- a/src/assignments/assignment06/symbolic_differentiation.rs +++ b/src/assignments/assignment06/symbolic_differentiation.rs @@ -6,7 +6,7 @@ use std::ops::*; /// 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. -/// 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, `+`, `-`, `*`, `/`. /// diff --git a/src/assignments/assignment07/mod.rs b/src/assignments/assignment07/mod.rs index 9cde5ba..19f264e 100644 --- a/src/assignments/assignment07/mod.rs +++ b/src/assignments/assignment07/mod.rs @@ -4,6 +4,13 @@ //! //! 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. +//! +//! 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 my_itertools; diff --git a/src/assignments/assignment08/mod.rs b/src/assignments/assignment08/mod.rs index e784788..909844f 100644 --- a/src/assignments/assignment08/mod.rs +++ b/src/assignments/assignment08/mod.rs @@ -4,6 +4,13 @@ //! //! 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. +//! +//! 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 small_exercises; diff --git a/src/assignments/assignment09/bigint.rs b/src/assignments/assignment09/bigint.rs index 33a96e5..b1a1f51 100644 --- a/src/assignments/assignment09/bigint.rs +++ b/src/assignments/assignment09/bigint.rs @@ -11,7 +11,7 @@ use std::{iter::zip, ops::*}; /// For example, the vector `vec![44,345,3]` represents the integer /// `44 * (2^32)^2 + 345 * (2^32) + 3`, /// 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. /// diff --git a/src/assignments/assignment09/mod.rs b/src/assignments/assignment09/mod.rs index 68c8e61..a805834 100644 --- a/src/assignments/assignment09/mod.rs +++ b/src/assignments/assignment09/mod.rs @@ -4,6 +4,13 @@ //! //! 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. +//! +//! 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 matmul; diff --git a/src/assignments/assignment10/mod.rs b/src/assignments/assignment10/mod.rs index 18073b0..c7bc775 100644 --- a/src/assignments/assignment10/mod.rs +++ b/src/assignments/assignment10/mod.rs @@ -3,6 +3,13 @@ //! //! 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. +//! +//! 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 small_exercises; diff --git a/src/assignments/assignment11/graph.rs b/src/assignments/assignment11/graph.rs index 7c3ca6f..7f8f823 100644 --- a/src/assignments/assignment11/graph.rs +++ b/src/assignments/assignment11/graph.rs @@ -90,7 +90,7 @@ impl 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 for an algorithm. pub fn detect_cycle(&self) -> bool { todo!() } diff --git a/src/assignments/assignment11/mod.rs b/src/assignments/assignment11/mod.rs index 32bc143..5976ef6 100644 --- a/src/assignments/assignment11/mod.rs +++ b/src/assignments/assignment11/mod.rs @@ -3,6 +3,13 @@ //! 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. //! Run `/scripts/prepare-submissions.sh` and submit `/target/assignment11.zip` to . +//! +//! 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 linked_list; diff --git a/src/assignments/assignment12/mod.rs b/src/assignments/assignment12/mod.rs index 3fad125..0c623e0 100644 --- a/src/assignments/assignment12/mod.rs +++ b/src/assignments/assignment12/mod.rs @@ -4,6 +4,13 @@ //! //! 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. +//! +//! 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 demux; diff --git a/src/assignments/assignment13/mod.rs b/src/assignments/assignment13/mod.rs index 67fe8d0..e0eac42 100644 --- a/src/assignments/assignment13/mod.rs +++ b/src/assignments/assignment13/mod.rs @@ -5,6 +5,13 @@ //! 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. //! 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; mod small_exercises_grade;