Software Engineering
Licence InformatiqueParcours Computer Sciences (UFAZ) (délocalisé en Azerbaïdjan)

Description

This course introduces students to the principles and practices of software engineering. It covers various topics at a basic or foundational level.
 Students will learn about software development methodologies, requirements engineering, software design, testing, and maintenance. The course begins with an overview of software engineering concepts and methodologies, including agile software development. It then covers requirements engineering, including techniques for eliciting, analyzing, specifying, and validating software requirements.
Students will also learn about software design principles and techniques, such as object-oriented design, design patterns, and architectural styles. The course includes an overview of software testing methodologies, strategies, and tools for ensuring software quality.
Additionally, students will explore software version control, maintenance, and evolution, including techniques for managing and updating software systems over time, such as Continuous Integration and Continuous Deployment (CI/CD). Practical projects and assignments will provide hands-on experience with software engineering practices.

Compétences requises

  • Basic programming skills in a language such as Java, Python, or C++.

  • Understanding of fundamental computer science concepts, such as data structures and algorithms.

  • Ability to use development tools such as integrated development environments (IDEs) and version control systems (preferred but not required).

Compétences visées

  • Understanding of basic software development methodologies.

  • Familiarity with analyzing and specifying basic software requirements.

  • Introduction to software design principles, basic techniques, and agile methodologies.

  • Basic knowledge of software testing methodologies.

  • Introduction to software version control concepts.

  • Basic understanding of software maintenance and evolution concepts.

  • Awareness of Continuous Integration and Continuous Deployment (CI/CD) practices.

  • Familiarity with development tools such as IDEs, version control systems, and CD/CI.

Disciplines

  • Informatique

Bibliographie

  • Roger S. Pressman, Bruce Maxim. Software Engineering: A Practitioner's Approach. McGraw-Hill Science/Engineering/Math; 8th edition (2014). ISBN: 9780078022128.

  • Robert C. Martin, Michael C. Feathers, Timothy R. Ottinger. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR; 1st edition (2008). ISBN: 978-0132350884.

  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software.Addison-Wesley Professional; 1st edition (1994). ISBN: 9780201633610.

  • Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional; 2nd edition (2018). ISBN: 9780134757599.

  • Frederick Phillips Brooks. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley; 1st Paperback Edition (1991). ISBN: 9780201006506.

Contacts

Responsable(s) de l'enseignement