Course Unit Code | 460-4084/01 |
---|
Number of ECTS Credits Allocated | 4 ECTS credits |
---|
Type of Course Unit * | Optional |
---|
Level of Course Unit * | Second Cycle |
---|
Year of Study * | First Year |
---|
Semester when the Course Unit is delivered | Summer Semester |
---|
Mode of Delivery | Face-to-face |
---|
Language of Instruction | Czech |
---|
Prerequisites and Co-Requisites | |
---|
| Prerequisities | Course Unit Code | Course Unit Title |
---|
| 460-2025 | Design of Applications for Mobile Devices II |
Name of Lecturer(s) | Personal ID | Name |
---|
| KRU13 | Mgr. Ing. Michal Krumnikl, Ph.D. |
Summary |
---|
Writing applications in Java or C# is relatively easy, but there are special cases, where the generated code is not very efficient. The examples of most demanding applications are computationally intensive algorithms or peripheral and network communications. In order to achieve better results, we have to use C/C++ with the possibility to directly access the OS resources. |
Learning Outcomes of the Course Unit |
---|
We will introduce the development of applications running directly on operating system and not using any extensions of CLR or Java environments. Students will learn how to use Android native development platform, Windows CE API, iOS and Linux API.
After successful completion of the course the student should be able to:
- Identify and describe layered model of the operating system.
- Provide characteristics of most popular mobile operating systems.
- Describe inner processes in OS with respect to the process life-cycle.
- Develop applications running on specific operating systems without needs for CLR or additional libraries.
- Modify existing software in order to increase effectiveness of resources allocation. |
Course Contents |
---|
Lectures:
1. Architecture of operating systems. Mobile operating systems.
2. Process managements, concurrency
3. Interprocess communication, synchronization.
4. freeRTOS and context switching, process schedulers.
5. Memory management, paging, segmentation.
6. File systems (EXT2/3/4, JFFS/YAFFS, FAT).
7. Peripheral communications and interrupt handling, network communication.
8. OS Linux, Android.
9. iOS (iPhone OS)
10. Windows CE/Mobile/Phone.
11. Cross-platform development, libraries and frameworks.
12. Security considerations, cryptography.
13. Reverse engineering, mobile malware.
14. Power management, optimization of energy consumption.
Labs:
1. Android SDK, introduction to sockets.
2. Implementation of HTTP server - Sockets, Threads.
3. Synchronization problems, semaphores.
4. Thread synchronization, messages.
5. Video streaming, Camera API.
6. Round Robin (RR) scheduler implementation.
7. Priority extension of RR.
8. Lottery Scheduling implementation.
9. Accessing FAT file system metadata.
10. Reading FAT file system content.
11. Implementing write operation on FAT file system.
12. Application reverse engineering, content of application bundles.
13. Malware analysis.
14. Code optimization, profilers. |
Recommended or Required Reading |
---|
Required Reading: |
---|
[1] Tannenbaum, Andrew S., BOS, Herbert, Modern Operating Systems (4th Edition), Prentice Hall, 2014, ISBN 978-0133591620 |
[1] Tannenbaum, Andrew S., BOS, Herbert, Modern Operating Systems (4th Edition), Prentice Hall, 2014, ISBN 978-0133591620
|
Recommended Reading: |
---|
[1] Smith, Neil, Android Studio 4.1 Development Essentials - Java Edition: Developing Android 11 Apps Using Android Studio 4.1, Java and Android Jetpack, Payload Media, 2020, ISBN 1951442253
[2] Levin, Jonathan, MacOS and iOS Internals, Volume II: Kernel Mode, Technologeeks Press; 2nd edition, 2019, ISBN 0991055578
[3] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
[4] Tannenbaum, Andrew S., Operating Systems: Design and Implementation (Prentice-Hall Software Series)
[5] Yaghmour Karim, Embedded Android: Porting, Extending, and Customizing, O'Reilly Media, 2013, ISBN 978-1449308292
[6] Ratabouil, Sylvain, Android NDK Beginner's Guide, Packt Publishing, 2012, ISBN 978-1849691529
[7] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177 |
[1] Smith, Neil, Android Studio 4.1 Development Essentials - Java Edition: Developing Android 11 Apps Using Android Studio 4.1, Java and Android Jetpack, Payload Media, 2020, ISBN 1951442253
[2] Levin, Jonathan, MacOS and iOS Internals, Volume II: Kernel Mode, Technologeeks Press; 2nd edition, 2019, ISBN 0991055578
[3] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
[4] Tannenbaum, Andrew S., Operating Systems: Design and Implementation (Prentice-Hall Software Series)
[5] Yaghmour Karim, Embedded Android: Porting, Extending, and Customizing, O'Reilly Media, 2013, ISBN 978-1449308292
[6] Ratabouil, Sylvain, Android NDK Beginner's Guide, Packt Publishing, 2012, ISBN 978-1849691529
[7] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
|
Planned learning activities and teaching methods |
---|
Lectures, Tutorials |
Assesment methods and criteria |
---|
Task Title | Task Type | Maximum Number of Points (Act. for Subtasks) | Minimum Number of Points for Task Passing |
---|
Credit and Examination | Credit and Examination | 100 (100) | 51 |
Credit | Credit | 45 | 23 |
Examination | Examination | 55 | 28 |