Talk to Us
Have questions? Ready to buy? Speak to a sales representative — Call Today!

1-866-289-7237


» Take a 30 second site survey!

» Request More Information
Testimonials
"The Service Center product has been an indispensable tool for us in the manufacture of our computer systems [...]" Jeremy Rammalaere

"The PC-Doctor, Inc. tools have been the fastest and most accurate I have used in my years as a computer professional [...]" Robert Pereillo

"PC-Doctor Service Centre is an invaluable tool for a PC repair company such as ours...We couldn't do our work efficiently without PC-Doctor Service Centre [...]" Rob Waldram

» Read more Testimonials
Dr. Blip's Blog
A technical blog for technical people, among other things...

» Visit the Blog
Forums

Dr. Blip's PC-Doctor Forum

Promote your great ideas, ask questions about PC-Doctor and diagnostics, meet some of our team members, and more.

» Visit the Forums
Work Here!
Open Positions:
  • C# / .Net Application Developer
  • Windows System Developer
  • Ruby on Rails Software Developer
  • Software Engineer I/II, Senior Software Engineer
  • 日本語会話技術を持っているのソフトウェアエンジニア
  • 软件工程师具有华语普通话语言技巧, 軟件工程師具有華語普通話語言技巧
  • Quality Assurance I/II
  • Senior Quality Assurance
  • Inside Sales Representative
» Learn More & Apply Today!

Question 1: DNA Sequencing

DNA Sequencing is a way of determining the order of nucleotide bases, adenine, guanine, cytosine and thymine commonly known as A, G, C and T. The combination of these molecules creates a strand of DNA. Researchers need your help to write a program to help them do some new research with DNA.

The researchers already have a program that reads the DNA sequencing from a machine and outputs a series of data in the format of characters. The only possible characters are A, G, C, T and *. The first four characters represent the possible molecules, while the * is an error character. If the machine could not detect the correct molecule, it would report a *. So a sample sequence file would look like:

GCTATA*CTAGCCCCATGCAT

The researchers need you to write a program to handle the following tasks. First the program needs to be able to read in an ASCII file with the above format. Then it needs to search the entire sequence for genes which are given in a separate file. A gene is given by a name, its subsequence of molecules and its type. See the sample genes.dat below. Then you need to search the sequence for all the gene subsequences and print out information on what was found.

Each gene has special properties and needs to have different information printed for it. Given a skeletal type of gene you need to print out the number of Adenine characters found in its sub sequences. Given a circulatory gene you need to print out the total number of wild cards characters matched in all of the genes found. Given a limbs gene you need to print out the location of any match that has 2 or more wild card matches.

Also, keep in mind that some day we may need to add more genes, gene types or output functions to the program. And the size of the sequence and sub sequence files can vary.

Sample Input Files:

sequence.dat

GCTATA*CTAGCCCCATGCAT*GCA**

genes.dat

Bone Gene, GCTA, skeletal
Heart Gene, TAGC, circulatory
Wings Gene, AGC, limbs

Sample Program Output:

Bone Genes:
Total 1
Locations: 0
Additional Info: Count of Adenine in sub sequence: 1

Heart Gene:
Total 8
Locations: 8 and possibly at 4, 20
Additional Info: Total wild card matches: 2

Wings Gene:
Total 4
Locations: 9 and possibly at 5, 24
Additional Info: Two or more wild card matches: 24


Question 2: Plant Taxonomy


Plant taxonomy is the science of classification and naming of all of the types of plants that have ever been discovered on the planet. The system of classifying plants is variable and subject to interpretation, so as a result, plants are constantly being reclassified.

You have been hired by the Museum of Natural History to help them with a new program that will allow them to see the effects of reclassifying plants. You are given a list of plants as shown below in plants.dat. The list contains a series of plants. Each line contains a plants name, parent plants name, its leaf type and its flower type. You need to read in this information and keep track of the tree of plants that are presented.

Also a plant may appear more that one time in the list. This means that the plant was reclassified. When a plant is reclassified its parent, leaf type or flower type may have changed. When this occurs, the plant needs to be moved in the tree to the correct place or its data altered. You need to be able to read in a file of this format and output the final tree of data, which contains the final leaf type and flower type as well as any previous parents.

