COMS 4156: ASE » COMS W4156 Fall 2013 Waiver Assignment


Active Projects »

Gameful Computational Thinking

Inspired by CS for All?  Eager to contribute?  The Programming Systems Lab, led by Professor Gail Kaiser, is building a collaborative game-based learning and assessment system that infuses computational thinking in grade 6-8 curricula.  Near-term projects involve: Tooling Scratch with additional game design features Expanding a visual assessment language and authoring environment based in Blockly […]


Toward Trustworthy Mutable Replay for Security Patches

Society is increasingly reliant on software, but deployed software contains security vulnerabilities and other bugs that can threaten privacy, property and even human lives. When a security vulnerability or other severe defect is discovered, a software patch is issued to attempt to fix the problem – but patches themselves can be incorrect, inadequate, and break mission-critical […]


Dynamic Code Similarity

“Code clones” are statically similar code fragments dispersed via copy/paste or independently writing lookalike code; best practice removes clones (refactoring) or tracks them (e.g., to ensure bugs fixed in one clone are also fixed in others). We instead study dynamically similar code, for two different similarity models. One model is functional similarity, finding code fragments […]


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.