Instructor: Hailong Zhang
Office hours: Please make a private Piazza post to set up an appointment, Zoom link
Lecture: Thursday 7:55–10:10 PM, Zoom link
Individual meeting: Calendar link
Discussion: Piazza link
|2||9/3||Differential privacy for mobile analytics||SCAM’19 paper|
|3||9/10||Static analysis of Android apps|
|4||9/17||Introduction to Fuzzing
|8||10/15||TBD||Deliverable 1 due|
|11||11/5||TBD||Deliverable 2 due|
|16||12/10||Deliverable 3 due|
The goal of this class is to provide the practical opportunity for students to combine skills they have learned during their computer science program and use them to design and implement a capstone project. Students are required to address all design, implementation, testing, and evaluation aspects of a large capstone project. They are expected to present and write one or more research papers in class detailing this work. Through this class, students should gain a deep understanding of state-of-art computer science technologies and knowledge, how they can be deployed in a practical application, and how they can be professionally documented and communicated.
There is no required textbook, but readings will be assigned and posted on course website, e.g.,conference and journal papers.
Students will meet with the instructor online via Zoom each week. Sychronized meetings will be used for lectures, discussion of projects and readings, and questions and answers. Besides the assigned time blocks for the course (Thu 7:55–10:10 PM), students may contact the instructor to schedule additional regular individual meetings if necessary.
The capstone project should address one or more research or substantive real-world problems. It could be a research project, an applied project, or some combination of the two. Each project should be done by one student, except that complex ones may involve at most two students with permission from the instructor. Students will work with the instructor to identify an appropriate project. The student should complete a project proposal that includes the following items:
There is no page limit on the proposal. The purpose of the proposal is to make sure that the project is reasonable and enables the instructor to provide useful feedback.
The proposal is due by 11:59:59 PM on the due day.
Once the instructor and the student reach agreement on the proposal, the student will work on the problem defined in the proposal and document their solving process. Given the wide range of projects, there is no one-size-fits-all definition for the deliverables.
For students exploring research-driven projects, the deliverables will be technical reports and/or papers that describe the work and results.
For students focusing on applied projects, the deliverables will depend on the development models. For example, for a traditional waterfall model, the deliverables will naturally follow a sequence of requirement and design document, an alpha/beta version of the software, and the final product with testing and validation.
Below are some specific examples:
Requirement specification and design document. The requirement specification is a written document that clearly define the goals of the final product in terms of functionality, user interface, resource usage, and other such factors. This document should include a project overview, any necessary background knowledge, and an enumeration of requirements specification for the eventual product.
The design document is a written document that describes a detailed design for achieving the requirements. It should include a description of the major components, their interfaces and how they interact to form the whole. Figures should be included for clarity. This document should also contain a discussion of any third-party technologies or software packages that will be used in meeting the project goals. Students should demonstrate software prototypes showing that they have already evaluated and familiarized themselves with key technologies and design choices. Finally, this document must include a proposed timeline for the remainder of the project life cycle, making sure to include specific sub-goals for the development, implementation, and testing phases of the project.
Alpha Version. The alpha version of the project is a preliminary implementation that includes all major functionality of the final product, yet may lack some advanced features, have a less polished interface, and contain some known bugs. This alpha version is demoed to the class in open discussion meetings for feedback.
Final Product. The final product must be submitted, including complete source code, documentation for deployment and usage, database schemas, analysis, and so on, as appropriate for the project.
🍎Notice🍏 Students should use the USENIX paper template for all write-ups. The deliverables are due by 11:59:59 PM on the due day.
Students should prepare two oral presentations to the class. The midterm presentation should be within 15 minutes, introducing the problem, motivation, and possible challenges and solutions based on the project proposal. The final oral presentation for the project will generally take around 20 minutes, plus 5 minutes for questions. It will be based on the final paper/product, including a description of the problem and your contributions, an introduction of your design and implementation, and/or demo. Here are some general advices on how to give a technical presentation.
The percentages given below are guidelines for both the student and instructor and may be changed as needed to reflect circumstances in the course. Any changes that occur are likely to be minor.
Final grade is based on the course average: A: 100-90, B: less than 90-80, C: less than 80-70, D: less than 70-60, F: less than 60-0.
Class times and Zoom links, office hours and Zoom links, due dates, and exam days (if any) can be found in the course calendar.