Time and PlaceTerm 2Monday and Wednesday 11:00-12:30 CISR 304 Schedule
Course DescriptionThis course will study the infrastructure required to add new features to exisiting software. An understanding of software adaptation can speed the time to market for new program versions and improve program reliability. Topics include: Aspect-Oriented Programming, Extensible Operating Systems, Configurable Distributed Systems, and Product-Line Architectures. We will read numerous papers from these topics that form a foundation for software adaptation. This foundation will be used to understand several real-world case studies. Examples will be taken from the AspectJ Weaver, Eclipse and Mozilla Plug-In Architectures, Linux Kernel Modules, and Linux Packet Filter. Students will have the option of completing a research intensive paper or a programming intensive project.Related LinksCheck out the UBC Software Practices LabSee Peyman Oreizy's Software Adaptation Hierarchy. Course FormatEach class will be focused around the presentation and discussion of (usually) two research papers (see Reading). Students are required to read both papers and present a paper review (see Paper Reviews) for three out of four papers per week. Each paper will be presented by a student in a short (10-15 minute) informal slide presentation. After the presentations we will discuss both papers openly. Towards the end of class I will present basic terminology and concepts required for the following meeting's reading. Throughout the term students are required to complete a programming or research project (see Term Project). Paper ReviewsStudents will submit a paper review for each paper presented in class. Students presenting a paper are not required to write a review for that paper. Each review must be between 3/4 and 1 page, Times New Roman Font, single spacing, with 1 inch margins. Use a minimum of spacing between sections (TBA: Example Review). Reviews will be graded on a 0-2 point scale and returned the following day of class. Paper reviews will count for 30% of the total course grade. The review consists of two sections: a paper summary and answers to the following questions. Q1: Who will benefit from the research described in this paper and in what way will they benefit? Describe the individual's role (ex. programmer) the task performed by the individual (ex. debugging aspect-oriented programs), and the benefit (ex. makes clear how aspect-code relates to object-model). Q2: What are two contributions claimed by the paper authors? Q3: For each each contribution claim, describe how the claim is validated and whether you think the validation is convincing. Q4: Do you think each contribution is novel? Why or why not? If you are not familiar with the area, base your judgement on the credibility of any novelty arguments put forth in the paper. Also, use any other papers read in class as a basis. Q5: What opportunities for future research can you see in this area? If you are not familiar with the area, you can base your answer on a future research direction outlined in the paper. Term ProjectStudents have the option of choosing either a research proposal or a programming project related to the areas of Aspect-Oriented Programming, Adaptive Middleware, Extensible Operating Systems, Configurable Distributed Systems, or Product-Line Architectures. Projects can be completed individually or in groups. A one page preliminary proposal is required for both project options. Group projects must include an additional 1/2 page describing how responsibility is to be divided. Both project options require a 15 minute (per person) class presentation at the end of the term. Research Proposal : The purpose of the research proposal option is to give students the opportunity to do significant background research in an area of interest. From this backgound, they will develop a new direction for research. The focus of the 8 page research proposal should be on arguing why current work does not address a significant problem in software development, maintainance, or configuration. You are not required to have a fully developed solution, only a proposed new direction. The paper will consist of the following sections: Introduction, Background, Proposed Research, Proposed Validation. It is required that at least ten sources not discussed in class are referenced in the paper. References must come from certain acceptable conferences or journals (see below) or checked with me before being used. The project presentation will be a presentation of this paper. Programming Project : The purpose of the programming project option is to give students the opportunity to become familiar with the tools, languages, and platforms that enable the adaptation of existing software. The focus can be either on: enabling adaptation in a platform (ex. adding "aspects" to Mozilla) or implementing a specific adaptation (ex. adding "security" to Mozilla). The project presentation can be a traditional slide presentation or a "live" software demonstration. Students giving a traditional slide presentation will demo their software to me in office hours. Submission of all source code and an informal two page documentation is required. Term Project Grade Project Proposal: 10% of total course grade Research Paper or Software Implementation: 40% of total course grade Project Presentation: 20% of total course gradeAttendanceAttendance is required. You will not be able to submit paper reviews (see Reading) for classes which you did not attend. Exceptions will be made for students with documented medical excuses or academic related travel obligations. Pre-requisitesThere are no formal pre-requisites for this course. However, an understanding of basic concepts from and experience with Software Engineering and Operating Systems is important. Specifically, Software Engineering: Software Lifecycle, Design Patterns, the UML, OO, Java, C++. Operating Systems: Threads, semaphores (locks), sockets, file I/O. Conference ListAOSD : International Conference on Aspect-Oriented Software DevelopmentFSE: Foundations of Software Engineering ICSE : International Conference on Software Engineering Middleware : International Middleware Conference NDSS: Network and Distributed System Security Symposium OOPSLA: Object-Oriented Programming, Systems, Languages, and Applications OSDI: Operating System Design and Implementation PPoPP: Principles and Practice of Parallel Programming SOSP: Symposium on Operating System Principles USENIX Security: USENIX Security Symposium USITS: USENIX Symposium on Internet Technology and Systems Case StudiesEclipse Plug-In ArchitectureMozilla Plug-In Architecture Linux Netfilter |