It is very important that this output be accurate to the taxonomists, so they also want you to write unit tests for your code and create a separate program that will take a known input file and a known correct output file and verify that your program does return the correct answer. This program should print passed if the output file is correct for the given input and failed if the output is not correct for the given input. You should submit two programs. One that simply prints the output after reading in the data from the plants.dat and one program that takes and input file and an output file and prints passed or failed accordingly.

Sample Input File:

Plants.dat (Format: Plant Name, Plant's Parent's Name, Leaf Type, Flower Type)

Magnoliophyta, Unknown, None, DualPetalSmall
Lilies, Magnoliophyta, LongSlender, MultiPetalSmall
Phalaenopsis, Magnoliophyta, ShortRound, SixPetalSmall
Rudbeckia fulgida, Phalaenopsis, None, MultiPtealFlat
Calyx, Lilies, LongSlender, DualPetalSmall
Gynoecium, Calyx, None, None
Androecium, Magnoliophyta, Unknown, DualPetalSmall
Phalaenopsis, Lilies, ShortRound, SixPetalSmall
Rudbeckia fulgida, Unknown, None, MultiPetalFlat
Rudbeckia fulgida, Calyx, None, MultiPetalFlat

Sample Output:

Magnoliophyta (Leaf Type: None, Flower Type: DualPetalSmall)
-> Lilies (Leaf Type: LongSlender, MultiPetalSmall)
-> Phalaenopsis (Leaf Type: ShortRound, SixPetalSmall, Previous Parents: Magnoliophya)
->Calyx (Leaf Type: LongSlender, DualPetalSmall)
-> Rudbeckia fulgida (Leaf Type: None, MultiPetalFlat, Unknown, Phalaenopsis)
-> Gynoecium (Leaf Type: None, None)
-> Androecium (Leaf Type: Unknown, DualPetalSmall)



Question 3: Digital Music Fanatic


DigitalMusicFanaticDatabase.com is a web site for many tech savy music fans. The database does not contain any music files, but it contains vast amounts of information on all the music out there.

You have been given the task of helping the web maintainers to create a new utility for there read. Its main purpose is to expose a C++ application programming interface (API) to allow the programmers out there easier access to the information that is available on the web site. There are many programmers out there having difficulty finding this information in one place.

So you have been given a sample of there database which are simply a set of text files. There is a file containing band information, a file for albums, a file for artists and a file for songs. Samples of these files are given below.

To create the API you need to write code to give them access to the database. To do this you should create one or more classes and header files that to the following things:

Return a List of Bands
Return a List of Artists given a band
Return a List of Albums given a band
Return a List of Albums given an artist
Return a List of Songs given a band
Return a List of Songs given an artist
Return a List of Songs given an album
Return the number of bands that started before a given year
Return the all of the albums for a given genre

You should then create a simple main that demostrates how to use these classes. You do not need to compile these into a seperate library which is common for most API's. You can simply create an executable that runs and prints out info demonstrating how it works.

You also need to keep in mind that they will be planning on updating there database to MySQL later, so it should be easy to swap out the read in of the file information below to use another methods to read in the data.

Sample Music Files:

Bands.dat (Format: Name, Year Started, Next Tour Date)

Weezer, 1994, Unknown
Coolio, 1994, 2007
John Mayer, 1999, 2008
Metallica, 1983, 2007

Artists.dat (Format: Name, Band Name, Instrument)

John Mayer, John Mayer, Vocal
James Hatfield, Metallica, Vocal
Lars Ulrich, Metallica, Drums
Coolio, Coolio, Vocal

Album.dat (Format: Name, Band Name, Year Published, Genre)

Continuum, John Mayer, 2006, PopRock
Any Given Thursday, John Mayer, 2003, PopRock
Weezer, Weezer, 1994, Grunge
Ride the Lightning, 1984, HardRock
Gangsta's Paradise, 1995, Rap

Songs.dat (Format: Name, Band Name, Album Name, Song Length, Writer's Name)

Waiting for the World to Change, John Mayer, Continuum, 5:27
Belief, John Mayer, Continuum, 3:34
No Such Thing, John Mayer, Any Given Thursday, 4:46
Fight Fire with Fire, Metallica, Ride the Lightning, 4:45
Ride the Lightning, Metallica, Ride the Lightning, 6:41
Crusin, Coolio, Gangsta's Paradise, 4:36
Smilin, Coolio, Gangsta's Paradise, 4:09