Because of the unique open source option being offered in the Spring 2014 edition of 15-413 (see below), enrollment in the course is by instructor permission rather than by a fixed prerequisite. Students who have taken 15-313 are likely to qualify, as in the past, but this course is not a prerequisite. We expect programming ability typical of a junior or senior in a CS program, together with basic "code-level" software engineering skills (e.g. as demonstrated by doing well in courses such as 15-313, 15-214, 15-213, or having summer internship experience).
If you want to enroll in the course, please read the summary of the two options below, and then apply at this google form. If you want to do the open source option, you should apply by the priority deadline, November 22, 2013. No students will be admitted to the open source option after December 2, 2013, due to coordination constraints. Students who prefer the CMU client option may apply later, but the course may fill up, so applying by November 22 is still recommended.
In this offering of 15-413, students will have a new option: enhancing an open-source development project as part of the Facebook Open Academy. Students assigned to this option will be assigned to an open source project at the beginning of the semester. Students may from groups with other students at CMU, or if they are interested, can collaborate in cross-university teams with students at Stanford, MIT, and other universities. All students assigned to the open source option will participate in a kickoff meeting and hackathon February 7-9, 2014 in Menlo Park, CA. Flight and hotel expenses associated with the meeting/hackathon will be covered by Facebook. At the kickoff meeting, students will meet a mentor who works on the open source project. This mentor will provide project-specific guidance for the rest of the semester. In addition to the open-source mentor, the course instructors will provide general software engineering guidance throughout the semester. 75% of the student's grade will be based on commits to the open source project; this grade will be assigned by the instructors, but will rely significantly on input from the open source mentor. The remainder of the grade will be based on assignments and on following good software engineering practices.
Examples of open source projects that might be included are Ruby on Rails, MongoDB, SocketIO, Mozilla OpenBadge, ReviewBoard, Phabricator, PouchDB, Kotlin, and Freeseer.
Due to resource constraints, the number of students who can participate in the open source option is limited. We will try to satisfy student preferences, but we may not be able to accommodate every student's preference.
In this course, students will carry out a semester-long software development project for a real client. Students will have the choice of a client at CMU, or a client who is part of an open-source development project. Lectures at the beginning of the course will introduce the process, tools, and documents to be used in the course, all of which will be specified by the instructors. Throughout the project, groups will be mentored through weekly team meetings with faculty.
Teams will make regular presentations on the following topics: risk management, project planning, requirements, architecture, detailed design, quality assurance, final product presentations, and reflections on the experience. Teams will also deliver documents on each of the above topics. Evaluation will be based on the in-class presentations, process and product documentation deliverables, how well the teams follow SE practices as judged by their mentor, and finally the client's satisfaction with the product. Individual grades within a team will be influenced by peer reviews, individual reflection documents, mentor impressions, and presentation performance.
Students will leave the course with a firsthand understanding of the software engineering realities that drive SE practices. They will have concrete experience with these practices, and will have engaged in active reflection on this experience. They will have teamwork, process, and product skills to support immediate competency in a software engineering organization, along with a deeper understanding that prepares them to evaluate the new processes and techniques they will encounter in the workplace.
Thanks to Jay Borenstein at Stanford and Jamie Lockwood at Facebook for spearheading the Facebook Open Academy initiative and making it available here at CMU.