WORLD GATEWAY EDUCATION AGENCY WORLD GATEWAY EDUCATION AGENCY
University of Information Technologies and Management

Software engineering

Bachelor Full-time 4 year Grant available

About the programme

I. The content of science

The goal of teaching science is to study the basic principles of collecting, storing, processing, and transmitting information using the C++ programming language. As well as to study the methods and technologies for creating modern information systems. To solve problems related to various technical knowledge using modern programming languages and to study their methods.

The task of science – The essence of the subject of "Programming", its main principles, and objectives are to develop students' algorithmic knowledge . To achieve this, the capabilities of a modern programming language (C++) are used.

II. Main theoretical part (lectures)

The science includes the following topics:

1st semester

  1. Introduction to programming. Algorithm. Algorithm properties and expression methods. Program and his/her code. Programming languages. Compiler and interpreter. Programming environments. The program 's general structure . Variables and their Types. Immutables. Operators and expressions . Data input and output. Linear algorithms organization to do and algebraic expressions mathematician library functions using calculation.
  2. Branching operator. Branching operator operators and them work order . Ternary operator . Unconditional to pass operator . Select operator . Select operator's general structure . Selection operator in the content variable and values , break , and default operators .
  3. Repetition operators . Parameterized iteration operator ( for ). Recursion operators. Condition before and condition  then given iterative operators ( while and do while ).
  4. Arrays . One-dimensional arrays. Static arrays. Array elements with work , them sorting and searching. Arrays on various kind actions . K -dimensional arrays . Methods for sorting and searching array elements. Arrays on various kind actions to perform methods
  5. Functions . Function description and structure. Functions that return a value (with type) and functions that do not return a value (without type). Functions with and without parameters. Function argument . Creating user functions . Organizing a user library. Recursive functions.
  6. Strings and extended characters ( Of type Char ) . String standard functions and they using to the lines processing to give (In the String category ) . String standard functions and they using to the lines processing to give
  7.  Indicators​ and dynamic memory with performance . Dynamic array and them function parameter as memory usage​​ distributor functions .
  8.  Files . Files and their Types . Text files, binary files. Special functions for working with files .
  9.  Working with files . File streams i . Files reading and write . Files on top actions .
  10.  Standard libraries. Standard from libraries use . External libraries installation and use . User libraries create
  11.   User types . Structure , list and class . Create a structure ( struct ) and from it Use . List ( enum ) organization to grow and from it use .
  12.  Fundamentals of Object-Oriented Programming . Class and object Concepts . Constructs . Simple to classes examples
  13.  Fundamentals of Object-Oriented Programming . Advanced of the class general structure . In the class constructor , getter and setter methods , destructors Create . Objects array on actions
  14.  Object-oriented programming Principles : Encapsulation and inheritance . Controlling access to base class members.
  15.  Object-oriented programming Principles : Polymorphism . Operators and methods again loading​
  16. Reload functions . Friend functions . Templates . Operators again loading​
  17. Containers ( Collections ) . STL libraries . Container classes.Line containers .​ Linear containers (array, vector, deque, list, forward_list). Associative containers (set, map, multiset, multimap).
  18. Unorganized associative containers . Unorganized associative containers (unordered_set, unordered_map, unordered_multiset, unordered_multimap).
  19. Container adapters . Stack, queue, priority_ queue. Algorithms for working with containers. Application of functors.
  20. Standard iterators . Standard algorithms and iterators .
  21. Working with finite classes . Numerical classes and working with them (complex, vallaray , slice, gslice and etc. )
  22. Advanced sorting algorithms . Applied programming. Complex sorting algorithms. Working with very large numbers.

2nd semester

  1. Using Large classes. Using Large classes.
  2. Programming in Visual C++ environment . Programming in Visual C++. Menus and toolbars in Visual C++.
  3. Working with components . Component concept and Features : Standard , Additional, System components . Standard , Additional, System components .
  4. Working with dialog boxes . In Visual C++ environment communication windows and they adjust , manage elements .
  5. Visual C ++ forms . Forms, components, and special functions that process them.
  6. Visual C++'s graphics capabilities . Visual C++'s graphical capabilities (graphics, building images and function graphs). Chart components .
  7. Creating small projects . Methods for designing (mini) small projects to solve problems in various fields in the Visual C++ environment. Methods for writing algorithms for small projects.
  8. Reporting in Visual C++. Elements of preparing and printing a report form in Visual C++. Methods of designing and testing the user interface. Compilers' capabilities based on web technologies.

