COMS 4156: ASE » COMS W4156 Fall 2013 Waiver Assignment


Active Projects »

Exploring Applications of Symbolic Execution to Testing, Debugging and Patch Validation

As a first step, we are investigating an approach to runtime information flow analysis for managed languages that tracks metadata about data values through the execution of a program.  We first considered metadata that propagates labels representing the originating source of each data value, e.g., sensitive data from the address book or GPS of a mobile […]


Reducing Testing Overhead

Unit test virtualization: significantly reducing the time to setup unit tests


Graphical Analysis of Program Behaviors to Discover Opportunities for New APIs

A joint project encompassing computer architecture, machine learning and software engineering


Finding Bugs in Machine Learning, Data Mining and Big Data Applications

Automating metamorphic testing techniques at runtime


Post-Deployment Checking for Bugs, Security Vulnerabilities and Privacy Breaches

Executing tests in the deployment environment, using the state of the running application


COMS W4156 – Class Waiver

Due September 10 at 17:00

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.

Written Assignment (20 points)

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.

  1. Requirements Engineering
    • 3 points possible
    • Rubric:
      • 0 points if not used.
      • 1 to 3 points will be allocated based on your description.
  2. Formal Design such as UML or Design Patterns
    • 3 points possible
    • Rubric:
      • 0 points if not used.
      • 1 point if attempted but used incorrectly such as misapplying design patterns.
      • 2 to 3 points if you correctly based on your description.
  3. Software process such as waterfall or agile
    • 3 points possible
    • Rubric:
      • 0 points if not used.
      • 1 point if used but possibly incorrectly.
      • 2 points if used correctly.
      • 3 points if used correctly and you can provide a thoughtful evaluation.
  4. Software Testing such as black box, white box or acceptance testing.
    • 4 points
    • Rubric:
      • 0 points if not used although we should subtract points.
      • 1 point if attempted.
      • 2 points if used and testing frameworks were used and appropriate.
      • 3 or 4 points if you can give a thoughtful evaluation of your testing practices.
  5. Software component Modes such as external libraries like EJB or Web Services.
    • 4 points
    • Rubric:
      • 0 points if none used.
      • 1 point if used but incorrectly.
      • 2 points if used correctly.
      • 3 or 4 points if you can explain the reasoning behind your library choices.
  6. Software development tools such as IDEs, version control systems, bug trackers, or debugging tools.
    • 3 points
    • Rubric:
      • 0 points if not used.
      • 1 point if used but not to their potential.
      • 2 points if used correctly.
      • 3 points if you can also explain specific situations where these tools were more advantageous than more primitive methods such as print statements.

Programming Assignment

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.
DO NOT publish your assignment on an any kind of public Git host such as Git Hub or Bit Bucket.
We will consider such action to be an academic integrity violation and you will fail the assignment.
You may use private hosting that is not publicly accessible.

Turn In:

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.


  • If you are looking for the class homework assignment it is available here.