LAB OF SOFTWARE PROJECT DEVELOPMENT

Academic year
2021/2022 Syllabus of previous years
Official course title
LAB OF SOFTWARE PROJECT DEVELOPMENT
Course code
ET7018 (AF:304962 AR:170945)
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
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.
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:

Knowledge:
- 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 predictive analytics;
- test-driven-development.

Skills:
- familiarity with software versioning systems: git;
- familiarity with software hosting/development platforms: github, kanban;
- create, develop, document and publish a Python project;
- familiarity with tools for data analysis and machine learning (numpy, pandas, scikit-learn).
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) elements of prescriptive analytics
- data loading, descriptive analytics
- supervised and unsupervised learning (clustering)
- numpy, pandas, scikit-learn

5) test driven development:
- What does it mean to test
- Test with Python
- Integration with github
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: https://git-scm.com/book/en/v2
- Ian Sommerville, Software Engineering.
- Dive Into Python: https://www.diveinto.org/python3/table-of-contents.html

And the documentation of the open source projects we will experiment with.
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.
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.
English
written and oral
This programme is provisional and there could still be changes in its contents.
Last update of the programme: 25/10/2021