III. The following topics are recommended for practical training:

1st semester

1. Algorithms of linear structures and their application

2. Branching algorithms and their application .

3. Recursive Structure Algorithms and Their Program

4. Input and output functions

5. Organizing arrays. Organizing two-dimensional arrays

6. Standard algorithms applied to array elements

7. Strings and operations on strings. Standard string functions

8. Organization of functions. Recursive functions.

9. Function reloading mechanism . Basics of working with files

10. Pointers and working with them

11. The concept of dynamic memory. Dynamic arrays

12. Classes and objects . Object-oriented programming. Encapsulation

13. Constructors and destructors. Friendly functions of a class

14. Array of objects. Inheritance .

15. Constructors and destructors in inherited classes. Polymorphism .

2nd semester

  1. Overloading functions in inherited classes.
  2. Operator overloading in derived classes . Handling access to base class members
  3. Template functions Template classes . Reloading template functions
  4. Graphical capabilities of programming languages
  5. 5. Dynamic information structure of data
  6. Polymorphism. Reloading operators and functions
  7. Component properties and events
  8. Event handling methods
  9. Standard, Additional, System page descriptions
  10. Editor's menu and toolbar . Working with the editor's graphical capabilities
  11. Working with the editor's database components
  12. Creating diagrams using graphic components
  13. Studying the requirements for developing a mini project
  14. Ways to build a mini project algorithm
  15. Mini project testing steps

IV. Independent learning and independent work

The purpose of independent work is to ensure that students, under the direct guidance and supervision of professors, continuously master the subject during the semester, consolidate the knowledge gained, acquire the necessary skills, prepare for future lessons, and form a culture of intellectual work and the ability to independently search for and accept new knowledge.

When organizing student independent work, the following forms are used, taking into account the characteristics of the subject "Programming", as well as the level of academic mastery and abilities of each student: independent mastery of certain theoretical topics using various educational literature, preparation of a program on a given topic, preparation for practical and internship training, completion and preparation of course work, preparation of lecture abstracts for conferences, participation in science Olympiads, participation in scientific societies and circles, participation in the scientific work of departments.

Students studying the subject "Programming" work independently under the guidance of the department's teachers, based on an independent learning system, to consolidate the theoretical knowledge they have gained in the classroom and develop skills in solving practical problems in economics.

It is recommended that the student use the following forms when preparing independent work, taking into account the characteristics of this discipline:

  • Studying science topics from textbooks and study guides;
  • Mastering the lecture part on handouts;
  • Computer technologies and work with systems;
  • Preparation of abstracts and reports on special literature;
  • Develop programs for assigned tasks ;
  • In-depth study of literature, monographs, and scientific collections related to the student's academic and research work;
  • Active participation in interactive and problem-based learning;
  • Participation in the organization of distance learning .

Recommended topics for independent study:

1st semester

  1. Basic capabilities and structures of the C++ language.
  2. Data types: int, float, double, char, string.
  3. Arithmetic and logical operators in C++.
  4. If-else conditional operators and their use in programming.
  5. Switch-case construction.
  6. For, while, and do-while loops.
  7. Arrays and their types (one-dimensional and multidimensional).
  8. Indicators and their application.
  9. Methods of passing functions and parameters (by value and by reference).
  10. Recursion in C++ and solving problems with it.
  11.   Classes and objects.
  12. Constructors and destructors.
  13. Operator overloading in C++.
  14. Inheritance and its importance in programming.
  15. Polymorphism and virtual functions.
  16. Abstract classes and interfaces.
  17. Working with files (creating, reading, writing files).
  18. Static and const keywords.
  19. Dynamic memory allocation (new and delete operators).
  20. Create and manage a linked list.
  21. Stack and Queue structures.
  22. Binary tree and its types (binary search tree, AVL tree).
  23. Hash tables and their applications.
  24. Graph algorithms: BFS and DFS.
  25. Sorting algorithms: bubble sort, selection sort, quick sort.
  26. Searching algorithms: linear search and binary search.
  27. Working with databases (connecting to SQL).
  28.   Saving and loading data to a file in C++.
  29. Object-oriented programming and design principles (SOLID).
  30. Exception handling (try-catch blocks).

