|Program of Graduate Studies||Applied Informatics|
|Subject Area||Hardware and Computer Architecture Technologies|
|Semester||Semester 1 – Fall|
|Weekly Teaching Hours||3|
- Introduction to computers and programming.
- Data storage in main memory, the concept of variables.
- Introduction to C and the development environment.
- Programming mistakes and their manifestation.
- Main C data types.
- Basic input / output (I/O).
- Operators & operator priority.
- Literals, type casting, ASCII coding and character arithmetic.
- Control and loop structures.
- Using libraries.
- Arrays (one- and multi-dimensional), equivalence of 1D and multi-dimensional arrays (array layout in memory).
- Strings, string manipulation functions.
- Functions, function calling, parameters, local variables, variable scope and lifetime, function call mechanism and stack frames.
- Algorithmic topics: Array sorting and searching.
- Pointers and pointer operators, pointer arithmetic, pointer hazards.
- Relation of pointers and arrays, arrays of pointers, command-line parameters, sorting with pointers.
- Pointers as function parameters, pointers as function return values.
- Structured and custom data types (struct, union, enum, typedef), comparisons in custom data type variables, arrays of structs, type/object size (sizeof), pointers to structs, the -> operand.
- Dynamic memory management (malloc/free).
- Linked data structures, searching, insertion, deletion, traversal on various list types (linear, circular, with and without sentinel, simply or doubly linked, etc).
- Introduction to recursion, using recursion for problem solving.
The course exposes students to the main concepts of programming and problem solving with computers. We introduce C, a classic, powerful procedural programming language. The course includes a mandatory lab in which participants apply in practice – in a series of exercises – the material taught in class in order to familiarize themselves with the concepts and techniques.
After successfully fulfilling the requirements of the course, the student is capable of:
i) Analyzing the requirements of problems which are to be solved with a computer and synthesizing a solution.
ii) Producing solutions which strictly comply with given specifications.
iii) Knowing the main characteristics and structures of the C programming language and applying the most appropriate on a case-by-case basis to implement his/her algorithmic solutions.
iv) Applying the basic principles of software engineering in order to organize his/her code efficiently (structure, readability, design).
v) Verifying the correctness of programs and identifying errors.
vi) Using program development and debugging tools.
vii) Working both individually and synergistically in small groups, with specific time limitations.