meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:ct30a5000:generic_instructions_and_requirements [2009/09/29 16:02]
julaakko
courses:ct30a5000:generic_instructions_and_requirements [2012/08/29 13:22] (current)
julaakko
Line 1: Line 1:
-Network programming [[https://​noppa.lut.fi/​noppa/​opintojakso/​ct30a5000/etusivu|@ Noppa]] | [[courses:​ct30a5000:​start|@ wiki]] -  +Network programming [[https://​noppa.lut.fi/​noppa/​opintojakso/​ct30a5001/etusivu|@ Noppa]] | [[courses:​ct30a5000:​start|@ wiki]] -  
-Updated: --- //​[[jussi.laakkonen@lut.fi|julaakko]] 2009/09/29 15:22//+Updated: ​ --- //​[[jussi.laakkonen@lut.fi|Jussi Laakkonen]] 2012/08/20 17:38//
 ---- ----
 +
 +Updates:
 +> 16.9.2011: Added clarification for README file
 +
 ====== Generic instructions and requirements ====== ====== Generic instructions and requirements ======
  
   * INDIVIDUAL WORK – **NO COPYING** – NO GROUPWORK (discuss but do not share code)   * INDIVIDUAL WORK – **NO COPYING** – NO GROUPWORK (discuss but do not share code)
-    * Except Assignment 1 - [[:​courses:​ct30a5000:​assignment1|see ​the assignment description.]] +    * If you're caught copying directly from others or from Internet/​books your grade is 0. 
-  * Use **C-language** and **GCC compiler**+    * Remember ​the difference between plagiarism and adaptation
 +  * Use **C-language** and **GCC compiler** ​(see //man gcc//)
     * Eliminate warning-messages (use ''​-Wall''​ for ''​gcc''​)     * Eliminate warning-messages (use ''​-Wall''​ for ''​gcc''​)
-    * <​del>​Follow ANSI standard ​(C89/90 = ''​-ansi'',​ C99 ''​-std=c99''​ for ''​gcc''​)</​del>​ +    * Try to follow coding standards ​(''​-ansi'' ​**is not required**)use extended ​C99 standard: GNU99: ​''​-std=gnu99''​. 
- +  * Program can be **run in Linux** (on [[admin:​pentinkulma|computers in classroom ​6218]]) 
-> **Since some new network address structures and functions aren't yet added to ANSI standard, this requirement is removed.** +  * Do not use external libraries (use only system libraries, all required should be installed into classroom 6218 machines
- +  * Use iterative approach (__no threads ​or fork()__ ​unless requested) 
-  * Program can be **run in Linux** (on [[admin:​pentinkulma|computers in classroom ​6325]]) +  * **Graphical user interface __IS NOT REQUIRED__, NOR RECOMMENDED**
-  * Do not use external libraries (use only system libraries) +
-  * Use iterative approach (no threads unless requested)+
   * Use a **make file** (see //man make// or use a [[http://​www2.it.lut.fi/​courses/​CT30A5000/​material/​Makefile|Makefile template]])   * Use a **make file** (see //man make// or use a [[http://​www2.it.lut.fi/​courses/​CT30A5000/​material/​Makefile|Makefile template]])
     * Compile: make build     * Compile: make build
Line 20: Line 23:
   * **Comment** and **document** your code   * **Comment** and **document** your code
     * Comments directly to source code files     * Comments directly to source code files
-    * Add name, student number and email into beginning of **EVERY** file.+    * Add name, student number and email into the beginning of **EVERY** file. 
 +    * All documentation either in __English__ or in __Finnish__
   * Use **good structure** for your code   * Use **good structure** for your code
     * Divide code to functions based on responsibilities.     * Divide code to functions based on responsibilities.
Line 26: Line 30:
     * C-code in .c files and header descriptions in .h files.     * C-code in .c files and header descriptions in .h files.
     * **ONE MAIN FUNCTION IS NOT GOOD STRUCTURING OF CODE** !     * **ONE MAIN FUNCTION IS NOT GOOD STRUCTURING OF CODE** !
-    * **!!!!!!! NO GOTO !!!!!!!** ​People it is the year 2009, we're not anymore living in the 80s!+    * **!!!!!!! NO GOTO STRUCTURES ​!!!!!!!**
     * See [[courses:​ct30a5000:​generic_instructions_and_requirements#​using_multiple_files|short example about how to use multiple files]].     * See [[courses:​ct30a5000:​generic_instructions_and_requirements#​using_multiple_files|short example about how to use multiple files]].
-  * Write a **readme file**, which contains:+  * Write a **readme file**, ​**AS PLAIN TEXT, !__NO DOC/​ODT/​PDF/​__!,​ **which contains:
     * How to run the program. **Follow the given instructions on __every__ assignment**     * How to run the program. **Follow the given instructions on __every__ assignment**
-    * Description of the task (what has been done, __what ​references ​used__)+    * Description of the task (what has been done
 +    * List what **references ​were used** (books, Internet pages/​tutorials,​ etc.)
     * Features that were implemented     * Features that were implemented
-    * Description of division of code to separate files +    * Description of division of code into separate files 
-    * Own ides (text) or solutions (code) for improving the task+    * Own ideas (text) or solutions (code) for improving the task
       * __Own improvements must clearly be a new feature__, i.e. separate feature that enhances functionalities of the application.       * __Own improvements must clearly be a new feature__, i.e. separate feature that enhances functionalities of the application.
       * __Must be documented__! No documentation about own feature(s) → no additional points       * __Must be documented__! No documentation about own feature(s) → no additional points
Line 39: Line 44:
     * Debug with GDB (see //man gdb//)     * Debug with GDB (see //man gdb//)
     * Check that there are **no memory leaks** (use Valgrind, see //man valgrind//)     * Check that there are **no memory leaks** (use Valgrind, see //man valgrind//)
-    * **REMEMBER TO __CLOSE__ SOCKETS** +    * **REMEMBER TO __CLOSE__ SOCKETS ​when they'​re not used** 
-    * **Free** ​what you have allocated+    * **Free** ​the memory that was allocated.
  
 ===== Using Multiple files ===== ===== Using Multiple files =====
Line 46: Line 51:
 Files: Files:
   * main.c - main file, contains implementations of main() and run()-functions.   * main.c - main file, contains implementations of main() and run()-functions.
-<code c>+<​code ​c main.c>
 #include "​main.h"​ #include "​main.h"​
  
 int main(int argc, char *argv[]) int main(int argc, char *argv[])
 { {
- ​printf("​Main"​);​+ ​printf("​Main\n");
  
  ​run(argc);​  ​run(argc);​
Line 67: Line 72:
   * main.h - header for main.c, contains prototype for ''​run()''​-function.   * main.h - header for main.c, contains prototype for ''​run()''​-function.
  
-<code c>+<code c main.h>
 #include <​stdio.h>​ #include <​stdio.h>​
  
Line 74: Line 79:
  
   * file.c - additional file, contains implementation of check()-function.   * file.c - additional file, contains implementation of check()-function.
-<code c>+<​code ​c file.c>
 #include "​file.h"​ #include "​file.h"​
  
Line 85: Line 90:
  
   * file.h - header for file.c, contains prototype for ''​check()''​-function.   * file.h - header for file.c, contains prototype for ''​check()''​-function.
-<code c>+<code c file.h>
 #define RIGHT 0 #define RIGHT 0
  
Line 94: Line 99:
 To use the function defined in file.h and implemented in file.c in the main.c following steps are needed: To use the function defined in file.h and implemented in file.c in the main.c following steps are needed:
   - Include the file.h in main.c (or in main.h)   - Include the file.h in main.c (or in main.h)
-    * main.c after modifications:<​code c>+    * main.c after modifications:<​code ​c main_mod.c>
 #include "​main.h"​ #include "​main.h"​
 #include "​file.h #include "​file.h
Line 100: Line 105:
 int main(int argc, char *argv[]) int main(int argc, char *argv[])
 { {
- ​printf("​Main"​);​+ ​printf("​Main\n");
  
  ​run(argc);​  ​run(argc);​