This course provides a comprehensive introduction to mobile application development using the Android platform and the Java programming language. Student will know the Android ecosystem, starting from environment setup with Android Studio to the creation of advanced, interactive user interfaces applications.

The essential theoretical and practical basics for the Mobile Application Development module are provided with a clear and accessible structure. The material focuses on providing hands-on, practical knowledge for building functional Android applications from scratch.  It emphasizes the Activity lifecycle, event handling, resources embedding, data processing and the integration of modern UI components respecting best professional practices.

The choice of using Java language is based on the programming languages background acquired by students focusing on C++ and Java with which they are most comfortable (classes, inheritance, interfaces, exception handling, and basic data structures). Once most skills of this course are acquired, students could easily go beyond java language to Kotlin or Flutter.

Target Audience

The course is primarily designed for Computer Science and Software Engineering students. However, due to its clear and accessible design, the material is also suitable for anyone seeking practical, hands-on experience in Android application development (some required java programming skills).

General Objectives

By the end of this course, students will have acquired the theoretical knowledge, understanding the Android platform's architecture, and hands-on practical skills to independently design, implement, and deploy functional Android applications. The focus throughout is on how to use the right component, lifecycle callback, layout type, resource strategy and simply read and understand java code snippets.

The objective of this module is to provide students with the fundamental concepts of artificial intelligence. The focus of this module is on the contribution of AI to problem solving, moving beyond traditional computational computing tasks toward problems that require an approach based on reasoning principles.