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.).
- ASM - Write an assembly program using the SPIM simulator to determine if
a string is a palindrome (the word is read the same both forwards and
backwards - i.e. bob, mom, wow). The program should prompt the user
for a string (no spaces allowed), then print out either "It's a palindrome"
or "It's not a palindrome". For this assignment, you first make sure
you look at the slides - especially the 'cookie' example. Your code should
generally do the following:
- Print "Enter a string"
- Read that string
- Determine the number of characters in that string (by looping).
Here, the last 'character' has the value 10. You may want to print out
this value.
- Subtract 1 or 2 from that number to get the slot of the last
character (depending on how you did it).
- Now that you know the starting and ending slot numbers (the 'up'
counter and 'down' counter), you can get the character values (putting
them into 2 registers, say $t2 and $t3) and compare them.
- first, increment your up counter, and decrement your down
counter.
- if $t2 doesn't equal $t3, then you know it's not a palindrome -
so branch to a different part of the program that handles that.
- if your down counter is < 0, then you have checked all the
characters, so it is a palindrome. Branch to a part of the program
that handles it.
- otherwise, jump back to the top of the loop
- have two labels to handle if the string is and isn't a palindrome.
- have a label to exit the program (it is useful in all assembly
programs)
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...
- 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:
- Install PERL. (Found from
http://www.perl.org - ~12.4 MB)
- Install an IDE (optional, but recommended. Found from
http://open-perl-ide.sourceforge.net/ ~1.04 MB).
- Create a function (called rot13) that when passed a filename, encodes
it.
- Call this function from the 'main' area, passing it the filename that
the user types (you should prompt them for this).
- Repeat until the user types in 'quit' for the filename.
- 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!
- 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.
- 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.
- 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.
- 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.
- Differences and similarities between .NET and Java
- The history of interpreted languages
- The history of object-oriented languages
- The differences and similarities of JSP, ASP, and ASP.NET
- The history of Web-based languages (server side)
- The evolution/history of Win32 API, MFC, and .NET (i.e. various ways to
write Windows programs)
- The CRL and MSIL (.NET)
- The differences and similarities between ADO and ADO.NET
- Security in .NET and Java
- PDA programming
- Graphics/game programming (OpenGL and DirectX)
- The history and evolution of LOGO
- 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.