Select a random student

From Computer Science Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This a problem set for you to work through [1]

This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:

  1. to build your skill applying computational thinking to a problem
  2. to assess your knowledge and skills of different programming practices


What is this problem set trying to do[edit]

I am testing your current ability to think about a problem and solve it. There isn't a right or wrong here, just demonstrating what you know. In broad strokes, this problem set requires you to:

  1. REALLY understand the problem
  2. Think about how you might solve the problem
  3. Create a solution to the problem
  4. Test if your solution works (solves the problem)


The Problem[edit]

I teach 5 classes. I am interested in creating a system to randomly call on students in my classes. I would prefer not to call on the same student twice during one class. At the end of a class, I would like to know who I called and who I did not call on. Please reflect on your computational thinking skills & ask me questions which will help you design this system.

The input[edit]

The input will be five different lists which represent each of my five classes. For example:

  • Class 1
    • student 1, student 2, student 3...
  • Class 2
    • student 1, student 2, student 3...
  • Class 3
    • student 1, student 2, student 3...
  • Class 4
    • student 1, student 2, student 3...
  • Class 5
    • student 1, student 2, student 3...

The output[edit]

The output of this program will be:

  1. the first name of a student from a class, randomly selected. I will provide you with a list of first names for my students.
  2. you should store the students you have called in a list (even though for now, you will only select only one).

A possible solution[edit]

Click the expand link to see one possible solution, but NOT before you have tried and failed!

<!-- the file below should be named random.html there is another file, below.-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Choose a random student</title>
</head>
<body>
<form action="random.php" method="post">

    <fieldset>
        <legend>Select a class</legend>

        <input type="radio" id="classes" name="block" value="1">Block 1<br>
        <input type="radio" id="classes" name="block" value="2">Block 2<br>
        <input type="radio" id="classes" name="block" value="4">Block 4<br>
        <input type="radio" id="classes" name="block" value="5">Block 5<br>

        <button type="submit">Click here to select a student</button>
    </fieldset>

</form>
</body>
</html>
<!-- and below is the random.php file -->
<?php
session_start();

$chosenClass = $_POST['block'];

