Patricia G. Dickerson
9104 Liberty Drive
Pleasant Valley, MO 64068


(816) 415-0068

 

pgd5ab@umkc.edu or pdickerson@kc.rr.com

 
Pattie G. Dickerson
   
  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.

 

Linux Programs

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 

Java and SQL

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.

Chat Applet

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.

GUI Chat

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

C++

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

Web Design

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é