Duration
20h Th, 280h Proj.
Number of credits
Master of Science (MSc) in Computer Science and Engineering | 10 crédits | |||
Master of Science (MSc) in Computer Science and Engineering (double degree programme with HEC) | 10 crédits | |||
Master of Science (MSc) in Computer Science | 10 crédits | |||
Master of Science (MSc) in Computer Science (joint-degree programme with HEC) | 10 crédits |
Lecturer
Language(s) of instruction
English language
Organisation and examination
All year long
Schedule
Units courses prerequisite and corequisite
Prerequisite or corequisite units are presented within each program
Learning unit contents
In this course, teams of 4-6 students will carry out a substantial integrated software project, which builds on the knowledge, know-how and skills acquired during their bachelor studies (programming, software engineering, data bases, operating systems and networks).
Yet, this is not a "coding project", but one that can only succeed through an efficient collaboration between all team members in addition to the proper mastering of a series of tools and techniques as used in leading IT projects (JIRA, SCRUM, GitLab, CI/CD, Kubernetes, devOps/gitOps, knowledge sharing & collaboration tools). The quality of final code is only a part of the grading criteria.
The environment is as close as possible to leading practices in the software industry. Project steps are adjusted given the high volume of practical knowledge to acquire. The project is structured in 5 SCRUM 'sprints' at an average 4 weeks interval during which usable and published product increments are released using 'devOps' techniques.
Seminars are organized to provide fundamental guidance in project design, management, tooling, as well as team coordination, and communication. Students must acquire by themselves much of the additional knowledge required by this project given the enormous diversity of modern software tools, platforms, technologies, methodologies and practices, and availability of suitable information on the Internet.
Learning outcomes of the learning unit
The project aims at developing the students' ability to carry out a realistic, complex and collaborative software project from an initial and incompletely defined idea throughout to the operational deployment of a working application.
The students will learn and actively practice new disciplines like requirements engineering, architecture, modelling, solution design, source control, test driven development, continuous integration, deployment automation, containerization, project management, team leadership, reporting, oral presentation, and knowledge sharing, thereby improving their autonomy and ability to work efficiently in a team, and their communication and reporting skills.
This course contributes to the learning outcomes I.1, I.2, II.1, II.2, III.1, III.2, III.3, III.4, IV.1, IV.2, IV.3, IV.4, V.1, V.2, VI.1, VI.2, VI.3, VI.4, VII.1, VII.2, VII.3, VII.4, VII.5, VII.6 of the MSc in computer science and engineering.
Prerequisite knowledge and skills
A bachelor degree in computer science or engineering with a major implication in computer science. Incomplete achievement of IT-related courses from the bachelor degree may prevent entry into the present course.
Planned learning activities and teaching methods
Seminars on:
- modern software architecture and landscapes;
- fundamentals in project management with a focus on Agile methodologies, SCRUM in particular;
- software engineering techniques: requirements engineering, modelling, testing, source code management, CI/CD, microservices;
- (basic) knowledge management;
- team dynamics.
Teams must use:
- XWiki to structure and maintain the whole project documentation from early sketches to final specifications, meeting minutes, progress reports, presentations, and procedures (minimal overhead with maximum benefits if you listen well);
- JIRA for the management of the projet's backlog and reporting (same as above);
- Gitlab for source code control and integration, with suitable pipelines in place that automate build, test, and deployment steps;
- Docker for building containerized images and local dev support and testing;
- an OpenShift/Kubernetes cluster for application deployment and execution.
Regular work commitment and timely coordinations with team members is essential for a successful outcome. Unplanned, solo, or last-minute behaviours are deeply detrimental to such projects.
Mode of delivery (face to face, distance learning, hybrid learning)
Face-to-face course
Additional information:
- Seminars;
- 5 review meetings spread from October to early May;
- "Weekly SCRUM" meetings (part of the project execution)
- The project itself is mainly carried out remotely by students (studies, coding, docs, plans, team coordinations, reporting). Teams are free to organize their agenda.
Recommended or required readings
Slides used during the seminars and a wiki do provide guidelines, hyperlinks, and tips yet are far too short to support all activities of the project, nor contain sufficient knowledge required for an efficient execution => using these guidelines, plus references to the technologies applicable to their particular project, students are expected to extensively search, collect, and equip themselves with all necessary knowledge and resources for their specific project. Self-learning activites can weigh 15 to 30% of the project execution workload.
In most efficient teams, members do specialize on learning topics and teach each other members in collaboration.
Written work / report
Continuous assessment
Additional information:
No exam in June.
Grading is based on the content of the project's wiki, of JIRA and Tempo, of gitlab, in addition to review presentations and working demonstrations of the application at stake.
Students are expected to document their project, their actual organization and the technical solutions with appropriate justifications about design choices.
Each of the 5 project sprints bears a distinct objective and weight into the final grading. As follows:
- Sprint 0 - 10% - hands on all tools at stake, selection of technologies, drafted project backlog, and demonstration of a mock of the application (modified tuto app)
- Sprint 1 - 15% - requirements engineering, early models, improved backlog, application mock deployed and running in the cluster (menu and navigation)
- Sprint 2 - 25% - careful SCRUM execution (sprint backlogs, retrospectives, velocity) and 50% of the App working, tested, and deployed
- Sprint 3 - 25% - managed SCRUM project delivering 100% of the achievable / planned / predicted functionalities, efficient CI/CD pipelines supporting devOps, quality source code
- Sprint 4 - 25% - a short final run (literally) to prepare the final defense of the project (pitch talk), as well as package the whole for handover to the client. Also a last chance to fix or improve the App and supporting materials.
Every sprint review session consists of an oral presentation with a live demonstration, followed by a question/answer session. All deliverable products of the project (doc, code, procedures, scripts, data, work backlog, reports altogether in Xwiki, JIRA, Tempo, Gitlab, and OpenShift/Kubernetes) shall be up to date at all times for evaluation by the education team, and ultimately reach a final state suitable for a formal handover to the client.
The final grade takes into account the amount and quality of the achievements, the team's efficiency (velocity, organisation, management), the quality of the code, docs, reports, and oral presentations, as well as the pertinence of answers to questions during sprint reviews.
Grades are assigned to the whole group given that a project is first and foremost a collective endeavour. However, evidences of a significant difference in the personal involvement of some members of a group may drive the educational team to assign a maximum of 2 points (on 20) up from the collective grade, else down by an unlimited amount (to floor 0).
Resit
In case of issue in June, a resit is possible. Students will have to improve their software based on a requirements sheet. Students will have to submit the updated code and provide a clear description of the improvements and individual contributions in the updated project wiki, JIRA, and gitlab. A repeated final review (with live demo) is organized in August/September.
The grade obtained at the resit session only replaces those of the last 2 review sessions and project deliverables. The first 3 review sessions irrevocably weigh on the final outcome.
Work placement(s)
Organisational remarks and main changes to the course
Teams comprise 4 to 6 students, formed as much as possible on individual project preferences, while ensuring a diversity of student profiles in each group (i.e. computer scientists and engineers, mixed levels and expertises).
Presence at the seminars and review meetings is compulsory.
The project starts early during the 1st quarter. The final sprint review (final defence and demonstration) takes place on the second week of May. The project execution is suspended from mid-December to January for mid year exams regarding all other courses.
Course materials (archived lectures, course schedule, project list) and administrative communications are hosted on the eCampus web site : PROJ0010-A-a : Software project engineering and management 20h Th, 280h Proj.
Additional resources and facilities notably relating to the execution of software projects are available at the course's dedicated wiki.
Contacts
MS-Teams or Discord group chat and channels will be created per project to communicate with the educational team in addition to e-mail.
Coordinators:
- Benoit Donnet (Benoit.Donnet@uliege.be)
- Bernard Hauzeur (B.Hauzeur@uliege.be)
- Guy Leduc (Guy.Leduc@uliege.be)
- Laurent Mathy (laurent.mathy@uliege.be)
- T.B.D.
Association of one or more MOOCs
There is no MOOC associated with this course.
Items online
Web page
The course web page contains PDF of the seminar slides, projects subjects, Sprints/Reviews details, the Course agenda. In addition, students can interact with the Pedagogical Team through the Discusson Forum.
wiki
additional materials