The course is organized in the following four topics: A) Building Entry-scale programs: Fundamental constructs of the C programming language: Types (x86, x64), Expressions, Arrays, Functions, IO, basic program organization. Program Anatomy in Memory and Disk, Processes and Addresses. Memory (Pointers, Pointers and Arrays, Strings and Examples), Structures, Unions and Enumerations. Disk (File Streams, Formatted, Character, Block I/O, File positioning, buffering. B) Building Mid-scale programs: C Preprocessor, Source/Header Files, Building multiple files with Makefiles, linking, macros, etc.). Linear and Non-Linear Programming Data Structures (Dynamic memory allocation, lists, queues, doubly-linked lists, trees, applications and examples). Advanced Programming Constructs and Error Handling: Pointer-to-Pointers, Pointers-to-Functions, Inline Functions and library functions (assert, errno, perror). C) Building Large-scale Programs: Modules, Information Hiding, Design Issues, Extreme Programming and Subversion, Open-source collaborative software development.D) Selected Topics: Low-level Programming, Introduction to Secure Programming and Introduction to C++.
Syllabus (in greek) »