2nd semester

  1. C++ standard library (STL): vector, list, map, set.
  2. STL algorithms: sort, find, count, etc.
  3. Template functions and classes.
  4. Lambda expressions in C++.
  5. Multithreading and synchronization.
  6. Mutex, semaphore and their applications in programming.
  7. Signal and slot mechanism (on the example of the Qt framework).
  8. Creating a GUI in C++ (using Qt or wxWidgets).
  9. Create a program using OOP principles in C++.
  10. Data structure: binary heap and priority queue.
  11. Dijkstra and A* algorithms.
  12.   Memory management and pointer arithmetic.
  13. Creating and using interfaces in C++.
  14. Namespace and its use in programming.
  15. Bitwise operators and their applications.
  16. Compilers and interpreters: analysis using the example of C++.
  17. Design patterns: Singleton, Factory, Observer, etc.
  18. Profiling and optimizing programs in C++.
  19. Macros and preprocessor directives (define, include).
  20. TCP/IP and socket programming in C++.

V. Results of science teaching (competences to be formed)

Students must have:

  • areas of application of programming languages;
  • program structure and alphabet;
  • immutable and variable data types, methods of using them;
  • methods of applying mathematical and logical operations;
  • methods of using input-output operators;
  • create algorithms and programs for linear, branching, and iterative processes;
  • create and use functions and libraries;
  • work with arrays, characters, and strings;
  • work with static and dynamic data structures;
  • work with files;
  • The class aims to teach how to apply the capabilities of object-oriented programming to various fields.

In addition, future specialists will be taught practical issues and information modeling skills.

VI. Educational technologies and methods:

• lectures;

• interactive case studies ;

• practical ( logical) thinking , quick question answers );

• small in groups work ;

• presentations to do ;

• individual projects ;

• team to be work and protection to do for projects preparation ;

mental attack and others .

VII. Loans to take for requirements :

  To science related theoretical and practical concepts full mastery , analysis the results correct reflection bring to get , to study processes about independent under observation to conduct , to recommend done independent education topics own during the term good quality preparation protection to do ), current , intermediate control in the form of given task and assignments completion , final control according to writing the work submission .

Main literature

  1. Nazirov Sh.A., Qobulov R.V., Bobojanov M.R., Raxmanov Q.S. S va C++ tili. “Voris nashriyot” MChJ, Toshkent 2013, 488 b.
  2. Horton I.-Beginning Visual C++ 2012/ I. Horton. Published imultaneously in Canada.-2012.-P.988.

Additional literature

1. Bjarne Stroustrup. Programming: Princeples and Practice Using C++ 2nd Edition). Person Education, Inc.2014. second printing, January 2015.

2. Bjarne Stroustrup. The C++ Programming Language, 4nd Edition. Person Education, Inc.2013. Third printing, April 2014.

3. Ж.Ахмадалиев, Р Холдорбоев С++ дастурлаш тилини ўрганиш бўйича услубий қўлланма (2015).

4. Макурин Ю.Д., Сивохин А.В. проектирование и реализация баз данных и клиентских приложений в среде MS Visual Studio.NET(2010)

5. Прохоренок Н.А. Программирование на С++ в Visual Studio 2010 Express(2010).

6. Fedorov A.A. Microsoft Visual Studio 2008. Краткие обзор ключевых новинок(2008).

7. Васильев А.Н. Java. Объектно-ориентированное программирование для магистров и бакалавров. –СПб.: Питер, 2012.-395 с.

8. Хорстманн К.С., Корнелл Г. Java-2. Библиотека профессионала. Т.1. Основы. –М.: Вильямс, 2012. 816 с.

9. Herbert Schildt. Java. Методики программирования Шилдта, -М.: И.Д. Вильямс 2018, - 512 с.

10. Кормен Т., Лайзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.: МЦНМО, 2014.

11. Стивен С. Скиена, Мигель А. Ревилла. Олимпиадные задачи по программированию.

12. Кнут Д. Искусство программирования. Том 1- 4., СПб. Вильямс 2007.

13. Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ, 2-е издание. : Пер. с англ. — М. : Издательский дом "Вильяме", 2005. 1296 c.

Internet resources

  1. Martin Koster "Robots in the Web; threat or treat?"
  2. http://info/webcrawler.com/mak/projects/robots/threat-or-treat/html
  3. neerc.ifmo.ru – Programming according to world championship North Eastern Europe
  4. http://www/cplusplus.com/
  5. http://acm.tuit.uz/forum/
  6. acm.tuit.uz
  7. acm.timus.ru – software testing system
  8. www.dastur.uz – a website that teaches programming languages
  9. www.dasturchi.uz - a website that teaches programming languages

Similar programmes