General Information | |
---|---|
Scientific Area | Computer Science and Engineering |
ECTS Credit Points | 6 credit points |
Level, Year/Semester | Undergraduate, 3rd year / 5th semester |
Language | English or Portuguese |
Available in | Autumn-Winter Semester (Sep. - Feb.) |
In-class contact hours | 15 weeks x 4.5 hours per week in class |
Course Manager | Paulo Pereira |
From a software development perspective, the Android platform presents an interesting programming model that stems from ideas that are key in the learning path of an aspiring software engineer. This, and its evident practical applicability, make Android a relevant environment for a 3rd year course unit about software engineering, encompassing the specific challenges of mobile devices.
This course aims to prepare students for the development of applications targeting the Android platform. During classes, the Android programming model is studied and the consequences of its specificities on application design decisions are addressed. We study the tradeoffs involved in creating solutions that make effective use of the available computational resources with the intent to create correct, robust and maintainable software solutions.The presentation of the topics is accompanied by the implementation of selected applications during the classes (live coding sessions).
In the practical component of the course, students implement an application where they apply the acquired knowledge. Some examples of applications that were developed in this course are: the Chess Royale application, which includes functionalities for solving chess puzzles obtained from a web API and for playing chess games between application users (each user using their own device); the application Draw And Guess, which aims to recreate the experience of the board game Passa o Desenho without the need for players to be in the same physical location; BattleShips for Android, a clone of the classic battleships game.
The courses' contents are continuously adjusted to include the area industry practices, thus ensuring that the skills acquired by students are relevant and competitive.
- Students will need to write software in Kotlin and be familiar with general software design principles. We expect at least three semesters of programming experience, using any high level, managed and statically typed language, such as Java, C#, or Kotlin itself. The required knowledge includes familiarity with common programming constructs, data structures and algorithms. Students are also expected to be aware of basic software design principles and their motivations.
- Students will be exposed to concurrency related issues, such as multithreading and synchronization. They are expected to deal with Android and Kotlin's concurrency models. Ideally, they should be familiarized with Kotlin's concurrency constructs (e.g. suspending functions, coroutines, flows)
Disclaimer: The above information is provided for convenience and does not replace official institutional information.