########################################### A. Preparing for Submisison and Submitting 1. Prepare a README file. In that file: - include the names, IDs and sections of the group members - instructions for installing, compiling, and running your programs. - some other information that you want to provide about your programs 2. Write a "Makefile" that will compile your programs by just typing "make". You can learn how to write a makefile fom your friends or from Internet. We are also providing a simple example in this description. 3. Put all your files in a directory called "project". This directory will include: - README file - Makefile - All your source files (.c and .h files and other files if you find necessary). 4. tar (package) everything into a file called project.tar (this is like ZIP in Windows). You can learn how to package (tar) a directory from Internet or from your friends, or by looking to the man page of "tar" command. Basically, you should use a command like "tar cvf project.tar project" when you are in the parent directory of your "project" directory. Here, "project.tar" is the name of the tar-file that wil be produced and "project" is the directory which needs to be packaged into a tar-file. 5. Send the tar-file as an ATTACHMENT (very important) to an email message to Teaching Assistants. The subject of your email message will contain the name of your group (a unique name that you will select) + the string "project3-sumission". For example, the name of the group that consists of students Ali and Veli can be "ali-veli". So, the subject of the email will be: "ali-veli-project3-submission". ########################################### B. How we will test? While testing: - We will save your ATTACHMENT into our linux machine. - We will open your tarfile. tar xvf project.tar - We will go into your project directory - We will just type "make" to compile your programs. - If compilation succceed, we will execute (run) your executable file with test data. - We will check the output and give grades. - We will also check the source code. ########################################### C. What will grading include? The grading may be from: - was the program submitted on time? - is the program compiling sucessfully? - does the program compilation give errors or warnings? - does the program run? - does the program run correctly - in which input does the program run correctly? - examing the source code? - is the source code original? - is the source code well written? - is the README file there? - is the Makefile there and working properly? ....and so on. ########################################### D. How to write a very simple makefile: ----- put the following in a file called "Makefile" in your project directory and modify!---- all: target target: myprogram.h myprogram.c gcc -o myprogram myprogram.c clean: rm -fr myprogram.c myprogram ----- end of Makefile fragment --------------- Note that you should use TABs in the beginning of the LINES as blanks (if necessary)! Not the space symbol that you obtain from SPACE BAR on your keyboard. For example, in the above example, we have a TAB symbol before the line "gcc -o .....". ########################################### E. How to compile using Makefile? Just run the "make" command in your project directory. make command will read the "Makefile" that you have prepared in order to learn how to compile! The above Makefile will compile the source program "myprogram.c" and will obtain an executable called "myprogram". After successfull compilation, you can just type your program's name to run. ########################################### F. Note that any attempt to cheat/copy will be severely penalized. Besides manual check for cheating, we will try to check automatically the source codes for cheating. ########################################### G. Your programs should compile on Linux systems. This is the platform that we will do our tests and grading. Therefore you should make sure that they compile on Linux. Try to execute the submissions steps experimentally, by sending the tar-file to yourself and then opening it in a Linux machine and then compiling and running it on that machine, etc. ###########################################