About ZadShelves
The right book in the right hands at the right time can change the world.
You’re in the right place. at Zad Shelves, you, our book lovers, are our number one priority. As we change and grow with the times, we will never lose sight of our roots, we are a community bookstore first and foremost. We are forever invested in you and want to make your reading experience with us a memorable, enjoyable and easy one.
The Zad Shelves is a place where books are loved and book lovers of all kind are always welcome, We're more than just a bookstore, we're a gateway to knowledge.
ZadShelves History
Zad Shelves Library, launched recently as a community initiative, founded and funded by an enthusiastic web developers, Their mission and ambition is to encourage reading across all spectrums of our society. Through hard work and passion, we proudly managed to lunch Zad Shelves. Today, Zad Shelves cover most – if not all – of the Jordanian cities. Thanks to the giving spirit of our Jordanian fabric, such generous contributions helped us tremendously! We Couldn't Have Done it Without Their Help.
Inspiring Quotes About Reading
“A reader lives a thousand lives before he dies, said Jojen. The man who never reads
lives
only one.”
George R.R. Martin
“Books allowed me to see a world beyond the front porch of my grandmother’s shotgun
house…[and] the power
to see possibilities beyond what was allowed at the time.”
Oprah Winfrey
“Maybe this is why we read, and why in moments of darkness we return to books: to find
words
for what we
already know.”
Alberto Manguel
“I do not remember a time when I could not read, nor any time when reading was not a joy
and
a solace.”
Emmeline Pankhurst
March’s Book Club Pick: On the Road With the Casualties of the Great Recession
As far as human inventions go, retirement is shockingly recent, and proving fragile. A fringe
idea
until the 20th century — and one that outraged many — it took tenuous hold in the United States
in
the 1930s, during the Great Depression. Today, only 17 percent of Americans imagine they will be
able to afford to stop working someday.
“Nomadland,” by Jessica Bruder, an important if frustrating new work influenced by such classics
of
immersion journalism as Barbara Ehrenreich’s “Nickel and Dimed,” looks at one strategy older
workers
have devised for “surviving America.”
Tens of thousands have traded in their homes for “wheel estate.” They are “the Okies of the
Great
Recession”: grandparents living in school buses and vans seeking seasonal work cleaning toilets
at
campgrounds, picking blueberries in Kentucky, sometimes for wages, sometimes for just a parking
spot
— “not necessarily paved but hopefully level.
For three years and 15,000 miles, Bruder traveled and worked alongside them, taking a job at a
sugar
beet processing facility and at an Amazon warehouse ... read
more
By Parul Sehgal (The New York Times)
Inspiring Quotes About Reading
“Books are a uniquely portable magic.”
Stephen King
“A book is a dream that you hold in your hand.”
Neil Gaiman
“Books are the plane, and the train, and the road. They are the destination, and the
journey. They are home.”
Anna Quindlen
“In the end, we’ll all become stories.”
Margaret Atwood
February’s Book Club Pick: A Devastating (and Darkly Hilarious) New Novel From the ‘Westworld’ Writer Charles Yu
Over the past 15 years, Charles Yu has carved out a fascinating, eclectic career as a
storyteller, first receiving widespread acclaim in 2010 for his novel “How to Live Safely in a
Science Fictional Universe,” which showcased his ability to revitalize familiar tropes like time
travel. This talent has only escalated in his writing for visionary TV shows like “Westworld,”
“Legion” and “Lodge 49.” In his new novel, “Interior Chinatown,” Yu expands upon this approach
in brilliant and unexpected ways.
“Interior Chinatown” posits that we are reading a teleplay about Chinatown — specifically the
Golden Palace restaurant, which is the setting for a cop show called “Black and White.” Through
his protagonist, Willis Wu — who has a small part on the show — Yu explores in devastating (and
darkly hilarious) fashion Hollywood’s penchant for promoting clichés about Asians and
Asian-Americans. Wu has worked his way from “Background Oriental Male” to “Dead Asian Man” to
“Generic Asian Man Number Three/Delivery Guy” — a long way from “Kung Fu Guy,” which is where he
wants to be.
...
read more
By Jeff VanderMeer (The New York Times)
Inspiring Quotes About Reading
“The more that you read, the more things you will know. The more that you learn, the
more places you'll go.”
Dr. Seuss
“If you don’t see the book you want on the shelf, write it.”
Beverly Cleary
“You know you've read a good book when you turn the last page and feel a little as if you
have lost a friend.”
Paul Sweeney
“Reading is a conversation. All books talk. But a good book listens as well.”
Mark Haddon
January’s Book Club Pick: Jia Tolentino on the ‘Unlivable Hell’ of the Web and Other Millennial Conundrums
In May 2017, Jia Tolentino declared the personal essay dead. “The personal is no longer political
in quite the same way that it was,” she wrote in an essay for The New Yorker’s website. Five
years ago, readers salivated over “it happened to me” essays posted daily on women’s websites.
But after the 2016 presidential election, such pieces started to seem petty, self-indulgent,
naïve. Still, Tolentino, who once edited this kind of writing for The Hairpin and Jezebel, found
herself occasionally nostalgic for the authorial voices that developed during the personal
essay’s heyday. “I am moved by the negotiation of vulnerability,” she wrote. “I loved watching
people try to figure out if they had something to say.”
Now a staff writer at The New Yorker, Tolentino has made her own foray into self-study in her
absorbing first book, “Trick Mirror: Reflections on Self-Delusion.” The book is a collection of
nine original essays, some of which have their roots in writing she’s done for The New Yorker;
each is a mix of reporting, research and personal history. Her voice here is fully developed:
She writes with an inimitable mix of force,
...
read more


