Theme: Cloud Computing & Data Infrastructures

Next Generation Software Development
(3 ECTS - 18h)

Over the past decade, the software landscape underwent significant chances. With new paradigms and technologies emerging everyday, developing high quality software has become a multi-dimensional challenge that requires far more than just coding skills. Software development teams must not only consider the development itself, keeping up with the best development practices, but they also have to consider other dimensions, including quality assurance, security, testing, and automation. As such, software development teams require expertises across various domains.

This course provides an overview of the techniques, frameworks, languages, and tools to face the challenge of developing high-quality software, with quality, maintenance, and automation considerations in mind. The web development landscape, with its rapidly changing technologies, and diverse platforms, is particularly ideal for illustrating this challenge. As such, the course will focus on technologies related to web development, even though the concepts presented in this course can be easily transposed to any other kinds of software development.

This course mostly targets three profiles:

  • Students interested in working as (fullstack) developers, analysts, or architects
  • Students interested in working as software testers and quality assurance specialists
  • Students interested in working as DevOps engineers.

Through lectures, practical sessions and a project, students will learn about:

Client-server programming (6h)

  • The core principles of client-server communication;
  • Frameworks, languages, and tools for back-end web development;
  • The key design principles for specifying and implementing REST/RESTful applications.

Software quality, and maintenance (6h)

  • An introduction to software quality and preventive software maintenance;
  • An overview of the Clean Code best practices to develop robust, reliable, and evolving web applications;
  • Techniques and tools for web application testing.

DevOps and continuous integration (6h)

  • An introduction to software automation, versioning, packaging, and continuous integration;
  • Practical use of Git, Gitlab CI/CD, and Git workflows for continuous integration.

Prerequisites

M1 computer science background. Some knowledge in web development is a plus, but is not required.

Targeted skills

  • How to specify the communication in fullstack applications and how to develop REST APIs;
  • How to maintain, test, and develop robust applications
  • How to specify CI/CD pipelines to automate most of the work in real-world projects.

Evaluation

  • Session 1: Project (100%)
  • Session 2: Exam (100%)

Lecturers