Algorithms and Programming Techniques (FSI-VCP)

Academic year 2021/2022
Supervisor: doc. Ing. Jan Roupec, Ph.D.  
Supervising institute: ÚAI all courses guaranted by this institute
Teaching language: Czech
Aims of the course unit:
The aim of the course is to learn how to formulate algorithms for a wide range of engineering tasks, develop programs in C and C ++ languages and understand the features of object-oriented programming and methodology of program design and creation using OOP.
Learning outcomes and competences:
Students will obtain the basic skills and experiences of program writing and debugging of average stage of difficulty. Students gain insight into principles and methods of object-oriented programming using C++ language.

Prerequisites:
The course expects basic knowledge of algorithms and computer literacy.
Course contents:
The course deals with algorithms and programming. C and C ++ programming languages are used for practicing. C (and languages derived from it) is currently one of the most widely used programming languages. Its great advantages include its universal applicability for various application areas and availability for most existing platforms. The C ++ language shows a very high degree of implementation of the features of object-oriented programming. The C ++ compiler is available for various platforms, the language itself is very well standardized. These features make C ++ one of the most suitable languages for building large-scale applications today.
Teaching methods and criteria:
The course is taught through lectures explaining the basic principles and theory of the discipline. Exercises are focused on practical topics presented in lectures.
Assesment methods and criteria linked to learning outcomes:
The course-unit credit award requirements are both active participation in seminars and individual elaboration of two software projects (the first project in the C language and the second one in the C++ language). Students select their projects assignments, which are approved by the teacher. The examination is oral and consists of discussion on the created projects with possible complementary questions. The evaluation is fully in competence of a tutor according to the valid directives of BUT.
Controlled participation in lessons:
The attendance at lectures is recommended; the attendance at seminars is obligatory. Education runs according to week schedules. The form of compensation for missed seminars is fully in the competence of the tutor.
Type of course unit:
    Lecture  13 × 2 hrs. optionally                  
    Computer-assisted exercise  13 × 2 hrs. compulsory                  
Course curriculum:
    Lecture 1. Introduction, Basic Data Types. Operators, Expressions.
2. Declaration and Definition. Programm Structure. Control Structures.
3. Arrays and Pointers, Pointer Aritmetic. Functions.
4. Structures, Unions, Type Definition. Preprocessor. Files and Streams.
5. C++ Language History. Differences between C and C++ languages.
6. OOP basic concepts. Object data types, member functions.
7. Class member access control. Constructors and destructors. Static members. Operator overloading.
8. Inheritance. Polymorphism, virtual member functions, abstract classes.
9. C++ data streams. Data structures in C++.
10. Exceptions handling. Templates.
11. Object oriented analysis and design.
12. - 13. Design and development of large projects using C++.
    Computer-assisted exercise 1. Introduction to Visual Studio. Simple console application.
2. Console applications development using Visual Studio.
3.-5. Realization of C-programs for basic algorithms - array processing, pointers, dynamic data structures.
6. Large projects in C.
7. Constructrors and destructors.
8. Inheritance, polymorphism.
9. Data structures realization in C++.
10. Templates.
11. Event driven programming. Example of Windows application.
12. Simple projects in Java a C#.
13. Discussion of individual projects.
Literature - fundamental:
1. Kernighan, B. W. - Ritchie, D, M.: The C Programming Language. Second Edition. Prentice-Hall, 2012.
2. Stroustrup, B.: The C++ Programming Language, Fourth edition, Pearson Education, 2013.
3. Drozdek, A.: Data Structures and Algorithms in C++. CENGAGE Learning, 2013.
Literature - recommended:
1. Capper, D.M.: Introducing C++ for Scientists, Engineers and Mathematicians, Springer, 2001.
2. Virius, M.: Jazyky C a C++, kompletní průvodce. Grada, 2011.
The study programmes with the given course:
Programme Study form Branch Spec. Final classification   Course-unit credits     Obligation     Level     Year     Semester  
B-STR-P full-time study AIŘ Applied Computer Science and Control -- Cr,Ex 5 Compulsory 1 2 S
N-AIŘ-P full-time study --- no specialisation -- Cr,Ex 5 Elective 2 1 S