*------------------------- bmc_ungr_readme.txt -----------------------* This file describes the contents of the Undergraduate Education and Internships section of my On-line Portfolio. Access to the Portfolio link is password protected. If you are interested in any of the contents of this Portfolio, you can contact me via e-mail to request the password. /********************************************************************\ Portfolio ~ Undergraduate Education & Internships \********************************************************************/ This section of my portfolio comprises selected programs and documents that I have written in the course of my undergraduate education and internships. Note: Most of these zip files have been created to retain relative paths or folder hierarchy. Since many folders contain files by the same name (like a readme.txt file), it is essential that if you unzip a file with more than one program, that you retain the folder hierarchy. For Example: If you are using Norton Utilities File Manager, click the "Use Stored Folders" option. If you are using the WinZip Utility, click the "Use Folder Names" option. You have 3 different download options: 1) Download one .zip file containing the portfolio: bmc_ungr_portfolio.zip 2) Download .zip files containing the 3 sections of my portfolio: bmc_code.zip - programs written in various languages bmc_docs.zip - technical documents and projects bmc_design.zip - design documents and presentations If you download these files, unzip them to a directory that you have created for this purpose. The bmc_code.zip will create the directories structured as follows: C_Code/ BSTree_23Tree/ CannyEdge/ HashTables/ HoughTransformer/ HuffmanCode/ MarrHildrethEdge/ NFAtoDFA/ OperSyst/ data/ given/ Shapes/ SysPass1/ SysPass2/ C++_Code/ Atlantis/ QuickPick/ Java_Code/ (under construction) Lisp_Prolog/ The bmc_design.zip and bmc_docs.zip have less directory structure. When you unzip these files they will create the directories respectively: Bmc_Design/ Bmc_Docs/ * See the Scenario 3 Description for full descriptions of the contents of each directory. 3) Download the individual programs or documents: Bmc_Code/ C_Code/ bst_23t.zip canny.zip hashing.zip hough.zip huffman.zip marrhild.zip nfa2dfa.zip opersyst.zip shapes.zip sys_pass1.zip sys_pass2.zip Cpp_Code/ atlantis_code.zip quilckpick_code.zip quickpick.exe Java_Code/ (under construction) Lisp_Prolog/ lisp.zip prolog.zip Bmc_Design/ dynamic.zip funtional.zip object.zip seng_pres.zip Bmc_Docs/ atlantis_prj.zip dev_plan.zip req_specs.zip vision_prj.zip Scenario 3: Descriptions - Individual programs, documents and design: Again if you unzip these files choose to retain the stored folders or paths option in your zip utility, they will create a separate directory for each .zip file because most of them contain a readme.txt file with instructions for compiling and input. A separate directory for each file avoids overwriting an existing readme.txt C_Code/ files: bst_23t.zip This program investigates two different tree structures: the Binary Search Tree (BST) and the Two-Three Tree (TTT). canny.zip This program uses the Canny method of smoothing to create the difference operator used for convolution with the image. This is the magnitude of the gradient and this data is the first outputted image. Then candidates for edges are detected by looking for peaks in the direction of the gradient. This data is the second image that is outputted. Then using this candidate array and the first image data and two threshold values, a final image is created with only the candidates that are above the high threshold or connected to a candidate above the high threshold. The output for this program is 3 files: the magnitude image, the candidate image and the final image. This is in the raw data form. You can use a graphics application like PaintShopPro to convert it to a .pgm file (256 x 256). (input files provided) hashing.zip This program investigates hash tables. Two methods will be compared. An open hash table: Table size is to be the largest prime number less than 2000. Collision resolution will be handled by simple linked lists. Array will contain pointers to nodes and nodes will be structs with integer data and a nextNode pointer. The hash function will be simple, x hashes to x MOD the chosen prime. A closed hash table: Array sizes chosen as above with ~1000 extra slots for the overflow. Bin size should be 5 with collisions handled by circling through the bin and then going to the sequential overflow area. (input files provided) hough.zip This program implements the Hough Transformer for a specific input. It fits the edges in this input to a linear parametric equation. The first output is the canny image that was read in is input. The second output is the strongest line found in the canny image. The third output is both the second and third strongest lines in the canny image. (input files provided) huffman.zip This program uses the Huffman code algorithm to compress a file. The encode portion creates a frequency table and a huffman tree using a heap for the implementation to encode a file to an intermediate file, and outputs two final files - .tre and .cod: the .tre is the frequency table information and the .cod is the coded file converted to bits for compression. The decode portion takes the two files generated by encode.c: creates a frequency table, a huffman tree using a heap for the implementation, decodes the .cod file to a intermediate file of chars, and then decode the intermediate file; it outputs a final text file which should match the original file given to encode.c. (input files provided - but this should work on any text file) marrhild.zip This program detects the edges of an image. It uses convolution and the Marr-Hildreth method of smoothing (Laplacian of a Gaussian) to create the difference operator used for the image. This convolution is the first outputted image. Then this convolution is scaled and scanned for changes from positive to negative - thus detecting an edge. This is the second image that is outputted. The output for this program is 2 files: the convolution image and the positive to negative image. This is in the raw data form. You can use a graphics application like PaintShopPro to convert it to a .pgm file (256 x 256). (input files provided) nfa2dfa.zip This program implements the Powerset Construction for converting an arbitrary NFA to its equivalent DFA in reduced form (only reachable states). It also provides a menu to chose "regular-preserving operations" to perform on these constructed DFA's. (input files provided) opersyst.zip This is the code for my Senior Operating Systems Project. It consists of 6 objectives and was written to integrate into an event driven simulation. The code will not compile independently, but must be run with symbolic links to the UCF simulator code, thus, no readme.txt file has been provided with compilation instructions. This project implements: (a) the fundamental data structures of an operating system; (b) the basic flow of control within an operating system; (c) the mechanism of context switching and interrupt handling; (d) different resource allocation and management algorithms in multiprogrammed operating systems; This project also provided experience implementing a complex program, sharpened my good programming and debugging habits and improved my programming communication skills. (The given code with which to integrate, data files, output and specs have also been provided.) shapes.zip This program uses the parametric equations for a super ellipsoid to create shapes in 3 dimensions. It also implements rotating, tapering, bending and twisting equations. The original image and the image after each process are the outputs. These are in the raw data form. You can use a graphics application like PaintShopPro to convert it to a .pgm file (256 x 256). sys_pass1.zip Implements pass-1 of an assembler. (assembly & other input files provided) sys_pass2.zip Implements pass-1 of an assembler. (assembly & other input files provided) C++_Code/ files: atlantis_code.zip This is the source code for an Object Oriented game called "Crystals of Atlantis". It demonstrates the design and implementation of an object oriented system in C++. Specifically the system exemplifies the following Object Oriented Programming (OOP) principles: 1. Modular Design and Classes 2. Encapsulation and Information Hiding 3. Polymorphism and Function Overloading 4. Stream Operations Full documentation for this project is also located in the "Documents/files:" section of this portfolio. quickpick_code.zip This is the source code for an application that implements picking lottery numbers for chosen play slips. It is based on the Florida Lottery system and the user will need some knowledge of the different play slips available. The object of this main executable is to provide a lottery player with a program to select their lottery numbers; the result is much the same as a "quick pick" choice on a play slip, but more fun! The main file was written as an enhancement to the midterm specifications. The source code has been written in ansi C++ and uses object oriented design. Future revisions of this simulation could explore inheritance from the LottoMachine Class. quickpick.exe This is the executable file for the QuickPick program. Runs under Windows 9X-Me. Java_Code/ files: (under construction) Lisp_Prolog/ files: lisp.zip A collection a lisp functions. (Download the free LISP program from my "download" link.) prolog.zip A collection a lisp functions. (Download the free PROLOG program from my "download" link.) Design/ files: (I made this a separate section because these documents are focused on design and presentation.) dynamic.zip General Program Comparator Dynamic Model Design. (MS PowerPoint 95/97 .ppt file) funtional.zip General Program Comparator Functional Model Design. (MS PowerPoint 95/97 .ppt file) object.zip General Program Comparator Object Model Design. (MS PowerPoint 95/97 .ppt file) seng_pres.zip Software Engineering Final Presentation. (Creative MS PowerPoint 95/97 .ppt file ~ 2.3 MB) Documents/ files: The documents in this folder are technical documents from my Software Engineering Project to create a General Program Comparator. This is a design for a generic program that will analyze (compare) two given programs, both written in Turbo Pascal programming language, to determine their "degree of similarity." Degree of similarity will be based on the number of occurrences of identical instances of certain pre-defined programming features appearing in a pair of programs being compared. atlantis_prj.zip Object Oriented game "Crystals of Atlantis" Full project documentation (C++ Senior Project - MS Word 95 .doc file) dev_plan.zip General Program Comparator Software Development Plan document. (MS Word 95 .doc file) req_specs.zip General Program Comparator Software Requirements Specifications document. (MS Word 95 .doc file) vision_prj.zip Vision System for Detecting Cat Behavior (Senior Vision Project - MS Word 95 .doc file) *------------------------- bmc_ungr_readme.txt -----------------------*