====== Design Problem Requirements ====== Design problems give CS 111 students the opportunity to create OS features "from scratch" without any skeleton code found in the directed sections of the labs. Each team will be assigned a design problem from one of the four labs assigned throughout the quarter. Once assigned, students may choose from the suggested design problems for that lab or devise their own feature with the approval of their TA. Although the ultimate goal is to have a working implementation of the feature, considerable emphasis will be placed on a **3-6 page design document** in which students will: - establish a coherent and complete description of the feature's behavior - define a sensible implementation strategy In addition to a working implementation and design document, students will also be required to give a **5-10 minute presentation ** during an assigned discussion section in which they will explain their design to the class. ===== Design Problem Timeline ===== * Team chooses which design problem they will complete: **in the week after the lab is assigned** * Design problem paper and code due: **about 2-3 weeks after lab is assigned** * Design problem presentation: **in section about 2-3 weeks after the lab is assigned** ^ Lab ^ Team tells TA which design problem ^ Normal lab due ^ Paper and code due ^ Presentation in section ^ | Lab 1 | April 18 | April 23 | April 27 | April 27 | | Lab 2 | April 27 | May 4 | May 11 | May 11 | | Lab 3 | May 18 | May 25 | June 1 | June 1 | | Lab 4 | May 28 | June 8 | June 8 | June 8 | Note that Lab 4 paper and code are due at the same time as the normal lab. All due dates are on Friday except for some of the dates when you need to inform the TA of your design problem choice. ===== The Design Document ===== The design document must clearly expain //what// the feature does (interface) and //how// it does it (implementation). At a minimum it must include: *a complete specification of the feature's behavior Even if you choose one of the design problems suggested in the lab (as opposed to devising your own), the feature may not be fully specified. Some aspects of the behavior will be left to you as "design decisions". You are responsible for explaining what decisions you made and your reasoning behind it. The design specification is complete if any implementation that satisfies the specification is indistinguishable to the user. *a well-defined plan for implementation This should act as a blueprint for a particular implementation of the design described above. Do you break the problem up into modules? What data structures will you use? What tradeoffs did you make by choosing this particular implementation strategy? *a summary of results Describe the successes and failures of implementing your design. Did you complete an implementation that satisifies the specification of the feature? What obstacles did you encounter? Was anything easier than expected? What did you learn? * who did what How did you divide the work? The document should adhere to the following format: * Single-spaced, 3-6 pages (no more than 6 pages) with one inch margins * 11 or 12-point font * typed or word-processed, not handwritten * Pictures and diagrams when necessary to explain the design * Name of students and their student IDs at the top of each page ===== Presentation Guidelines ===== Your presentation in section is at most 10 minutes long. Other students and the TA will ask questions during and after your presentation. The goal of the presentation is to demonstrate your ability to discuss and clearly present computer science-related technical issues. It should cover, at a high level, the feature requirements; your specification of feature behavior, especially focusing on any interesting parts; your implementation plan; and any challenges you encountered during implementation. One example layout might be like this. (This assumes you use PowerPoint, which is allowed. But you may also use the blackboard, or a combination of the blackboard and a demo.) * High-level feature definition: explain the design problem you chose, and how existing systems handle this feature. (1-2 slides) * Your specification of feature behavior. (3-4 slides, with at least 1 slide of the most interesting details) * Implementation plan. (1 slide) * Implementation challenges. (1-2 slides) Usually it takes about 60-90 seconds to get through a slide. Don't plan a 20-minute talk! Some guidelines for designing effective presentations are below. ===== Writing Resources ===== Most students find that good writing is surprisingly important to their careers, no matter what field. So take the writing seriously, as we will. Paul Eggert has collected a useful set of links to resources on writing reports; take a look. * Angela Laflen's [[http://owl.english.purdue.edu/workshops/hypertext/reportW/index.html|Writing a Report]] (2001) describes how to write and organize a research report. * David A. McMurrey's [[http://www.io.com/~hcexres/textbook/|Online Technical Writing: Online Textbook]] (2006) contains many examples and much discussion of technical writing. For example, it has [[http://www.io.com/~hcexres/textbook/feas.html|a chapter on recommendation and feasibility reports]] that contains several sample reports. * Simon Peyton Jones's [[http://research.microsoft.com/~simonpj/papers/giving-a-talk/giving-a-talk.htm|How to write a good research paper]] (2004) is a brief and pleasant talk about how to write papers. * Barbara Gross Davis's [[http://teaching.berkeley.edu/bgd/writebetter.html|Helping Students Write Better in All Courses]] (1993) gives succinct advice about how to teach writing. Invert the advice, and you can learn a lot about how to write. * Proper citations are a hallmark of any solidly written report. [[http://library.concordia.ca/help/howto/citations.html|Citation and Style Guides]] (2006) refers to several style guides; pick a style suitable for your report and use it consistently. Especially see its section "How to cite sources." * The Cabrillo Tidepool Study's [[http://edweb.sdsu.edu/triton/tidepoolunit/Rubrics/reportrubric.html|Scientific Report Rubric]] (1997) is the sort of thing we use when evaluating your report. * No list of resources would be complete without the classics: * //[[http://www.crockford.com/wrrrld/style.html|The Elements of Style]]//, by William Strunk, Jr. The linked version is to the original text, which was published in 1918. The [[http://www.strunkandwhite.com/|version in bookstores]] has been updated several times by E.B. White (author of //Charlotte's Web//). There is also a new, really fun [[http://www.amazon.com/exec/obidos/tg/detail/-/1594200696?v=glance|illustrated version]] ([[http://contemporarylit.about.com/od/wordsandlanguage/fr/elementsOfStyle.htm|review]]). * //[[http://www.amazon.com/exec/obidos/tg/detail/-/0226899152?v=glance|Style: Toward Clarity and Grace]]//, by Joseph M. Williams. * For academic writing in particular: //[[http://www.amazon.com/exec/obidos/tg/detail/-/0195069544?v=glance|A Handbook for Scholars]]//, by Mary-Claire van Leunen. [[http://www.cs.uu.nl/docs/tandt/html/Scholars/|Link]] ===== Presentation Resources ===== Oral skills are extremely important to polish so please take the time to reherse your 5-10 minute presentation and check some of these great links to giving technical talks from Paul Eggert. * Mark D. Hill's [[http://www.cs.wisc.edu/~markhill/conference-talk.html|Oral Presentation Advice]] (1997) briefly describes how to give a good talk. It contains a summary of David Patterson's classic [[http://www.cs.wisc.edu/~markhill/conference-talk.html#badtalk|How to Give a Bad Talk]] (1983). * Judith P. Rhodes et al.'s [[http://www.tos.org/pdfs/sci_speaking.pdf|Scientifically Speaking: Tips for Preparing Scientific Talks and Using Visual Aids]] (2005) contains advice and observations on preparing and delivering a scientific talk. Its advice on poster presentations is also valuable, though you can skip it if you are not making a poster. * Jeff Radell wrote a brief [[http://www.kumc.edu/SAH/OTEd/jradel/effective.html|online tutorial on effective presentations]] (1999). * The [[http://www.library.ucla.edu/libraries/sel/|Science & Engineering Library]] has a learning center with equipment with which you can rehearse your presentation. Reserve a time slot by visiting the circulation desk in Boelter 8270. * Caroline McCullen's [[http://www.ncsu.edu/midlink/rub.pres.html|Student Presentation Rubric]] (1997) is the sort of thing we use when evaluating your presentation. * Simon Peyton Jones's [[http://research.microsoft.com/~simonpj/papers/giving-a-talk/giving-a-talk.htm | How to give a good research talk]] (2004) almost makes it look easy and covers the essentials. He's brave enough to point you to a video of himself, giving the talk.