In Fall 2010, software engineering was taught as a pair of two complementary courses, SwEng and SDP.
SwEng: Software Engineering (6 credits) provided the foundations of becoming a good software engineer: how to think about software, how to structure software, how to modify it, and how to evaluate it. This course provided the basic tools and concepts necessary in building software artifacts that are reliable, dependable, usable, safe, and secure. Students learned best practices for developing, organizing and managing software projects, along with responding in an agile manner to changes in requirements and conditions. Regular exercises served to ground in practice the concepts learned in lecture.
SDP: Software Development Project (4 credits) provided a
taste of developing software in the real world, working in large teams,
developing based on code bases that cannot be comprehended in their
entirety, and interacting with real customers. Planning a feature,
estimating total cost, packaging it up for distribution and maintenance
is something that inexperienced developers never get right, but is often
vital for the success of a software project. Mediating between the
needs of customers and the turn-coffee-into-code hacker attitude
requires understanding both sides of the equation. In 2010, we were a
"start-up" and developed the Pocket Campus, a mobile phone
application to help EPFL members locate their friends on campus, spot
the best lunch menus, get up-to-date information on campus events, find a
lecture hall on the map, etc. Our customer was the EPFL community.
It is generally accepted that there is an order of magnitude difference in the productivity and programming quality of a top-10% developer vs. an average developer. Our goal in these two courses was to help students evolve from mere coders into top-10% software developers. SwEng and SDP are designed to be taken together, as one big 10-credit course, with SwEng providing primarily the theoretical foundations applied in the context of exercises, and SDP providing real-world practical experience. We expect taking them together to be easier and less time-consuming than taking two separate courses.