Title:  Algorithms 

Code:  IAL 

Ac.Year:  2018/2019 

Sem:  Winter 

Curriculums:  Programme  Field/ Specialization  Year  Duty 
ITBC3  BIT  2nd  Compulsory 


Language of Instruction:  Czech 

Credits:  5 

Completion:  credit+exam (written) 

Type of instruction:  Hour/sem  Lectures  Seminar Exercises  Laboratory Exercises  Computer Exercises  Other 

Hours:  39  0  0  0  13 

 Exams  Tests  Exercises  Laboratories  Other 

Points:  51  14  0  0  35 



Guarantor:  Honzík Jan M., prof. Ing., CSc. (DIFS) 

Deputy guarantor:  Křena Bohuslav, Ing., Ph.D. (DITS) 

Lecturer:  Burgetová Ivana, Ing., Ph.D. (DIFS) Honzík Jan M., prof. Ing., CSc. (DIFS) Křena Bohuslav, Ing., Ph.D. (DITS) 
Instructor:  Burgetová Ivana, Ing., Ph.D. (DIFS) Honzík Jan M., prof. Ing., CSc. (DIFS) Hranický Radek, Ing. (DIFS) Jeřábek Kamil, Ing. (DIFS) Křena Bohuslav, Ing., Ph.D. (DITS) Křivka Zbyněk, Ing., Ph.D. (DIFS) 

Faculty:  Faculty of Information Technology BUT 

Department:  Department of Information Systems FIT BUT 

Prerequisites:  

Followups:  

Substitute for:  

 Learning objectives: 

  Student will learn the principles of methods of proving of correctness of programs (Wirth) and with basic concepts of construction of proved programs (Dijkstra) and will be able to use gained knowledge in design of programmes.. Student will learn the fundamentals of algorithm complexity and will be able to use gained knowledge in design of programmes. 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. Student learns and commands recursive and non recursive notation of basic algorithms and will be able to use gained knowledge in design of programmes.. Student overrules the implementation and analysis of most of used algorithms for searching and sorting.  Description: 

  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 hashtables. Ordering (sorting), principles, sorting without the moving of items, sorting with multiple keys. Most common methods of sorting:Selectsort, Bubblesort, Heapsort, Insertsort and variants, Shellsort, recursive and nonrecursive notation of the Quick sort, Mergesort,Listmergesort, Radixsort. Recursion and backtrack algorithms. Searching the patterns in the text. Proving of correctness of programs, construction of proved programs. 5 ECTS
credits represent approximately 125150 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 midterm and final examination
 Knowledge and skills required for the course: 

 
 Basic knowledge of the programming in procedural programming language
 Knowledge of secondary school level mathematics
 Subject specific learning outcomes and competencies: 

 
 Student will acquaint with the methods of proving of correctness of programs and with construction of proved programs and learn their significance.
 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 use 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.
 Generic learning outcomes and competencies: 

 

Student learns terminology in Czech and English language

Student learns to participate on the small project as a member of small team

Student learns to present and defend the results of the small project  Why is the course taught: 

  Almost all computer programs need to store data during their execution. Students will make familiar with common data structures and understand their properties. It allows them later to choose the right data structure for a particular purpose. Students also learn algorithms associated with discussed data structures and will be able to analyse and evaluate them using asymptotic time complexity method.
 Syllabus of lectures: 

  Overview of data structures. Abstract data type and its specification.
 Specification, implementation and exploitation of ADT list.
 Specification, implementation and exploitation of ADT stack, queue. Numeration of expressions with the use of stack.
 ADT array, set, graph, binary tree.
 Algorithms upon the binary tree.
 Searching, sequential, in the array, binary search.
 Binary search trees, AVL tree.
 Hashingtables.
 Ordering (sorting), principles, without movement, multiple key.
 Most common methods of sorting of arrays  beginning.
 Most common methods of sorting of arrays  continuation, sorting of files.
 Recursion, backtracking algorithms.
 Proving the programs, construction of proved programs.
 Syllabus  others, projects and individual work of students: 


 Two home assignments
 Project with a minidefense for a team of students.
 Fundamental literature: 


 Knuth, D.: The Art of Computer programming, Vol.1,2,3. Addison Wesley, 1968
 Wirth, N.: Alorithms+Data Structures=Programs, Prentice Hall, 1976
 Horovitz, Sahni: Fundamentals of Data Structures.
 Amsbury, W: Data Structures: From Arrays to Priority Cormen, T. H., Leiserson, Ch.E., Rivest, R.L.: Introduction to Algorithms.
 Aho A.V., Hoppcroft J.E., Ullman J.D.: Data Structures and Algorithms.
 Kruse, R.L.: Data Structures and Program Design. Prentice Hall,Inc. 1984
 Baase, S.: Computer Algorithms  Introduction to Design and Analysis. Addison Wesley, 1998
 Study literature: 


 Honzík, J., Hruška, T., Máčel, M.: Vybrané kapitoly z programovacích technik, Ed.stř.VUT Brno,1991.
 Mareš, M., Valla, T.: Průvodce labyrintem algoritmů. CZ.NIC, 2017. ISBN 9788088168195. http://pruvodce.ucw.cz/
 Controlled instruction: 

  In case of illness or other serious obstacle, student should inform the faculty about that and subsequently provide the evidence of such obstacle. Then, it can be taken into account within evaluation:
 The student can ask responsible teacher to extend the time for home assignment.
 If student cannot attend the midterm exam, (s)he can ask to derive points from the evaluation of his/her first attempt of final exam. To enter the final exam in this case, at least 14 points from home assignments and project are required.
 If 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 defense as present members.
 Progress assessment: 

 
 Evaluated home assignments  20 points
 Midterm written examination  14 point
 Evaluated project with the defense  15 points
 Final written examination  51 points; The minimal number of points which can be obtained from the final written examination is 20. Otherwise, no points will be assigned to a student.
 Exam prerequisites: 

   
