meta data for this page
  •  

Differences

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

Link to this comparison view

courses:ct30a5002:generic_instructions_about_assignments [2013/10/02 13:16]
julaakko created
courses:ct30a5002:generic_instructions_about_assignments [2013/10/02 13:26] (current)
julaakko
Line 1: Line 1:
 +====== Generic instructions and requirements ======
  
 +  * Assignment 1 & 2 = INDIVIDUAL WORK – **NO COPYING** – NO GROUPWORK (discuss but do not share code)
 +    * If you're caught copying directly from others or from Internet/​books your grade is 0.
 +    * Remember the difference between plagiarism and adaptation.
 +  * Assignment 3 = GROUP WORK
 +  * Use **C-language** and **GCC compiler** (see //man gcc//)
 +    * Eliminate warning-messages (use ''​-Wall''​ for ''​gcc''​)
 +    * 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]])
 +  * 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)
 +  * **Graphical user interface __IS NOT REQUIRED__, NOR RECOMMENDED**
 +  * Use a **make file** (see //man make// or use a [[http://​www2.it.lut.fi/​courses/​CT30A5000/​material/​Makefile|Makefile template]])
 +    * Compile: make build
 +    * Clean: make clean
 +  * **Comment** and **document** your code
 +    * Comments directly to source code files
 +    * 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
 +    * Divide code to functions based on responsibilities.
 +    * Divide functions to different files based on responsibilities.
 +    * C-code in .c files and header descriptions in .h files.
 +    * **ONE MAIN FUNCTION IS NOT GOOD STRUCTURING OF CODE** !
 +    * **!!!!!!! NO GOTO STRUCTURES !!!!!!!**
 +    * See [[courses:​ct30a5002:​multifiles|short example about how to use multiple files]].
 +  * 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**
 +    * Description of the task (what has been done)
 +    * List what **references were used** (books, Internet pages/​tutorials,​ etc.)
 +    * Features that were implemented
 +    * Description of division of code into separate files
 +    * 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.
 +      * __Must be documented__! No documentation about own feature(s) → no additional points
 +  * Check for error conditions
 +    * Debug with GDB (see //man gdb//)
 +    * Check that there are **no memory leaks** (use Valgrind, see //man valgrind//)
 +    * **REMEMBER TO __CLOSE__ SOCKETS when they'​re not used**
 +    * **Free** the memory that was allocated.