CS 342 - Software Design

Program Critique

Your write up must have the following information clearly expressed at the top of your critique. This information is needed to help get the proper information to the correct student.

  1. The number of the project you are critiqueing.
  2. The name of the students in the group whose code you are critiqueing.
  3. Your name.
An example of the this information is as follows:
    Critique of  Programming Project 1 for Hong Cao, hcao1@cs.uic.edu
    Written by Amit Bhadoria, abhadori@cs.uic.edu  
In the above information, Amit Bhadoria wrote the critique and Hong Cao wrote the program. Your name and user ID is to replace those of Amit Bhadoria.

Parts of each Critique Sections

For each section of the critiqueyou are to write comments about your opinion of the code you are to critique. You are to give supporting comments of your opinion with specific examples from the code you are critiqueing. Simply giving yes/no answers will not be excepted as correctly doing the critique. Also you are to rate each area with a score from 1 to 5. Where 1 means the area was poorly addressed in the program and 5 means the area was addressed very well in the program. Thus, each section of the crititque is to contain:

  • a score from 1 to 5
  • an explanation for the given score
  • specific examples from the original code or design document that highlight the points made in the explanation

The 5 Critique Sections

Your critique is to address the following 5 areas. Each area must have its own section in your write-up. The questions listed are to give you an idea of what types of things you are to look for (and write about) in your critique.

Supporting Documents

How well do the supporting documents introduce you to what is going on in the program? Are they understandable (use well written sentences and proper grammatical form)?

Program Style

How well is the program commented? Does it have a file header comment at the beginning of every file? Does every function have a function header? Does it make good use of in-line comments? Are identifiers given meaning names? Does the program use indentation and blank lines in a uniform manner to help make the program easier to read? Use the Oracle Programming Style handout or the Google Code Style Guide as a base for good programming style:

Use of Objects, Data Structures and Algorithms

Do the objects and/or data structures use memory efficiently? Do the algorithms use machine cycles (time) efficiently? Do the objects/data structures properly model their "real world" entity? How do the data structures and algorithms used compare to the data structures and algorithms used by your program? Are decision statements (if, while, etc.) easy to understand?

Code/Object Decomposition

Does the code make proper use of cohesion and coupling?

    • The best use of cohesion is when each function performs one well defined operation. Are the functions of small enough size to be easily understood (or are there a few huge functions that do everything)?
    • The best use of coupling is when each function does not depend directly on the operations performed by other function. This is reached by maximizing the use of parameters and minimizing the use of global variables.
Does the program make use of modern programming practices? Such items include typedefs, classes, constructors, destructors (for dynamic deallocation), multiple source code files, makefiles, etc.

Overall View of the Project

Was the code easy or hard to understand? If you had to make a change to this program, do you think it would be easy or hard to modify?

Topic revision: r4 - 2014-04-04 - 15:55:34 - Main.troy
Copyright 2016 The Board of Trustees
of the University of Illinois.webmaster@cs.uic.edu
Helping Women Faculty Advance
Funded by NSF