User interfaces in applications are intended for easy and transparent transmission of information from the application to a user and vice versa. Even a very good application can't be successful without a good user interface. The user is usually not familiar with algorithms, data structures and other programming solutions, which are responsible that the application works exactly as is expected of it. But the user sees the user interface and its every error or deficiency. The most important criterion when deciding which application to use (from several similar,  which perform more or less similar tasks), is frequently precisely adequacy and simplicity of the user interface. In this course you will learn, what are the characteristics of the modern user interfaces and  what principles are hidden behind their implementation. You will also learn how to create good user interfaces for desktop applications as well as web applications.