Skip to content
swent-epflPublic

About

Software Enterprise course material from EPFL

Resources

Stars

19 stars

Watchers

7 watching

Forks

Latest commit

 

History

181 Commits

Folders and files

Repository files navigation

EPFL CS-311 The Software Enterprise: From Ideas to Products

Last updated: October 16, 2026

Table of Contents


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:

  1. 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.

  2. 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.

Staff

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.

Schedule

At a Glance

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

Plenaries

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.

Exam

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.

Coaching

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.

Battle of the Apps (BOTA)

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-by-week Schedule

WeekTopicsSlidesVideosDeliverables
Wk1Agentic SW Development, Requirements, User Storiesfull pdfplaylistBootcamp B1 +
Team composition
due in Steve on Fri,
11-Sep @ 23:59
    Introductionpdfvideo
    Agentic Software Development (part 1)pdfvideo
    Agentic Software Development (part 2)pdfvideo
» Further videos on agentic software development (optional)list
    Tools of the Tradepdfvideo
    Requirementspdfvideo
    User Stories and INVESTpdfvideo
    Validating and Prioritizing Requirementspdfvideo
    Epicspdfvideo
The Mobile Platformfull pdfplaylist
    The Mobile Platform: Overviewpdfvideo
    The Mobile Devicepdfvideo
    Mobile OS vs. Server OSpdfvideo
    Inside A Mobile OSpdfvideo
    The Split-App Modelpdfvideo
    MVVMpdfvideo
    Components of A Mobile Apppdfvideo
    Lifecycle of an Android Activitypdfvideo
    Modern Android Developmentpdfvideo
Exam Practice Set 1questionsanswers
Wk2Testing Fundamentals: Concepts & Metricsfull pdfplaylistBootcamp B2
due on Thu,
17-Sep @ 23.59

App description
due in Steve on Mon,
21-Sep @ 23:59
    Levels of Testingpdfvideo
    The Cost of Bugspdfvideo
    How Well Can We Test?pdfvideo
    Coverage Metricspdfvideo
    Coverage in Practicepdfvideo
    What Coverage Doesn't Catchpdfvideo
    Test-Driven Development (TDD)pdfvideo
    Behavior-Driven Development (BDD)pdfvideo
Advanced Testingfull pdfplaylist
    Test Doubles: Mocks, Stubs, and Fakespdfvideo
    Dependency Injectionpdfvideo
    Regression Testingpdfvideo
    UI Testing for Your Apppdfvideo
Exam Practice Set 2questionsanswers
Wk3Agile Development, Collaboration Workflows, CI/CDfull pdfplaylistBootcamp B3
due on Wed,
23-Sep @ 23:59
    The Seven Minutes of Terrorpdfvideo
    Scrum – The Team and the Backlogpdfvideo
    Scrum – The Sprint and Its Eventspdfvideo
    Branches and Pull Requestspdfvideo
    Code Reviewspdfvideo
    Writing Good Commit Messagespdfvideo
    Coding Standardspdfvideo
    Continuous Integration & Continuous Deliverypdfvideo
Exam Practice Set 3questionsanswers
Exam: Friday 25-Sep, 9:15–12:00
» Set up a get-to-know-you meeting with your coaches
Wk4Project: WarmupWarmup due on
Fri, 2-Oct @ 08:45
Wk5Project: Sprint 1
Wk6Project: Sprint 2M1 due on Fri,
16-Oct @ 08:45
Fall Break — no classes
Wk7Project: Sprint 3
Wk8Project: Sprint 4
Wk9Project: Sprint 5M2 due on Fri,
13-Nov @ 08:45
Wk10Project: Sprint 6
Wk11Project: Sprint 7
Wk12Project: Sprint 8
Wk13Project: Sprint 9
Wk14Project: 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.

Bootcamp

Sign up information to be announced.

Prerequisites

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

App Requirements

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.

Attendance Policy

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.

Grading

The SwEnt students who earned a Black belt last year, together with the instructor

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.

Workload

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.

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!). 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.

Hardware Requirements

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.

Further Questions

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.

About

Software Enterprise course material from EPFL

Resources

Stars

19 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages