A ball is dropped with a velocity v0 and an angle alpha with the vertical onto the top step of a flight of stairs consisting of 10 steps. The ball rebounds and bounces down the steps where the coefficient of restitution between ball and step is e=0.6. The friction between ball and stairs is negligible.

Use values of v0 from 1.5 m/s to 3.0 m/s in 0.5-m/s increments, and values of alpha from 18 degrees to 26 degrees in 2-degree increments. By computational programming, determine
(a) if the ball bounces down the steps without skipping any step
(b) if the ball bounces down the steps without bouncing twice on the same step.

***Need the code and the work to go along with it too.

To determine whether the ball bounces down the steps without skipping any step and without bouncing twice on the same step, we can write a computational program using Python. Here's the code:

```python
import math

def ball_bounces(v0, alpha):
num_steps = 10
step_height = 1 # Assumed height of each step

theta = math.radians(alpha) # Convert angle alpha from degrees to radians
vy0 = v0 * math.sin(theta) # Initial vertical velocity
g = 9.8 # Acceleration due to gravity

y = step_height # Initial height of the ball (top of first step)
t = 0 # Initial time
dt = 0.001 # Time step size

while y >= 0:
y -= vy0 * dt - 0.5 * g * dt**2 # Update vertical position
vy0 -= g * dt # Update vertical velocity
t += dt # Update time

if y < 0: # Ball hits the ground
print("Ball hits the ground.")

if y <= 0 and vy0 < 0: # Ball bounced downward
v = vy0 / math.cos(theta) # Horizontal velocity
x = v * t # Horizontal distance traveled
steps_covered = math.floor(x / step_height) # Steps covered by the ball

if steps_covered == num_steps: # Ball bounces down all steps without skipping any
print(f"Ball bounces down all {num_steps} steps without skipping.")

elif steps_covered < num_steps: # Ball skips some steps
print(f"Ball skips {num_steps - steps_covered} step(s).")

else: # Ball bounces twice on the same step
print("Ball bounces twice on the same step.")

# Test different values of v0 and alpha
v_values = [1.5, 2.0, 2.5, 3.0]
alpha_values = [18, 20, 22, 24, 26]

for v0 in v_values:
for alpha in alpha_values:
print(f"v0 = {v0} m/s, alpha = {alpha} degrees")
ball_bounces(v0, alpha)
print("---------------------")
```

Explanation of the code:
1. We define a function `ball_bounces` that takes `v0` (initial velocity) and `alpha` (angle) as input parameters.
2. Inside the `ball_bounces` function, we initialize the number of steps (`num_steps`), the height of each step (`step_height`), and convert the angle `alpha` from degrees to radians.
3. We then simulate the motion of the ball using a while loop. We update the ball's vertical position and velocity at each time step (`dt`) considering the effects of gravity.
4. When the ball hits the ground, the loop will terminate, and we print a message.
5. If the ball is still in the air (y > 0) but its vertical velocity is negative (vy0 < 0), we calculate the horizontal distance covered by the ball and the number of steps covered.
6. Based on the number of steps covered, we print the corresponding message: "Ball bounces down all steps without skipping," "Ball skips some steps," or "Ball bounces twice on the same step."
7. In the main part of the code, we test different values of v0 and alpha using nested loops.
8. For each combination of v0 and alpha, we call the `ball_bounces` function and print the result.

Note: The code assumes a constant height for each step (`step_height`). You can modify the code if you have different step heights.