Title | Author |
---|---|
Grad Student Assignment handout |
Neil Ernst |
Due: Tues, Apr 12 11:59pm as a Github commit. We mark the last commit unless told otherwise.
DM me your suggested topic/format by Feb 15. I reserve the right to veto your topic.
Note:
- Assignments are to be completed individually.
- Format your submission as a Markdown document.
- marks will be deducted if not followed
- First page should be a cover page that indicates your name and student number, title of your project, and a table of contents for the document.
- Include page numbers, i.e. 1 of 10 and your name
- Include clear section headings that match the assignment description
- Support your assertions with reference to specific lines of code or document sections. Cite this using hyperlinks. For example, "ActionView's prepare_context method has a potential buffer underflow problem"
Choose a current problem in software design or architecture. Then do either a research or engineering project.
Propose a research question, and investigate the problem with relevant methods—likely a combination of data science/data mining, literature surveys, and text analysis. Then discuss your findings in a ~3000 word report. The report should be an approximate first draft of something submittable to a conference such as MSR.
If you prefer to build things, pick a topic below, and prepare a prototype tool/process. The artifact should be built and deployed so anyone can reuse it, e.g., using build tool, Github, tested, etc. Include in your project a 2-3 page design doc that explains design decisions, why the tool is useful, and next steps. Some of the techniques from the class will be important here.
- software design in the software 2.0 era
- automatically generated documentation
- pick an existing software design paper (e.g., from MSR, ICSA, ICSE) and replicate the findings.
- microservice migration
- automated design problem detection
- formal analysis of software designs with verification tools like Coq, TLA+, Alloy
- port existing OO code to functional/prototype paradigms
- something discussed with me in advance
- For a research focus, a 3000 word or so report (i.e., approx 8 pages for a conference paper). Use PDF OR Jupyter Notebook.
- For engineering focus, a design doc + a tool Omar and I can use. We will schedule a demo time in the week following end of term.
The report will be judged on the basis of scientific quality (novel topic, validated conclusions, proper scientific writing style).
The tool will be judged on novelty, software quality (both internal (architecture/design) and external (usability, usefulness)) and documentation support.