Software design introduction in relation with Object Oriented programming and Java environment. The emphasis will be placed on those points that characterize modern application design: object-oriented design, parallel processing, MVC pattern, event-driven architectures, interaction with the user and event management, graphical human-machine interfaces (GUIs), functional design, interaction with remote resources via Internet sockets. The Java language and environment is introduced and used to practice with the theoretical knowledge of software design.