Application Development

Base Knowledge

Basic concepts of programming, algorithms and data structure.

Basic knowledge of version control

Notions of HTTP protocol (GET, POST verbs)

Teaching Methodologies

In this curricular unit the following teaching methodologies are used:

1 – Expositive method: explanatory method where theoretical foundations and concept are presented by the teacher and discussed with the class, followed by demonstrative examples;

2 – Experimental method: active method where the student develops knowledge through problem solving and development of individual or group laboratory projects.

Each class will be composed of two moments:

1 – Introductory presentation: At the beginning of the class the teacher exposes and discusses with the students the new contents under study;

2 – Practical application: After the introductory presentation, students develop worksheets and problem solving, individually and together, for practical application of new concepts, autonomously and under the guidance of the teacher;

Learning Results

Upon completion of the course unit the learner is expected to be able to:

  • Recognize and identify mobile application components and development tools
  • Recognize and identify mobile application components and development tools
  • Understand the development cycle of mobile applications with their respective tools (IDEs) and programming languages
  • Use the development tools to perform tasks of creating components, screens and navigation
  • Estimate at a high level the complexity of the execution of implementation tasks
  • Develop basic applications for mobile devices (Android/iOS/Hybrid)
  • Understand the operation mode of low code development tools
  • Use low code development tools

Program

1. introduction to app development and methodologies

  • Introduction to app development, native apps vs web-apps
  • State of the art of mobile development market
  • Development methodologies (agile/scrum)
  • Development workflow (git, IDEs, Tests, CI)

 

2. Native development for iOS

  • Introduction
    • Brief history of mobile applications for iOS
    • Presentation of XCode, tools and features, menus
    • Creating a new project in XCode
    • Compile the project and run in the simulator
  • Swift
    • Variables
    • Operators
    • Functions
    • Flow control
    • Collections
    • Classes and structs
    • Protocols
    • Delegates
    • Closures
  • UI and navigation elements
    • Introduction to native UIKit elements
    • Brief history of XIB’s, storyboards and outlets
    • Auto-layout and programmatic constraints
    • Colour and image assets catalogue (Dark mode, accessibility)
    • Programmatic navigation
  • Collection view and data sources
    • Introduction to UITableView and UICollectionView
    • Introduction to data sources and delegates
    • Cell configuration, logging and reuse
    • Use cases with static data sources
  • Network and local persistence
    • Introduction to APIs, HTTP, verbs, formats and authentication
    • Postman collections for testing functionality
    • API and network access with Swift (native)
    • Data persistence with UserDefaults (emphasis on offline modes)
    • Keychain (details, encrypt)
  • Advanced Topics – Protocols and Architecture
    • MVC and MVVM architectures, VIPER topics
    • Design patterns
    • SOLID principles
    • Introduction to protocols, inheritance, extensions, access modifiers, optional
    • Parallels between iOS and Android (Swift and Kotlin)
    • Apple portal account creation, certificate generation and provisioning
    • Installation of local provisioning and devices
    • Archive and submit applications in Apple App Store

 

3. Native Android Development

  • Introduction
    • Introduction to Kotlin (decorators, keywords)
    • Using Kotlin Playground
    • Native UI elements
    • MVP, MVI, MVVM and their implementations in Android and examples
  • Networking
    • Navigation (Jetpack)
    • ViewModel (Jetpack)
    • Retrofit, configuration and implementation
    • Creation of the external data access layer
  • Advanced topics
    • Threads (UI and background)
    • Coroutines and contexts
    • Fundamentals and main concepts of Recicler views
    • Adapters and dynamic listings
    • Application publishing process in Google Play Store

 

4. Application development using low code platforms

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

Griffiths, D., & Griffiths, D. (2017). Head First Android Development: A Brain-Friendly Guide (2nd ed.). O’Reilly Media.

Veen, T. in’t. (2019). Swift in depth. Manning.