| title | Testing out of Software Design |
|---|---|
| date | 2016-12-31 09:22:19 -0500 |
| layout | page |
If you are not majoring in E:C, you do not need to test out of Software Design. If you are majoring in ECE, you can substitute an advanced software class for Software Design. You just need permission of the instructor to waive the prerequisite.
Note that Software Design is a “soft” requirement for most E:C courses. You do not need to test out of Software Design in order to take advanced E:C courses.
The following only applies to students planning to major in E:C. If you are not sure yet what your major is, you can stop reading now.
If you are majoring in E:C and you have experience in programming and software design that is comparable to the material in Software Design, you can petition to waive the Software Design course requirement for E:C.
In order to waive the course requirement, you should demonstrate ability and understanding comparable to a student completing Software Design with an above-median grade.
If your petition is approved, the course requirement will be waived, but you will not receive credit toward the distribution requirements, and you will need an additional 4 credits in Computing to complete the E:C concentration.
The normal way of testing out is described below, but if this is not appropriate for you, we can negotiate an alternative.
- If you have written a substantial program in any language, and you were the primary designer and implementer, you should prepare your code and submit it to Amon Millner and Oliver Steele.
Code should be documented, and include a README that describes the program, lists contributors, and describes how to install and run the program including versions of required software and the OS you tested on.
Send a link to a GitHub or GitLab repository, or a zip file that contains your code and README.
If there are parts of the program you didn't write, you should indicate which parts you did write.
You should also prepare a short document that includes:
a) A description of what the program is for,
b) A description of the structure of the code (for example, what are the classes, and how are they related?). Ideally you should use a UML diagram in the style used in Software Design and Software Engineering.
c) You should also present and defend one design decision you made in the course of the project, where "design decision" means an aspect of your design where there were at least two reasonable choices, and you had to choose one.
- After looking at the material you give us, we will schedule a time to meet and talk about your project. We will try to evaluate
a) Whether you have achieved intermediate programming skills,
b) Whether you understand basic software design, and
c) Whether you have the vocabulary to talk about software design with other programmers.
- After the meeting, the faculty will meet and report our decision.
If your petition is not approved and you are required to take Software Design, we will make every effort to tailor the class to your needs so that it is a valuable experience for you.
If your petition is approved, you should take an advanced class in Computing as a substitute (you may have already done this). You may discuss with your adviser and any member of the computing faculty for suggestions. We recommend learning as much as possible about object-oriented design and software design patterns as you can at intermediate to advanced levels. Different faculty-led, student-led, or off-campus courses may provide this material.