Computer logic 1. Semester
The semantical and the syntactical treatment of the propositional calculus and the predicate calculus (zero-order and first-order logic). Concept of consequence, decision problem, automatic theorem proving and resolution principle. Soundness and completeness problems.
Computer architecture 1. Semester
Historical survey of computer generations, structure of processors (classification according to commands, CISC & RISC processors); types of memory (physical classification: RAM, ROM, EPROM..); memory handling (bus system, data, address and control bus, DMA); logical classification of memory (associative, cache, disk cache, virtual storage); interrupt and their characteristics; realisation of I/O systems; structure of disk drives (magnetic and optical storage); printers, screen handling (video cards and monitors), special periphery and their handling (keyboard, mouse, scanner,.); structure of IBM PC; structure of the operating system, configuration, network and transport concepts, concepts of parallel machines.
Introduction to programming I. 1. Semester
Basic concepts, relations, functions, series. Problems, programs, program functions, solutions, extensions. Type specifications, type, conformity. Weakest precondition, theory of specification. program constructions, Deduction, backtracking, transformations. Different forms of programs, coding.
Introduction to programming II. 2. Semester
Complex problems are solved (elementwise processing, backtracking, updating and listing). The basic types in programming are introduced, the most frequently used programming methods are discussed (specification, creating correct programs by using the concept of weakest precondition, solving programs by using predefined programming theorems). Strategies for program creation are also described such as function and data abstraction, program and type transformation and state space transformation.
Software Engineering I.,II. 3. and 4. Semesters
Objectives and aim of software engineering. Different approaches to solving the problem are discussed. The object oriented approach is discussed in detail. Definition of module and class, levels of abstractions within them, information hiding. Relationships among classes and objects: inheritance, association and aggregation. Object class diagram. The static model of software. States of classes. Definition of states and events. State-chart diagram, dynamic model. UML. Design patterns. XP, RUP.
Software Technology 5. Semester
Development of programs with GUI and data base support.
Data bases 3. Semester
The concept of data bases. Physical and logical data independence. The data base administrator. Basic characteristics of data base handling languages. Classical data processing modes and the comparison of data base handling systems. The levels of data modelling. Tendencies in data modelling. The hierarchical, the netted, the relational data models.
Relational data models. Concept of the domain, the attribute, the record. Relation as a concept of Descartes series, as mapping, as a table. The key and is characteristics. The functional dependence and its properties, families. Decomposition and it’s properties. The four normal forms. Normalisation. The operations of relational algebra.
Application of the dBase III language in data base handling.
Programming languages I. 4. Semester
Study of the general concepts underlying various programming languages and the most important language tools using the ADA language. Topics: concept of data types (type constructions, subtypes, types with parameters, aggregates, private types, packages). Subprograms (procedures and functions), parameters, overloading. Program structure, compilation unit, subunit. Elaboration of a declaration (static, dynamic). Scope and visibility, block structure, global and local variables. Exception handling. Concept and use of generic. Support of parallel programming (task object, task type). Object oriented features (Ada95). Predefinit library units.
Programming languages II. C++ 5. Semester
The structure of a C++ program, simple types, modifiers and storage classes, if, switch and different loop statements. Arrays, structures and unions. Typedef. Pointer arithmetic. Operators, math and string functions. Class type, inline functions, member access control. Constructor and destructor. Operator overloading. Dynamic objects. Inheritance, base class access, virtual base classes. Polymorphism, the virtual functions. Friend functions, abstract classes and templates. Streams.
Introduction to parallel programming
The basic concepts of a relational model of programming are introduced which model supports the synthesis of parallel programs. We define the concepts of a problem, an abstract program, behaviour relation of a parallel program and a solution. Programming theorems are developed and verified (computing the values of an associative function, theorem of pipelines, etc.) which theorems are widely applicable for different concrete problems. The abstract program is implemented in C/PVM on a PowerXplorer computer containing 16 processors. The effectiveness of an implemented program is investigated.
Formal Languages 4. Semester
Elementary concepts of formal language theory (alphabet, word, language, operations on languages). Methods of language description using finite amount of information. Production systems, formal grammars, languages generated by them. Classification of grammars and languages, Chomsky hierarchy theorem. Extension theorems, normal forms. Versions of finite automata and their equivalence. Characterization of regular languages by finite deterministic automaton. Small Bar-Hillel lemma, Myhill-Nerode theorem, Kleene theorem. Characterization of context-free languages by push-down automaton, deterministic context-free languages. Derivation trees, Bar-Hillel lemma. Strategies of parsing, LL(k) and LR(k) grammars. Some decidable problems of formal language theory.
Data structures 3. Semester
Solvability and unsolvability of problems, practical solvability of problems, the P and NP classes and their relation. Abstract data types, their representation by abstract data structures. Realization methods of abstract data structures. Realization of linear data structures, list-structures, dynamical storage management. Implementation of arrays, stacks, queues. Typical applications of stacks, processing of expressions. Trees, classification of trees, most interesting properties and operations on trees, application of trees. Sorting algorithms (bubble sort, insertion sort, tournament, heap, merge sort, radix, external sorting, sorting networks). Medians and order statistics. Advanced design and analysis techniques (divide and conquer, dynamical programming, randomization).
Assemblers 5. Semester
This course has three major themes: the use of a concrete assembly language; the study of algorithms of assemblers, linkers and loaders; and the theory of assemblers. The structure of a machine code is examined and the common properties of assembly languages are determined. We study the structure and algorithms of two- and one-pass macroassemblers, linkers and the loader program. The aim is to give the number of passes required to translation. We give an axiomatic approach to the theory of assemblers and the Fundamental Axiom of Assemblers is stated and the Fundamental Theory of Assemblers is proved. There is a practice as a part of this course. A simple assembly language is designed and an assembler for this language is created.
Compilers 6. Semester
The major theme of this course is the theory of compilers. The next main topics are examined: lexical analysis, syntactic analysis, the parsing of LL(1) and LALR(1) languages is examined in detail, semantic analysis using attribute translational grammars, run-time storage organization and management, code generation and code optimization. There is a practice as a part of this course, the theme of the practice: problems of compiler design and implementation. The strategy is to have students design a simple programming language and implement a compiler for this language.
Artificial intelligence 6. Semester
Production systems. State space representation. Irrevocable searching. Backtracking. Graph searching. Heuristic graph searching algorithms. Algorithm A, A*, and the monotone restriction. Problem reduction, problem decomposition. Searching in AND/OR graphs. Plan generation by decomposition. Two-person games.
Operating systems 6. Semester
History, functions, structure and types of operating systems. Memory management (monoprogramming, multiprogramming with fixed partitions, virtual memory with paging or segmentation, optimal page size, optimal memory size). Parallel processes in operating systems (mathematical model, determinancy, maximally parallel task systems, deadlock, mutual exclusion, synchronisation). Processor scheduling. Distributed operating systems. Performance and efficiency of computer systems.