Class AbstractSession
Abstract session operations
- AloFramework\Session\AbstractSession implements SessionHandlerInterface, AloFramework\Config\Configurable, ArrayAccess uses AloFramework\Config\ConfigurableTrait (not available)
Direct known subclasses
AloFramework\Session\MySQLSession
,
AloFramework\Session\RedisSession
Indirect known subclasses
Abstract
Namespace: AloFramework\Session
Author: Art<EMAIL_ADDRESS>Located at AbstractSession.php
Namespace: AloFramework\Session
Author: Art<EMAIL_ADDRESS>Located at AbstractSession.php
Methods summary
public
|
#
__construct(
Constructor |
protected
string
|
|
abstract protected
boolean
|
|
public static
boolean
|
|
public static
boolean
|
|
public static
|
#
getLastActiveSession( )
Returns the last started session object. This is reset back to null after the session is destroyed or closed. |
public
|
|
protected
|
|
public
boolean
|
|
public
boolean
|
|
public
boolean
|
|
public
boolean
|
|
public
boolean
|
|
public
mixed
|
|
public
|
|
public
mixed
|
|
public
|
|
public
|
|
public
|
|
protected
boolean
|
Methods inherited from SessionHandlerInterface
Properties summary
protected
Psr\Log\LoggerInterface
|
$log
Logger instance |
Magic properties
public
|
$config
|


Procedural code project for F.G.C.U. COP 2001 Programming Methodology
Contained within is the source code
Overview of the project
This project is for my COP-2001 Programming Methodology at Florida Gulf Coast University (F.G.C.U.) the aim of this project is to create a intentory system for a fictitious company called OraclProduction Ltd. The program is to be a console driven program using only procedural programming with no use of classes in C++. Users should be able to create employee profiles in the system, increase product counts, add new products, display currect counts on each item and information on the item, new products can be added at any point, and production statistics can be veiwed.
Planning Outline
Goals
- Effectively track and manage inventory
Success Criteria
- Pass tests in Repl.lt
- Constraints
- C++
- Procedural (no OOP)
- Individual project
- Assumptions
Stakeholders
- Reality: Professor, myself, potential employers
- Pretend: CTO, Users, customers, warehouse, help desk I.T., programmer
Timelines
- 6-week course
- Deliverable weekly
Product Backlog(PBL)
- The program will be a menu driven console program.
* The program must use procedural programming only, no classes.
- Employee accounts can be made.
- Products that can be made: Music Player, Movie Player
- Allow a user to Add a new product and to specify how many items of that product should be created. The program will then create these items and store them in a collection.
- The collection can be displayed at any time.
- New Products can be added at any time.
- Production statistics can be displayed – Total items produced, number of each item, the number of unique products created etc.
Sprints
Sprint 1 Backlog(SBL)
- Output a greeting and menu in main. |Completed|
Sprint 2 Backlog(SBL)
Sprint 2 Backlog (SBL) - Conditions, Loops, Functions, Files intro.
- Only accept values that are listed in the menu |Completed|
- If the user selects a different value, they are asked to choose again |Completed|
- Menu is printed from a showMenu function |Completed|
- Menu choices result in calls to functions |Completed|
- After output of menu choice, show menu again |Completed|
- Add new products that are able to be produced:
- Manufacturer, Name, and ItemType
- The user should be prompted to enter the Manufacturer, like Apple. Tip: while testing, you can comment out the line that reads in the user's response and just assign to the variable. |Completed|
- The user should be prompted to enter the Name, like iPod. Tip: while testing, you can comment out the line that reads in the user's response and just assign to the variable. |Completed|
- The user should be given a menu choice for ItemType: Audio ("MM"), Visual ("VI"), AudioMobile ("AM"), or VisualMobile ("VM"). |Completed|
- Optional: save products that can be produced to a text file named catalog.txt |Completed|
- Track production of products |Completed|
- Be able to track production for at least one product. |Completed|
- Optional: Display the catalog to show the user available products. |Completed|
- The record for the produced product should include the Manufacturer, Name, ItemType, ProductionNumber, and SerialNumber |Completed|
- ProductionNumber should be unique, sequential for all products, and automatically assigned.|Completed|
- The SerialNumber should start with the first three letters of the Manufacturer, then the two letter ItemType code, then five digits (with leading 0s if necessary) that are unique and sequential for the item type. The entire Serial Number should be automatically assigned. |Completed|
- Save records of production to a text file named production.txt in a format like Production Number: 1 Serial Number: AppAM00001
- Create a repl in repl.it demonstrating saving to a file and include a link to the repl in your README. LINK: https://repl.it/@DaltonSenseman/Saveing-to-a-file |Completed|
- Optional: Music Players store AudioSpecification (the file format, like wav or mp3) and MediaType (what stores the audio file like CD, DVD, Blu-Ray), both input by the user. |Completed|
- Optional: Movie Players store MonitorType, which is a Screen. |Completed| 1.Screen stores: resolution, refresh rate, response time. |Mostly Completed|
Sprint 3 - Arrays and Vectors, Searching and Sorting
- Store the products that are able to be produced in a collection. |Completed|
- When tracking production of products, the user should be prompted to enter the product to be produced from the collection of products that are able to be produced. |Completed|
- The record of products produced should be stored in a collection. |Completed|
- Output the products that can be produced sorted by name. |Completed|
- Given a Serial Number, output the Production Number |Completed|
Sprint 4 - Pointers, Characters, Strings, Recursion
- Create an Employee account.
- Allow user to input full name in format FirstName LastName. |Completed|
- Generate user id, which is their first initial and surname in all lowercase |Completed|
- Allow user to input a password for the user |Completed|
- The password must contain at least one digit, at least one lowercase letter, and at least one uppercase letter. The password cannot contain a space or any other symbols. |Completed|
- Use a recursive function to encrypt the password. |Completed|
- Optional: Require users to log in. Track which employee recorded production. |inprogress|


ifopt
is my own Command Line Interface options parser with some
other feature.
During a project where I developed a simple script, I need to add some
option to change the behavior. I use NodeJS options and parse them
as like PHP perform.
So, finaly I created ifopt
to reuse it event if cli lib already
exist.
ifopt
npm install ifopt
:package.json
file, or add it as dependency.ifopt
objectifopt
installed, load it as following :const opt = require('ifopt');
ifopt
mains functionnalitiesIn the world of Command Line Interface options, there is two kind of options :
-
).--
).I created a third kind of option : the implicits ones. All elements put behind the command are an option.
For instance, in this command find text -v --output=file.txt
,
text
is also an option as -v
and --output
are.
implicits option are identified with their position, without
taking account of short & long option :
find text -v --output=file.txt
find -v text --output=file.txt
find -v --output=file.txt text
Herebefore, text
is always the first implicit option.
ifopt
only parse options.
Using returned option is in your hand.
You can decide to use implicit, sort and long option for
the same information (Eg: input file)
.
An option CAN HAVE (::
), MUST HAVE (:
) or NOT ()
a value.
It's possible to set the expected behavior regarding the option.
ifopt
will warn the user when the option not fullfill the requirement.
ifopt
offers differents ways to set and get NodeJS options.
The simpliest way is to get options is parse them directly
using your options configuration :
const opt = require('ifopt');
// Declaration of option which will be manage by ifopt :
const myOptions = {
shortopt: "hd:o::",
longopt: [
"help", // short is h (NOT HAVE a value)
"dir:" , // short is d (MUST HAVE a value)
"output::" // short is o (CAN HAVE a value)
]
}
let parsedOption = opt.getopt(
myOptions.shortopt,
myOptions.longopt
);
The following execution with this command
will return for parsedOption
:
myCommand -d=test -o --unwantedoption
{
d: { arg: '-d=test', opt: 'd', val: 'test' },
o: { arg: '-o', opt: 'o', val: null }
}
You can separately configure ifopt
:
const opt = require('ifopt');
// Set Short Options
opt.setShortOpt("hd:o::");
// Set Long Options
opt.setLongOpt([
"help", // short is h (NOT HAVE a value)
"dir:" , // short is d (MUST HAVE a value)
"output::" // short is o (CAN HAVE a value)
]);
let parsedOption = opt.getopt();
Which will produce the same result :
{
d: { arg: '-d=test', opt: 'd', val: 'test' },
o: { arg: '-o', opt: 'o', val: null }
}
Another way is to use setOpts
:
const opt = require('ifopt');
// Set Short Options
opt.setOpts(
// Short Ones
"hd:o::",
// Long Ones
[
"help", // short is h (NOT HAVE a value)
"dir:" , // short is d (MUST HAVE a value)
"output::" // short is o (CAN HAVE a value)
]
);
let parsedOption = opt.getopt();
Please find below how to handle implicits options for the following command :
myCommand myInputFile --dir=test myOutputFile
const opt = require('ifopt');
// Declaration of option which will be manage by ifopt :
const myOptions = {
shortopt: "hd:o::i:",
longopt: [
"help", // short is h (NOT HAVE a value)
"dir:" , // short is d (MUST HAVE a value)
"input:" , // short is d (MUST HAVE a value)
"output::" // short is o (CAN HAVE a value)
]
}
let implicitsHandler = {
implicitOneForInput : null,
implicitTwoForOutput: null
}
// Parse command line arguments
let parsedOption = opt.getopt(
myOptions.shortopt, // Short Options
myOptions.longopt, // Long Options
['implicitOneForInput', 'implicitTwoForOutput'], // Implicits Order for Handler
implicitsHandler // Implicits Handler to get Data by Ref
);
// Result of command : myCommand myInputFile --dir=test myOutputFile
console.log(parsedOption);
console.log(implicitsHandler);
will return :
{ dir: { arg: '--dir=test', opt: 'dir', val: 'test' } }
{
implicitOneForInput: 'myInputFile',
implicitTwoForOutput: 'myOutputFile'
}
So you can also pass implicit order and handler
for method setOpts
:
let implicitsHandler = {
implicitOneForInput : null,
implicitTwoForOutput: null
}
opt.setOpts(
// Short Ones
"hd:o::",
// Long Ones
[
"help", // short is h (NOT HAVE a value)
"dir:" , // short is d (MUST HAVE a value)
"output::" // short is o (CAN HAVE a value)
],
// Implicits Orders
['implicitOneForInput', 'implicitTwoForOutput'],
// Implicits Handler
implicitsHandler
);
You can also set implicits separately :
let implicitsHandler = {
implicitOneForInput : null,
implicitTwoForOutput: null
}
// Set Implicits
opt.setImplicitOpt(
['implicitOneForInput', 'implicitTwoForOutput'],
implicitsHandler
)
isOption()
)Once you have parsed arguments from your command line, you have to developped your logique and your function to perform processing.
Sometime, you want to check if an option have been correctly passed.
Instead of checking in parsedOptions
get
from getopt
, you can directly use
method isOption()
which can check one
or more options at once.
Done like this, you are checking for
one option which can be provided
in long or short version :
if (opt.isOption(['dir','d'])) {
console.log("Directory is provided")
} else {
console.log("Directory is NOT provided")
}
If you want to combine availability of two or more options you can change the operator :
if (opt.isOption(['d','i'], 'and')
) {
console.log("Directory AND input are provided")
} else {
console.log("Directory OR input NOT provided")
}
getOptValue()
)Once again, to prevent you to get value
in parsedOptions
, you can
use method getOptValue
:
let directory = opt.getOptValue(['dir', 'd']);
The herebefore statement will return the value of the first option found. It's very usefull to get value independantly of the short and long option. Done like this, longs options have the priority over shorts ones.
For command :
myCommand -d=test --dir=test2
directory
will be equal to test2
(--dir=test2
)
getOptsValues()
)This version will return an array of values for provided options :
let files = opt.getOptsValues(['input', 'i']);
For command :
myCommand -i=file_1 --input=file_2 -i=file_3
files
is equal to [ 'file_2', 'file_1', 'file_3' ]
log()
)ifopt
provides a method to send message in
STDOUT
nammed log()
.
By default, this command will generate a message like this in the console using colors :
[ <level> ] : <message>
Below, the argument of method log
:
const log = opt.log;
// Considering provided option "i" was equal to "<yourFile>"
log("File %s not found", 1, [opt.getOptValue("i")]);
The herebefore statement will log the message :
[ ERROR ] : File <yourFile> not found
When you redirect you output to file, you do not want control char in your log file.
So, to prevent specials char, you can easily disable colors.
Simply call method noColor()
to turn
off color in method log()
.
opt.noColor();
// Or like this
opt.useColor(false);
To turn on the color :
opt.useColor();
// Or
opt.useColor(true);
getColors()
)getColor()
)setColors()
)setColor()
)