if($chosenClass==1){

    if(ISSET($_SESSION['block1Students'])){

        $block1Students = $_SESSION['block1Students'];
        $randomStudent = array_rand($block1Students);
        echo "We are choosing <strong>$block1Students[$randomStudent]</strong>";
        unset($block1Students[$randomStudent]);
        $_SESSION['block1Students'] = $block1Students;
        $countOfStudents = count($block1Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";

        if ($countOfStudents == 0) {

            echo"<br>You have chosen all your students<br>";
            $block1Students=  ["Cesur","Maciej","Tarik","Emily","Cameron","Michael","Vera","Avi","Jaegeun","Lucia","Andrea","Aleksandra","John","Changseok","Alex","Sua","Harry"];
            $_SESSION['block1Students'] = $block1Students;
        }

        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

    } else {

        $block1Students=  ["Cesur","Maciej","Tarik","Emily","Cameron","Michael","Vera","Avi","Jaegeun","Lucia","Andrea","Aleksandra","John","Changseok","Alex","Sua","Harry"];
        echo "This is the first time, we are going to create the array<br>";
        $_SESSION['block1Students'] = $block1Students;
        $block1Students = $_SESSION['block1Students'];
        $randomStudent = array_rand($block1Students);
        echo "We are choosing <strong>$block1Students[$randomStudent]</strong>";
        unset($block1Students[$randomStudent]);
        $_SESSION['block1Students'] = $block1Students;
        $countOfStudents = count($block1Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";

        if ($countOfStudents == 0) {

            echo"<br>You have chosen all your students<br>";
            $block1Students=  ["Cesur","Maciej","Tarik","Emily","Cameron","Michael","Vera","Avi","Jaegeun","Lucia","Andrea","Aleksandra","John","Changseok","Alex","Sua","Harry"];
            $_SESSION['block1Students'] = $block1Students;
        }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";


    }
} elseif($chosenClass==2) {

    if(ISSET($_SESSION['block2Students'])){

        $block2Students = $_SESSION['block2Students'];
        $randomStudent = array_rand($block2Students);
        echo "We are choosing <strong>$block2Students[$randomStudent]</strong>";
        unset($block2Students[$randomStudent]);
        $_SESSION['block2Students'] = $block2Students;
        $countOfStudents = count($block2Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";

        if ($countOfStudents == 0) {

            echo "<br>You have chosen all your students<br>";
            $block2Students = ["Dominik", "QingYu", "David", "Przemyslaw", "Stanislaw", "Sven", "Marcin", "Jan", "Siddharth", "Wojciech", "Mikolaj", "Yoon", "Chan Woo", "Maksymilian"];
            $_SESSION['block2Students'] = $block2Students;
        }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

        } else {

        $block2Students = ["Dominik","QingYu","David","Przemyslaw","Stanislaw","Sven","Marcin","Jan","Siddharth","Wojciech","Mikolaj","Yoon","Chan Woo","Maksymilian"];
        echo "This is the first time, we are going to create the array<br>";
        $_SESSION['block2Students'] = $block2Students;
        $block2Students = $_SESSION['block2Students'];
        $randomStudent = array_rand($block2Students);
        echo "We are choosing <strong>$block2Students[$randomStudent]</strong>";
        unset($block2Students[$randomStudent]);
        $_SESSION['block2Students'] = $block2Students;
        $countOfStudents = count($block2Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";

            if ($countOfStudents == 0) {

                echo "<br>You have chosen all your students<br>";
                $block2Students = ["Dominik", "QingYu", "David", "Przemyslaw", "Stanislaw", "Sven", "Marcin", "Jan", "Siddharth", "Wojciech", "Mikolaj", "Yoon", "Chan Woo", "Maksymilian"];
                $_SESSION['block2Students'] = $block2Students;
            }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

    }

} elseif($chosenClass==4) {

    if(ISSET($_SESSION['block4Students'])){

        $block4Students = $_SESSION['block4Students'];
        $randomStudent = array_rand($block4Students);
        echo "We are choosing <strong>$block4Students[$randomStudent]</strong>";
        unset($block4Students[$randomStudent]);
        $_SESSION['block4Students'] = $block4Students;
        $countOfStudents = count($block4Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";
            if ($countOfStudents == 0) {

                echo "<br>You have chosen all your students<br>";
                $block4Students = ["Emre", "Zofia", "Sheevankit", "Zofia", "Nguyen", "Mahmood", "Felix", "Siddharth", "Maximo", "Jasper", "Alexander", "Franciszek", "Seung Won", "Gabriele", "Annie"];
                $_SESSION['block4Students'] = $block4Students;
            }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

            } else {

        $block4Students = ["Emre", "Zofia", "Sheevankit", "Zofia", "Nguyen", "Mahmood", "Felix", "Siddharth", "Maximo", "Jasper", "Alexander", "Franciszek", "Seung Won", "Gabriele", "Annie"];
        echo "This is the first time, we are going to create the array<br>";
        $_SESSION['block4Students'] = $block4Students;
        $block4Students = $_SESSION['block4Students'];
        $randomStudent = array_rand($block4Students);
        echo "We are choosing <strong>$block4Students[$randomStudent]</strong>";
        unset($block4Students[$randomStudent]);
        $_SESSION['block4Students'] = $block4Students;
        $countOfStudents = count($block4Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";
            if ($countOfStudents == 0) {

                echo "<br>You have chosen all your students<br>";
                $block4Students = ["Emre", "Zofia", "Sheevankit", "Zofia", "Nguyen", "Mahmood", "Felix", "Siddharth", "Maximo", "Jasper", "Alexander", "Franciszek", "Seung Won", "Gabriele", "Annie"];
                $_SESSION['block4Students'] = $block4Students;
            }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

    }

} elseif($chosenClass==5) {

    if(ISSET($_SESSION['block5Students'])){

        $block5Students = $_SESSION['block5Students'];
        $randomStudent = array_rand($block5Students);
        echo "We are choosing <strong>$block5Students[$randomStudent]</strong>";
        unset($block5Students[$randomStudent]);
        $_SESSION['block5Students'] = $block5Students;
        $countOfStudents = count($block5Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";
        if ($countOfStudents == 0) {

            echo "<br>You have chosen all your students<br>";
            $block5Students = ["Taylor", "Andrew", "Marta", "Aron", "Tomasz", "Cameron", "Tomasz", "Taekyung", "David", "Filip", "Juwon", "Maximilian", "Haruka", "Norval", "Aleksander", "Maxwell", "Ian", "Yilin"];
            $_SESSION['block5Students'] = $block5Students;
        }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

        } else {

        $block5Students = ["Taylor", "Andrew", "Marta", "Aron", "Tomasz", "Cameron", "Tomasz", "Taekyung", "David", "Filip", "Juwon", "Maximilian", "Haruka", "Norval", "Aleksander", "Maxwell", "Ian", "Yilin"];
        echo "This is the first time, we are going to create the array<br>";
        $_SESSION['block5Students'] = $block5Students;
        $block5Students = $_SESSION['block5Students'];
        $randomStudent = array_rand($block5Students);
        echo "We are choosing <strong>$block5Students[$randomStudent]</strong>";
        unset($block5Students[$randomStudent]);
        $_SESSION['block5Students'] = $block5Students;
        $countOfStudents = count($block5Students);
        echo "<br><br>";
        echo "There are $countOfStudents left to choose.";
        if ($countOfStudents == 0) {

            echo "<br>You have chosen all your students<br>";
            $block5Students = ["Taylor", "Andrew", "Marta", "Aron", "Tomasz", "Cameron", "Tomasz", "Taekyung", "David", "Filip", "Juwon", "Maximilian", "Haruka", "Norval", "Aleksander", "Maxwell", "Ian", "Yilin"];
            $_SESSION['block5Students'] = $block5Students;
        }
        echo "<br><br> <a href=\"random.html\">Click here to choose another student</a>";

    }

} else {

    echo "ERROR: invalid class!!!!! How are you here?!?! ";
}

How you will be assessed[edit]

Your solution will be graded using the following axis:


Scope

  • To what extent does your code implement the features required by our specification?
  • To what extent is there evidence of effort?

Correctness

  • To what extent did your code meet specifications?
  • To what extent did your code meet unit tests?
  • To what extent is your code free of bugs?

Design

  • To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
  • To what extent is your code eliminating repetition?
  • To what extent is your code using functions appropriately?

Style

  • To what extent is your code readable?
  • To what extent is your code commented?
  • To what extent are your variables well named?


References[edit]