@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
@isel-leic-pdm

Programação em Dispositivos Móveis

ISEL - Instituto Superior de Engenharia de Lisboa

Mobile Devices Programming / Programação em Dispositivos Móveis

enpt

Institutional information


Supplementary information

General Information
Scientific AreaComputer Science and Engineering
ECTS Credit Points6 credit points
Level, Year/SemesterUndergraduate, 3rd year / 5th semester
LanguageEnglish or Portuguese
Available inAutumn-Winter Semester (Sep. - Feb.)
In-class contact hours15 weeks x 4.5 hours per week in class
Course ManagerPaulo Pereira

Description

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.

Prerequisites

  • 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.

Popular repositories Loading

  1. PDM-1920-LI52D PDM-1920-LI52DPublic

    Repositório das aulas de PDM de LI52D e LEIRT51D semestre inverno 2019-2020

    Kotlin 22

  2. 2425i 2425iPublic

    Repository for Mobile Device Programming course, winter semester of 2024-2025

    Kotlin 20

  3. 2324i 2324iPublic

    Repository for Mobile Device Programming course, winter semester of 2023-2024

    Kotlin 19

  4. PDM-2021-LI5XD PDM-2021-LI5XDPublic

    Kotlin 15 2

  5. PDM-2122-LI5X PDM-2122-LI5XPublic

    Repositório com o material produzido durante as aulas de PDM

    Kotlin 14 2

  6. 2526i 2526iPublic

    Repository for Mobile Device Programming course, winter semester of 2025-2026

    Kotlin 12

Repositories

Showing 10 of 34 repositories

Top languages

Loading…

Most used topics

Loading…