Course: Basics of effective programming

« Back
Course title Basics of effective programming
Course code KIV/ZEP-E
Organizational form of instruction Lecture
Level of course Bachelor
Year of study not specified
Semester Summer
Number of ECTS credits 4
Language of instruction English
Status of course Compulsory, Compulsory-optional, Optional
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)
  • Kohout Josef, Doc. Ing. Ph.D.
Course content
- The evaluation of algorithms, time and memory complexity. Master theorem. - Common redundant, time-consuming operations in the code and their elimination. - The robustness of algorithms, singular cases, and the accuracy of numerical calculations. - Matrix and vector operations (Strassen formula, dot and cross product). Linear and non-linear systems of equations (including overdetermined systems). - Memory management. Memory allocation, deallocation, garbage collector, memory leaks. Too large data sets (they do not fit the memory). - Cache in the current computers and its efficient use (bricking technique) - Divide and Conquer. Binary vs. interpolation search, median. Space partitioning. - Big data processing. Reduction of problem space dimension. Data sampling, Sobolov sequences. Custom SW cache. Compression. Checksums (LUHN, CRC, Adler32, MD5). - Graph representations, Dijkstra and Floyd-Warshall algorithms. - Heuristics approach. State machines, pruning. The problem of optimal assignment - Hungarian marriage.

Learning activities and teaching methods
Interactive lecture, One-to-One tutorial, Seminar classes, Individual study
  • Individual project (40) - 40 hours per semester
  • Contact hours - 26 hours per semester
  • Preparation for an examination (30-60) - 30 hours per semester
prerequisite
Knowledge
describe computer program execution
describe the principles of imperative programming, i.e., control flow, methods, etc.
be familiar with mathematical concepts at the level of secondary school mathematics
Skills
create a computer program in any programming language to solve a simple problem (e.g., deciding whether there are duplicities in an array of numbers)
Competences
N/A
learning outcomes
Knowledge
assessment of time and memory complexity of both recursive and non-recursive programs
basic principles used in the design of the effective algorithms (such as sorting, divide & conquer, space partitioning)
basic principles used to increase the effectivity or robustness of concrete implementation (e.g., elimination of constant calculations in loops, data alignment to better fit the cache, data compression, etc.)
Skills
design of an algorithm solving a non-trivial problem (such as optimal choice of supermarkets in a city)
assess the expected algorithmic complexity of the designed algorithm
Competences
N/A
teaching methods
Knowledge
Interactive lecture
Individual study
One-to-One tutorial
Seminar classes
Skills
Interactive lecture
Individual study
Competences
Interactive lecture
Discussion
One-to-One tutorial
assessment methods
Knowledge
Written exam
Seminar work
Skills
Written exam
Seminar work
Competences
Written exam
Seminar work
Recommended literature
  • Alsuwaiyel, M. H. Algorithms: Design Techniques and Analysis (Revised Edition). 2016. ISBN 978-981-4723-64-0.
  • Alsuwaiyel, M. H. Algorithms: design techniques and analysis. 1st pub. Singapore : World Scientific, 1999. ISBN 981-02-3740-5.
  • McConnell, Jeffrey. Analysis of algorithms: an active learning approach. Jones & Bartlett Publishers, 2007. ISBN 978-0763707828.


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