Lecture 1 - overview
● Background to the course ● Content and expectations ● Assignments and group work ● Maven build system ● Revision control system ● Object-Relational Mapping
Prerequisites
○ Thorough general programming background ○ Java and Javascript ○ Willingness to read up on technologies without
detailed guidance ○ Ability to collaborate on substantial group projects ○ Interest in links between software engineering,
platforms and organisations
A decade of INF5750 – philosophy, socio-technical origins and evolution • Information Systems
– Technology and organizations
• ICT meets social sciences – history, economics, business, sociology,
philosophy, anthropology • Changing role of ICT => web, open source,
infrastructures, platforms, social media • Changing tech (eg ECMAScript® 2015) • Related: 5210, 5761, 5850
Three types of Apps Trois types d’Apps
Web App (desktop or mobile)
Integrations Android App (offline)
DHIS API
DHIS SQL views DHIS Business Logic
DHIS Android SDK
Android App
DHIS database
DHIS Standard UI DHIS web apps
Integra-tions
System X
NEW! APPs SDK
Web technology stack
Client-side Javascript ES6, Angular, React Server-side Java Spring, Hibernate Storage PostgreSQL/PostGIS SQL
INF5750 Content
○ Principles: e.g. ORM, Dependency Injection, Testing
○ Common server components (a smattering of Spring, Hibernate, Node, Express)
○ tooling: git, mvn, npm, webpack, babel, mocha, chai
○ HTML5, Javascript, frameworks, REST web API, single-page web app dev (SPA)
○ Platforms and open source collaboration
Boundary resources
○ Software product ○ API created ○ Platformization
– New group of platform interactors
The course in 1 minute
● Version control system. Keeps versions/backups and helps you share.
● Build tools help you organize and build modules ● Hibernate maps your relational database into
Java objects, and back. ● Spring: Configure objects & how they connect at
runtime ● Model View Controller separates user interface,
controllers and data model ● Javascript-enabled HTML-apps using REST-APIs
on the server (“SPA”)
1.1 6.
6
2.4
Two architectures
Rendering of HTML sent from
server
Javascript parses data
from server and creates HTML
Create HTML dynamically.
APIs providing information in JSON-format.
JSON Static HTML and
Javascript
Server-generated HTML files
Approach
● Lectures ○ Knut Staring: knutst@ ○ Julie Hill Roa: juliehr@ ○ Guest lecturers
○ Lab sessions ○ Obligatory assignments (individual) ○ Written exam ● Team projects 3 devs ● Considerable amount of self-study ● First part of course and assignments focus on
traditional server-side web development. ● Group projects focus on Javascripts-enabled
Apps accessing APIs on the server
Evaluation
● Individual assignment 1 (Deadline: ca. 27th Sept) ● Individual assignment 2 (Deadline: ca 7th Oct) ● Group project work ○ 3 milestones and group presentation late Nov
● Individual written exam - Early December ● A - F
Lab sessions
Check the lab session schedule on http://www.uio.no/studier/emner/matnat/ifi/INF5750/h14/timeplan/index.html
Attend lab sessions. Bring your laptop!
Group project ● Develop functionality for DHIS2 ○ A real-life open source project
● Objective ○ Work with some of the most common open source
components within the open source community and industry ○ Learn to develop in teams, sharing code ○ Learn to test and document
● Several groups will be working on the same project assignment
Individual written exam
+ Will cover both theoretical and practical aspects + Probably a mix of multiple-choice and essay
questions relating to theory and project work
Learning resources
● Articles and books, e.g. Tiwana (2014) (full list later) ● Walls (2014) and other ‘... in action’ books
http://www.manning.com/walls5/ ● UiO guides ● Online documentation, tutorials and examples
Beware: some may be old and not use all modern capabilities
● CodeAcademy, Khan Academy