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 basic calculator in assembly language. Your code should
generally do the following:
- Print "What do you want to do? 1) Add 2) Subtract 3) Multiply
4) Divide"
- Read their input
- Print "Enter the first number"
- Read the first number
- Print "Enter the second number"
- Read the second number
- Based on their decision, branch to the correct place in the code.
- 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.
- 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.
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)
- 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.