Subject aims expressed by acquired skills and competences

The subject aims to introduce students to the basics of mobile development.
After successful completion of the subject the student will be able to
1. Distinguish whether the used platform is suitable for given application
2. Analyze, design and implement simple mobile application
3. Compare the efficiency of mobile application with a desktop-based one
4. Make use of basic set of extension APIs and their use
5. Decide in which manner is the application going to be distributed to the target device and discriminate if the application needs to be digitally signed or not.

Teaching methods

Lectures
Tutorials
Experimental work in labs
Project work
Other activities

Summary

The applications developed for mobile devices are becoming more and more common presently. In most cases these applications are targeted for mobile phones and tablets. The most widespread technologies which allow us to develop such applications are based on Java programming language or the combination of HTML, CSS and JavaScript.
Because the devices have a reduced functionality, limited processing power and limited (but usable) network access, we usually do not develop in a desktop-based version of the platform, but with a subset of such platform, extended with parts, containing classes with reduced requirements, limited or mobile device specific functionality.

Way of continuous check of knowledge in the course of semester

Credit requirements:
Implementation and defence of (a) mobile application(-s)
Voluntary presentation of extension APIs, other or related technology or the specifics of mobile application development.
Development of simple applications during labs.

E-learning

Další požadavky na studenta

Basic knowledge of at least one of the following programming languages: Java, C#, C/C++ or JavaScript
Basic knowledge of HTML

Prerequisities

Subject has no prerequisities.

Co-requisities

Subject has no co-requisities.

Subject syllabus:

Syllabus of lectures:
* Introduction to design of applications for mobile devices, technology overview and their share on mobile devices, development environments. Mobile platform architectures, target devices, relation to other technologies.
* Basic principles used during mobile platform design, targeted on devices with limited hardware abilities. Development and life-cycle of mobile applications.
* Over-the-Air Provisioning (OTA) architecture. Deployment of applications via Internet.
* Universal frameworks used for multi-platform application development independently on mobile operating system.
* Platform-independent inter-application communication - Web services, AJAX, CORS.
* Technologies used for HTML5 and JavaScript based mobile application development - HTML5, CSS3, ...
* Multi-threaded and worker-based approach and related problems.
* Working with forms, graphics and sound.
* Extension APIs: API and its version detection. API examples: messaging, multimedia support, geolocation, orientation, examples of some other APIs
* File access, JSON and XML processing.
* Communication with other devices - network communication, Bluetooth.
* Application security model: Virtual machine security, security of processed data, especially with standardized protocols: SSL, TLS a and X.509-based techniques.
* Application signing principles, sensitive APIs for different technologies. Limitations of unsigned applications depending on target platform.
* Debugging, code optimization, (partial) obfuscation as a protection method against reverse engineering. Automatic application startup based on external events, timer or during mobile OS startup.
The computer labs focus on obtaining of practical experience in the design of applications for mobile devices. Students will implement simple applications during the labs, following the topics addressed during lectures.
Syllabus of computer exercises:
* Basic work with developmnent environment, installation of plugins required for mobile development. Execution of developed code in emulator/simulator or on mobile devices.
* Record processing, serialization into binary (or string) format, internal storage and startup data for next execution.
* Basic GUI elements (high-level).
* HTTP, websockets, server-sent events and how to use them.
* Visual and Application Properties, especially fine-tuning the application with their use.
* Working with Canvas, keypress and touch events.
* Development of a simple 2D game.
* Working with sound and multimedia.
* Using features specific for mobile platforms (camera, orientation, geolocation).
* File access.
* Communication with a server using JSON.
Project requirements:
The students will be assigned a project, which they will implement. The time required to finish the project is approximately 21 hours. The project topic will be a mobile application or game, observing the formal requirements and using at least 3 advanced technologies/APIs covered in lectures and labs.

Conditions for subject completion

Full-time form (validity from: 2019/2020 Winter semester)

Task name

Type of task

Max. number of points(act. for subtasks)

Min. number of points

Credit and Examination

Credit and Examination

100(100)

51

Credit

Credit

45

20

Examination

Examination

55

20

Mandatory attendence parzicipation: Attending at least 70% of labs during the semester in a way which meets the credit criteria.