CS-306 Software Development Project

This is part II of the Software Engineering suite, following CS-305 Software Engineering (SwEng). SwEng is a strict prerequisite for SDP. If you have a strongly justified reason for taking SDP without having taken SwEng, please contact us first to explain why.

All course materials are hosted in our public repo. All EPFL-specific details appear below.

Schedule

You will meet your coaches during a 1-hour slot on Fridays between 9:00-13:00, and you do not need to be present for other slots. We will do our best to match teams’ time constraints to slots.

Staff

Instructor: Prof. George Candea

Assistants: Alexis Schlomer, Can Cebeci, Daniel Demko, Kamila Babayeva, Lei Yan, Léo Dupont, Louca Gerussi, Mathieu Marchand, Solal Pirelli, Yanis De Busschere, Yugesh Kothari, Zacharie Tevaearai

The staff is reachable at sdp-staff@dslab.org for any private issues you may have; for questions whose answers could benefit other students, please use the course forum.

Projects Dashboard

Team Maintainability Code Coverage
Tarjetakuna
BeGreen
polypoly
Orkest
EPForumL
DrawYourPath
IBDB
CultureQuest
ConnectOut
Coach me
StudyDistractor
Versus
GeoHunt
DishDelish
Campus Capture
ScribeWiz
cook4me
procrastinot
MediaTo
Guess It
Stud'Hub
Factotum

Workload

This course is designed for 4 ECTS credits, i.e., around 8 hours of work per week.

For example, a student may split their time during a two-week sprint as follows:

  • 13h of coding, including testing, debugging, and finding/consulting documentation
  • 40m to review teammates’ code
  • 20m to independently plan the next sprint
  • 15m to plan the demo, or more for the Scrum Master of that sprint
  • 45m for the meeting with the coaches to end the previous sprint and begin a new one
  • 45m for the intermediate meeting with the coaches to discuss any issues
  • 15m for two standup meetings without the coaches

This is not an exact breakdown, and may vary per team and per week, but it provides an estimate so that students can calibrate their expectations.

Frequently Asked Questions

Can we write our app in [Java/Kotlin/Dart/…]? You may use any mature technology that your entire team is comfortable with. We encourage you to try out new technologies if you want to, but be aware that you will need to invest significantly more time than other teams. The upside is that you will have learned something new and moved beyond the basics.

Can we host our code/issues/PRs/… on another website than GitHub? No, all teams must use GitHub, not another host such as GitLab, for consistency.

Can we write an app that does not depend on Google Play Services? Yes, as long as this does not affect your team’s productivity. You should not find yourself reimplementing what Play Services could provide, and coaches will not accept “because we don’t want to use Google Play Services” as a reason to do such work.

Collaboration Policy

Members of a team are of course allowed to discuss the project and share code for it. Members of different teams can discuss their project and programming issues, but not share code without prior written permission of the course instructor (not the coaches!).

Collaboration can also take place on the class forum, visible to the entire class. You can ask questions about the course, programming difficulties, tooling issues, and so on. You are also welcome to answer questions from your fellow students as well, since you will most likely have solved similar problems in your team’s project.

Cheating, plagiarism, and any form of dishonesty will be handled with the maximum severity permitted under EPFL rules. If you are in doubt whether an action on your part is acceptable, please ask the course staff privately via the staff e-mail list before proceeding. Asking afterward is too late.

Apps from past years

Here are some examples of cool apps from previous years that got good grades. Please note that app requirements and grading may have changed from previous years; a mention here is not an endorsement that their source code is perfect.

  • palFinder lets you easily organize and attend nearby events
  • Fly2Find helps rescue victims of avalanches using drones
  • PolyBazaar is a marketplace for and by EPFL students
  • Favo is an easy way to give and receive favors
  • Run0rD1e is a distributed multi-player game
  • 360 Estate is a virtual reality app for virtual visits of rental apartments
  • Runnest is an app to challenge your friends around the world to 1-on-1 running races with real-time tracking and updates
  • PolyLove is a dating app to help EPFL and UNIL students meet
  • Tutosaurus is an app to help students find tutors on a variety of subjects
  • Blindly is a dating app based on voice rather than pictures