Skip to main content

Hello to the Data Structure!

Introduction

Welcome to the Data Structure course! Throughout this semester, you will be implementing many different data structures. This will give you to gain a deep understanding of the fundamental concepts of the data structures. These assignments are designed to help you become proficient in modern C++ programming languages. Our goal is to provide you with comprehensive experiences, enhancing both your theoretical knowledge and practical implementation skills in data structures.

To prepare for the assignments, please refer to the Pre-requisites section for detailed instructions on setting up your development environment. This document will provide a brief overview of how to download assignments, submit your work, and understand the grading process.

Pre-requisites

All the assignments will be implemented, executed, and tested in Linux. As many of you may not be familiar with Linux, we provided the following instructions. Please read through these documents before starting to implement your assignments.

Performing the Assignment

Once you have downloaded the assignment files, follow these steps to complete the tasks:

  1. Read the Instructions Carefully: You should clearly understand all the requirements and specifications for the assignment.
  2. Set Up Your Environment: Your development environment should be properly configured. Our recommentatin is to use Visual Studio Code with the necessary extensions installed, but you may use which ever IDEs you like.
  3. Complete the Assignment: Follow the instructions to complete the tasks. Be sure to save your work regularly. Our recommendation is to use git (probably using github) to regularly commit your code.
  4. Test Your Work: Thoroughly test your code or solutions to ensure your implementation meets all the requirements and does not have an error.

How to Submit the Assignment

After completing the assignment, you need submit it to the designated submission server.

Using the Assignment Submission Server

  • The assignment submission server is at https://kayle.snu.ac.kr:37373.
  1. Prepare Your Submission:

    • Navigate to the directory of your assignment:
    $ pwd
    00-setup

    Run the prepare-submit.sh script to prepare your submission:

    $ ./prepare-submit.sh
    [*] Remove tar file...
    [*] Compress files...
    ./include/hello.hpp
    [*] Successfully Compressed!
    [*] Done! You are ready to submit

    This script will compress your files into assign[0-9].tar.gz.

  2. Upload Your Assignment

    • Once your submission file assign[0-9].tar.gz is ready, now you can upload the file to the submission server.
    • Once you visit https://kayle.snu.ac.kr:37373 using your web browser, you will be prompted to enter your email address. Once you confirm the email address, you will receive an email with an API key, which will be used for the login key. This API key can be reused for your future logins, and if you forget one, you can simply re-generate the key by entering the email address again.
    warning

    Only email addresses with the snu.ac.kr domain are accepted (e.g., byoungyoung@snu.ac.kr).

    • After logging in, navigate to the designated submission page on the server where you can upload your assignment.
    • After uploading, make sure to verify the submission time and details to ensure your assignment has been successfully submitted.
  3. Download Your Assignment:

    If you want to check if your assignment is correctly submitted, you can download it from the server. To do so, use the scp command to download assign[0-9].tar.gz from your assignment server.

    bash

    scp -P [port] assign[0-9].tar.gz compsec@kayle.snu.ac.kr:/home/compsec/[location of the tarball]

    Replace [port] with your assigned SSH port number.

    info

    If you are using Visual Studio Code, you can directly download and upload your submission files using the left-side Explorer. Navigate to the remote server, browse to your assignment folder, and download the assign[0-9].tar.gz file.

Grading

Your code will be graded through an auto-grading system. Here are the key points to keep in mind:

  • The provided tests are not exhaustive; they will not cover all possible scenarios for grading. We run additional tests to further check the robustness and correctness of your implementation.
  • While passing the provided tests is a good indicator, it does not guarantee a full score. You are encouraged to extend the provided tests to thoroughly validate your code.
  • You will receive full credits if:
    • All tests pass.
    • Valgrind detects no memory leaks.
    • Valgrind reports no memory errors.

Ensure your code meets these criteria to receive the full grade.

You are now ready to begin your assignment and proceed with confidence!