2. BONAFIDE CERTIFICATE
External Examiner
Seal of Institution
This is to certify that this bonafide project work
“Speed Typing App” in the subject of Computer
Science has been completed by Nandan Ramesh of
Class XII A in the academic year 2020-2021 and is
submitted for the AISSCE practical examination
conducted by CBSE at PSBB Learning Leadership
Academy, Bangalore.
Internal Examiner
School Principal
4. WHY THIS PROJECT ?
In today’s technologically advancing
world, it has become essential for
everyone to learn how to use
computers and its functions, for even
day-to-day tasks like-
• Writing important Emails
• Online Examinations
• Research papers
• Maintaining Personal Blogs
• Coding / Programming …... and
many more
What’s the most important factor
common in all these tasks is the basic
skill of ‘typing’ on a keyboard. This
may sound simple but when one has
got limited time on hand, learning
how to type not only ‘fast’ but with
good ‘accuracy’, can reduce one’s
workload considerably and even
provide a sense of relief and
completion.
Thus, through this project, I wish to
help in improving one’s typing speed
and accuracy.
7. • Typing is the process of writing or inputting text by
pressing keys on a typewriter, computer
keyboard, cell phone, or calculator. It can be
distinguished from other means of text input, such
as handwriting and speech recognition. Text can be
in the form of letters, numbers and other symbols.
• Words per minute (WPM) is a measure of typing
speed, commonly used in recruitment. For the
purposes of WPM measurement a word is
standardized to five characters or keystrokes.
Therefore, "brown" counts as one word, but
"mozzarella" counts as two. The benefits of a
standardized measurement of input speed are that
it enables comparison across language and
hardware boundaries.
• In one study of average computer users, the
average rate for transcription was 33 words per
minute, and 19 words per minute for composition. In
the same study, when the group was divided into
"fast", "moderate" and "slow" groups, the average
speeds were 40 wpm, 35 wpm, and 23 wpm
respectively.
• An average professional typist reaches 50 to 80
wpm, while some positions can require 80 to 95 wpm
(usually the minimum required for dispatch
positions and other typing jobs), and some
advanced typists work at speeds above 120
wpm. Two-finger typists, sometimes also referred to
as "hunt and peck" typists, commonly reach
sustained speeds of about 37 wpm for memorized
text and 27 wpm when copying text, but in bursts
may be able to reach speeds of 60 to 70 wpm.
12. topic( ) Function
• Define the function
• Create a pointer variable topic_window
• Display title ‘Choose a Topic”
• Set dimensions for topic_window
à Define 4 nested topic functions tech( ), science( ), sports( ), literature( )
à Each nested function will create a file pointer to its specific text file containing related words and
store the individual words by read( ) and split( ) method
à Each topic function then creates a button to be displayed on the topic_window, with specific
dimensions.
à The fetched words are sent to the function typing_page( ) as arguments.
typing_page( ) Function
• Function is defined with ‘input_words’ as a parameter.
• Create a pointer variable type_window
• Display the title “ This is a speed test ! “
• Set the dimensions for type_window
• Use random function to shuffle the input_words
à Create the different labels and buttons to be displayed on the type_window :
o Word_display
o Score_display
o Wpm_count
o Wpm_heading
o Time display
o Time_count
o Instructions display
o Word_entry box
o Exit button
à Each Label / Button will have the details :
o Window to be displayed on ( type_window)
o Text to be displayed (if applicable)
o Font of the displayed text
o Background colour of Label / Button
o Foreground colour of Label / Button
o Location of Label / Button on user’s screen
à Exit button will end the type_window loop and quit the window.
13. time( ) Function
• Define the function
• Create global variables ( timeleft, score, miss, wpm )
• Check if timeleft is greater than 11 , else makes the time counter red
• Check if timeleft is greater than 0, if yes, it will get decremented by 1 and displayed on the window
• If no, the game has ended, the details such as,
o WPM
o SCORE
o MISSES
o TOTAL SCORE
• Above details will be printed and the timeleft is made 60 again to restart the game run.
start_game( ) Function
• Define the function
• Create global variables ( score, miss, wpm, word_concad )
• Check if timeleft is equal to 60
• If yes, then call the time( ) function for the timer to run on the typing window
• As the user enters words into the entry box, check if entered word is equal to the displayed word
• If yes, a score of 1 is added
• Concatenate the user entered characters into word_concad. The length of this string divided by 5
will give us the WPM (Words Per Minute)
• Display the updated score and WPM count
• If entered word is not equal to displayed word, then ‘miss’ is increased by 1
• The words are then shuffled again using random module and word at the first position of word list
is displayed on the window again until the timeleft becomes 0.
14. mysql( ) Function
• Define the function
• Create a database connection using mysql.connector function with -
o Host
o User
o Passwrd
o database
• Create a cursor object that temporarily stores the data that is transferred between the python
program and the database
• Call the user( ) function to generate a random value / set of numbers to be used as a UserID in the
table where the data will be stored.
• Insert the values-
o UserID
o WPM
o Total Score
o Correct Words
o Wrong Words
o Time Taken
• Execute the query using the execute( ) function
• Commit the changes to the database using the commit( ) function
user( ) Function
• Define the function
• Create a global variable ‘userID’
• Use random.randrange( ) function to generate a random number
• This UserID value can now be used in the database to store data
28. LIMITATION
S
• The dimensions of the
windows may not be suitable
for all screen sizes, it may
become jumbled up when
used on a different screen
size.
• There will be a small lag
between typing two words
each time, this may lead to a
lower WPM count and score.
• The database connection will
not work unless the database
exists on the device already.
A new database will have to
be made on each new device
for it to work.
29. SCOPE FOR
IMPROVEMENT
• A better and more efficient
formula can be created for
calculating the WPM of the user
accurately.
• More words can be added for
each topic to avoid repetition of
words during the speed test.
• An option can be added to let the
user choose for how long he/she
wants to do the speed test ( 2 mins
, 5 mins , etc.)
• There can be a multiplayer
feature where a user can compete
with other users and compare
their scores, WPM, etc.