Teaching / Mobile Programming 1

HTML Manuscript

Web version of the course manuscript. The left menu selects a chapter and the right panel shows content converted from the translated LaTeX sources.

HTML Manuscript

W00 - Introduction and organization

Course materials are available on GitHub: https://github.com/RafLew84/ProgUM.

Assessment rules

To receive a positive grade for the laboratory part, the following criteria must be met:

  • There are 6 assignment lists.
  • Each list receives a separate grade.
  • One list may be missing or failed. For that list, the student receives a grade of 2.0.
  • Each list has a defined submission deadline and point value.
  • For each week of delay, the grade is lowered by 1.
  • Lists are submitted during laboratory classes.
  • Each assignment list includes a list of questions that the student is required to answer orally during laboratory classes. From each question list, if it exists, questions are selected at random. The number of questions depends on the number of points on the list. For example, if a list has 10 points and the practical tasks can give the student 5 points, 5 questions are selected. The questions cover both theory and practice.
  • The student is required to submit the source code in a GitHub repository. The repository link must be provided as the answer to the task on MS Teams. Missing a repository link with task solutions is equivalent to not passing the course.
  • The final grade is the arithmetic mean of the grades from the lists.
    1. Grade 3.0 - average 3.0 - 3.24
    2. Grade 3.5 - average 3.25 - 3.74
    3. Grade 4.0 - average 3.75 - 4.24
    4. Grade 4.5 - average 4.25 - 4.74
    5. Grade 5.0 - average 4.75 - 5.0
  • Three unexcused absences from laboratory classes are allowed.
  • Grades and points are available continuously in a file on MS Teams.

Course content

The lecture plan covers the following topics:

  1. Introduction: data types, expressions, statements, loops
  2. Garbage Collection
  3. Functions
  4. Collections
  5. Classes, Objects and Interfaces
  6. Initialization and Delegation
  7. Android Application Fundamentals: Activity, Lifecycle
  8. Jetpack Compose: UI basics, Composition, Recomposition, State
  9. UI structure elements (Scaffold) and handling collections in UI
  10. Navigation (Compose Navigation, Tab Navigation, Drawer)
  11. Design patterns
  12. Widgets and their lifecycle

Introduction to the Kotlin language

Kotlin is a statically typed programming language running on the Java Virtual Machine (JVM), developed by JetBrains. It was designed to be fully interoperable with Java, which makes it possible to combine both languages smoothly within a single project. Since 2019, Kotlin has been the recommended language for developing applications on the Android platform.

The most important features of the language include:

  • Safety (Null Safety): A built-in mechanism for preventing NullPointerException by distinguishing, at the type-system level, references that may store null from those that may not.
  • Conciseness: The language syntax significantly reduces boilerplate code through constructs such as data classes, properties, and automatic type inference.
  • Multiplatform support: Beyond the JVM, Kotlin can be compiled to JavaScript and native code (Kotlin/Native), which enables sharing business logic across different platforms (iOS, Android, Desktop, Web).
  • Support for programming paradigms: The language offers advanced support for functional programming, coroutines for asynchronous programming, and extension functions (extension functions), which make it possible to add new functionality to existing classes without inheritance.