|
Patricia G.
Dickerson
9104 Liberty Drive Pleasant Valley, MO 64068
(816) 415-0068
pgd5ab@umkc.edu
or
pdickerson@kc.rr.com
|
 |
|
|
|
Software Portfolio |
|
|
Programming Environments and
Languages
|
During my university experience, I
created software programs using Java, SQL, C++, and C programming
languages. In preparing the programs, I worked with Borland C++
Builder Professional Edition (versions 3.0 and 4.0), and Microsoft
Visual C++ (version 6), along with VMS. Several of my programs,
created in the Linux operating system environment, allowed me to
become proficient in using the Emacs editing program.
|
|
Producer-Consumer Problem: Thread Synchronization
Description:
This program implements a solution
for the producer/consumer problem using semaphores. The producer
places new "widgets" that it produces into a buffer used also by the
consumer. The consumer then removes the "widget", thus "consuming" it.
The buffer is shared between the producer and consumer, with
semaphores and mutexes controlling access to same. The user designates
the number of seconds for the program to run at the command line. An
alarm and alarm signal handler are used to implement the program timer.
The producer and consumer are separate threads.
Analysis and annotation:
Concurrent access to
shared data may result in data inconsistency. Maintaining data
consistency requires synchronization mechanisms in order to ensure the
orderly execution of cooperating processes. I examined synchronization
objects and the Linux operating system to solve the classic
synchronization producer-consumer problem. The timing functions
utilized signal(SIGALRM, signalFunction) to stop the process in the
designated (by user) time period.
Source Code:
Available upon request
|
|
Background Processes
Description:
This program creates a
main program that will accept ((from the command line) the number of seconds that the user
wishes the main program to run, and the number of processes
that the user wishes to run as background processes. An alarm
signal handler stops the processes after the desired
number of seconds has elapsed.
Analysis and annotation:
Whereas the Producer-Consumer program
created threads operating within the same environment, this program
illustrates the use of the Linux exevce method to create separate
processes running in the background.
Source Code:
Available upon request
|
|
Chat Server Applet
Description:
In this assignment a GUI-based chat client runs as an Applet. The
program runs using the Java plugin with both Internet Explorer and
Netscape Navigator. The Applet takes the default machine name and port
number from the HTML file, but the user may override the defaults by
typing in specific information.

Analysis and annotation:
Network programming is about connecting a program
running on one machine with a program running on another machine. The
terms client and server are used to
describe the two sides of a communication over a connection. If
program A contacts program B for information, program A is the client
and program B is the server. In order for a client program to connect
to a server, the server has to be waiting for a connection and the
client has to specify which program on which machine to connect to.
The machine name is specified with the familiar Internet domain name.
The program on a specific machine is specified with a port
number. Server programs listen at a certain port number for
connections from clients. The program allows the user to specify a
login name, the port number, and machine name.
Source Code:
Available upon request
Back to Top |
|
GUI Chat Server and Database
Description:
In this project I wrote a GUI program that serves
as the client side of a client/server chat system. As messages
arrive from the server, this program saves each message as a record in
a database. The record includes a field for user (string), message
(string), and date/time (date). The value for the date/time field is
the current date/time when the message was received from the server.
The
program provides functionality to fetch all messages from the database
and display them in the "messages received" text area in the order in
which they were received. Records may also be deleted from the
database.

Analysis and annotation:
In order
to accomplish the ordering by date, the program creates one table
called reminders with two fields: remind_date and message. A few
messages are added and then all messages that have a remind date
greater or equal to today are printed.
I used Microsoft Access to
create the database, and SQL to build the tables and provide the
functionality.
Source Code:
Available upon request
Back to Top |
|
Least Cost Airfare
Description:
This
program calculates the least expensive flight from the first city in a
text file to the second city. It reads an airline schedule, which
designates all available flights from one city to the next, and the
cost of that particular flight. The second file simulates the user's
departure city as the first entry in the file. The second city on the
same line indicates the user's destination. If there is no way to get
there, the program prints <infinite>.
Input files:
schedule.txt |
cities.txt |
Aimes Baltimore 200
Chicago Aimes 400
Aimes Davenport 100
Baltimore Davenport 300
Baltimore EastLansing 1000
Davenport Chicago 200
Davenport EastLansing 200
Chicago ForestPark 500
Davenport ForestPark 800
Davenport GreenBay 400
EastLansing GreenBay 600
GreenBay ForestPark 100 |
GreenBay Chicago
Aimes Davenport
ForestPark Baltimore
Chicago EastLansing
Davenport ForestPark
Aimes ForestPark |
Sample output file:
GreenBay Chicago <infinite>
Aimes Davenport 100
ForestPark Baltimore <infinite>
Chicago Aimes Davenport EastLansing 700
Davenport GreenBay ForestPark 500
Aimes Davenport Chicago ForestPark 800
Analysis and annotation:
This
program represents a solution to a shortest path problem, where the
cost of a flight simulates the shortest path from one city to another.
The least cost is not always a direct flight - or even the least
number of stops.
Source Code:
Available upon request
Back to Top |
|
The Anagram Finder
Description:
This program reads
an input file containing a list of words, each word on a line by
itself, and prints to an output file all anagrams for each word
contained in the list. The anagrams found by the program are grouped
together and printed on the same line. If a word has no anagram in the
list, it is printed on a line by itself.
Analysis and annotation:
I used
several components of the Standard Template Library to
implement this program. The main idea of the program is to create an
internal dictionary vector containing pairs of strings.
Anagram
is a struct
derived from pair<vector<char>, string>, using the STL pair
template class. The second Anagram constructor takes a string
argument and stores the string itself in the second member, but
converts it to a vector to store in the first member.
The first member of the pair data structure is sorted
alphabetically, and is used to find the anagrams for each word (all
words that are the same alphabetically are anagrams). When the pairs
are sorted using the first members as keys, all of the words that are
anagrams come together in consecutive positions of the vector.
Then the second member of the pair is used to output the
original word.
Source Code:
Available upon request
Back to Top |
|
I have
designed and maintained my own web sites and the UMKC wiredmind site
http://www.wiredmind.org. |
|
|
|
UMKC Web Site |
IT 222 Site |
CCTR Home
Page | My Résumé |
|
|
|
 |
|