After the discovery of object programming in the core curriculum, this course aims to continue learning object programming by studying : human-computer interfaces, or how to offer the user a nice ergonomic interface ; concurrency, or how to use several cores of a microprocessor to make a parallel calculation; distributed programming, or how to make remote computers work together on a network. This is one of the principles of cloud computing; mobile programming, or how to program on Android. Java is a language widely used in the industry, with vast libraries to facilitate programming and essential to mastering Android programming.