To the bottom of this Page


Written assignments:

  • Homework#1 (Requirements and specification): First draft document of project requirements and specification. Due: Tuesday, Feb 21. (i) See the sample requirement and specification document in case study 1 as an example. (ii) You should talk to your customers and apply the principles you learn in Reading#2 here in this requirement analysis and specification phase.


  • Homework#2 (Framework design): First draft document of project architecture design: Due: Tuesday, Feb 28. (i) Use formal diagram drawing tools such as SmartDraw (a trial version available for Windows platform), ArgoUML (OpenSource Java based). (ii) Draw package diagrams and class diagrams (UML) to analyze the architecture design of your project and optionally the architecture design of the Biola interpreter project (See your FirstClass emails for the sample project). (iii) You should apply the principles you learn in Reading#3 in this architecture design phase.


  • Homework #3 (Code critic) Due: Thursday, March 9 before the class. Conduct a code review of the lexicalScanner module of the CSCI230 interpreter project. Based on the principles (coupling, coherence, ) you learn from Chapters 5~8 of Code Complete, evaluate the quality (strength and weakness) of (i) the lexScanner class as a whole and (ii) specifically the coding of getPerLineTokenVectFromOneCharArray as a member function. Describe how you may refactor and rewrite the code in getPerLineTokenVectFromOneCharArray to improve its quality.


  • Homework #4 (Unit testing) Due: Tuesday April 4. Download the code (updated on March 15) that implements the DateType as described here. This is intended as a black-box testing, devise a test plan to extensively test the implementation of the AdvanceDays( ) and BackDays( ) of the DateType class to find as many faults as possible. Report all the faults you find through the execution of your test plan. (For example, there is at least one fault in the BackDays method of the implementation.)


  • Homework #5 (Defensive programming) Due: Tuesday April 11. Download the code for this binary search tree implementation and experiment and play with it. The program may abnormally terminate if you try the E option and insert/delete more than 500000 data items as a batch (due to bad-allocation exception because of failure of dynamic memory allocation). Apply what you have learned from chapter 8 (defensive programming) of Code Complete to revise the code with the capacity of exception handling and make it more robust.


To the Top of this Page