Chapter 1 Introduction: Measurement, Central Tendency, Dispersion, Validity, Reliability
1.1 Seminar
In this seminar session, we introduce working with R. We illustrate some basic functionality and help you familiarise yourself with the look and feel of RStudio. Measures of central tendency and dispersion are easy to calculate in R. We focus on introducing the logic of R first and then describe how central tendency and dispersion are calculated in the end of the seminar.
1.1.1 Getting Started
Install R and RStudio on your computer by downloading them from the following sources:
- Download R from The Comprehensive R Archive Network (CRAN)
- Download RStudio from RStudio.com
1.1.2 RStudio
Let’s get acquainted with R. When you start RStudio for the first time, you’ll see three panes:
1.1.3 Console
The Console in RStudio is the simplest way to interact with R. You can type some code at the Console and when you press ENTER, R will run that code. Depending on what you type, you may see some output in the Console or if you make a mistake, you may get a warning or an error message.
Let’s familiarize ourselves with the console by using R as a simple calculator:
2 + 4
[1] 6
Now that we know how to use the +
sign for addition, let’s try some other mathematical operations such as subtraction (-
), multiplication (*
), and division (/
).
10 - 4
[1] 6
5 * 3
[1] 15
7 / 2
[1] 3.5
| You can use the cursor or arrow keys on your keyboard to edit your code at the console: - Use the UP and DOWN keys to re-run something without typing it again - Use the LEFT and RIGHT keys to edit |
Take a few minutes to play around at the console and try different things out. Don’t worry if you make a mistake, you can’t break anything easily!
1.1.4 Functions
Functions are a set of instructions that carry out a specific task. Functions often require some input and generate some output. For example, instead of using the +
operator for addition, we can use the sum
function to add two or more numbers.
sum(1, 4, 10)
[1] 15
In the example above, 1, 4, 10
are the inputs and 15 is the output. A function always requires the use of parenthesis or round brackets ()
. Inputs to the function are called arguments and go inside the brackets. The output of a function is displayed on the screen but we can also have the option of saving the result of the output. More on this later.
1.1.5 Getting Help
Another useful function in R is help
which we can use to display online documentation. For example, if we wanted to know how to use the sum
function, we could type help(sum)
and look at the online documentation.
help(sum)
The question mark ?
can also be used as a shortcut to access online help.
?sum
Use the toolbar button shown in the picture above to expand and display the help in a new window.
Help pages for functions in R follow a consistent layout generally include these sections:
| Description | A brief description of the function |
| Usage | The complete syntax or grammar including all arguments (inputs) |
| Arguments | Explanation of each argument |
| Details | Any relevant details about the function and its arguments |
| Value | The output value of the function |
| Examples | Example of how to use the function |
1.1.6 The Assignment Operator
Now we know how to provide inputs to a function using parenthesis or round brackets ()
, but what about the output of a function?
We use the assignment operator <-
for creating or updating objects. If we wanted to save the result of adding sum(1, 4, 10)
, we would do the following:
myresult <- sum(1, 4, 10)
The line above creates a new object called myresult
in our environment and saves the result of the sum(1, 4, 10)
in it. To see what’s in myresult
, just type it at the console:
myresult
[1] 15
Take a look at the Environment pane in RStudio and you’ll see myresult
there.
To delete all objects from the environment, you can use the broom button as shown in the picture above.
We called our object myresult
but we can call it anything as long as we follow a few simple rules. Object names can contain upper or lower case letters (A-Z
, a-z
), numbers (0-9
), underscores (_
) or a dot (.
) but all object names must start with a letter. Choose names that are descriptive and easy to type.
| Good Object Names | Bad Object Names |
|---|---|
| result | a |
| myresult | x1 |
| my.result | this.name.is.just.too.long |
| my_result | |
| data1 |
1.1.7 Sequences
We often need to create sequences when manipulating data. For instance, you might want to perform an operation on the first 10 rows of a dataset so we need a way to select the range we’re interested in.
There are two ways to create a sequence. Let’s try to create a sequence of numbers from 1 to 10 using the two methods:
- Using the colon
:
operator. If you’re familiar with spreadsheets then you might’ve already used:
to select cells, for exampleA1:A20
. In R, you can use the:
to create a sequence in a similar fashion:
1:10
[1] 1 2 3 4 5 6 7 8 9 10
- Using the
seq
function we get the exact same result:
seq(from = 1, to = 10)
[1] 1 2 3 4 5 6 7 8 9 10
The seq
function has a number of options which control how the sequence is generated. For example to create a sequence from 0 to 100 in increments of 5
, we can use the optional by
argument. Notice how we wrote by = 5
as the third argument. It is a common practice to specify the name of argument when the argument is optional. The arguments from
and to
are not optional, se we can write seq(0, 100, by = 5)
instead of seq(from = 0, to = 100, by = 5)
. Both, are valid ways of achieving the same outcome. You can code whichever way you like. We recommend to write code such that you make it easy for your future self and others to read and understand the code.
seq(from = 0, to = 100, by = 5)
[1] 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80
[18] 85 90 95 100
Another common use of the seq
function is to create a sequence of a specific length. Here, we create a sequence from 0 to 100 with length 9, i.e., the result is a vector with 9 elements.
seq(from = 0, to = 100, length.out = 9)
[1] 0.0 12.5 25.0 37.5 50.0 62.5 75.0 87.5 100.0
Now it’s your turn:
- Create a sequence of odd numbers between 0 and 100 and save it in an object called
odd_numbers
odd_numbers <- seq(1, 100, 2)
- Next, display
odd_numbers
on the console to verify that you did it correctly
odd_numbers
[1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
[24] 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91
[47] 93 95 97 99
What do the numbers in square brackets
[ ]
mean? Look at the number of values displayed in each line to find out the answer.- Use the
length
function to find out how many values are in the objectodd_numbers
.- HINT: Try
help(length)
and look at the examples section at the end of the help screen.
- HINT: Try
length(odd_numbers)
[1] 50
1.1.8 Scripts
The Console is great for simple tasks but if you’re working on a project you would mostly likely want to save your work in some sort of a document or a file. Scripts in R are just plain text files that contain R code. You can edit a script just like you would edit a file in any word processing or note-taking application.
Create a new script using the menu or the toolbar button as shown below.
Once you’ve created a script, it is generally a good idea to give it a meaningful name and save it immediately. For our first session save your script as seminar1.R
| Familiarize yourself with the script window in RStudio, and especially the two buttons labeled Run and Source |
There are a few different ways to run your code from a script.
| One line at a time | Place the cursor on the line you want to run and hit CTRL-ENTER or use the Run button |
| Multiple lines | Select the lines you want to run and hit CTRL-ENTER or use the Run button |
| Entire script | Use the Source button |
1.1.9 Central Tendency
The appropriate measure of central tendency depends on the level of measurement of the variable. To recap:
| Level of measurement | Appropriate measure of central tendency |
|---|---|
| Continuous | arithmetic mean (or average) |
| Ordered | median (or the central observation) |
| Nominal | mode (the most frequent value) |
<IP_ADDRESS> Mean
We calculate the average grade on our eleven homework assignments in statistics 1. We create our vector of 11 (fake) grades first using the c()
function, where c
stands for collect or concatenate.
hw.grades <- c(80, 90, 85, 71, 69, 85, 83, 88, 99, 81, 92)
We now take the sum of the grades.
sum.hw.grades <- sum(hw.grades)
We also take the number of grades
number.hw.grades <- length(hw.grades)
The mean is the sum of grades over the number of grades.
sum.hw.grades / number.hw.grades
[1] 83.90909
R provides us with an even easier way to do the same with a function called mean()
.
mean(hw.grades)
[1] 83.90909
<IP_ADDRESS> Median
The median is the appropriate measure of central tendency for ordinal variables. Ordinal means that there is a rank ordering but not equally spaced intervals between values of the variable. Education is a common example. In education, more education is better. But the difference between primary school and secondary school is not the same as the difference between secondary school and an undergraduate degree.
Let’s generate a fake example with 100 people. We use numbers to code different levels of education.
| Code | Meaning | Frequency in our data |
| 0 | no education | 1 |
| 1 | primary school | 5 |
| 2 | secondary school | 55 |
| 3 | undergraduate degree | 20 |
| 4 | postgraduate degree | 10 |
| 5 | doctorate | 9 |
We introduce a new function to create a vector. The function rep()
, replicates elements of a vector. Its arguments are the item x
to be replicated and the number of times
to replicate. Below, we create the variable education with the frequency of education level indicated above. Note that the arguments x
and times
do not have to be written out.
edu <- c( rep(x=0, times=1), rep(x=1, times=5), rep(x=2, times=55),
rep(x=3, times=20), rep(4,10), rep(5,9) )
The median level of education is the level where 50 percent of the observations have a lower or equal level of education and 50 percent have a higher or equal level of education. That means that the median splits the data in half.
We use the median()
function for finding the median.
median(edu)
[1] 2
The median level of education is secondary school.
<IP_ADDRESS> Mode
The mode is the appropriate measure of central tendency if the level of measurement is nominal. Nominal means that there is no ordering implicit in the values that a variable takes on. We create data from 1000 (fake) voters in the United Kingdom who each express their preference on remaining in or leaving the European Union. The options are leave or stay. Leaving is not greater than staying and vice versa (even though we all order the two options normatively).
| Code | Meaning | Frequency in our data |
| 0 | leave | 509 |
| 1 | stay | 491 |
stay <- c(rep(0, 509), rep(1, 491))
The mode is the most common value in the data. There is no mode function in R. The most straightforward way to determine the mode is to use the table()
function. It returns a frequency table. We can easily see the mode in the table. As your coding skills increase, you will see other ways of recovering the mode from a vector.
table(stay)
stay
0 1
509 491
The mode is leaving the EU because the number of ‘leavers’ (0) is greater than the number of ‘remainers’ (1).
1.1.10 Dispersion
The appropriate measure of dispersion depends on the level of measurement of the variable we wish to describe.
| Level of measurement | Appropriate measure of dispersion |
|---|---|
| Continuous | variance and/or standard deviation |
| Ordered | range or interquartile range |
| Nominal | proportion in each category |
<IP_ADDRESS> Variance and standard deviation
Both the variance and the standard deviation tell by how much an average realisation of a variable differs from the mean of that variable. Let’s assume that our variable is income in the UK. Let’s assume that its mean is 35 000 per year. We also assume that the average deviation from 35 000 is 5 000. If we ask 100 people in the UK at random about their income, we get 100 different answers. If we average the differences betweeen the 100 answers and 35 000, we would get 5 000. Suppose that the average income in France is also 35 000 per year but the average deviation is 10 000 instead. This would imply that income is more equally distributed in the UK than in France.
Dispersion is important to describe data as this example illustrates. Although, mean income in our hypothetical example is the same in France and the UK, the distribution is tighter in the UK. The figure below illustrates our example:
The variance gives us an idea about the variability of data. The formula for the variance in the population is \[ \frac{\sum_{i=1}^n(x_i - \mu_x)^2}{n}\]
The formula for the variance in a sample adjusts for sampling variability, i.e., uncertainty about how well our sample reflects the population by subtracting 1 in the denominator. Subtracting 1 will have next to no effect if n is large but the effect increases the smaller n. The smaller n, the larger the sample variance. The intuition is, that in smaller samples, we are less certain that our sample reflects the population. We, therefore, adjust variability of the data upwards. The formula is
\[ \frac{\sum_{i=1}^n(x_i - \bar{x})^2}{n-1}\]
Notice the different notation for the mean in the two formulas. We write \(\mu_x\) for the mean of x in the population and \(\bar{x}\) for the mean of x in the sample. Notation is, however, unfortunately not always consistent.
Take a minute to think your way through the formula. There are 4 setps: (1), In the numerator, we subtract the mean of x from some realisation of x. (2), We square the deviations from the mean because we want positive numbers only. (3) We sum the squared deviations. (4) We divide the sum by \((n-1)\). Below we show this for the homework example. In the last row, we add a 5th step. We take the square root in order to return to the orginial units of the homework grades.
| Obs | Var | Dev. from mean | Squared dev. from mean |
|---|---|---|---|
| i | grade | \(x_i-\bar{x}\) | \((x_i-\bar{x})^2\) |
| 1 | 80 | -3.9090909 | 15.2809917 |
| 2 | 90 | 6.0909091 | 37.0991736 |
| 3 | 85 | 1.0909091 | 1.1900826 |
| 4 | 71 | -12.9090909 |<PHONE_NUMBER> |
| 5 | 69 | -14.9090909 |<PHONE_NUMBER> |
| 6 | 85 | 1.0909091 | 1.1900826 |
| 7 | 83 | -0.9090909 | 0.8264463 |
| 8 | 88 | 4.0909091 | 16.7355372 |
| 9 | 99 | 15.0909091 |<PHONE_NUMBER> |
| 10 | 81 | -2.9090909 | 8.4628099 |
| 11 | 92 | 8.0909091 | 65.4628099 |
| \(\sum_{i=1}^n\) |<PHONE_NUMBER> | ||
| \(\div n-1\) | 76.2909091 | ||
| \(\sqrt{}\) | 8.7344667 |
Our first grade (80) is below the mean (83.9090909). The sum is, thus, negative. Our second grade (90) is above the mean, so that the sum is positive. Both are deviations from the mean (think of them as distances). Our sum shall reflect the total sum of distances and distances must be positive. Hence, we square the distances from the mean. Having done this for all eleven observations, we sum the squared distances. Dividing by 10 (with the sample adjustment), gives us the average squared deviation. This is the variance. The units of the variance—squared deviations—are somewhat awkward. We return to this in a moment.
We take the variance in R by using the var()
function. By default var()
takes the sample variance.
var(hw.grades)
[1] 76.29091
The average squared difference form our mean grade is 76.2909091. But what does that mean? We would like to get rid of the square in our units. That’s what the standard deviation does. The standard deviation is the square root over the variance.
\[ \sqrt{\frac{\sum_{i=1}^n(x_i - \bar{x})^2}{n-1}}\]
We get the average deviation from our mean grade (83.9090909) with the sd()
function.
sd(hw.grades)
[1] 8.734467
The standard deviation is much more intuitive than the variance because its units are the same as the units of the variable we are interested in. “Why teach us about this awful variance then”, you ask. Mathematically, we have to compute the variance before getting the standard deviation. We recommend that you use the standard deviation to describe the variability of your continuous data.
Note: We used the sample variance and sample standard deviation formulas. If the eleven assignments represent the population, we would use the population variance formula. Whether the 11 cases represent a sample or the population depends on what we want to know. If we want learn about all students’ assignments or future assignments, the 11 cases are a sample.
<IP_ADDRESS> Range and interquartile range
The proper measure of dispersion of an ordinal variable is the range or the interquartile range. The interquartile range is usually the preferred measure because the range is strongly affected by outlying cases.
Let’s take the range first. We get back to our education example. In R, we use the range()
function to compute the range.
range(edu)
[1] 0 5
Our data ranges from no education all the way to those with a doctorate. However, no education is not a common value. Only one person in our sample did not have any education. The interquartile range is the range from the 25th to the 75th percentiles, i.e., it contains the central 50 percent of the distribution.
The 25th percentile is the value of education that 25 percent or fewer people have (when we order education from lowest to highest). We use the quantile()
function in R to get percentiles. The function takes two arguments: x
is the data vector and probs
is the percentile.
quantile(edu, 0.25) # 25th percentile
25%
2
quantile(edu, 0.75) # 75th percentile
75%
3
Therefore, the interquartile range is from 2, secondary school to 3, undergraduate degree.
<IP_ADDRESS> Proportion in each category
To describe the distribution of our nominal variable, support for remaining in the European Union, we use the proportions in each category.
Recall, that we looked at the frequency table to determine the mode:
table(stay)
stay
0 1
509 491
To get the proportions in each category, we divide the values in the table, i.e., 509 and 491, by the sum of the table, i.e., 1000.
table(stay) / sum(table(stay))
stay
0 1
0.509 0.491
1.1.11 Exercises
- Create a script and call it assignment01. Save your script.
- Download this cheat-sheet and go over it. You won’t understand most of it right a away. But it will become a useful resource. Look at it often.
- Calculate the square root of 1369 using the
sqrt()
function. - Square the number 13 using the
^
operator. - What is the result of summing all numbers from 1 to 100?
We take a sample of yearly income in Berlin. The values that we got are: 19395, 22698, 40587, 25705, 26292, 42150, 29609, 12349, 18131, 20543, 37240, 28598, 29007, 26106, 19441, 42869, 29978, 5333, 32013, 20272, 14321, 22820, 14739, 17711, 18749.
- Create the variable
income
with the values form our Berlin sample in R. - Describe Berlin income using the appropriate measures of central tendency and dispersion.
- Compute the average deviation without using the
sd()
function.
Take a look at the Sunday Question (who would you vote for if the general election were next Sunday?) by following this link Sunday Question Germany. You should be able to translate the website into English by right clicking in your browser and clicking “Translate to English.”
- What is the level of measurement of the variable in the Sunday Question?
- Take the most recent poll and describe what you see in terms of central tendency and dispersion.
- Save your script, which should now include the answers to all the exercises.
- Source your script, i.e. run the entire script without error message. Clean your script if you get error messages.
1.2 Solutions
1.2.1 Exercise 3
Calculate the square root of 1369 using the sqrt()
function.
sqrt(1369)
[1] 37
1.2.2 Exercise 4
Square the number 13 using the ^
operator.
13^2
[1] 169
1.2.3 Exercise 5
What is the result of summing all numbers from 1 to 100?
# sequence of numbers from 1 to 100 in steps of 1
numbers_1_to_100 <- seq(from = 1, to = 100, by = 1)
# sum over the vector
result <- sum(numbers_1_to_100)
# print the result
result
[1] 5050
The result is 5050.
1.2.4 Exercise 6
Create the variable income with the values form our Berlin sample in R.
# create the income variable using the c() function
income <- c(
19395, 22698, 40587, 25705, 26292, 42150, 29609, 12349, 18131,
20543, 37240, 28598, 29007, 26106, 19441, 42869, 29978, 5333,
32013, 20272, 14321, 22820, 14739, 17711, 18749
)
1.2.5 Exercise 7
Describe Berlin income using the appropriate measures of central tendency and dispersion.
We use the mean for the central tendency of income. The variable is interval scaled and the mean is the appropriate measure of central tendency for interval scaled variables. Our income variable is also normally distributed. Income distributions in most countries are right skewed. Therefore, the central tendency of income is often described using the median.
When asked, e.g., in an exam, to describe the central tendency of an interval scaled variable, use the mean. You can also use the median if you tell us why.
# central tendency of income
mean(income)
[1] 24666.24
# dispersion
sd(income)
[1] 9467.383
Average income in our Berlin sample is 24666.24. The average difference from that value is 9467.38.
1.2.6 Exercise 8
Compute the average deviation without using the sd() function.
We do this in several steps. First, we compute the mean.
mean.income <- sum(income) / length(income)
# let's print the mean
mean.income
[1] 24666.24
Second, we take the differences between each individual realisation of income and the mean of income. The result must be a vector with the same amount of elements as the income vector.
# individual differences between each realisation of income and the mean of income
diffs.from.mean <- income - mean.income
# let's print the vector of differences
diffs.from.mean
[1] -5271.24 -1968.24 15920.76 1038.76 1625.76 17483.76 4942.76
[8] -12317.24 -6535.24 -4123.24 12573.76 3931.76 4340.76 1439.76
[15] -5225.24 18202.76 5311.76 -19333.24 7346.76 -4394.24 -10345.24
[22] -1846.24 -9927.24 -6955.24 -5917.24
You may be surprised that this works. After all, income is a vector with 25 elements and mean.income is a scalar (only one value). R treats all variables as vectors. It notices that mean.income is a shorter vector than income. The former has 1 element and the latter 25. The vector mean.income is recycled, so that it has the same length as income where each element is the same: the mean of income. If you did not understand this don’t worry. The important thing is that it works.
Our next step is to square the differences from the mean.
# square each element in the diffs.from.mean vector
squared.diffs.from.mean <- diffs.from.mean^2
# print the squared vecto
squared.diffs.from.mean
[1] 27785971 3873969 253470599 1079022 2643096 305681864 24430876
[8] 151714401 42709362 17001108 158099441 15458737 18842197 2072909
[15] 27303133 331340472 28214794 373774169 53974882 19309345 107023991
[22] 3408602 98550094 48375363 35013729
We squared each individual element in the vector. Therefore, our new variable squared.diffs.from.mean still has 25 elements.
Squaring a value does two things. First, all values in our vector have become positive. Second, the marginal increase increases with distance, i.e., values that are close to the mean are only somewhat larger whereas values that are further from the mean become way larger. To see this, lets plot the square (we haven’t shown you the plot function yet, but we will do this next seminar).
# a vector of x values from negative 100 to positive 100
a <- seq(from = -100, to = 100, length.out = 200)
# the square of that vector
b <- a^2
# we plot the input vector a against b, where b is on the y-axis
plot(
x = a, # x-axis values
y = b, # y-axis values
bty = "n", # no border around plot
type = "l", # connect individual dots to a line
xlab = "input values from vector a", # x axis label
ylab = "b = a^2" # y axis label
)
In this plot, you should see that the slope of the line increases, the further we are from 0. We are taking individual differences from the mean. Hence, if a value is exactly at the mean, the difference is zero. The further, the value is from the mean (in any direction), the larger the output value.
We will sum over the individual elements in the next step. Hence, values that are further from the mean have a larger impact on the sum than values that are closer to the mean.
In the next step, we take the sum over our squared deviations from the mean
# sum over squared deviations vector
sum.of.squared.deviations <- sum(squared.diffs.from.mean)
# print the sum
sum.of.squared.deviations
[1]<PHONE_NUMBER>
By summing over all elements of a vector, we end up with a scalar. The sum is<PHONE_NUMBER>.56.
We divide the sum of squared deviations by \(n-1\). Recall, that \(n\) is the number of observations (elements in the vector) and \(-1\) is our sample adjustment.
# get the variance
var.income <- sum.of.squared.deviations / ( length(income) - 1 )
# print the variance
var.income
[1] 89631339
The squared average deviation from mean income is 89631338.61.
In the last step, we take the square root over the variance to return to our original units of income.
# get the standard deviation
sqrt(var.income)
[1] 9467.383
The average deviation from mean income in Berlin (24666.24) is 9467.38.
1.2.7 Exercise 9
What is the level of measurement of the variable in the Sunday Question?
The variable measures vote choice. The answers are categories, the parties, without any specific ordering. The level of measurement is called categorical or nominal.
1.2.8 Exercise 10
Take the most recent poll and describe what you see in terms of central tendency and dispersion.
The most recent poll was carried out by Infratest/dimap on Thursday, 6 September. The most common value, the mode, is the appropriate measure of central tendency. Christian Democrat (CDU/CSU) is the modal category. Dispersion of a categorical variable is the proportion in each category which we see displayed on the website:
| Party | Proportion |
|---|---|
| CDU/CSU | 0.29 |
| SPD | 0.18 |
| GREEN | 0.14 |
| FDP | 0.08 |
| THE LEFT | 0.10 |
| AFD | 0.16 |
| other | 0.05 |


@(stories: Seq[Story])(implicit request: RequestHeader)
@trail(content: Seq[model.Content], story: Story) = {
@content.map{
case trail @ (_: Article | _: Video) => {
@fragments.relativeDate(trail.webPublicationDate, trail.isLive, isFront=true)
}
}
}
@stories.zipWithRowInfo.map{ case (story, info) =>
@trail(story.contentByImportance.take(1), story)
}


Landing Page
Special Projects
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.
RILEY SCOTT
05.30.19
The past academic year was a busy year for The Post. Here are a couple of the biggest stories:
The Ohio University Police Department and the Athens Police Department received 13 reports of sexual assaults since Jan. 13. During the Fall Semester, there were 27 reports of sexual assault to OUPD and APD.
Ohio University had the third highest number of reported sexual assaults during the “red zone” period compared to other Ohio MAC universities, according to a previous Post report. The red zone, which is the first six weeks of the academic year, is when there are increased reports of sexual assault on university campuses, according to a Journal of American College Health Study. OUPD had nine reports of sexual assault during the red zone.
To bring attention to the issue of sexual assault, students held different events throughout the academic year.
HANNAH RUHOFF | FOR THE POST
Mallory Golski embraces another protestor during the It's On Us Bobcats rally against sexual abuse on Sept. 27, 2018 outside Cutler Hall.
 There were about 500 students at the rally.
The then-director of the LGBT Center, delfin bautista, was not renewed for their contract in January. bautista, who uses they/them pronouns and does not capitalize letters in their name, was put on administrative leave until June 30, according to a previous Post report.
After bautista was removed, about 60 students, faculty members and Athens residents gathered outside Cutler Hall. They protested, criticizing the university’s unexpected and hasty decision to remove bautista.
OU has selected an assistant director, but it will continue the search for a director in the fall.
Ohio University permanently expelled the Epsilon chapter of the Sigma Pi fraternity April 11 after an incident where a student was found unresponsive in an unofficial annex of the fraternity during the Fall Semester.
Collin Wiant, 18, of Dublin, a freshman and pledge of Sigma Pi Epsilon, was later pronounced dead at OhioHealth O’Bleness Hospital, according to a previous Post report.
.A university hearing board found the fraternity in violation of endangerment, brutality, coerced consumption, coerced activities, destruction or damage to property, selling or distributing alcoholic beverages, allowing underage students to drink alcohol, unlawful use or possession of other controlled substances, physical harm or threat to a person and reckless action that poses a harm to others.
Sigma Pi appealed the hearing board’s decision but was denied. The fraternity petitioned it to the Vice President, where Vice President of Student Affairs, Jason Pina, denied the appeal.
During the October 2018 Board of Trustees meeting, the members discussed the new OHIO Honors Program. The program, which is an alternative to the Honors Tutorial College, is open to freshman of all majors and about 47 students had been accepted for the Fall 2019 pilot, according to a previous Post report.
In the January Board of Trustees meeting, members approved a 3.5 percent tuition increase for the 2020 fiscal year. A main reason for the about $200 increase was •low enrollment, according to a previous Post report.
In the March meetings, members approved the demolition and repurposing of several university houses and buildings at the Ridges. The Ridges project will cost $2.6 million, and the projects for the university houses could be as much as $1.9 million, according to a previous Post report.
Over the course of last school year, there were many new directors and deans introduced into the university. Here are a few of them:
Donal Skinner was named the next dean of the Honors Tutorial College. He comes to OU from his position as dean of the Honors College at the University of Wyoming, according to a previous Post report..
Stephanie Williams was named the new director for Ohio University Press, which is the largest university press in Ohio. Her most recent position was director of marketing and sales at the University Press of Kentucky, according to a previous Post report.
Robin Oliver will serve as the vice president for University Communications and Marketing. Oliver was previously the chief marketing officer for Western Carolina University.
Mei Wei will serve as the new dean for the Russ College of Engineering and Technology. Wei’s former role was the assistant dean of Research and Graduate Education in the School of Engineering at the University of Connecticut, according to a previous Post report.
Neil Romansky will serve as the dean of University Libraries. Romansky previously worked as the associate chief librarian for Science Research and Information at University of Toronto Libraries.
During the November elections, incumbents retained their positions in Athens.
Athens County Commissioner Lenny Eliason, a Democrat, won his bid for re-election, receiving more than 65 percent of the vote. Eliason defeated his Republican opponent, Bill Hayes, according to a previous Post report.
The Athens County Auditor Jill Thompson, a Republican, and County Treasurer Ric Wasserman, a Democrat, were also re-elected.
BackLanding Page
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.


HTML Colors
HTML Color is a multitude of categories, definitions and concepts. HTML colors are specified using predefined color names, or RGB, HEX, HSL, RGBA, HSLA values. Primary, Secondary, and Tertiary Colors Color Wheels (RGB, CMY, RYB)
HTML Color is a multitude of categories, definitions and concepts. HTML colors are specified using predefined color names, or RGB, HEX, HSL, RGBA, HSLA values. Primary, Secondary, and Tertiary Colors Color Wheels (RGB, CMY, RYB)


@Singleton @Provides fun provideHttpLoggingInterceptor(): HttpLoggingInterceptor
Create a provider method binding for HttpLoggingInterceptor.
Return Instance of http interceptor.
See Also
Provides


Trust Union
Dashboard
My Tasks
Payslips
Appraisal
Settings
3
Eleojo Emmanuel
Account
Notifications
Contact
Privacy and Safety
Click to change your avatar
First Name
Last Name
Username
Password
Email address
Phone Number
Clear Details
Update


Here is a list of all documented class members with links to the class documentation for each member:
- o -
- Observable()
: game::Observable< TData >
- Observer()
: game::Observer< TData >
- OnCollision()
: game::DynamicEntity
, game::Entity
, game::Projectile
, game::StaticEntity
- OnEntityDestroyed()
: game::SceneGraphNode
- OnEntityTransformed()
: game::SceneGraphNode
- OnKeyPress()
: game::OnKeyPress
- OnParentTransformed()
: game::Entity
- OnProjectileCollision()
: game::Entity
- OnRender()
: game::AnimatedRenderStrategy
, game::DynamicEntity
, game::Effect
, game::InvisibleRenderStrategy
, game::KinematicEntity
, game::OverlayDisplay
, game::Projectile
, game::RenderStrategy
, game::SimpleSequenceRenderStrategy
, game::SingleSpriteRenderStrategy
, game::StateManager
, game::StateManagerBase
, game::StaticEntity
, game::TileLayer
, game::VisualObject
- OnTexturesLoaded()
: game::TileLayer
- OnTick()
: game::AudioController
, game::BoundedFollowCameraController
, game::CameraController
, game::DefaultCameraController
, game::Effect
, game::EventController
, game::GameObject
, game::OverlayDisplay
, game::Projectile
, game::SceneGraph
, game::StateManager
, game::StateManagerBase
- OnTickEnded()
: game::Entity
, game::GameObject
, game::KinematicEntity
- OnWorldCollision()
: game::DynamicEntity
, game::Entity
, game::StaticEntity
- OnZOrderChanged()
: game::StateManager
, game::StateManagerBase
- OverlayDisplay()
: game::OverlayDisplay


Since 2011, CURYJ has been building community relationships and mobilizing young leaders to organize and create in the movement to end mass incarceration and youth criminalization. CURYJ was born when our co-founders, who lived through the impacts of systemic violence and incarceration, set out to beautify their neighborhood, engage youth in the area and coordinate pro-bono legal defense for local defendants in the Fruitvale gang injunctions. As defendants and supporters of those targeted by the gang injunction, the five co-founders became powerful advocates at the state capitol and locally, speaking on issues impacting boys and men of color. Early in the journey, CURYJ formed coalitions and partnerships to repeal Prop 21, successfully ending gang injunctions in California and initiated the Aztlán Beautification Movement (ABM) to spread culture and healing art in the streets of Oakland. What had been created went far beyond defeating the gang injunctions, and CURYJ became a family, a safe place and a platform for building community. CURYJ has created opportunities and programming for youth to build their own futures and transform community through culturally rooted healing, relationship building and systems impacted youth-led activism.
Through our youth programs, life coaching, policy organizing and restorative retreats and trainings, we are building the world we believe in, where relationships matter and young people from all backgrounds are valued and supported in community.


A Timeline of My Life; Check Out My Blog at AndyZhang.me
Courses: CS 486: Introduction to Artificial Intelligence (UW) CS 490: Information Systems Management (UW) CS 492: The Social Implications of Computing (UW) BUS 400: Advanced Equity Analysis I (WLU) BUS 491: Business Policy II (WLU) BUS 493U: Financial Markets and Securities Trading (WLU)
Term Overview:
The term ended hecticly with the disruption of in-class courses caused by COVID-19. Despite this, the professors and the university pulled through, and I was able to finish the term online on a strong note. I did have time to sneak in a conference before the pandemic fully hit Canada; I attended the Canadian Undergraduate Conference on AI, where I listened to various talks and workshops, such as a keynote by Geoffrey Hinton.
Waterloo Courses: CS 341: Algorithms - I learned to appreciate effective algorithm design; I learned about different practical techniques such as greedy algorithm and dynamic programming, as well as more theoretical techniques, such as proving bounds of algorithms and hardness of problems. CS 348: Introduction to Database Management - I learned to design and manage effective databases with practical skills such as drawing E/R diagrams and writing queries with SQL. I also learned about database theory, such as BCNF proofs and relational algebra/calculus. My group's final project consisted of a CLI version of Pokémon, built with Java and embedded SQL. CS 350: Operating Systems - I learned about different parts of the OS, such as synchronization primitives, process system calls, and virtual memory. I learned about the theory and history behind many techniques in modern-day systems and the assignments consisted of implementing said techniques by building different parts of a simplified OS, OS/161.
Laurier Courses: BU 481: Business Policy I - I learned about higher-level business strategy formulation and frameworks, such as the Diamond-E and VRIO analysis; I wrote reports and participated in discussions of business strategy cases. BU 493V: Investment Strategies - I learned a great deal about different hedge fund investment strategies, from managed futures to merger arbitrage; I analyzed data and completed exercises in Python, such as backtesting trading strategies.
Laurier JDCC:
This year's JDCC competition was held in St. Catharine's at Brock University's Goodman School of Business; through the 4AM wakeups and the earth-shaking cheers and dances, it was certainly an exhilerating weekend. The Digital Strategy team placed third and the overall Laurier competitive case comp team won both Academic School of the Year and Overall School of the Year. Our hard work had paid off.
Laurier Courses: BU 480T: Case Competitions - This was the course associated with Laurier JDCC (please see below).
Extracurricular Courses: Deep Learning Specialization (deeplearning.ai) - I completed the five course specialization in deep learning. I learned about various aspects of deep learning, from how to effectively structure projects to hyperparameter tuning. I completed various projects in fields such as convolutional neural networks and sequence models, both with TensorFlow and Keras in Python.
Laurier JDCC:
I returned to Laurier's competitive case competition team, this time as a Digital Strategy Delegate to compete in cases with a MIS focus; I attended training sessions every weekend to crack cases and receive feedback from peers, industry mentors and professors; although it was brutal busing and ridesharing from Toronto to Waterloo and back every weekend, I gained a great deal of knowledge about emerging technologies, change management, and how to construct a more compeling narrative in presentations.
Elevate TechJam:
I had the opportunity to attend the Elevate Tech Festival and compete in the Elevate TechJam.
My team and I built Grow, a microfinancing app aimed at empowering communities through education. Although we did not place first, we did win tickets to see Michelle Obama live. I was surprised at how vibrant the Canadian tech ecosystem is and I had opportunities to meet with and learn from many successful founders.
McKinsey Challenge:
I had the honour of winning the Toronto McKinsey Challenge hosted by McKinsey & Co.
My team and I worked with McKinsey mentors develop a solution for a non-profit focused on the growth of the Canadian population. Our policy solution was focused on growing the Canadian tech ecosystem through partnering post-secondary schools with Canada-based tech companies, and supporting non-conventional sources of tech education such as coding bootcamps. It was very insightful to learn about McKinsey's famous problem-soling approach and I learned many new leadership techniques, such as how to break the ice when working with a new team and how to give better feedback and criticism as a team.
Co-op Term:
I had the opportunity to explore alternative assets while working as a Private Equity Analyst at Waratah Capital Advisors.
I worked as a part of a two-person investment team with a mandate to purchase RV resorts across Canada. I was very fortunate to have an amazing boss and mentor who was kind enough to share his decades of experience and expertise in making deals. I worked on all aspects of the M&A deal process, from constructing LBO and CCA tax schedule models, to preparing presentations, analysis, and forecasts for board and investment committee meetings. I also worked on ad hoc assignments, such as constructing a proprietary database of all RV resorts in Ontario and conducting due diligence assessments. I really enjoyed the versatility of the role as I had the opportunity to work on the operational side of the business, such as engaging with portfolio resort managers to establish budgets and processes. Through this term, I learned a great deal about operating a business and investing in real estate.
Term Overview:
I was extremely productive this term, having completed various courses on topics which I'm interested in. In particular, I became very bullish on the field of machine learning after learning about the technical details of the different algorithms, and recognizing how seemingly simple they are: just throw data at an algorithm and it calibrates itself. I believe that the incredible things which can be accomplished by such a simple concept is astounding, and we are only witnessing a small fraction of what is possible. In this term, I also took part in the Integrated Case Exercise (ICE), the 3rd-year Laurier case competition; my team and I went to the semi-finals by recommending a smart city strategy for the region of Kitchener-Waterloo.
Waterloo Courses: CS 240: Data Structures and Data Management - I learned about different data structures such as priority queues and self-balancing trees. I also learned about different algorithms, ranging from sorts and searches, to transformations for encryption and compression.
Extracurricular Courses: Machine Learning (Stanford University) - I learned about the different processes in ML, from datamining to checking whether the outcomes of the algorithms are valid. I learned about both supervised (SVMs, kernels, etc.) and unsupervised (clustering, dimensionality reduction, etc.) learning. I completed practical projects such as anti-spam filters and computer vision in MATLAB. Financial Engineering and Risk Management Part I (Columbia University) - I learned about how to use stochastic models to price derivatives in various asset classes, such as equities, fixed income, and mortgages. Financial Engineering and Risk Management Part II (Columbia University) - I learned about how to use stochastic models to solve portfolio optimization problems, and I also learned about the applications and limitations of different models.
Laurier Courses: BU 362: Building and Managing Products, Services and Brands - I learned to apply marketing concepts to real-world scenarios through numerous case studies. I participated in discussions and presentations surrounding the cases and formulated marketing strategies. BU 375: Operations Management - I learned about the different aspects of operational decision-making. I learned about the theory and models behind concepts such as resource and capacity planning, lean operations, and project management. BU 398: Organizational Behaviour II - I learned about management theory on an organizational level. I learned about different organizational structures and processes and I applied said concepts on case studies and simulations. BU 461X: Management Consulting Practicum - This was the course associated with the Laziridis Management Consulting Practicum (please see below).
Laziridis Management Consulting Practicum:
I was selected for a program where I had the opportunity to work as a pro bono management consultant on a real world mandate while being mentored by industry consultants. I learned many consulting skills, such as how to plan and execute a project and how to interact with clients. For my team's mandate, we created a framework for evaluating different autism service delivery models for a Toronto-based nonprofit organization. My team and I conducted interviews with therapists and researchers from around the world to gather qualitative and quantitative data, and we compiled the data into a report for our client.
Laurier Courses: BU 461U: Competitive Case Analysis & Presentation B - January was the actual JDCC competition at the Univerity of Guelph. My team finished in the semi-finals in our category while Laurier only came second. Despite this, I felt that overall it was still an amazing experience, being able to learn to be a more effective speaker and communicator and being able to compete with high-caliber teammates.
Co-op Term:
I had the amazing opportunity to work as a Research Analyst at Cambridge Global Asset Management.
I had excellent mentors who showed me the ropes of investing, from using Bloomberg and FactSet, to building three-statement models and interviewing company directors. I had a lot of freedom to conduct my own research and form my own conclusions about different companies. I also undertook projects such as using VBA to build data-visualization tools on portfolio metrics. My greatest takeaway from this work term, however, was not the financial/investing knowledge, but the Cambridge mentality, to be humble, to abhor complacency, and to be conscientious of one's own work and responsibilities. Overall I had an incredible time at Cambridge and although I learned a great deal about investing and research, I realize that I have yet to scratch the surface on all the knowledge about markets and equities; there is much to learn.
Term Overview:
I felt that I grew a great deal during this semester; I was able to allocate my time and energy more effectively and as a result, I was able to be more productive and more impactful, especially with extracurricular activities. I attended Queen's Finance Association Conference where I had the opportunity to attend workshops such as the Discounted Cash Flow Analysis run by the Marquee Group.
My team and I also finished as finalists for the Burgundy Asset Management Stock Pitch. During the term, I also completed several courses offered by BIWS, including Excellence with Excel 2.0 and Financial Modeling Fundamentals.
Waterloo Courses: CS 241: Foundations of Sequential Programs - I learned about how high-level languages interact with computer architecture; I learned about components such as assemblers, linkers and loaders, and parameter passing mechanisms. For the assignments, I made a compiler which translates a C-like language into MIPS. CS 251: Computer Organization and Design - I learned about both theoretical and practical concepts surrounding computer hardware, such as digital logic design, numerical computation at the logical level, and processor design.
Laurier Courses: BU 352: Introduction to Marketing Management - I learned about consumer and environmental analysis, marketing strategy, and different components of the marketing mix. I learned about frameworks such as the product life cycle and the AIDA model and applied said frameworks on cases. BU 354: Human Resources Management - I learned about the different functions of HR, such as staffing, training, and determining compensation. I practiced practical skills such as job analysis and I learned about both employer and employee rights. BU 393: Financial Management II - I learned about more long-term analysis of a company, such as the capital structure, cost of capital, and mergers and acquisitions. I also learned about finance theory, such as Modigliani–Miller propositions. BU 461U: Competitive Case Analysis & Presentation A - This was the course associated with Laurier JDCC (please see below).
JDCC Laurier:
I was selected to compete as a Parliamentary Debate delegate for Laurier's prestigious competitive case competition team.
I trained weekly with coaches who are professors and alumni. I learned a great deal about social and political issues and I had many opportunities to volunteer in the community, such as with the Laurier Food Bank food drive.
Double Degree Club:
I decided to be a mentor for first year double degree students.
I personally had an extremely difficult time adjusting and succeeding during my first year in university, so I thought it would be a great if my experiences and insights from my own (disastrous) first year can deliver value to others who are about to go into double degree. It was great hanging out and chatting with first-year students and helping them avoid some of the pitfalls which I experienced during my first year in university.
Students Offering Support:
I volunteered as an instructor for the EC 120 (Introduction to Microeconomics) course.
It was pretty interesting to be on the other side of the podium; I definitely sympathize much more with profs who have to talk for hours without break. Economics was always something that interested me so it was fun teaching it to first-year BBA and Economics students; I learned many tricks to be a better teacher, including finding relatable examples and connecting with students on a personal level by avoiding overly complex language. With a partner, I held 4 exam review sessions with over 600 students attending and raised over $12,000 towards charity.
Term Overview:
I was extremely busy this term with both my course load and my extracurriculars. The courses I took this term were very theoretical, but I learned a great number of concepts which reshaped my perspective on math and programming. I also found it very exciting and inspiring to work with my peers in student societies who are dedicated to helping others in their academic journeys.
Waterloo Courses: CO 250: Introduction to Optimization - I learned about many core concepts which allow the application of mathematical optimization models to real-world problems. I learned about linear programming and proofs on optimality and bounds. I also learned about different theorems, such as strong and weak duality, and KKT conditions. CS 245: Logic and Computation - I learned about theoretical CS concepts such as logic (both propositional and predicate) and proofs on program correctness and decidability. MATH 239: Introduction to Combinatorics - I learned how to count properly, with concepts such as generating series, strings, and trees. I also learned about graph theory, with problems on colourings, matchings, and connectivity
Laurier Courses: BU 231: Business Law - I learned about the legal frameworks behind businesses in Canada. I learned about the specific legislations which are relevant for businesses, such as contract and franchise laws. I also studied and analyzed court decisions to understand the practical applications of the laws. BU 247: Managerial Accounting - I learned about accounting from an internal stakeholder perspective, with an emphasis on business planning, decision-making, and performance evaluation. I learned concepts such as activity-based costing and flexible budgeting.
Quantify 2018:
My team placed second out of the 25 teams selected to compete in the Quantify Risk and Insurance Case Competition. The theme in the 2018 competition was how to mitigate climate change risk for insurance underwriters. Using risk models to analyze climate change data, my team came up with an elegant solution to implement an accelerated underwriting method in order to more accurately price insurance premiums based on climate change risk for specific regions.
Laurier Student Union Team Lead:
I was selected to be on the Clubs Governance Committee and lead the Special Events Funding Team for the 2018-2019 year.
With my team, I approved budgets from various clubs and societies who wanted funding for their events. I interviewed the organizers and audited their cost projections. I also participated in committee activities, such as the approval of new student clubs.
MathSoc VPF:
I was selected to be the Vice President of Finance for the Mathematics Society at the University of Waterloo, a student organization representing the over 7,000 students in the Mathematics Faculty.
I administered the Operating Fund, as well as the Capital Improvements Fund, totalling over $300,000. I sat on the board of the Math Coffee and Doughnuts, the faculty café, and administered the Math CnD bank account. I also drafted and approved various budgets and managed a team of a dozen Finance Directors to oversee the financial operations of the society. Finally, I participated in the Math Council, the executive decision-making body for Math students and I proposed policies which were enacted. I was very humbled to receive an honorarium for my services.
Waterloo Courses: STAT 231: Statistics (Online) - I learned about the theories behind statistical empirical experimentation, such as both numerical and graphical methods for summarizing data and checking for statistical model fit. I also learned to visualize data and perform analysis, such as Gaussian and linear regressions and Chi-squared tests, both by hand and with R.
Other Courses:
I completed the Bloomberg Market Concepts (BMC) certification, learning about different market concepts such as economic indicators while learning to use over 100 functions on the Bloomberg Terminal.
Co-op Term:
I worked as a Marketing Analyst Intern at Blackhawk Network, a company in the gift card and payments industries.
This job gave me exposure to various business functions; I handled a variety of duties, ranging from traditional marketing tasks such as forecasting promotional sales and working with graphic designers to create flyer ads, to operations tasks such as analyzing monthly merchandising reports and diagnosing why sales of certain product lines were stagnant in some markets. I was also responsible for many important projects, such as performing analysis on multi-million dollar promotions and presenting, as well as discussing, the findings with both the VP and the client. Finally, I undertook many ad hoc projects, such as automizing reports with VBA, performing analysis to optimize planograms, and representing Blackhawk at conferences and tradeshows such as the McKesson Showcase 360°. Overall, this work term was a very productive experience, as I was able to experience various aspects of the business world.
Term Overview:
During this term, I felt that I was much more comfortable with my class workload and I was able to dedicate time to hobbies such as learning about films by taking The Film Experience course offered by MIT OpenCourseWare. I also attended various career workshops as a part of my co-op program on topics such as résumé writing and proper business etiquette.
Waterloo Courses: CS 246: Object-Oriented Software Development - I learned about all aspects of software development, from writing Bash scripts and Makefiles to actually designing and writing code. I learned about useful tools, such as Git and UML. I also learned good practices, such as documenting and compartmentalizing code and using design patterns. For our final project, my team made a functional version of Tetris in C++, complete with a GUI and a bot which plays the best moves. STAT 230: Probability (Online) - I learned about foundational statistical concepts such as Bayes' Theorem and different distributions, such as binomial, multinomial, and Poisson. I also learned about different statistical functions. from different probability functions (joint, marginal, etc) to moment generating functions.
Laurier Courses: BU 127: Introduction to Financial Accounting - I learned about core financial reporting concepts such as the three major statements and the differences between different reporting standards. I also learned how to analyze a company's finances through different metrics and ratios. BU 283: Financial Management I - I learned about valuation concepts such as TVM mathematics, risk management concepts such as portfolio theory and credit analysis, and general financial analysis such as calculating and forecasting different metrics, such as FCF and stock option values. BU 288: Organizational Behaviour I - I learned about factors which affect individuals and groups, ranging from different psychological biases to different management theories and styles, such as the Goal-Path model. I participated in simulations and analyzed case studies to apply the concepts learned.
Laurier Courses: EC 250: Intermediate Macroeconomic Analysis for Management (Online) - I learned about the different determinants of business conditions, such as the impact of exchange rates, in order to make macroeconomic forecasts and evaluate government policies. I learned about different case studies, such as the Great Recession, and learned how different economic theories, such as the Keynesian consumption function, applies to each case.
First Internship:
My first internship was as a Corporate Banking Intern at China Merchants Bank.
My duties included handling different aspects of client-facing situations. From pitching new financial products to delivering tutorials on new systems, I had contacted over 1000 corporate clients, ranging from start-ups to multi-billion-dollar corporations. I had two main objectives for pursuing an internship in China: I wanted to improve my Mandarin and I wanted to acclimate myself to the Chinese business environment. My proficiency in Mandarin certainly improved through practice, such as creating pitch decks in both English and Mandarin, and I learned a great deal about how business is conducted in China, such as the emphasis on courtesy (礼) and personal connections. I believe that China will continue to play a larger role in the global economy, and this internship has given me crucial insights and skills to understand how this market works.
Term Overview:
My second semester at university was a trial and error process. I dedicated time to cultivating proper work ethics and discpline. I felt that I was much more deliberate in everything I did and as a result I had more time to engage in extracurriculars. I was invited to participate in the Undergraduate Mock Trials organized by CLAUSE, where I learned a great deal about legal trials, and my team broke through the prelims.
I also had time to participate in workshops, such as the Building a Financial Model of a Company offered by the Marquee Group.
Waterloo Courses: CS 136: Elementary Algorithm Design and Data Abstraction - I learned how to design and analyze algorithms with core CS concepts such as the Big-O notation and abstract data types. I learned how to manipulate different data structures such as trees, stacks, and queues. This course was taught in an imperative language (C). MATH 136: Linear Algebra I for Honours Mathematics - I learned about core lin alg concepts such as matrix algebra. I learned both proofs and computations on topics such as linear transformations and different spaces (vector spaces, real coordinate spaces, etc). MATH 138: Calculus II for Honours Mathematics - I learned many interesting techniques for integrating/deriving equations, such as Riemann integrals and improper integrals. I learned to do calculus proofs, such as on seperable differential equations and tests for series convergence.
SPCOM 223: Public Speaking - I took part in many workshops such as writing critiques of presentations and performing an improptu rant in public. I also learned to read academic writing, particularly in the philosophy and social sciences fields.
Laurier Courses: BU 121: Functional Areas of the Organization - I learned about different business functions such as marketing and operations. I applied what I learned on my group's New Venture idea (selling vibrating pillows) by developing and thinking through the different aspects of a business plan. I practiced business skills such as report writing, interviewing and surveying potential customers, and pitching to and negotiating with potential investors. EC 140: Introduction to Macroeconomics - I learned about the drivers behind national economies, with a focus on the determination of national income. I learned the theories and models behind important economic drivers for a country, such as unemployment, price stability, and government policies.
First Case Competition:
The first case competition I ever took part in was the annual XCelrate Laurier Case Competition. The case was about making the decision of opening/closing a running shoe business and a gym. Although my team and I only placed 3rd in the competition, it sparked my interest in case analysis and competitions.
Joined MathSoc:
I volunteered for the University of Waterloo's Mathematics Society, the organization governing students from the Math Faculty. My position was Events Director and I was in charge of organizing, and coordinating various events, such as the Valentine's Extravanganza and Mock Interviews/ Résumé Critiques. I marketed the events through Facebook and also hired volunteers to help run the events.
Term Overview:
I'd be lying if I said that my first semester at university was easy; I had a tough time finding a balance in my hectic university schedule running between two campuses and I had a proverbial "trial by fire" learning to code for the first time. Furthermore, having only gotten grades of 90+s in high school, getting grades in the 70s and 80s in university really took down my confidence. Despite this, I felt that I progressed much in this term, not only academically, in picking up programming, but also in terms of perspective. I learned to be humble, to have humility in both success and failure, and to not compare my personal progress with others'. I attended several debate club meetings and played some intramural basketball, but I mainly spent time alone in the gym or reading philosophy. Overall, it was clear that I needed to grow and adapt.
Waterloo Courses: CS 135: Designing Functional Programs - Having never written a single line of code before university, I learned a great deal about the fundamentals of programming. I learned about how to think logically and how to code, with an emphasis on recursive functions and edge-case testing. The course was taught in the beginner-friendly but commercially useless language of Dr. Racket. MATH 135: Algebra for Honours Mathematics - This was my first taste of "real math", having to actually think critically to solve the problems. I learned a great deal about the seemingly archaic language of mathematics as well as proof techniques such as contrapositive and induction. MATH 137: Calculus I for Honours Mathematics - Having taken IB math in high school, a substantial portion of this course was review for me. Despite this, I still learned a great deal about different problem solving techniques, such as Newton's method, as well as core calculus concepts, such as Taylor polynomials.
Laurier Courses: BU 111: Introduction to Management and Business Organization - I learned about core business concepts such as PEST and basic financial analysis. I applied the concepts on activites during weekly labs, as well as on the New Venture project, where groups come up with a novel venture idea (my group's idea was a vibrating pillow). EC 120: Introduction to Microeconomics - I learned about core concepts affecting the decision making of individual people and firms in a market economy, such as supply and demand, and opportunity cost. I also learned how government policies can affect individuals through analyzing different graphs and cost curves.
Started University:
I chose to attend the dual degree program with a Bachelor of Computer Science from the University of Waterloo and a Bachelor of Business Administration from Wilfrid Laurier University. I obtained the President's Gold Scholarship from Wilfrid Laurier University, for having an entrance average of 95+%.
TedxOgilvieRd:
I helped establish, coordinate and organize a TedxYouth conference.
I contacted and pitched to businesses for sponsorships and partnerships; I marketed the event through managing the Facebook page and coordinating the creation of creative content, such as promotional posters. I also helped out with the logistics of the event, including finding a suitable location and setting up the audio/video equipment on the day of the conference. The conference was a success, with over 100 paying attendees; the City of Ottawa (in particular the Ottawa Public Libray) even proposed a potential partnership should the event be run again in the future.
Graduated High School:
I completed the International Baccalaureate program (French Immersion) at Colonel By Secondary School (4.0 GPA).
IB Courses Taken:
- History (learned HL, took SL exam)
- English (learned HL, took HL exam)
- Mathematics (learned SL, took SL exam)
- Physics (learned HL, took SL exam)
- Chemistry (learned HL, took HL exam)
- French (learned HL, took HL exam)
- Theory of Knowledge
Certifications & Diplomas:
- Ontario Secondary School Diploma
- International Baccalaureate Diploma
- French Immersion Certificate
- Grade 12 Mandarin
Awards: - Honour Society (for maintaining 80+ average) - OCDSB Silver Medal (for maintaining 90+ average) - IB2 History Award (for achieving the highest grade in the IB2 History course)
Organized Classes for Seniors:
After observing the difficulties our grandparents experienced in their day-to-day activities when coming to visit us in Canada, my friend and I decided to start a course to teach Chinese seniors English. We partnered with the Ottawa Chinese Community Service Centre, which provided us with resources, such as a classroom and teaching supplies. My friend and I recruited two of our peers and, together, created lesson plans as well as lesson hand-outs. The lessons were a huge success and we started a second course, to teach Chinese Seniors how to use digital technology. The courses were featured in articles in local Chinese community newspapers and we made many meaningful connections with our elderly students.
Participated in Politics:
Growing up in Ottawa, it is inevitable to get involved in politics; in the summer of 2015, I volunteered for Andy Wang, a federal candidate from a major political party running for office. I canvassed over 200 houses and called over 400 constituents; I also helped with administrative duties, such as coordinating volunteers, and setting up computers. This experience gave me great insight into the Canadian political process and what it means to participate in politics.
Volunteered with Kiva:
I joined the Kiva chapter at my high school. Kiva is a microfinancing organization which loans funds to low-income entrepreneurs, usually in third-world countries.
The business model of Kiva really appealed to me as I found it more sustainable and more practical than traditional, donation-based, non-profit organizations. As an executive member of the club, I organized fundraisers, such as bake sales and intramural sports tournaments. I represented my high school's Kiva club at the Ottawa Carleton District School Board's first annual International Education Info-Fair.
Started Debating:
My debating journey started in the debate club of my high school. Debating has helped me boost my confidence speaking and overcome my fear of public speeches. I competed in both Canadian and British Parliamentary styles. Initially, I had trouble just filling up my speaking time, but eventually, after competing in tournaments and practicing rhetorical frameworks, I was selected by the Ontario Student Debating Union to compete in the Provincial Debate Championships for the Bilingual Debate category in my senior year of high school. I continued to participate in some debate tournaments in university, such as placing second both overall and individually at the Royal City Debate Tournament at the University of Guelph.
Started High School:
I was fortunate to be accepted to attend Colonel By Secondary School, at the time the only public International Baccalaureate high school in Ottawa.
The daily bus commute of 3+ hours was well worth it as I had an incredibly rewarding experience. Clubs and Activities: French Club (President; tutored fellow students in French, and organized French activities, such as French movie viewings and French board game sessions) Kiva (Executive Member; organized fundraisers, and loaned money to low-income entrepreneurs) Book Club (Senior Member; read books and participated in book discussions) Debate Club (Senior Member; participated in debate competitions, and mentored junior debaters) Colonel By Food Drive (Organizer; coordinated volunteers for the annual school food drive) Track and Field (Team Member; competed in Javelin, Discus and Shot-put)
Volunteered As Camp Counselor:
I obtained my Basic First Aid and CPR Certifications, and spent my summer volunteering as a Camp Counsellor for the City of Ottawa.
I organized activities for over 50 campers, and supervised campers on excursions. I have always enjoyed attending summer camps, so I wanted to give back to the wonderful community.
Completed Kumon:
Yes, I was that guy; I got the G by 5 Award and even received the engraved clock for finishing the Reading program.
Enlisted in the Royal Canadian Air Cadets:
In the Royal Cadets Air Cadets program, I obtained the rank of Sergeant within the 211 Ottawa Kiwanis Squadron.
I learned much about leadership and discipline, and I was placed in charge of a flight of junior cadets. I also participated in activities such as biathlon, and marching in the National Remembrance Day Ceremony.
First Math Contest:
My first math contest was the Grade 6 Math Kangaroo, for which I placed first in Ottawa, and second nationally.
I participated in a couple more math contests after the Kangaroo, such as the Gauss Mathematics Contest, where I placed first for my school. Although my interest in math contests tapered off after middle school, my passion for math remains.
First Job:
I am a strong believer of hard work; I got my first job at age 10, as a newspaper delivery personel for Metroland Media.
Although being a paperboy required very little skill (inserting flyers into the newspaper, and delivering the paper), and paid very little (around 10¢ per house), I am proud to say that I never missed a single delivery, rain (snow) or shine. This job has taught me the importance of responsibility, and the significance of money.
Joined Scouts Canada:
I joined the Cub Scouts, and later the Scouts program as a member of the 1st Nepean Troop. I learned to appreciate and cherish nature and being outdoors through partaking in activities such as hiking, canoeing, and camping. I have learned many valuable survival skills, and earned many badges along the way. I particularly enjoyed the community involvement aspect of the Scouts program, such as park clean-ups, and volunteering in senior homes.
Growing up I had many opportunities to stay active and try new sports. I learned many invaluable skills such as teamwork and perseverance. Here are some of the activities I partook in: Hockey (Left Wing; Nepean Minor Hockey Association) Soccer (Full Back; Nepean City Soccer Club & Ottawa South United Soccer Association) Alpine Ski Badminton (Doubles & Singles; Soong Badminton Academy) Swimming Taekwondo (Black Stripe; International Taekwondo Federation) Table Tennis (Singles; Trained under Geng Lijuan)
Picked Up the Violin:
Music is a lifelong passion of mine; I have a profound appreciation for all genres of music, ranging from classical to rock, from hip hop to folk. I especially relish in discovering new, niche, genres of music, such as Calypso music from Trinidad and Tobago (check it out!). I have also learned other instruments, such as the piano, the alto sax, and bongo drums.
My certifications include:
- Level 8 Royal Conservatory of Music (Violin)
- Advanced Rudiments (First Class Honours with Distinction)
Favourite composer: Niccolò Paganini
First Art Competition:
I used to compete in art competitions, such as the City of Shenzhen Children's Painting and Calligraphy Exhibition (深圳市少儿书画荟萃系列展), where I placed first in multiple categories. Check out one of my earliest pieces:
I have always had an immense appreciation for visual arts; from Caravaggio to Kusama, I believe that art serves both as a medium for expression and inspiration, and is as relevant as ever in our society.


Mish Mash
Home
My Channels
Logout
Welcome, {username}!
Your channels
SoftUni
Lesson Channel
10000 Following
Following
SoftUni
Lesson Channel
10000 Following
Following
Suggested
Markiplier
Game Channel
4500 Following
Follow
Details
Gary's Channel
Motivational Channel
2200 Following
Follow
Details
See Other
Markiplier
Game Channel
4500 Following
Follow
Details
Gary's Channel
Motivational Channel
2200 Following
Follow
Details
Markiplier
Game Channel
4500 Following
Follow
Details
Markiplier
Game Channel
4500 Following
Follow
Details
Markiplier
Game Channel
4500 Following
Follow
Details
Markiplier
Game Channel
4500 Following
Follow
Details


Find someone who can complete the sentence: "I can do XXX!", "I am a XXX geek!", "I love XXX!"
XXX
Mark the box that fits for that person (1 box per person you meet).


Predict future games based on the calculated scores.
{{ winner }} is going to win by a margin of {{ resultDiff }} .
There is going to be a draw between {{ teamA }} and {{ teamB }}.


As list administrator, your authorization is requested for the following mailing list posting: List<EMAIL_ADDRESS>From<EMAIL_ADDRESS>Subject: HELP PLEASE. Reason: Post by non-member to a members-only list At your convenience, visit: http://lists.si.UM/mailman/admindb/mead to approve or deny the request.
FROM MR.SESAY MASSAQUOE.  I AM MR.SESAY MASSAQUOE I AM MOVED TO WRITE YOU THIS LETTER ,THIS WAS IN CONFIDENCE CONSIDERING OUR PRESENT CIRCUMSTANCE AND SITUATION.  HOWEVER DUE TO THIS SITUATION I DECIDED TO CHANGE MOST OF MY BILLIONS OF DOLLARS DEPOSITED IN SWISS BANK AND OTHER COUNTRIES INTO OTHER FORMS OF MONEY CODED FOR SAFE PURPOSE BECAUSE THE NEW HEAD OF STATES AHMED TEJAN KABBA MADE ARRANGEMENTS WITH THE SWISS GOVERNMENT AND OTHER EUROPEAN COUNTRIES TO FREEZE ALL MY TREASURES DEPOSITED IN SOME EUROPEAN COUNTRIES,HENCE I AND MY WIFE ALONG WITH MY CHILDREN, DECIDED LAYING LOW IN A TEMPOERY POLITICAL ASYLUM CAMP HERE IN THE UNITED KINGDOM TO STUDY THE SITUATION TILL WHEN THINGS GETS BETTER,SINCE PRESIDENT TEJAN KABBA TAKING OVER GOVERNMENT AGAIN IN SIERRA-LEONE ONE OF MY CHATEAUX IN SOUTHERN FRANCE WAS CONFISCATED BY THE FRENCH GOVERNMENT,AND AS SUCH WE HAD TO CHANGE OUR IDENTITY SO THAT OUR INVESTMENT WILL NOT BE TRACED AND CONFISCATED. I HAVE DEPOSITED THE SUM OF THIRTY MILLION,FIVE HUNDRED THOUSAND UNITED STATES DOLLARS(US$30,500,000)WITH A SECURITY COMPANY FOR SAFEKEEPING. THE FUNDS ARE SECURITY CODED TO PREVENT THEM FROM KNOWING THE ACTUAL CONTENTS.  THE ACCOUNT REQUIRED FOR THIS PROJECT CAN EITHER BE PERSONAL,COMPANY OR AN OFFSHORE ACCOUNT THAT YOU HAVE TOTAL CONTROL OVER,YOUR AREA OF SPECIALISATION WILL NOT BE A HINDERANCE TO THE SUCCESSFUL EXECUTION OF THIS TRANSACTION. ACKOWLEDGE THIS MESSAGE,SO THAT I CAN INTRODUCE YOU TO MY FAMILY AS OUR FOREIGN TRUSTED PARTNER WHO SHALL TAKE CHARGE OF OUR INVESTMENT ABROAD WHERE WE NOW PLAN TO SETTLE. I WANT YOU TO ASSIST US IN INVESTING THIS MONEY,BUT I WILL NOT WANT OUR IDENTITY REVEALED.I WILL ALSO WANT TO BUY PROPERTIES AND STOCKS IN MULTI-NATIONAL COMPANIES AND TO ENGAGE IN OTHER SAFE AND NON SPECULATIVE INVESTMENTS. WE HAVE BEEN THROUGH A LOT OF HEALTH AND SPIRITUAL TURMOIL,HENCE WILL NEED YOUR UNDERSTANDING AND ASSISTANCE.    PLEASE REPLY TO MY PERSONAL EMAIL<EMAIL_ADDRESS>BEST REGARDS MR.SESAY MASSAQUOE.
If you reply to this message, keeping the Subject: header intact, Mailman will discard the held message. Do this if the message is spam. If you reply to this message and include an Approved: header with the list password in it, the message will be approved for posting to the list. The Approved: header can also appear in the first line of the body of the reply.