Course unit

Last updated: 26/09/2024

Edit

Course Director(s):

LEFRANCOIS Maxime

General Description:

This course counts for 6 credits (/30 total for a semester), and is divided in three equally important parts:

  • Everything from the command line
  • Technological foundations of software development
  • System Engineering

Part 1: Everything from the command line. 

The command line interface is an essential tool for computer developers, both for its wealth of available tools and for its ability to increase productivity through the development of ad-hoc scripts.

Many of other courses in the MSc CPS2 track make use of the Shell command line interface, now available on all major operating systems.

The objective of the "Everything on the Command Line" course is for students to master the fundamental concepts of the Shell command line, and to become comfortable with the command line interface for computer development projects.

The following concepts will be covered:

  • the file system
  • input/output streams and command chaining
  • processes
  • scripts and variables

We will go from a simple command to copy a file to a complete script to automate the life cycle of a project.

Part 2: Technological foundations of software development

This course aims to discover the tools and methods that are essential to know in any modern software development project. Students will discover:

  • Concepts involved throughout the development and implementation of software systems
  • Modern tools and methods adapted to the development and implementation of software systems

The following concepts will be covered:

  • Master your working environnement
  • Manage your source code
  • Master your development environment and software dependencies
  • Automate code production
  • Debug, log, test, profile, analyse your software
  • Run your software anywhere with Docker
  • Document, license, publish, maintain your software
  • Integrate and deploy your software continuously

Part 3: System Engineering

Students will understand and master the software development cycle, software system modeling through the use of the Unified Modeling Language (UML), agile analysis methods, software system design. The following concepts will be covered mainly through practical cases.

  • Introduction to Software Engineering and Agile software engineering methodologies
  • Practical session: a SCRUM learning game
  • UML in a nutshell
  • UML Behavior Diagrams (Use Cases, Activity, State machine, Communication, Sequence)
  • UML Structure Diagrams (Class, Structure, Package, Component, Deployment)


Key words:

Shell Programming Unix commands DevOps Web Programming code versionning UML Agile software development

Number of teaching hours

50

Fields of study

Computer Science, Information Systems

Teaching language

English

Intended learning outcomes

On completion of the unit, the student will be capable of: Classification level Priority
Basic concepts of the Shell command line interface 5. Summarise Essential
Mastering the Shell command line development environment 4. Analyse Important
Know the main Unix functions and commands 4. Analyse Essential
Write simple programs in Shell 3. Apply Important
Understand the concepts involved throughout the development and implementation of software systems 4. Analyse Essential
To know some modern tools and methods adapted to the development and implementation of software systems 3. Apply Essential
Modeling of Software Systems using UML 3. Apply Essential
Software Engineering Methods 3. Apply Essential
Agile Development Methods 3. Apply Essential

Learning assessment methods

Percentage ratio of individual assessment Percentage ratio of group assessment
Written exam: % Project submission: %
Individual oral exam: % Group presentation: %
Individual presentation: % Group practical exercise: %
Individual practical exercise: % Group report: %
Individual report: %
Other(s): 100 %

Programme and content

Type of teaching activity Content, sequencing and organisation