Software Enterprise

All course materials are hosted in our public repo.

Staff

Instructors: George Candea, Edouard Bugnion, Pierluca Borsò-Tan

TAs: Abel Wilkinson, Albert Troussard, Alexandre Messmer, Athena Papageorgiou-Koufidou, Can Cebici, Carl Schütz, Charly Castes, Daniel Demko, Daniel Tavares, David Schroeter, Eric Kurmann, Gabriel Fleischer, Jiacheng Ma, Luca Engel, Maxime Zammit, Nicolas Raulin, Sara Anejjar, Ugo Balducci, Yasmin Ben Rahhal, Yonghao Zou, Yuchen Qian, Yugesh Kothari

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

Workload

{{ todo(note="Update workload section") }}

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.

App requirements

All apps must meet the basic requirements of functionality and resilience: apps must accomplish compelling tasks for clear use cases, in a way that is easy to use and consistent with the Android experience; and apps must work in the face of user errors, malice, and external issues such as a lack of Internet connectivity, with a test suite to demonstrate this.

To ensure that students encounter real-world challenges, and to provide fair grading conditions across teams, all apps must also meet the following requirements:

  • Split app model: the app must use a public cloud service, such as Google Firebase
  • User support: the app must have a concept of authentication, for instance using Android’s built-in Google authentication
  • Sensor use: the app must use at least one phone sensor, such as GPS, camera, or microphone, as part of a core feature of the app
  • Offline mode: the app must be usable without Internet connectivity, by paring down features compared to the normal experience

Teams are not allowed to write their own backend unless they have a good reason approved in writing by the instructor. This is to ensure (a) the app will still work in the future without someone to set up and maintain a backend, and (b) the project scope is restricted enough to be feasible within the course. Security, privacy, and vendor lock-in are valid concerns but outside the scope of this course.

Sensor usage should drive some behavior in the app, such as finding nearby points of interest with the GPS, or augmenting reality by drawing over a video feed. Merely getting sensor data and storing it in a field shown to users is too simple and not enough.

Grading

Project grade: 50% Individual + 50% team
Course grade: 5% bootcamp + 75% project + 20% product requirements document

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.

Hardware Requirements

Students will develop, test, and execute the bootcamp and project on their own laptops. A minimum of 16GB of RAM (to run Android Studio), 50GB of available storage (Android Studio, Android SDK, emulator system images, course project files, etc.) on SSD or better, and WiFi are required. Ideally, each team should have at least an Android phone capable of demo-ing the team's application.

{{ codeclimate_dashboard(path="./teams.toml") }}