Programming Assignments

We will do five programming assignments. The first four programming assignments take up 10% of your total grade. The fifth assignment takes up 15% of your total grade. Some assignments provide extra credit beyond your total grade.

Tips on Downloading Files and Making a File Executable

To download any files linked in assignment pages from your linux terminal, you can use wget and specify the URL of the file. For example,


this command will download the sample binary (samplewc209) to your current directory. You can get the URL of the file by right-clicking the hyperlink and then selecting “copy link address”.

If you downloaded a binary file and want to execute it, you need to set its execution bits. If you want to allow a file named samplewc209 to be executable in current directory, type:

chmod u+x samplewc209

then samplewc209 will become executable. The u option in chmod indicates that the operation applies to access of the user who owns this file and x means that the command updates the execution bit of the file. For more information about chmod or wget, try man.

Assignment Submission (Important)

Use KAIST KLMS to submit your assignments. Your submission should be one gzipped tar file whose name is


For example, if your student ID is 20195399, and it is for assignment #1, please name the file as


To create the .tar.gz, first move all your files to the directory (20195399_assign1).

mkdir 20195399_assign1
mv all_your_files 20195399_assign1

Then, move to your directory 20195399

cd 20195399_assign1

create a .tar.gz file by the 'tar' command like

tar -zcf 20195399_assign1.tar.gz *

Then, you'll see 20195399_assign1.tar.gz. If you want to decompress and release the files in it (in a different directory),

tar zxf 20195399_assign1.tar.gz

Ethics Document (Important)

For every assignment submission, please fill out and submit the pdf version of this document that pledges your honor that you did not violate any ethics rules required by this course and KAIST. You can either scan a printed version into a pdf file or make the Word document into a pdf file after filling it out.

Please sign on the document and submit it along with your other assignment files, or we won't grade your assignment.

Late Submission Penalty

Students can use late submission (late pass) which can be late up to three days without penalty for the first four programming assignments. That is, you can apply your late submission days (within 3 days in total) spread over the first four programming assignments. The minimum granulaity is one day: if you are 1 hour late, that's still counted as one day late. If you're going to spend your free late days, please say so in your readme file. Beyond the free late days, we will enforce this penalty rule for each assignment. One will get

  • 95% of the full credit up to 3 hours late,
  • 90% of the full credit up to 6 hours late,
  • 85% of the full credit up to 12 hours late,
  • 75% of the full credit up to 24 hours late,
  • 50% of the full credit up to 48 hours late,
  • 0% of the full credit beyond 48 hours late

Important: Note that we do not accept late submission for the last assignment (assignment 5). Any late submission (e.g., submitted after 11:59 PM on 12/22, regardless of whether you have free days or not) will result in zero credit for the last assignment.

We will grant extensions only in case of illness(with doctor's note) or extraordinary cicrumstances. In case you are submitting your work late due to illness or extraordinary circumstances, please consult with the instructor as soon as possible. Please plan ahead (travel, religious holidays, etc.) to meet the deadlines. Note that heavy workload is not counted as extraordinary cicrumstances.

Collaboration Policy

Please refer to the course policy page.

Coding Style

Good coding style will be one criterion for grading each assignment. Please make sure your code has proper indentation and descriptive comments. At the start of each file, please add your name, lab account ID and the description of the file. Make sure not to leak any memory and check/handle every return value of function calls.

Assignment Grading

Your submission will be graded on one of the Lab machines(eelab5) for the course. You are free to use other machines for coding and debugging, but please make sure to compile and test your final version on the Lab machines(eelab5). In a rare case, library mismatch or O/S stack difference (Solaris vs. Linux) can bypass some of your bugs, but they can actually show up on the Lab machines while grading. In order to avoid this last-minute surprise, please test on Lab machines before submitting your work.

We will use automated program for scoring. And it works similar below practice in assignment 1,2(simple_grep),4,5. So you can check your functionality using diff command.

./samplewc209 < somefile > output1 2> errors1
./wc209 < somefile > output2 2> errors2
diff output1 output2
diff errors1 errors2
rm output1 errors1 output2 errors2

Manual grading policy

Trivial mistake in your submission may cause huge amount of deduction in your assignment score. For such exceptional circumstances, you can request and get manual grading at the TA's discretion. For each modification and manual grading, you will get 15% amount of deduction from your total score.