The world is increasingly mobile and people create and use location Information and Location-Based Apps on their phones, as well as on tablets, laptops and desktop devices – for example for routing/navigation, ‘find my nearest’, shopping, take-away and food delivery, taxi and ride-sharing services, GPS-aware data capture, home automation.  Location data and maps also increasingly underpin data dashboards and digital twins.

This module covers the principles underpinning location-based web development, for example: protocols and web security; interactivity and dynamic content; client/server and three-tier architecture; context-dependent/reusable software; detecting and utilizing location; web mapping; data capture and validation; data visualization; data and code APIs (Application Programming Interfaces).

A very practical, hands-on, approach is taken to these topics, and the module makes extensive use of HTML5, Javascript and NodeJS, Leaflet and modern code management techniques through GitHub to develop understanding of the above topics. This includes from-scratch development of an API for geospatial data, and the building of context-sensitive, dynamic, location-based Apps for use across multiple devices. Advanced topics (depending on time) could include Bootstrap, AGILE development, progressive web apps (PWA), Cesium 3D Mapping, visualising data in D3, code packaging and deployment.

NB: This is not a beginners programming module - you should have some knowledge of programming (at least to the level of a term 1 module in python) before you start this module. Knowledge of SQL is also required and ideally you should be familiar with GitHub.

Learning Outcomes

Understand web architecture: how client-side code provides user-centric applications and how server-side code can be used to provide dynamic information to client-side apps via an API
	Understand the principles underpinning location-based applications – how online maps work (using third party code APIs), how to track the user’s location
	Understand how HTML 5 and CSS-driven templates can be used for multi-platform implementation (‘write once, reuse many times’)
	Understand how SQL can be embedded in server-side code to provide direct access to data held in a spatial database, and to underpin a data API
	Develop multi-platform browser-based client-side Apps that work on mobile devices or in web browsers, and integrate location-based functionality in these Apps 
	Develop a server-side API to serve geospatial data from a spatial database
	Develop awareness of code management and code documentation