DAT250 Advanced Software Technologies
Course description for academic year 2021/2022
Contents and structure
The students shall learn about and get hands-on experience with current and emerging software platforms, frameworks, and programming language technologies in the context of distributed applications and smart software systems.
The course focuses on software technologies supporting the design and implementation of distributed applications, enterprise applications, and smart software systems comprised of front-end clients, Internet-of-things devices, cloud-based business logic and data storage, and back-end analytics and prediction. Emphasis is on software tools and frameworks for cloud- and IoT-based applications, in particular software frameworks, technology stacks, and platforms related to cloud computing, programming for the Internet-of-things (IoT) and the web-of-things (WoT), and methodology for software technology development and assessment.
Upon successful completion of this module, students should be able to:
- Describe the software architecture and organisation of tiered and service-oriented applications, and smart software systems combining cloud and IoT platforms.
- Explain the use of cloud platforms, containers, and application servers and the services and service models they provide to applications.
- Describe the principles, services and programming model of software frameworks and technologies for the development of distributed applications and smart software systems.
- Configure applications for deployment in containers, on application servers, and on cloud platforms.
- Design smart software systems comprised of front-ends, business logic, persistent storage in databases, analytics and prediction, and Internet-of-things devices.
- Implement web-client applications using model-view-controller patterns and single-page web application technologies such as Java Server Faces, Facelets, and React.
- Expose and organize applications services using SOAP, REST APIs and micro-services, employ cloud and IoT protocols such as CoAP, MQTT, and WebSockets.
- Realise business logic of enterprise applications using component- and messaging-based architecture frameworks such as Enterprise Java Beans, Java Message Service, and RabbitMQ.
- Implement object storage by means of relational (RDBMS) and non-relational (NoSQL) databases using technologies such as Java Persistence Architecture (JPA) and MongoDB.
- Evaluate the applicability, relevance, and significance of emerging platforms and software development technologies.
- Document, relate and assess software frameworks and technologies for use in distributed applications and smart software systems.
- Develop smart software systems and distributed applications using state-of-the art software technologies and frameworks
General admission requirements for the study programme.
Recommended previous knowledge
Java programming, XML, web applications, and relational databases and query languages.
The course consists of 6 hours of combined lectures and hands-on laboratory exercises per week. In addition, there are smaller mandatory programming and software technology assignments, and a larger software development project. In the project, the participants uses recent and emerging software technologies of their own choice to implement a smart software system. The developed prototype is used to evaluate and assess the capabilities of the software technology. The project is to be documented in a 15-page written report. The assignments are individual and the project is conducted in groups of 2-4 participants.
A number of smaller individual assignments involving software technology experiments and an associated laboratory report. The assignments must be submitted within set deadlines and must be approved before examination can take place. Progress and final presentations related to the group project on design and implementation of a smart software system.
Approved assignments and presentation are valid for the examination semester and the two following semesters.
The course has an examination in two parts: an oral exam and a project report.
The project report counts for 40% of the final grade and the oral exam counts for 60% of the final grade.
Both parts must result in a passing grade in order to get a final grade for the course.
In case one of the parts gets a failing grade, that part can be taken as a re-sitting/postponed exam.
Grading scale is A-F where F is fail.
Examination support material
NoneMore about examination support material