Last updated: October 16, 2026
- Staff
- Schedule
- Prerequisites
- App Requirements
- Attendance Policy
- Grading
- Workload
- Collaboration Policy
- Hardware Requirements
- Further Questions
Welcome to the SwEnt course. Our goal is to teach you how to turn ideas into solutions that solve real problems for real people. The course has two phases:
-
Fundamentals (weeks 1–3): The basics of software development that were not covered in previous courses, using both theory (lectures) and practice (bootcamp). The goal is to enable all students to start developing a software product that brings one or more ideas to life.
-
Project (weeks 4–14): You develop, in teams, an Android app that brings your own idea to life. The course staff guides you in this journey from idea to product. The project has three milestones during the semester.
- Instructor: Prof. George Candea
- Head TA: Zhekai Jiang
- Coaches: Adem Abdelbaki, Thibaud Babin, Youssef Benhayoun Sadafi, André Cadet, Nils Caspar, Gaël Conde Losada, Ali El Azdi, Ali El Bouiri, Noa Duron, Justin Favey, Rania Hida, Othmane Housni, Morgane Magnin, Arthur Margeat, Rita Naimi, Matteo Ossipow, Alexis Poudens, Corentin Steinhauser
The staff is reachable at swent-staff@dslab.org for all private issues. For questions whose answers could benefit other students, use the Ed forum.
| Plenaries | Monday 7-Sep / 10:15-12:00 in CM1 Friday 11-Sep / 10:15-12:00 in CM2 Monday 14-Sep / 10:15-12:00 in CM1 Friday 18-Sep / 10:15-12:00 in CM2 |
| Exam | Friday 25-Sep / 9:15-12:00 in CM2, CM 1 105, and CM 0 13 |
| Coaching | every Friday from 2-Oct to 11-Dec / time TBD, see rooms below |
| BOTA | Friday 18-Dec / 10:15-13:00 in STCC - Cloud C |
We use a learner-centered flipped-classroom model. All lectures are provided as short videos online, and you watch them at your own pace. Then, during the plenaries, we get together in an auditorium to answer your questions about the lectures and the bootcamp. You can work on your bootcamp and/or watch the lectures also during the plenaries but, to maximally benefit from the plenaries, you should be doing this work beforehand.
At the end of the third week, there will be an exam on all the material covered in the first three weeks, including lectures and bootcamp. This material is essential for the project, which is why we test it on the exam. The exam will be a pen-and-paper written exam, closed-book, no-Internet, no-LLM. See the exam page for details.
Each student team will be assigned 2 coaches, who will guide and support the team throughout the semester, providing expertise and feedback to help students achieve their project goals. The team meets with their coaches once a week on Friday, for 1.5 h in the 9:00–13:00 interval, in one of the following rooms: INF 019, INM 11, CO 017, CO 015, CO 016, CO 010, CO 011, CO 120, DIA 005. The coaching meetings are in-person and mandatory. The time and room for your team's meeting are TBD jointly with your coaches.
This is a special event in which you can present and demo your app to an audience consisting of your classmates, the teaching staff, and special invitees from outside SwEnt. There will be a jury of experts to judge the demos. The top three teams win substantial prizes. Participation is entirely optional, and it does not affect your course grade. The BOTA will take place in STCC—for details, look here.
| Week | Topics | Slides | Videos | Deliverables |
|---|---|---|---|---|
| Wk1 | Agentic SW Development, Requirements, User Stories | full pdf | playlist | Bootcamp B1 + Team composition due in Steve on Fri, 11-Sep @ 23:59 |
| Introduction | video | |||
| Agentic Software Development (part 1) | video | |||
| Agentic Software Development (part 2) | video | |||
| » Further videos on agentic software development (optional) | list | |||
| Tools of the Trade | video | |||
| Requirements | video | |||
| User Stories and INVEST | video | |||
| Validating and Prioritizing Requirements | video | |||
| Epics | video | |||
| The Mobile Platform | full pdf | playlist | ||
| The Mobile Platform: Overview | video | |||
| The Mobile Device | video | |||
| Mobile OS vs. Server OS | video | |||
| Inside A Mobile OS | video | |||
| The Split-App Model | video | |||
| MVVM | video | |||
| Components of A Mobile App | video | |||
| Lifecycle of an Android Activity | video | |||
| Modern Android Development | video | |||
| Exam Practice Set 1 | questions | answers | ||
| Wk2 | Testing Fundamentals: Concepts & Metrics | full pdf | playlist | Bootcamp B2 due on Thu, 17-Sep @ 23.59 App description due in Steve on Mon, 21-Sep @ 23:59 |
| Levels of Testing | video | |||
| The Cost of Bugs | video | |||
| How Well Can We Test? | video | |||
| Coverage Metrics | video | |||
| Coverage in Practice | video | |||
| What Coverage Doesn't Catch | video | |||
| Test-Driven Development (TDD) | video | |||
| Behavior-Driven Development (BDD) | video | |||
| Advanced Testing | full pdf | playlist | ||
| Test Doubles: Mocks, Stubs, and Fakes | video | |||
| Dependency Injection | video | |||
| Regression Testing | video | |||
| UI Testing for Your App | video | |||
| Exam Practice Set 2 | questions | answers | ||
| Wk3 | Agile Development, Collaboration Workflows, CI/CD | full pdf | playlist | Bootcamp B3 due on Wed, 23-Sep @ 23:59 |
| The Seven Minutes of Terror | video | |||
| Scrum – The Team and the Backlog | video | |||
| Scrum – The Sprint and Its Events | video | |||
| Branches and Pull Requests | video | |||
| Code Reviews | video | |||
| Writing Good Commit Messages | video | |||
| Coding Standards | video | |||
| Continuous Integration & Continuous Delivery | video | |||
| Exam Practice Set 3 | questions | answers | ||
| Exam: Friday 25-Sep, 9:15–12:00 | ||||
| » Set up a get-to-know-you meeting with your coaches | ||||
| Wk4 | Project: Warmup | Warmup due on Fri, 2-Oct @ 08:45 | ||
| Wk5 | Project: Sprint 1 | |||
| Wk6 | Project: Sprint 2 | M1 due on Fri, 16-Oct @ 08:45 | ||
| Fall Break — no classes | ||||
| Wk7 | Project: Sprint 3 | |||
| Wk8 | Project: Sprint 4 | |||
| Wk9 | Project: Sprint 5 | M2 due on Fri, 13-Nov @ 08:45 | ||
| Wk10 | Project: Sprint 6 | |||
| Wk11 | Project: Sprint 7 | |||
| Wk12 | Project: Sprint 8 | |||
| Wk13 | Project: Sprint 9 | |||
| Wk14 | Project: Sprint 10 Battle of the Apps | M3 due on Fri, 18-Dec @ 08:45 Feedback survey due on Fri, 18-Dec @ 23:59 | ||
We use a survey to collect systematic student feedback that is statistically significant. We use it as input to improving the course. The survey is not graded, but is a required part of the corresponding deliverable, so a submission is incomplete until the survey has been filled in. Budget 15 minutes to complete the survey.
Important
Since this is a project course where your teammates depend on you, it is not possible to withdraw from the course after the registration deadline.
Sign up information to be announced.
SwEnt has several strict prerequisites that we build upon; we move fast and do not have time to recap the prerequisite material. First, you must be a proficient programmer in Java-like languages. Second, you must have successfully passed the following two courses in order to take SwEnt:
- CS-214 Software construction (BA3)
- CS-202 Computer systems (BA4)
For example, you must already master the following material from CS-214:
- The basics of software testing (From tests to proofs I, From tests to proofs II, Automated software testing)
- Version control (Git basics, Git demo, Advanced Git)
- Debugging
Note
You are responsible for forming 7-student teams and then submitting your team's composition with deliverable B1. As a team, you decide on the problem you want to solve and the description of the app, both of which you must submit with deliverable B2. If you wish, check out these app examples for inspiration.
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.
Note
By default, the apps should be developed using the Android SDK and Kotlin. If you wish to use a different framework/language, we might be able to make an exception if the case is well argued and the entire team wants this. Please get in touch with the staff.
In-person attendance of the coaching meetings is mandatory, and is a crucial part of the learning process and of the evaluation. The first such meeting will take place in week 4, after the last bootcamp deliverable.
You have two joker passes: The big joker pass allows you to entirely miss one coaching meeting during the semester penalty-free, no questions asked. The little joker pass allows you to attend one such meeting over videoconference instead of in-person, penalty-free and no questions asked. Once you've used your joker passes, no further absences are accepted, except as outlined in the corresponding FAQ.
The exam assumes you viewed all the online lectures; attendance of plenaries is not mandatory, but strongly recommended for learning the material.
In SwEnt, we use a belt system inspired by martial arts. You start out with a White belt. Developing mastery is like building a house: first the foundation (after which you earn a Yellow belt), then walls (Green), then a roof (Blue), and finally the pipes, the wiring, the heating, the lights, etc. (Black). You can’t add a roof without walls, and you can’t build walls without a foundation. The rule is simple: you only move forward once you’ve demonstrated mastery of what comes before—this way, your growth is solid and lasting.
Requirements are always grouped by belt. To earn points at a given belt level, you must have earned your belt that precedes this level. For example, you cannot get points toward earning a Green belt until you get your Yellow belt.
We offer nothing beyond Black belt—not because you've reached ultimate superiority but because you've reached the point where you can self-improve without our help, thereby beginning a lifelong journey of steadily deepening your mastery.
The bootcamp spans the first 3 weeks and has weekly deliverables (B1, B2, B3)—these are all entirely individual work. The bootcamp is not graded directly, but constitutes essential material for the exam.
The project spans the remaining 11 weeks and has 3 milestones (M1, M2, M3) with concrete deliverables. For each milestone, students receive separate grades for individual and team performance. The overall individual Projectindiv grade and team Projectteam grade are computed as 20% M1 + 30% M2 + 50% M3.
Important
Normally, the overall course grade = 25% Exam + 25% Projectindiv + 50% Projectteam. In other words, half the course grade is based on your team's performance and half on your individual performance. However, if Projectindiv < 4, then the course grade = 25% Exam + 75% Projectindiv.
Late submissions in the project will be penalized 2% per hour of lateness (e.g., a 1-day late submission will carry a 48% penalty). This policy applies to both individual and team deliverables. Early submissions are encouraged but cannot receive bonus points, as per EPFL policy.
SwEnt is a heavy-duty course in which it is essential to work smart, not just work hard.
This is an 8-credit course; the EPFL guidelines indicate that you should expect to spend a total of 8x30=240 hours of work over the course of the semester. For a 14-week semester, this averages to a little over 17 h per week. You will likely experience variations in the weekly rhythm, especially around deadlines.
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!). Bootcamp code, however, shall not be shared with anyone else.
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.
You are allowed to use AI assistants and other sources (Stack Overflow, public GitHub repos with free licenses, etc.), as long as you understand what you are doing and you acknowledge them as contributors. Understanding what you're doing means, for example, that you can answer detailed questions about the code you turn in: why did you make that particular design decision, why did you use that particular library, etc. In a comment at the top of your source file you must acknowledge the sources of inspiration that contributed to the code. Use of any outside sources without fulfilling the above conditions is considered plagiarism.
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.
Students will develop, test, and execute the bootcamp and project on their own laptops. We strongly recommend 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. You can probably manage with a lesser configuration, but it can be slow.
We provide Linux virtual machines in the EPFL VDI infrastructure in case your laptop breaks down or you do not have the recommended configuration. See this tutorial for how to get started with VDI in SwEnt.
Each team must have at least one Android phone capable of demo-ing the team's application. If this is a problem for your team, please contact the course staff before the project starts.
For answers to a list of frequently asked questions, please see the SwEnt FAQ.
If your question is not addressed there either, please email swent-staff@dslab.org.
