Computer Programming


Introduction to computer programming and to algorithmic problem solving. Program structure, syntax, semantics. Data types. Arithmetic and logical expressions. Flow control. Structured programming, procedures, functions, call by value and call by reference. Ordinal and enumerated types, arrays, linear and binary search, multidimensional arrays. Recursion. Pointers, pointers and arrays, dynamic memory management. Structured data types: strings, structs, unions, text and binary files. Text processing. Data structures: computational complexity, linked lists, abstract data types, stacks, queues, graphs, binary trees, binary tree traversals. Sorting: selection sort, insertion sort, bubble sort, mergesort, quicksort. Arithmetic computations: square root, trigonometric functions. Program correctness, assertions, invariants, verification. Lab: a set of problems to be solved in a subset of C/C++.