For this assignment | Computer Science homework help

Assignment #3 – Advanced Ruby

Objective

For this assignment, you will be creating a query API for a CSV file of students. The API will

query a ‘YAML-base’ which you generate from the CSV file. Your API will be tested with an API

client that is provided to you.

Models

1. You are given a CSV file named s t u d e n t s . c s v

. This file contains 15000 fake student

records (along with headers) containing the following fields: G i v e n N a m e

, S u r n a m e

,

S t r e e t A d d r e s s

, C i t y

, S t a t e

, Z i p C o d e

, E m a i l A d d r e s s

, G e n d e r

, P o u n d s

2. Create a c l a s s

 called C o u r s e

 in c o u r s e . r b

 which contains c o u r s e _ n a m e

 and c o u r s e _ i d

fields which are set via the class constructor. Provide appropriate read/write accessors

to those fields.

3. Create a c l a s s

 called S t u d e n t

 in s t u d e n t . r b

 which contains the following fields (with

appropriate read/write accessors): s t u d e n t _ i d

, f i r s t _ n a m e

, l a s t _ n a m e

, c i t y

, s t a t e

,

e m a i l

, g e n d e r

, p o u n d s

, g p a

 and t a k i n g _ c o u r s e s

.

4. The S t u d e n t

 class should have an empty constructor, but should provide an ability to be

initialized via a block initializer as discussed in the lecture materials.

5. Both C o u r s e

 and S t u d e n t

 classes should override the t o _ s

 method.

Database Generator

1. Create d b _ g e n e r a t o r . r b

 file which will:

Read in the CSV file using Ruby’s CSV library (see PickAxe for an example of

reading in a * . c s v

 file with headers).

Create an array of students, where each student will have its fields populated

based on the values of the * . c s v

 file with the exception of s t u d e n t _ i d

, g p a

, and

t a k i n g _ c o u r s e s

 fields. Keep in mind that pounds is a floating point number

and should be stored appropriately.

s t u d e n t _ i d

 should just be a value which starts with 1

 and gets incremented every

time a new instance of student is created (presumably finishing ~15000)

g p a

 should be a randomly generated floating point number with the lowest value

being 2 . 0

 and the highest 4 . 0

 (Hint: take a look at Ruby’s built-in r a n d

 function)

t a k i n g _ c o u r s e s

 should be an array of 0 to 4 C o u r s e

 objects. The idea here is that

each student is taking a different number of courses. Some students might not

taking any courses while others can be taking all four.

Create 4 courses with some id and name and randomly ‘assign’ 0 to 4 courses to

1 of 3

each created student. (Hint: Ruby has a wonderful s a m p l e

 method, which can

choose n

 random elements from an array.)

2. Serialize the students array to u n i v e r s i t y _ d b . y m l

 using Ruby’s YAML library (see

Pickaxe book for an example).

API

1. Create D b A p i

 class in d b _ a p i . r b

 which will serve as an API/DSL for selecting records

from the ‘YAML-base’ based on certain conditions. DO NOT re-load the YAML file

every time, rather store students loaded from the YAML file in a class variable called

s t u d e n t s

 that is retrievable from a class method called s t u d e n t s

.

2. D b A p i

 needs to have the following methods implemented:

r e q u i r e _ r e l a t i v e ‘ s t u d e n t ‘

r e q u i r e _ r e l a t i v e ‘ c o u r s e ‘

r e q u i r e ‘ y a m l ‘

c l a s s D b A p i

c l a s s

d e f s e l f . s t u d e n t s . . . e n d

d e f s e l f . s e l e c t _ b y _ g e n d e r ( g e n d e r ) . . . e n d

d e f s e l f . s e l e c t _ b y _ f i r s t _ n a m e ( f i r s t _ n a m e ) . . . e n d

d e f s e l f . s e l e c t _ b y _ l a s t _ n a m e ( l a s t _ n a m e ) . . . e n d

d e f s e l f . s e l e c t _ b y _ w e i g h t _ m o r e _ t h a n ( p o u n d s ) . . . e n d

e n d

3. The f i r s t _ n a m e

 and l a s t _ n a m e

 methods should accept a Regexp matcher as an

argument.

4. d b _ c l i e n t . r b

 (provided) will use your API. A sample output from running d b _ c l i e n t . r b

is as follows:

2 of 3

The d b _ c l i e n t . r b

 prints an intersection of the number of males, the number of people whose

first name contains ‘Andr’, and the number of people who weigh more than 200 pounds.

Submission Guidelines

1. Commit all the files to you local repo and push your repo out to your private team repo

on gihub creating a remote branch called a s s i g n m e n t 3

2. You can do one of the following to accomplish the above:

Create a local branch called a s s i g n m e n t 3

 ($ g i t c h e c k o u t – b a s s i g n m e n t 3

) and

then push it out by doing $ g i t p u s h r e m o t e _ a l i a s a s s i g n m e n t 3

Work on a m a s t e r

 branch in your repo and then to $ g i t p u s h r e m o t e _ a l i a s

m a s t e r : a s s i g n m e n t 3

3. Feel free to include a README with any comments

3 of 3

Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more