Course: Computers and Programming 2

» List of faculties » FAV » KIV
Course title Computers and Programming 2
Course code KIV/PPA2E
Organizational form of instruction Lecture + Tutorial
Level of course Bachelor
Year of study not specified
Semester Summer
Number of ECTS credits 5
Language of instruction English
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Course availability The course is available to visiting students
Lecturer(s)
  • Slánský Vlastimil, doc. Ing. Ph.D.
Course content
1. Problem, algorithms, program. Program and programming language. Program execution. Object, class. 2. Linked data structured. Program correctness. Program analysis. 3. Abstract data type. Stack and queue. 4. Linked list. Examples of recursion. Recursive programs. 5. Recursion and stack. Tree, basic concepts. Binary tree. Binary search tree. 6. Graphs and their implementation. Graph search. Topological sort. 7. Direct-address tables. Hash tables. Hash function. 8. Priority queue. Heap. Sort using priority queue. 9. Sorting problem. Heap sort. Shell sort. Quicksort. Mergesort. 10.Generic programming. Inheritance. Interface. 11.Abstract problem. Algorithmically unsolvable problems. Lower bound for sorting. Classification of problems. 12.NP-complete problems. Satisfiability of logical circuit. Proof of NP-completeness. 13. Examples of practical application of algorithms.

Learning activities and teaching methods
Lecture supplemented with a discussion, Lecture with visual aids, Practicum
  • Preparation for formative assessments (2-20) - 8 hours per semester
  • Individual project (40) - 40 hours per semester
  • Contact hours - 65 hours per semester
  • Preparation for an examination (30-60) - 30 hours per semester
prerequisite
Knowledge
to understand basic imperative control flow in Java
to understand primitive data types used in Java
to describe programming principles in imperative programming language, with focus on control flow
to describe basic means of data representation in a computer
to demonstrate knowledge of basic math terminology and methods
Skills
to perform basic mathematical derivations and calculations
to use some common integrated development environment for Java on user level
to construct simple programs in Java
Competences
N/A
learning outcomes
Knowledge
to interpret statements on problem complexity, to understand statements on complexity classes P, NP and NP-C
to name and describe the most commonly used sorting algorithms and to analyze their properties
to interpret statements on algorithm complexity and complexity classes O, Theta and Omega
to name and describe the most commonly used data types, their possible implementations and their implied properties
to describe the means of performing a Java program, in particular regarding the memory allocation on the heap and construction of stack frames
to determine the complexity of operations on particular implementations of abstract data structures, in particular of the standard implementations in the Java class libraries
Skills
to implement basic tree data structure processing algorithms, i.e. preorder, inorder and postorder traversal
to implement advanced algorithms to process dynamic data structures
to construct advanced data structures according for particular problems, with focus on choosing a proper and efficient abstract data structure and its implementation
to implement programs in Java using basic principles of object oriented programming
to analyze and to compare algorithms in terms of their computational and memory complexity
to implement basic graph processing algorithms, i.e. breadth first search, depth first search and topological ordering
Competences
N/A
teaching methods
Knowledge
Individual study
Lecture with visual aids
Lecture supplemented with a discussion
Practicum
assessment methods
Continuous assessment
Written exam
Test
Seminar work
Recommended literature
  • Cormen, Thomas H. Introduction to algorithms. Cambridge : MIT Press, 2001. ISBN 0-262-03293-7.
  • Lafore, Robert. Data structures & algorithms in Java. Corte Madera : Waite Group Press, 1998. ISBN 1-57169-095-6.
  • Sedgewick, Robert. Algorithms in Java. Pts. 1-4, Fundamentals, data structures, sorting, searching. 3rd ed. Boston : Addison-Wesley, 2003. ISBN 0-201-36120-5.
  • Šafařík, Jiří. Počítače a programování 2. ZČU, 2005.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester