Syllabus of the courses "Programming" Quality Assurance System and Credit Transfer System S-JEP-12435-97 TEMPUS project Course group "Programming" Introduction to Programming Basic notions: computational problem, algorithms, program, hardware-software environment. Stages of problem solving with computer: Specification Algorithm Design Implementation (coding) Correctness proof Requirements analysis (time and space efficiency) Testing Running Maintenance Control structures Structure charts Sequential control and its implementation in Pascal Notion of data type Variable Programming language syntax and syntax-diagrams Syntax: Identifier, Program, Statement-part Boolean data type Numeric data types: Integer, Real Expressions, evaluation of expressions Logical expressions. Input and output operations Structure of programs Selection control structures Simple selection Multiple selection constructs Case selection constructs Implementation of selection structures in Pascal Iteration control structures While iteration Repeat-until iteration Counting iteration Loop iteration Discrete iteration Procedure control structure Simple recursion Block structure Procedure statement Flowcharts Well-structured flowcharts, connection to structure charts Notion of abstract data type Basic data types Ordinal types Integer types Boolean Char Scalar types Subrange types Real types Single, Double, Extended, Comp Composite data types String Array Record Set Implementation of data types in Pascal Dynamic and flexible arrays Memory model Function and procedure types Type compatibility Typed constants Modules File data types Text files Typed files Untyped files Basic data-processing problems and their solutions C development environments Compilation of C/C++ programs Basic notions of C/C++ Data types in C/C++ Operations of the integer and real data types Input and output in C/C++ Implementation of the control structures in C/C++ Selection control structures Simple selection Multiple selection constructs Case selection constructs Iteration control structures While iteration Repeat-until iteration Counting iteration Loop iteration Discrete iteration Function operations in C/C++ Structures of C/C++ programs Basic data type in C/C++ Integer types int, signed, unsigned, short, long Character types char, signed, unsigned Enum type construct Real types float, double, long Composite types and type constructs in C/C++ Pointer arithmetic Handling in and out parameters in C/C++ Array types in C/C++ Strings Record types in C/C++ Union types Function pointers Processing command line arguments Involved declarations Type coercion Input and output in C/C++ Files data types in C/C++ Low level input/output Pre-processing C/C++ programs Recommended textbooks: Marton László: Bevezetés a Pascal nyelvű programozásba. Győr, Novadat, 1994. Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai. Bp. 1998. Fercsik János: A PASCAL programozási nyelv. Bp. Műszaki K., 1996. Brian W Kernighan and Dennis M Ritchie, A C programozási nyelv, Műszaki Kiadó, 1985. Brian W Kernighan and Dennis M Ritchie, A C programozási nyelv, Az ANSI szerint szabványosított változat, Műszaki Kiadó, 1996 Bell, Douglas: Programozás C++ nyelven. Bp. : Panem, 1998, Programming languages Formal languages elements. Programming languages theory. Syntax trees. Semantics. Objects and various object types. Data control. Subprograms. Memory organization. Elements of programming methodology. Program structure. Object definition. Object Oriented view of the world. Classes, Instances, Messages, Object Interface, Methods, Single and Multiple Inheritance, Information Hiding, Encapsulation. Data Abstraction, Abstract Data Types, Class and Instance Variables, Dynamic Binding, Polymorphism, Abstract Classes, Meta-classes. Object Oriented System Analysis and Design. Object Oriented methods, Object Oriented User Interfaces. Object Oriented Programming Languages, Advantages, Disadvantages. Programming and exercises in C++ Language. Function as programming mean. Upper class functions. Function types and polymorphism. Lambda Function. Functional Programming languages and machines. LISP-like language. Elements of logic programming. Programming in Prolog Algorithms and data structures Basic notions: computational problem, specification, algorithms, instance of a problem, correctness of algorithms, analysis of algorithms Data models Efficiency of Algorithms, running time of algorithms Asymptotic notations Simple sorting algorithms: selection sort, insertion sort Heap-sort Quicksort Merge sort Lower bounds for sorting Sorting in linear time: Counting sort Bucket sort Radix sort Medians and order statistics Selection in worst-case linear time External sorting Sorting with merging Sorting with partitioning Dynamic programming Optimal binary search trees Greedy strategy Activity-selection problem Huffman codes Backtracking Branch-and-bound Elementary abstract data types and data structures Linked lists Stacks Queues Priority queues Dynamic set abstract data type Trees, binary search trees Balanced binary search trees AVL trees Red-Black trees Self-adjusting binary search trees B-trees Skiplists Hash tables Direct-address tables Open addressing Hash functions Binomial heaps Data structures for disjoint sets: Union-Find abstract data type Representations of graphs Elementary graph algorithms Breadth-first search Depth-first search Topological sort Strongly connected components Minimum spanning trees The algorithm of Kruskal and Prim Single-source shortest paths Dijkstra's algorithm All-pairs shortest paths Floyd-Warshall algorithm String matching Knuth-Morris-Pratt algorithm Boyer-Moore algorithm Recommended textbooks: T. H. Cormen, C.E. Leiserson, R.L. Rivest: Algoritmusok, Műszaki Könyvkiadó, 1998. D. E. Knuth: A számitógépprogramozás művészete, 1. Kötet, Műszaki Könyvkiadó, 1988. D. E. Knuth: A számitógépprogramozás művészete, 3. Kötet, Műszaki Könyvkiadó, 1990. A. V. Aho, J. E. Hopcroft, J. D. Ullman: Számitógép-algoritmusok tervezése és analizise, Műszaki Könyvkiadó, 1982. G. Gonnet, R. Baeza-Yates: Handbook of algorithms and data structures. In Pascal and C. , Addison-Wesley. 1991. R. Sedgewick: Algoritms in C++, Addison-Wesley. 1991. E. Horowitz, S. Shani: Fundamentals of Computer Algorithms, Computer Science Press, 1998.