meta data for this page
  •  

Generic instructions and requirements for assignments 1 and 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.
  • Use C-language and GCC compiler (see man gcc)
    • Eliminate warning-messages (use -Wall for gcc to see the messages)
    • Try to follow coding standards (-ansi is not required), use extended C99 standard: GNU99: -std=gnu99.
  • Program can be run in Linux (on 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 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 !!!!!!! unless you think you can thoroughly explain the usage of goto.
  • 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.