Example Problem Set: Difference between revisions

From Computer Science Wiki
(Created page with "right|frame|This a problem set for you to work through <ref>http://www.flaticon.com/</ref> This is a problem set. Some of these are easy, others are far m...")
 
 
(8 intermediate revisions by the same user not shown)
Line 13: Line 13:
== The Problem ==
== The Problem ==


At a prestigious international school, we have  
At a prestigious international school, we have only 5 administrators, Michael, Carol, Jen,  Constance and TJ. Your program should ask the user to type in their name. If their name matches one of our administrators, your program must output a special greeting. If the user input is any other name (does not match the list of administrators) your program should simply output a simple greeting.


== Unit Tests ==
There is no testing for user input. That is, if a user enters a number, an integer, or nothing, your program should not evaluate the input.


== Unit Tests ==


* '''User Input:''' Name: Bill
* '''Expected output:''' Hello Bill


== Some Code to Get You Started ==
* '''User Input:''' Name: TJ
* '''Expected output:''' An administrator! Hello TJ
* '''User Input:''' Name: 123
* '''Expected output:''' Hello 123


== Hacker edition ==


In the hacker version:


<syntaxhighlight lang="python">
* Your program should test for valid user input. The user input should be only allow for strings


# This program asks a user what is important
THIS PART ISNT DONE YET
# it THEN asks a user to tell us how much TIME they spend
# the purpose of the program is to force users to REFLECT on
# what they SAY is important vs what is really important.
 
what_is_important = []
time_spent_doing = []
important_thing = "foo"
time_in_a_day = 24
 
print('''
============| Part 1 | =======================
Think about what is important to you.
 
Type something specific that is important to you,
such as sleep, video games, talking with friends,
sports, or school.
 
 
When you are done, please type done.
==============================================
 
''')
while not important_thing == "done":
   
    important_thing = raw_input("Please type something that is important to you: ")
    if important_thing != "done":
        if important_thing  not in what_is_important:
            what_is_important.append(important_thing)
            print("Thank you. You have " + str(len(what_is_important)) + " things in your list of important things.")
        else:
            print("Error: it looks like you already have that in your list. Try again.")
   
           
print('''
============| Part 2 | =======================
Now that we know what is important to you,
let's see how much time you spend doing them.
 
        There are 24 hours in a day.
==============================================
 
''')   
 
 
 
for i in range(0,len(what_is_important)):
    time_item = input("How much time in 24 hours do you spend on: " + what_is_important[i] + "? ")
    time_spent_doing.append(time_item)
    time_in_a_day = time_in_a_day - time_item
    print("There are " + str(time_in_a_day) + " hours left. ")
   
   
for i in range(0,len(what_is_important)):
    print("Your spend " + str(time_spent_doing[i]) + " hours on " + str(what_is_important[i]) + "\n")
   
# your tasks for todays class:
#
# 1. sort both lists so we know what people spend MOST of their time doing
# 2. offer advice to them how they can improve their lives by focusing on truly important things
# 3. offer at least three suggestions about what is actually truly important to be happy (please don't be silly)
# 4.  ask the user what their goals are
# 5. ask the user if what they are doing is helping them achieve their goals
 
 
 
   
   
 
</syntaxhighlight>
 
== Take This Further ==
 
# add in a condition that players only have a certain number of turns to win
# add in a difficulty level; easy, medium and expert. If a player has easy, they have 8 tries, medium, they have only 4 tries, and expert, only 2 tries!!


== How you will be assessed ==
== How you will be assessed ==


Your solution will be graded using the following axis:  
Your solution will be graded using the following axis:  


'''Scope'''
'''Scope'''
# To what extent does your code implement the features required by our specification?
* To what extent does your code implement the features required by our specification?
# Did the student try?
* To what extent is there evidence of effort?
# Evidence of effort? Even if the student fucked up, if they tried, they get assessed.
 


'''Correctness'''
'''Correctness'''
# Did code meet specifications?  
* To what extent did your code meet specifications?
# Did code meet unit tests?  
* To what extent did your code meet unit tests?
# If it passes all unit tests, it earns a 5 
* To what extent is your code free of bugs?
# Check50: output is suggestive not determinative. 
 


'''Design'''
'''Design'''
# Is this code efficient?
* To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
# Are you you eliminating repetition?
* To what extent is your code eliminating repetition?
# Are you using functions when you should?
* To what extent is your code using functions appropriately?
# Code that is short is often a proxy for good design
 


'''Style'''
'''Style'''
# Is your code formatted?
* To what extent is your code readable?
# Variables well named?
* To what extent is your code commented?
# Adhere to clean code
* To what extent are your variables well named?
* To what extent do you adhere to style guide?


== References ==
== References ==

Latest revision as of 07:40, 14 March 2018

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]

This is example problem set. In this example we are learning about lists, conditionals, and processing user input.

The Problem[edit]

At a prestigious international school, we have only 5 administrators, Michael, Carol, Jen, Constance and TJ. Your program should ask the user to type in their name. If their name matches one of our administrators, your program must output a special greeting. If the user input is any other name (does not match the list of administrators) your program should simply output a simple greeting.

There is no testing for user input. That is, if a user enters a number, an integer, or nothing, your program should not evaluate the input.

Unit Tests[edit]

  • User Input: Name: Bill
  • Expected output: Hello Bill
  • User Input: Name: TJ
  • Expected output: An administrator! Hello TJ
  • User Input: Name: 123
  • Expected output: Hello 123

Hacker edition[edit]

In the hacker version:

  • Your program should test for valid user input. The user input should be only allow for strings

THIS PART ISNT DONE YET

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?
  • To what extent do you adhere to style guide?

References[edit]

A possible solution[edit]

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

not yet!