In this course, you will carry out the design and the development of a software project in the C programming language given a set of requirements and constraints. However, rather than having methods imposed on your design process, you are expected to develop the ability to use experience, lecture material, online resources, your skills, and research to solve the specific design problems. You are expected to identify design questions, carefully consider design alternatives, and understand trade-offs that result from design decisions you take.
The overall software project you undertake in this course is comprised of a set of deliverables divided among four principal development milestones. The deliverables are iterative and cumulative. That is, you design and develop a single working system which is submitted in stages, and subsequently revised and extended. Each submission is considered a milestone and must produce a working instance of the system that is iteratively refined and extended.
Overall, the software artifacts you submit for evaluation are expected to work within the constraints we impose (i.e., header files, template files and Makefiles we provide), are expected to compile without intervention, to function according to specification, and to be cleanly implemented following the design you previously proposed and documented in the accompanying design document. We allow you to annotate and revise your design document, if after submitting the design document you re-consider certain design decisions. We expect that you explain your revisions and deviations from the initially proposed design.
The software artifacts should show that you:
In this course, you will document your design process and report on it in written form and in oral presentations. Deliverables are iterative and cumulative; that is, you write a single design document which is submitted in stages, and continually revised and enlarged. This document is not an after-the-fact record of the design; it serves a significant function in the process of making and justifying design decisions before you start to code. You will also write a short, weekly progress report in the form of a memo to your project manager.
Oral presentation skills are developed in three ways: through weekly meetings with your project manager, through a Software Demonstration (in place of a Midterm Exam) and through a Final Presentation (in place of a Final Exam). Each of these builds a separate skill, but assignments build upon each other. You begin with an informal briefing situation which is conversational and relies mostly on a question-and-answer structure. The software demonstration is more on your feet, but is dynamic and puts the presenters in close relationship with a small audience. In the Formal Presentation the team talks to the audience, but still with a sense of spontaneity, the kind of organized conversational tone that characterizes the best of engineering presentations. Both the software demonstration and final presentation will have a question and answer component.
Overall, your written documentation is expected to show evidence that you have developed an understanding of document requirements specific to software design, as opposed to a design document in another engineering discipline. You are expected to use the writing process appropriately and formatively in the stages of design. The design document should also show that you can:
Through oral presentations in this course, you are expected to show evidence of the ability to present yourself in a mature, professional manner. Whether delivering a weekly report, software demonstration or final presentation, you should be able to:
Course syllabus >