Academic year 2020/2021 Syllabus of previous years
Course code ET7018 (AF:275110 AR:182398)
Modality On campus classes
ECTS credits 6
Degree level Bachelor's Degree Programme
Educational sector code INF/01
Period 2nd Term
Course year 3
Moodle Go to Moodle page
Contribution of the course to the overall degree programme goals
Any modern business depends on the development of specific software that can be produced in-house or outsourced. The Digital Manager needs to be aware of the theoretical foundations, of the techniques and tools needed to develop a complete software project. With this knowledge, the Digital Manager will have a better capability in the interactions with the developers or with the final custiomer.

The only way to achieve this awareness is to actively participate to a software development project in which the student practices both the organizational tools and the development process.

The goal of this course is to provide to the students the background on the most common software development tools and platform and to create and manage their own software project.
Expected learning outcomes
After the course, the student should have familiarity with the tools described during the course and employed in the project development. He/she should also be familiar with the main phases of software development process.
During the course the student will achieve the following knowledge and skills:

- The most common methodologies for software development: waterfall, agile, open or closed source;
- The basics of the creation of a Python software: structure, documentation, publication;
- Elements of databases;
- Test-driven-development.

- Familiarity with software versioning systems: git;
- Familiarity with software hosting/development platforms: github, kanban;
- Create, develop, document and publish a Python project;
- Management of a simple relational database: sql, queries.
Familiarity with Python programming language, achieved with the "Introduction to coding" course.
The course is structured into 5 main topics. Each topic is presented at a theoretical and practical level, through a related lab session. The program is not intended to be immutable, it may change based on students' interest and feedbacks.

1) introduction to software projects:
- Software engineering: project management and development. Waterfall, evolutionary, agile. Open source Vs closed source.
- Tools for software version control and team development: git and github.

2) Python projects
- Project structure
- Project documentation
- Conventions
- Publishing your project

3) Python modules of interest
- argparse, logging, JSON...

4) database and SQL.
- introduction to a relational database
- the SQLite module

5) test driven development:
- What does it mean to test
- Test with Python
- Integration with github
Referral texts
The course is based on various sources, mostly available on-line. The course material (slides) will include the specific references for each topic. The sources plus the lesson slides should be enough for students that follow the lecture classes.

Some of the sources are:
- Pro Git Book:
- Ian Sommerville, Software Engineering.
- Dive Into Python:

And the documentation of the open source projects we will experiment with.
Assessment methods
The evaluation will be a written test plus a group project with a short discussion.
The written test will be composed of questions with multiple choice and open answers referring to problems and techniques analyzed during the lectures.
Students will be given assignments during the course as part of their software project.
Teaching methods
The majority of the lectures will be alternated with hands-on sessions. During the labs the main tools used for the group project will be presented.
Students will install the software to experiment with the commands and achieve the learning goals.
Teaching language
Type of exam
written and oral
Definitive programme.
Last update of the programme