Course detail

Algorithms

FIT-IALAcad. year: 2019/2020

Overview of fundamental data structures and their exploitation. Principles of dynamic memory allocation. Specification of abstract data types (ADT). Specification and implementation of ADT's: lists, stack and its exploitation, queue, set, array, searching table, graph, binary tree. Algorithms upon the binary trees. Searching: sequential, in the ordered and in not ordered array, searching with the guard (sentinel), binary search, search tree, balanced trees (AVL). Searching in hash-tables. Ordering (sorting), principles, sorting without the moving of items, sorting with multiple keys. Most common methods of sorting:Select-sort, Bubble-sort, Heap-sort, Insert-sort and variants, Shell-sort, recursive and non-recursive notation of the Quick sort, Merge-sort,List-merge-sort, Radix-sort. Recursion and backtrack algorithms. Searching the patterns in the text. Proving of the correctness of programs, construction of proved programs.

5 ECTS credits represent approximately 125-150 hours of study workload:

  • 39 hours of lectures
  • 26 hours for two home assignments
  • 35 hours of project work
  • 20 hours of continual study
  • 30 hours of study for the midterm and final examination

 

Language of instruction

Czech

Number of ECTS credits

5

Mode of study

Not applicable.

Learning outcomes of the course unit

  • The student will acquaint with the methods of proving of the correctness of programs and with the construction of proved programs and learn their significance. 
  • The student will learn the fundamentals of algorithm complexity and their intention. 
  • He/she acquaints with basic abstract data types and to commands its implementation and exploitation. 
  • Student will learn the principles of dynamic memory allocation and will be using them on the model system. 
  • He/she learns and commands recursive and non recursive notation of basic algorithms. 
  • Student overrules the implementation and analysis of most used algorithms for searching and sorting.

  • The student learns terminology in Czech and English language
  • The student learns to participate on the small project as a member of a small team
  • Student learns to present and defend the results of the small project

Prerequisites

  • Basic knowledge of the programming in a procedural programming language
  • Knowledge of secondary school level mathematics

Co-requisites

Not applicable.

Planned learning activities and teaching methods

Not applicable.

Assesment methods and criteria linked to learning outcomes

  • Evaluated home assignments - 20 points
  • Mid-term written examination - 14 point
  • Evaluated project with the defence - 15 points
  • Final written examination - 51 points; The minimal number of points which can be obtained from the final written examination is 24. Otherwise, no points will be assigned to a student.

Exam prerequisites:
  • to earn min. 20 points within the semester
Plagiarism and not allowed cooperation will cause that involved students are not classified and disciplinary action can be initiated.

Course curriculum

Not applicable.

Work placements

Not applicable.

Aims

The student will learn the fundamentals of algorithm complexity and will be able to use gained knowledge in the design of programmes. The student learns the principles of dynamic memory allocation and he will exercise them on the model system. Student acquaints with basic abstract data types and to command its implementation and exploitation. The student learns and commands recursive and non-recursive notation of basic algorithms and will be able to use gained knowledge in the design of programmes. Student understands the implementation and analysis of most of the used algorithms for searching and sorting. The student will learn the principles of methods of proving of the correctness of programs (Wirth) and with basic concepts of construction of proved programs (Dijkstra) and will be able to use gained knowledge in the design of programmes.

Specification of controlled education, way of implementation and compensation for absences

In case of illness or another serious obstacle, the student should inform the faculty about that and subsequently provide the evidence of such an obstacle. Then, it can be taken into account within evaluation:
  • The student can ask the responsible teacher to extend the time for the home assignment.
  • If a student cannot attend the mid-term exam, (s)he can ask to derive points from the evaluation of his/her first attempt of the final exam. To enter the final exam in this case, at least 14 points from home assignments and project are required.
  • If a student cannot attend the defense of the project and the other team members agree with that (s)he can earn the same points from the project defence as for present members.

Recommended optional programme components

Not applicable.

Prerequisites and corequisites

Basic literature

Not applicable.

Recommended reading

Aho A.V., Hoppcroft J.E., Ullman J.D.: Data Structures and Algorithms, Addison Wesley, 1983
Amsbury, W: Data Structures: From Arrays to Priority Cormen, T. H., Leiserson, Ch.E., Rivest, R.L.: Introduction to Algorithms.
Baase, S.: Computer Algorithms - Introduction to Design and Analysis. Addison Wesley, 1998
Knuth, D.: The Art of Computer programming, Vol.1,2,3. Addison Wesley, 1968
Kruse, R.L.: Data Structures and Program Design. Prentice- Hall,Inc. 1984
Mareš, M., Valla, T.: Průvodce labyrintem algoritmů, CZ.NIC, 2017, ISBN 978-80-88168-19-5, http://pruvodce.ucw.cz/
Wirth, N.: Alorithms+Data Structures=Programs, Prentice Hall, 1976

Classification of course in study plans

  • Programme BIT Bachelor's 2 year of study, winter semester, compulsory

  • Programme IT-BC-3 Bachelor's

    branch BIT , 2 year of study, winter semester, compulsory

  • Programme B3A-P Bachelor's

    branch B-MAI , 3 year of study, winter semester, elective (voluntary)

Type of course unit

 

Lecture

39 hod., optionally

Teacher / Lecturer

Syllabus

  1. Overview of data structures. Abstract data type and its specification.
  2. Specification, implementation and exploitation of the ADT list.
  3. Specification, implementation and exploitation of ADT stack, queue. Numeration of expressions with the use of the stack.
  4. ADT array, set, graph, binary tree.
  5. Algorithms upon the binary tree.
  6. Searching, sequential, in the array, binary search.
  7. Binary search trees, AVL tree.
  8. Hashing-tables.
  9. Ordering (sorting), principles, without movement, multiple key.
  10. Most common methods of sorting of arrays - beginning.
  11. Most common methods of sorting of arrays - continuation, sorting of files.
  12. Recursion, backtracking algorithms.
  13. Proving the programs, construction of proved programs.

Project

13 hod., compulsory

Teacher / Lecturer

Syllabus

  • Two home assignments
  • Project with a mini-defence for a team of students.