List of Topics (By Week): 1. The C compilation model: Preprocessor, C compiler, some useful compiler options, using libraries, UNIX library functions 2. C program structure: Types, precision, constants, variables, simple I/O, arithmetic operations, comparison operators, logical operators, order of precedence 3. Representation and Control Flow: Underlying binary representation, bitwise operations, sizeof(), if-then-else, ? operator, switch, for, while, do-while, break, continue, nesting, lexical blocks 4. Functions: Function definitions, scope, static modifier, register modifier, Void functions, functions and arrays, function prototyping, Header files, preprocessor macros #define, #undef, #include, #if, preprocessor compiler control, other preprocessor commands 5. Arrays and strings 6. Software Engineering: Design, testing 7. Pointers: Pointers and functions, pointers and arrays, arrays of pointers, multidimensional arrays and pointers, static initialization of pointer arrays, pointers and structures, common pointer pitfalls, pointers to pointers, command line input, pointers to a function 8. Dynamic memory allocation: Malloc(), free(), word-alignment, structures 9. Dynamic structures and further data types: Unions, bit fields, coercion or type-casting, enumerated types, Lists, trees 10. Streams: Predefined streams, redirection, formatted I/O 11. File access and directory system calls: Directory handling functions, file manipulation routines, creating temporary files 12. C, UNIX, and standard libraries: Integer functions, random numbers, string conversion, searching and sorting, mathematics Makefiles, header files, advantages of using several files, how to divide a program between several files, organization of data in each file 13. Processes and threads: Running UNIX commands from C, exec functions, fork(), wait(), exit(), interprocess communication (IPC), pipes, [message queues, semaphores, shared memory]* 14. Interrupts and signals: [interrupts and signals, sockets, synchronization]* 15. Features of C++: * Function overloading, classes and objects, data members, member functions, constructor functions, default constructor functions, destructor functions, member function prototypes, member function default arguments, inheritance, friend functions and classes, overloaded member functions, virtual functions, class scope, ``this'' pointer, object instantiation, access specifiers private and public, encapsulation, information hiding, private data members, public member functions, private member functions, array of class objects * - Only a subset of the topics for the last three weeks can be expected to be covered with predominantly second semester students.