ITSK2314 Projects

For all of the programming and research projects, you may work in groups of up to 2 people.  You must share equally in the work or both students receive a 0 for the assignment.  Use good design and make the projects "shine!"

Programming Projects

All programs must contain comments and use good programming style (indentation, white space, descriptive variable names, error checking, etc.).

  1. ASM - Write an basic calculator in assembly language. Your code should generally do the following:
    1. Print "What do you want to do? 1) Add 2) Subtract 3) Multiply 4) Divide"
    2. Read their input
    3. Print "Enter the first number"
    4. Read the first number
    5. Print "Enter the second number"
    6. Read the second number
    7. Based on their decision, branch to the correct place in the code.
    8. Print the correct result (except for division, where the result will be rounded).

    This sounds like a lot, but it's less than one page of code (even with comments).  Build the project incrementally (described above) and you'll be OK!  Start early and ask questions...

    Extra Credit (10 pts): After performing a calculation (i.e. at the end of the program), ask the user if they "want to 1) continue or 2) quit". If they want to continue, branch back to the beginning of the code.
     

  2. PERL - Rot 13 Encoder: Back in the early 90's, people would communicate on newsgroups, often posting offensive material that was inappropriate for minors. The text would often be encrypted using a simple algorithm called Rot 13 - or 'rotation 13', which meant that the alphabet was 'shifted' right by 13 characters, such that an 'a' became an 'n', a 'b' became an 'o', a 'c' became a 'p' and so on.  Shifting the letter 'n' or higher resulted in an 'overflow', causing it to wrap back around to 'a'.  So 'n' became 'a', 'o' became 'b' and so on.  What's so convenient about this is that the algorithm is symmetric, such that applying the same encryption twice resulted in the original text.  For this assignment you will write a PERL program that prompts the user for a file to encode (assume it's in the same directory), and encode/decode it.  To accomplish this, you will need to:
    1. Install PERL.  (Found from http://www.perl.org - ~12.4 MB)
    2. Install an IDE (optional, but recommended. Found from http://open-perl-ide.sourceforge.net/ ~1.04 MB).
    3. Create a function (called rot13) that when passed a filename, encodes it.
    4. Call this function from the 'main' area, passing it the filename that the user types (you should prompt them for this).
    5. Repeat until the user types in 'quit' for the filename.
    6. The program should accept the filename, even if it has whitespace in it (i.e. "bob.txt" is the same as "   bob.txt    ").

    Hints: My program is only 32 lines of code, after comments! If you start writing a lot of code, chances are there's a better way.  Also, if you don't see anything after you do a print, it may be that a buffer hasn't flushed (I'll explain in class).  Put in these two lines of code after the print: $| = 1; $| = 0;  This forces a print.  Finally, in general, build the program incrementally.  See if you can prompt the user, read in the name of the file, and then print it back out.  Then, put a loop around that to see if you can continue until they type 'quit'.  Then, build your function, and see if you can pass the filename correctly.  Then, see if you can open the file... etc... Look at the slides on this, and you'll be fine!
     

  3. VBA WORD - Write a VBA plug-in (application) that auto-generates an index based upon the current working document.  This application should open a text document of "common" words and not include these words in the index.  The user should also have the ability to select the maximum number of occurrences to display in the index (and should be given the option of "all").  The resultant index should be appended to the current working document and well formatted.
  4. VBA EXCEL - Write a VBA plug-in (application) that takes in data for a project team's hours worked and makes graphs based upon this information.  The data coming in will contain a week-by-week breakdown arranged by person (each row representing a team member) and by actual and estimated hours worked (each column pair represents a week - actual in the first column, estimated in the second column).  The following graphs should be output to the spreadsheet: a pie graph comparing all team members' actual hours worked (showing hours and percentages); a line graph showing the total team's actual and estimated hours (one series each) worked by week (weeks along X-axis); a line graph showing actual and estimated hours (one series each) worked for each team member by week (weeks along X-axis) - one graph per team member here; and a line graph showing the monotonically-increasing actual and estimated summation of hours worked for the entire team.
  5. VBA POWERPOINT - Write a VBA plug-in that syntax highlights keywords for presentations with code in them.  The user interface should allow them to pick between C#, Java and Visual Basic as the language.  The interface should also allows them to specify the color of the highlighting, as well as the font.
    Things that will help in this assignment:
    - To create an array/manipulate:
             Dim wordList As Variant
        wordList = ("Bob", "was", "here")
        Dim tempWord As Variant
        For Each tempWord in wordList
        Next tempWord
    -
    To pull the words from a shape:
        Set wordsForShape = tempShape.TextFrame.TextRange.Words
    -
    To compare two words:
        If (StrComp ("One", "Two", vbTextCompare) = 0) Then...
    -
    To remove the leading/trailing whitespace, you can use the Trim() function
        newString = Trim (oldString)

     
  6. WEB DB - implement a front-end via a Web interface using WebMatrix.  The 'Titles' table from books.mdb should initially be displayed. You should provide the user with the ability to update the table (or more specifically, INSERT data into the DB), as well as delete it.  Here's a non-working demonstration.  Hints: we did most of this in class.  Do NOT use the MxDataGrid - it will only cause problems (it doesn't shut down very well).  Start by coding the Page_Load function, connecting to the database to populate the DataGrid.  Then, get the insertion working.  If you're rusty on your SQL, you can: INSERT INTO Titles VALUES ('1', '2', 'Bob the Builder', '9.99', 'Sci-Fi').  This can be accomplished with very similar code (first, update the table, then re-populate the DataGrid).  Another hint: command.ExecuteReader is only used to read from the DB.  Use the ExecuteNonQuery function instead.  Finally, the deletion from the DB is just like the INSERT, but a different SQL statement.

Research Projects

All research projects must be in Word, single spaced, 10pt font, 2-column, 10+ pages.  Use images, tables, charts, etc. whenever appropriate.  Everything must be your own wording unless directly quoted (use sparsely).  12 or more references must be included.

  1. Differences and similarities between .NET and Java
  2. The history of interpreted languages
  3. The history of object-oriented languages
  4. The differences and similarities of JSP, ASP, and ASP.NET
  5. The history of Web-based languages (server side)
  6. The evolution/history of Win32 API, MFC, and .NET (i.e. various ways to write Windows programs)
  7. The CRL and MSIL (.NET)
  8. The differences and similarities between ADO and ADO.NET
  9. Security in .NET and Java
  10. PDA programming
  11. Graphics/game programming (OpenGL and DirectX)
  12. The history and evolution of LOGO
  13. Interactive fiction and the "Inform" language

To demonstrate progress for each of these assignments, you should have some form of design and code for the programming projects, and your should have 4+ references (12+ preferable) and the structure and main points outlined in the research projects.