Due: February 09 by 11:59pm

Submit: To submit this assignment, create a zip file of all the files in your R project folder for this assignment. Name the zip file hw4-netID.zip, replacing netID with your netID (e.g., hw4-jph.zip). Use this link to submit your file.

Weight: This assignment is worth 5% of your final grade.

Purpose: The purposes of this assignment are:

Assessment: Each question indicates the % of the assignment grade, summing to 100%. The credit for each question will be assigned as follows:

The reflection portion is always worth 10% and graded for completion.


Using the autograder

1) Staying organized [SOLO, 5%]

Download and use this template for your assignment. Inside the “hw4” folder, open and edit the R script called “hw4.R” and fill out your name, Net ID, and the names of anyone you worked with on this assignment.

Writing test functions

For each of the following functions, write a test function first, and then write the function. Your test functions will count for half of the available credit for each problem. Think carefully about the test cases to include in your test functions.

2) guessAnimal(hasFourLegs, climbsTrees) [SOLO, 10%]

Write the function guessAnimal(hasFourLegs, climbsTrees) that returns a statement guessing an animal based on whether it has four legs and whether it climbs trees. Here is the expected behavior:

hasFourLegs climbsTrees statement
TRUE TRUE “It’s probably a cat”
TRUE FALSE “It’s probably a dog”
FALSE TRUE “It’s probably a snake”
FALSE FALSE “Hmm, I’m not sure”

3) isPositiveMultipleOf4Or7(n) [SOLO, 15%]

Write the function isPositiveMultipleOf4Or7(n) that returns TRUE if n is a positive multiple of 4 or 7 and FALSE otherwise. Note than n could be any data type.

4) isEvenPositiveInt(x) [COLLABORATIVE, 20%]

Given an arbitrary value x, return TRUE if it is an integer, and it is positive, and it is even (all 3 must be true), or FALSE otherwise. If the value x is not an integer, the function should return FALSE rather than error. So, isEvenPositiveInt("yikes!") returns FALSE, and isEvenPositiveInt(123456) returns TRUE.

5) isLeapYear(year) [SOLO, 20%]

Write the function isLeapYear(year) that returns TRUE if year is a leap year and FALSE otherwise. Assume that year is a positive integer.

6) getTheCents(n) [COLLABORATIVE, 20%]

Write the function getTheCents(n) which takes a value n that represents a payment in US dollars and returns the number of cents in the payment. For example, if n is 2.45, the function should return 45. If n is an integer, the function should return 0, as it has 0 cents; if it isn’t a number, it should return NULL, because a non-number payment make no cents (ha!). If the payment has partial cents (for example, 3.953), it should be rounded to the nearest cent (in this case, 95 cents).

7) Read and reflect [SOLO, 10%]

Read and reflect on next week’s readings on iteration. Afterwards, in a comment (#) in your R file, write a short reflection on what you’ve learned and any questions or points of confusion you have about what we’ve covered thus far. This can just few a few sentences related to this assignment, next week’s readings, things going on in the world that remind you something from class, etc. If there’s anything that jumped out at you, write it down.

EMSE 4571: Intro to Programming for Analytics (Spring 2022)
Thursdays | 12:45 - 3:15 PM EST | Tompkins 208 | Dr. John Paul Helveston | jph@gwu.edu