Week | Content | |
---|---|---|
W01 | Fundamentals I: Syllabus & Basics (Ch. 1) [ Source: KN King 2ED ] Course Objectives and Syllabus, C Advantages and Drawbacks, Comparing C with JAVA, First Program, Compiling C Programs with GCC, Native vs. Intermediate Compilation (C/C++/Objective-C vs. JAVA/Android-Java/C#), Basic Data Types, Preliminary I/O with printf()/scanf(), basic comments, x86/x64 data types basics, reserved identifiers, |
01 |
Fundamentals II: Formatted I/O (Ch. 3), Expressions (Ch. 4), Selection Statements (Ch. 5), Loops (Ch. 6) [ Source: KN King 2ED ]
3) The printf() and scanf() functions, 4) Arithmetic Operators, Assignment Operators lvalues), Incr/Decr Operators, Expression Evaluation (precedence and order), 5) Logical Expressions and _BOOL (C99), if..else, dangling-else, switch ... break, 6) Loops (while, do, for, break, continue, goto) |
02 | |
W02 | Fundamentals III: Basic Types (Ch. 7), Arrays (Ch. 8) and Functions (Ch. 9) [ Source: KN King 2ED ] 7) Integer, Float, Character Types on x86 and x64 platforms, Type overflow and explanation, Type Conversion (Implicit and Casting), Type Definitions with typedef, The sizeof operator, 8) 1-d arrays and m-d arrays: subscripting, initialization, sizeof |
03 |
Fundamentals IV: Program Organization (Ch. 10), Program Anatomy and Working with Files [ Source: KN King 2ED ] Assignment 1 posted 10) Local Variables (auto vs. static), External Variables, Blocks {}, Scope, Organizing a C Program, Comments with Documentation Systems (doxygen), Program Anatomy: processes, memory and addresses, a program on secondary and main memory (text, data, heap, stack). Files: fopen, fread, fwrite, examples with srand(), rand() and time(NULL); |
04 | |
W03 | Memory I: Pointers (Ch. 11) [ Source: KN King 2ED ] 11) Pointer Variables: Declaring and Using, Address (&) and Indirection Operators (*), Pointer Assignment (=), Pointer as Arguments, Using Const to protect arguments, Pointers as Return Values. |
05 |
Memory II: Pointers and Arrays (Ch. 12) [ Source: KN King 2ED ]
12) Pointer Arithmetic (adding, comparing), Pointers Variables and types, Using Pointers for Array Processing, Combining increment (++) and indirect (*) operators, arrays-functions-pointers, pointers and multi-dimensional arrays ((*p)[i]): working with rows, working with columns, sum example in five different ways. |
06 | |
W04 | Memory III: Strings, Array of Pointers and Examples (Ch. 13) [ Source: KN King 2ED ]
Assignment 2 posted 13) String Literals and Variables, Reading and Writing, Implementing strcpy(), strlen(), strcat(), strcmp(), Arrays of Strings, Command Line Arguments (argc and *argv[]) |
07 |
Memory IV: Structures, Unions and Enumerations (Ch. 16) [Source: KN King 2ED ] 16) Structures: Representation, Initialization, Types, Nested Structures and Arrays, Examples, Pointer-to-Structures (*p).field | p->field), Memory Alignment Issues (__attribute__ ((__packed__))); Unions: Representation, Initialization, Examples and Applications; Enumerations: Representation, Examples and Applications. |
08 | |
W05 | Memory V: Dynamic Memory Allocation (Ch. 17.1-17.4) [ Source: KN King 2ED ] 17.1-17.4) Dynamic Storage Allocation Functions, NULL, Dynamically Allocation Functions: malloc, calloc and realloc, Examples with Strcat, Deallocating Storage: free function, Dangling Pointer Problem, Pitfalls and Examples |
09 |
Program Structures I: Basic Linked-Lists, Pointer-to-Pointer and Stacks / Queues (Ch. 17.1-17.4) [ Source: KN King 2ED ] 17.5) Data structures: introduction and examples, self-referential structures, constructing a basic linked-list, pointer-to-pointer (void **a) and dynamic multi-dimensional matrices, Stack: Basics and Definitions, Implementing a stack with dynamic memory allocation, Queue: Basics and definitions, Implementing a queue with dynamic memory allocation. |
10 | |
W06 | Program Organization I: Writing Large Programs (Ch. 15.1-15.2) [ Source: KN King 2ED ] 15.1-15.2) Source Files: Reverse Polish Notation (RPN) Problem and Solution with Stack in 1 file, Organizing a Program in Multiple Files (RPN with 3 .c files), Compiling Multiple Files with GCC, Header Files: RPN problem with def.h, Pre-processor Directive: #include, Variables in Multiple Files and extern |
11 |
Complete Previous Lectures Assignment 3 posted |
||
W07 | Program Organization II: Writing Large Programs (Ch. 15.2-15.4) and The Preprocessor (Ch. 14.1, 14.2, 14.4) [ Source: KN King 2ED ] 15.2-15.4) Nested Includes and Hierarchies, Protecting Header files with #ifndef..#endif, 9 Steps for Breaking a Program into Multiple Files, Examples (justify and RPN), Automating Compilation with Makefiles, A Generic Makefile and eClipse Makefiles, 14.1, 14.2, 14.4) Preprocessor Directives: #include and #define in further detail, usage examples, parameterized macros: examples, advantages and disadvantages. |
12 |
Program Structures II: Linked-Lists (Ch. 17.5) [ Source: KN King 2ED ] 17.5) Ordering of data in Linked-lists (limitations of stacks, queues), Implementing Sorted Linked-list Functions: printList, aggregations on lists (sum, count, max, min, median) during recursion / backtracking |
13 | |
W08 | October 23, 2018 (Tuesday), 10:30-12:00, ΕΠΛ232.1: ΧΩΔ02-113 and ΕΠΛ232.2: ΧΩΔ02-#B204! This is a closed book exam: no books, notebooks, notes, etc. allowed |
--- |
Program Structures III: Additional Linked-Lists Functions and Examples (Ch. 17.5) [ Source: KN King 2ED ] 17.5) Linked-Lists functions (recursive and repetitive implementations): insert, delete, eliminateDuplicates, mergeLists |
14 | |
W09 | Program Structures IV: Doubly-linked Lists Assignment 4 posted Doubly-linked lists: Declarations and Definitions, Implementing put(l,x,y) recursively and repetitively, Doubly-Sorted Linked-lists: implementing printlist(l), insert(l,x) and delete(l,x) |
15 |
Tools I: Large-scale Software, Modules & Libaries, Testing (in part Ch. 19) [ Source: KN King 2ED ] Large-scale software and problems (source-lines-of-code SLOC and real examples), Modules and Libraries: Information Hiding and Abstract Data Types, Design Issues for Abstract Data Types, Cohesion and Coupling, Module Types: data pool, libraries static (.a) and dynamic (.so, .dll), abstract objects, abstract data types. Testing: Drivers, assert.h and Assertions, Unit Testing with tools: CUnit (for C) and JUnit (for JAVA), Dynamic Program Analysis (program performance) : Static vs. Dynamic program analysis, Profiling Tools: Valgrind, gprof (for C) and JProfiler (for JAVA) |
16 | |
W10 | Tools II: Team Development, SVN and Open Source Software Development Software Versioning and Revision Control Systems: Tools (open and proprietary), SVN Architecture, Connecting to our SVN through eClipse, UNIX, operating system and web browser, SVN strategies: lock/modify/unlock, copy/modify/merge, Open-Source Software (OSS): examples and incentives, Free OSS, Licences for Free OSS (MIT, BSD, GPL and LGPL), Use cases: bestzip, cyimg, linux, Source code Preamble for MIT, GPL and FreeBSD licences |
17 |
Selected Topic I: Low-level Programming I (Ch. 20.1) [ Source: KN King 2ED ] Bitwise Operators (>>, <<, |, ^, &), Using Bitwise operators to access bits and basic operations (setting a bit, clearing a bit, and testing a bit), names in masks |
18 | |
W11 | Selected Topic II: Low-level Programming II (Ch. 20.2) [ Source: KN King 2ED ] XOR encryption example, Bit fields in structures, how bit fields are stored with and without memory alignment issues, complete previous lectures. |
19 |
Tools III: Basic Unix System Commands Assignment 5 Announced Directory/File handling (mkdir, rmdir, cp, mv, rm), File Display and Conversion (file, head, tail, cat, more, wc, sort, uniq, iconv), In/Out Streams (stdin, stdout, stderr), File Redirection, Piping |
20 | |
W12 | Tools IV: Unix Commands and System Utilities UNIX commands (echo, touch), Ownership and Access Rights(chmod, chgrp, chown, umask, suid, sgid, sticky bit), Regular Expressions in BRE and ERE (grep, egrep), Usage and Examples. |
21 |
Complete Previous Lectures | ||
W13 | Tools V: Unix Commands and System Utilities Process Control (jobs, ps, fg, bg, kill, top, nice, renice), Time (time, timeout, watch), Find File and Program (which, whereis, find, exec, xargs), UNIX Commands (alias, cut, tr, tee, mail, comm, diff, crontab). |
22 |
Complete Previous Lectures | ||
!!! | FINAL EXAM: December 17, 2018 (Monday), 16:30-19:30, ΧΩΔ02-B205. This is a closed book exam: no books, notebooks, notes, etc. allowed. Please consult the final program here: https://www.ucy.ac.cy/fmweb/el/tomeas-spoudon/undergraduate-office/15-gr-articles/bottom-menu/49-exam-schedule |
- |