We expect anyone who will be waiving this class to have significant software engineering experience contributing to a large, most likely multi thousand line, project in any programming language. We don't give a specific LOC requirement because it is a poor metric for project scope or significance. You will need to pick at least one of these projects and answer specific questions about the software engineering practices employed during the project. In addition to answering the question you need to tell us specifically how you contributed to the project such as subsystems, functions, files or classes modified, tests written, etc. If the project is open source please point us to the source code or repository. The second part of the assignment is a small programming assignment where you will write web service that we can query via HTTP. You must complete this assignment before applying for the waiver on mice. The due date listed above is for students wishing to enter the class if the waiver is not granted.
Please write around one paragraph about each of the following software engineering concepts or technologies and how you used each of them in your project mentioned above. You will need to answer if and how you used each of the practices. You may also want to explain what benefit each provided, what problems they may have caused and what you would do differently if you were to do the project again. Your written assignment should be in either text or pdf format.
The programming instructions can be found here.
Your written assignment will be graded according to the rubric presented above and given a score out of 20. Your grade on the programming assignment will be based on the number of test cases your application passes. You must have at least 32 out of 40 points, 80%, to receive the waiver.
You will turn in your project via GIT. Please email riley at cs dot columbia dot edu for credentials. You may turn in the assignment after the due date if you don't wish to enroll in the class.
Do not email you assignment to Dr. Kaiser. Doing so will result in assignment failure.