Table of Contents

Frequently Asked Questions

General

FAQ about Assignments

Question 1: We are planning to add a certain additional functionality X to our program for the Assignment. Is adding the additional functionality X allowed?

Answer to Question 1:

Please note that the requirements specified in section A. Description of the Problem, are the minimum requirements that must be satisfied by your program. Obviously, there are many other possible details of the program that have been left unspecified. It is your responsibility to make appropriate design and implementation choices concerning the unspecified details of the program, and justify those decisions.“

Any decision to add any particular additional functionality X to your program should be guided by the principles above.

The marker will judge whether you have made appropriate design and implementation choices or not in adding the particular additional functionality X; and whether your justification of what you have chosen to do and the particular ways you have chosen to do it are valid or not.

Question 2: How can I learn about makefiles?

Answer to Question 2: Just do a Google search using the key words “makefile” or “makefile tutorial”, and many tutorials or reference manuals can be found, for example:

- a brief introduction to some of the most basic features of makefiles:

    http://www.cs.tau.ac.il/~dcor/Software1/Makefile.ppt

- a tutorial on some of the most basic features of makefiles:

    http://www.opussoftware.com/tutorial/TutMakefile.htm

- a complete reference manual on the gnu make utility:

    http://www.gnu.org/software/make/manual/

Question 3: For cse3221 assignment 2, I am having trouble compiling the code of my program. The errors that I get are: 1. … 2. … 3. … … This makes me suspect that there is something wrong with the <pthreads.h> library on the “RED” server, or maybe something is wrong with …, or maybe something is wrong with … … Could you please advise me on this issue.

Answer to Question 3:

There is nothing wrong with the pthread library on RED. The best and easiest way to do the assignment, is to do the following:

 1. You may start by trying to read and understand the program
    "alarm_mutex.c" in pages 52-58 of the book "Programming with POSIX
    Threads" by David R. Butenhof.
 2. The program "alarm_mutex.c" and the file "errors.h" and "README" can
    be downloaded from the directory /cs/course/3221/assign2.
    Try to compile and execute this program by following the
    instructions in the "README" file.
 3. The book "Programming with POSIX Threads" by David R. Butenhof has      
    been put on reserve in Steacie Library."

Once you have studied and understood the program “alarm_mutex.c”, and have learned how to compile and execute this program by following the instructions in the “README” file, you can use the program “alarm_mutex.c” as a template to write your own program for the assignment 2.

The following “gradualist” approach will minimize the chances of getting an unmanageable large number of compilation errors:

Start with the program “alarm_mutex.c”; each time make just a few changes to make it closer to satisfying the requirements of assignment 2; each time after making just a few changes, try to compile it and run it and make sure that the new version of your code is at least compilable and is at least executable. Always save several previous compilable and executable versions of your code so that you can revert back to a previous compilable and executable version of your code if you experience difficulty compiling and executing the most recent version of your code and/or find it difficult to determine what is possibly wrong with the most recent version of your code.

Question 4: For Assignment 2, are we allowed to make modifications to the main() procedure and the alarm_thread function?

Answer to Question 4:

You are allowed to modify the main() procedure and the alarm_thread in any way that meets the assignment requirements.

Question 5: For Assignment 2, are we allowed to NOT use the alarm_list?

Answer to Question 5:

In the assignment description, it states that,

* “A3. You are required to make the following changes to the program “alarm_mutex.c” to produce a program named “My_Alarm.c”. In your program “My_Alarm.c”, after the alarm_thread has retrieved each alarm request from the alarm_list, instead of waiting for the specified number of n seconds and then printing out the alarm message as done in “alarm_mutex.c”, the alarm_thread will immediately create a new thread, and that new thread will print out the alarm message repeatedly, once every n seconds; while the alarm_thread will be free to continue to retrieve and process new alarm requests from the alarm_list.”

In the assignment description, it clearly mentions “alarm_list” more than once, so clearly, using the “alarm_list” in the original “alarm_mutex.c” program in the way that is specified in the assignment description above is an important component of the assignment requirements. So the answer is: in your program “My_Alarm.c”, you MUST use the “alarm list” in the way that is specified in the assignment description above.