LAB OF SOFTWARE PROJECT DEVELOPMENT

Academic year
2019/2020 Syllabus of previous years
Official course title
LAB OF SOFTWARE PROJECT DEVELOPMENT
Course code
ET7018 (AF:320381 AR:148278)
Modality
On campus classes
ECTS credits
6
Degree level
Bachelor's Degree Programme
Educational sector code
INF/01
Period
2nd Term
Course year
3
Where
RONCADE
Moodle
Go to Moodle page
Any modern business depends on the development of some specific software that can be produced in-house or outsourced. The digital manager needs to be aware of the foundations of the techniques and tools needed to develop a software project.
The only way to achieve this awareness is to 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.
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;
- Test-driven-development;
- Concepts and models of web programming in Python.

Skills:
- Familiarity with software versioning systems: git;
- Familiarity with software hosting/development platforms: github, kanban;
- Create, develop, document and publish a Python project;
- A primer on DevOps: docker;
- Creating web applications with Python: Django.
Familiarity with Python programming language, achieved with the "Introduction to coding" course.
The course is structured in 5 weeks, each week addresses one topic and provides hands-on experience with the relevant related software tools. The program is not intended to be immutable, it can change based on the students' interest and reactions.

Week one, introduction to software projects:
- Project management and development: waterfall, agile, open source Vs closed source;
- Software versioning tools: git and github.

Week two, Python projects:
- Project structure;
- Project documentation;
- Conventions;
- Publishing your project.

Week three, test driven development:
- What does testing mean;
- Testing with Python;
- Integration with github.

Week four, patterns and intro do web programming:
- The architecture of a web application: LAMP, MEAN, JAMStack;
- Design patterns in Python: MVC;
- Intro to Django.

Week five developing and deploying a web application:
- Set-up of a Django project;
- Deployment with Docker;
The course is based on various sources, most of which are available on-line and will be provided with the course material (slides). The sources plus the lesson slides should be enough for students that follow the lecture classes. Some of the sources will be:
- Pro Git Book: https://git-scm.com/book/en/v2
- 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 (possibly using the Moodle platform provided by Ca' Foscari) plus a group project with a short discussion.
The test will be made of questions with multiple choice plus open answers referring to problems (and their solution) analysed during the classes.

Students will be given assignments during the course as part of their software project.
Each week will be roughly made of 50% lectures and 50% hands-on sessions. Students will install a virtual machine on which to experiment the commands and the software that is required to achieve the learning goals.
English
written and oral
Definitive programme.
Last update of the programme: 31/07/2019