Sunday, October 30, 2016

Book reading: Programming Challenges - The programming Contest Training Manual

Oct. 30, 2016

Plan to read the book - Programming Challenges - The programming Contest Training Manual
By Steven S. Skiena
      Miguel A. Revilla

http://www.programming-challenges.com/pg.php?page=index

Read first 2 hours, write down some notes to encourage good behavior - Algorithm book reading is a great way to relax, help to write great code and speed up everything - coding/ design/ maintenance.

http://www3.cs.stonybrook.edu/~skiena/

Book Reading: The Algorithm Design Manual

Oct. 30, 2016

1. Warm up the talk: 
It is a mix of feelings when Julia spent last Saturday to work on HackerRank walmartLabs codesprint. She bet on the hard algorithm and tried to try her luck, she ended up over 10+ hours scoring 0 on the algorithm. She experienced bad behavior to write a bad function when she was tired; and then, she disciplined herself to write a good function. She tried to reduce second loop to n/2000 (line 139), n/100 to guess the timeout (3 seconds) range - O(n) or O(nlogn). Tried to exhaust all the tricks to work better with unknown test cases on HackerRank.com.

She felt some disappointment after the contest, because of bad performance, her gambling behavior - bet on the hard algorithm. She turned the experience to very positive one - did some research what to work on next.

The algorithm design manual

http://www.algorist.com/

Please write down the time spent on the book.

2. Side track to the good/ bad function illustration:

A bad function:
https://www.hackerrank.com/contests/walmart-codesprint-algo/challenges/fibonacci-sum-1/submissions/code/7561665

Here is the gist.

189 -233 failed 3 sample test cases
at least 3 things are not good:
code smells? different abstraction level mixes in one function.

A good function:
17th submission:  pass sample test cases - 3 test cases
https://gist.github.com/jianminchen/4245cb1d9c4a7c625ffe1d96f7e88bb5

function line 190 -217 fiboSmart2


3. Back to book reading: 

Study Notes: 
http://www3.cs.stonybrook.edu/~algorith/

http://www.algorist.com/


Page 14 - 1/ Introduction to Algorithm Design

Hunting for counter-examples techniques:

Think small
Think exhaustively
Hunt for the weakness
Go for a tie
Seek extremes

Page 15 - mathematical induction vs  programming technique of recursion

A saying "a computer scientist is a mathematician who only knows how to prove things by induction."

Algorithms are recursive or incremental

Insertion sort explanation using induction proof - go over the page again.

Chapter 2 - Algorithm Analysis

2.3 Growth Rates and Dominance Relations

Julia works on hackerRank contest - 3 seconds - time limit

Need to find a public link about Growth rates of common functions measured in nanoseconds

Similar to page 38:

2.3.1 Dominance relations:  (Page 39, 51/739)

Constant functions
Logarithmic functions
Linear functions
Superlinear functions
Quadratic functions
Cubic functions
Exponential functions
Factorial functions

Chapter 10 

How to design algorithm?
Do I really understand the problem?  (page 357 - 358)

Julia's notes for iteration through quickly:
Q1: input
Q2: output
Q3: small example to solve by hand first
Q4: optimal solution/ settle for close to optimal solution?
Q5: ask about a scalability question? 10 item, 1000 items, 1 million items?
Q6: ask about time spent, 1 second, 1 minute, 1 hour
Q7: Time to invest in implementation ( 1 day or more freedom )
Q8: problem classification: numerical/ graph algorithm/ geometric/ string/ set

Extended study "Growth rates of common functions measured in nanoseconds" through Google search:
Google search:
keyword:
Growth rates of common functions measured in nanoseconds

Growth rate - which one has best presentation?
This is the best one! (Spent 10 minutes to read, and then, memorize something on the presentation)

https://www.cs.princeton.edu/courses/archive/spr10/cos226/lectures/02-14Analysis-2x2.pdf


Follow up

March 9, 2018

It is so much fun to read the blog again. Google search result is kind of random. I clicked the link and lead to the blog.

What I did is to make the blog better, created a gist for one of the submission mentioned in the blog, and then add the link.

HackerRank - WarmartLabs Codesprint (Algorithms) - Interesting Fibonacci Sum (II)

Oct. 30, 2016

Work on segment tree idea to solve timeout issue. After the contest, Julia has more time to relax, and try different ideas to solve this hard algorithm on HackerRank.

Previous blog

Will come back to write C# code to try segment tree idea.

Read editorial notes.

Ashar Faudi - study a player - Topcoder SRM problem writer
Need to spend time to figure out this linear recurrence for programming contest .

https://www.linkedin.com/in/fushar

Study C# submissions:

1. C# submission

2. C# submission

Think about the strategies of HackerRank contests - should work on medium algorithm instead of hard one. Math part is not easy to figure out in less than 24 hours.

Spent 2+ hours to go over the submissions on this hard algorithm, get the data - who are those talents? What they are sharing? A special group with strong math or research abilities?

1. Competitive programmer talking about achievements.

2. People good at math - problem solving on the algorithm - a few of them are competitive programmers.

3. programming contest

4. Math Ph.D. graduate (better programmer compared to Julia)

https://www.hackerrank.com/hoek3000

5. Figure out something new in computer science master graduate study:

Advice for beginners

Oct. 30, 2016

Plan to work on this blog 2+ hours.

http://lbv-pc.blogspot.ca/p/advice-for-beginners.html

Recommended by the web page:
https://github.com/pin3da/Programming-contest


Book: The Algorithm Design Manual
http://www.algorist.com/



HackerRank - WarmartLabs Codesprint (Algorithms) - Interesting Fibonacci Sum

Oct. 30, 2016

Introduction


Julia changed the practice to attend the contest, she chose to take some risk; aim most difficult algorithm, last of 6 algorithm - Hard level. Total score is 100, she knew about Fibonacci algorithm very well, dynamic programming, memorization, bottom up; she also spent over 2 hours to read the problem statement, try to work on the mathematics part of the algorithm.

Until 4:00am, she gave up. She thought about last hour, if she can make this algorithm work, then, she can score 120, rank will be 120/ 2600; She could get into top 10%.

Problem Statement


Summary of practices


Worked on the algorithm from 11:am - 4:00am, near 15 hours, score 0 out of 100.

Submission 17 times. First work on memory issue, remove out-of-memory issue; and then, worked on timeout issue, could not get rid of range sum query O(n2) issue, n is O(n5).

1. First submission:
Fibonacci sum - first submission - line 183 - line 196 function fibo - array declaration on line 187 - 109 * 4 bytes = 4000MB.

If there is no memory limit, timeout issue, the algorithm will work. Cannot scale, timeout 2 issues.

2. 8th submission, out-of-memory, should be less than 512MB; but it is over 4GB for an array

3. 9th submission

4. 10th submission

5. 17th submission

Until last hour of 15 hours, Julia read discussion. "Segment Tree" may be the idea to avoid O(n2), range sum query classical problem.

Encouraging notes for Julia


Julia likes to celebrate her 15 hour effort to work on a hard algorithm problem on HackerRank; focus on the hard algorithm, therefore, she can figure out later what she should put her training next. 

Instead of working on medium/ advanced level algorithm, Julia likes to solve first hard algorithm first. This is the first time she did in 24 hours contest, push herself to the limit, try to solve one hard algorithm. She does not have time to read 3 medium algorithms problem statement in the codesprint. 

3 kinds of people, do not know what is happening, one is to make thing happen. Julia chose the last one. One day, She can solve hard problem on HackerRank contest. Make things happen. Fail fast, fail quick. Just do it.


Previous blogs about Fibonacci algorithm


I solved the algorithm called climbing stairs


Julia, remember the phrase: The hard makes it great! Enjoy the journey.

Tuesday, October 25, 2016

LinkedIn - the Week of Learning

Oct. 25, 2016

Plan to take some courses from Oct. 25 - Oct. 30, 2016.

https://www.linkedin.com/learning/me/skills

wechat public account:
1. http://chuansong.me/account/daiziguizhongren/old

2. What google looks for?
http://chuansong.me/n/1718041



Udacity - mobile web development

Oct. 25, 2016

Plan to take the course: Mobile web development on Udacity.

This will be the first course Julia takes on Udacity.

1. 10/25/2016  2 hours to watch the video

Study notes:
1. local storage vs session storage vs cookies
https://www.quora.com/What-is-the-difference-between-sessionstorage-localstorage-and-Cookies

2. Viewport - content - device-width, width, vmax, vmin, vh, vm,
articles:
https://webdesign.tutsplus.com/articles/7-css-units-you-might-not-know-about--cms-22573

http://caniuse.com/#feat=viewport-units


Editorial Notes:

How Julia found out the course to learn on Oct. 25, 2016?

1. Julia got the email from SegmentFault:

https://segmentfault.com/p/1210000007241346?utm_source=weekly&utm_medium=email&utm_campaign=email_weekly

She chose to read the article: how to get Google offer?

2. The experience of a Googler:
http://www.zhihu.com/question/24099873

And then, she read all the answers, and then, chose one of answers:
3.
https://www.google.com/about/careers/students/guide-to-technical-development.html

Chose one of courses she is most interested:
4. Udacity -> mobile web development
https://www.udacity.com/

Reading material:
1. http://www.w3schools.com/css/css_rwd_images.asp

2. W3.CSS tutorial
http://www.w3schools.com/w3css/default.asp

Nov. 1, 2016

Case study about Udacity nanodegree program:

1. http://blog.udacity.com/2015/03/student-spotlight-lei-zhu-aspiring-full-stack-developer.html?_ga=1.184431014.185090454.1477442789

2. http://blog.udacity.com/2015/06/how-udacity-student-kelly-landed-an-engineering-job-at-google.html?_ga=1.184015270.185090454.1477442789

Students - Guide to technical Development

Oct. 25, 2016

Students - Guide to Technical Development

Plan to work on this website at least 2 hours.

https://www.google.com/about/careers/students/guide-to-technical-development.html

Sunday, October 23, 2016

Mock interview experience summary in 2016

Oct. 23, 2016

Summary of mock interviews 


  From January to April 2016, Julia had 8 times experience to do mock interview, as an interviewer/ interviewee. Then, she stopped and moved on, she prefers to work on algorithm practice.

  Just after 6 months, she noticed that one of peers in the interviewer/ interviewee started to work for Apple, one of them started to work for VMWare; In other words, she has experience of interviewing senior people for Apple and VMWare now. One of them worked for Microsoft/ booking.com before, she had super performance and then Julia watched how she performed through the coding interview. Overall, the experience was so great at this moment. But, Julia has to work on the advice seriously since those interviewers are really talented people.

Mock interviews blogs


  Here are the blogs she documented her experience. So, she started to review the experience and see if she should continue to do some mock interviews, reexamine what she did.

First one

Second one

Third one

Fourth one


blog reading:

1. How to get google offer? An article on segmentFault.


2. The experience of a Googler


3. Google guide for technical development for students


4. Udacity -> mobile web development
https://www.udacity.com/


Google talk: the effective engineer

Oct. 23, 2016

Sunday night research:

Google talk:

http://www.theeffectiveengineer.com/blog/effective-engineer-talk-at-google

Book:
https://www.amazon.ca/Effective-Engineer-Engineering-Disproportionate-Meaningful/dp/0996128107/ref=sr_1_1?s=books&ie=UTF8&qid=1477279080&sr=1-1&keywords=the+effective+engineer

website:
http://www.theeffectiveengineer.com/blog/effective-engineer-talk-at-google

Blogs:
https://github.com/jianminchen/techlead

Learn Amazon culture through a guru's blog

Oct. 23, 2016

Spent more than 2 hours on this Sunday morning to read the blog of ex-amazon manager, and most of big impressions is to learn Amazon culture through those blogs:

1. Engineering culture:

http://coolshell.cn/articles/17497.html
(Notes about Amazon engineering culture:
1. After serious defects, write Correction of Errors document, ask 5 whys.
2. Annual survey: very detail.
)
Edmond Lau
http://www.slideshare.net/edmondlau/what-makes-a-great-engineering-culture
http://www.theeffectiveengineer.com/

Quora:
https://www.quora.com/What-makes-a-good-engineering-culture


2.
http://coolshell.cn/articles/9156.html

3. 程序算法与人生选择
http://coolshell.cn/articles/8790.html

4. 从Code Review 谈如何做技术
http://coolshell.cn/articles/11432.html


Also, Julia was encouraged by the author's code, detail see the blog:

http://juliachencoding.blogspot.ca/2016/08/leetcode-125-valid-palindrome-summary.html

from 10th practice: extract one more function after reviewing the code of the author.



Friday, October 21, 2016

The large-scale distributed denial of service attack (DDoS) - DDoS attack

Oct. 21, 2016

First thing in the morning at work, around 10:30am, check MP website news page, Julia noticed that social link twitter showing text content instead of icon, then, she found out twitter.com was down.
And then, she looked up internet and read the article:

10:30am
http://www.usatoday.com/story/tech/2016/10/21/cyber-attack-takes-down-east-coast-netflix-spotify-twitter/92507806/

http://www.wsj.com/articles/denial-of-service-web-attack-affects-amazon-twitter-others-1477056080

Follow up after the work, 9:00pm

http://www.usatoday.com/story/tech/2016/10/21/cyber-attack-takes-down-east-coast-netflix-spotify-twitter/92507806/

As a small business website designer/ architect/ developer/ coder / administrator, Julia likes to catch up skills to countermeasure the attacks, specially DDoS attack, SQL injection attack. She fixed the design issue in January 2015 to countermeasure SQL injection attacks, she learned the important lesson to countermeasure the attacks, and the important to put attacks and countermeasures in website design.

Counting special sub cubes - OpenBracket CodeSprint - HackerRank

Oct. 21, 2016

Problem statement:

https://www.hackerrank.com/contests/openbracket/challenges/counting-special-sub-cubes

Julia spent over 2 hours to read the problem statement and then had difficulty to make sense of the question on the second day of contest, but she could not understand the problem. Also, she spent over 30 minutes to go over all the discussion of the algorithm but did not find clue.

After the contest ends, Julia read the editorial notes. So, it is an ordinary dynamic programming algorithm.

So, plan to spend one hour to write some code.

Making Candies - OpenBracket CodeSprint - HackerRank

Oct. 21, 2016

 Spent over 2 hours to read the problem statement and thought about the idea to solve the solution, but Julia did not take time to write down any code for the algorithm from Oct. 15 to Oct. 16.

https://www.hackerrank.com/contests/openbracket/challenges/making-candies

Detail see the blog:

http://juliachencoding.blogspot.ca/2016/10/hackerrank-contest-pressure-and-how-to.html

After reviewing the editorial notes, on Oct. 17, just after the contest period (Oct. 15 - Oct. 16), Julia was big surprised that this algorithm is with difficult level: hard, required knowledge: binary search.

So, plan to spend one hour first to write down the code.

Thursday, October 20, 2016

Fraudulent Activity Notification - OpenBracket Code Sprint - HackerRank

Oct. 20, 2016

Julia spent over 8+ hours to work on this algorithm, and finally, at the end of day, she knew that she had to read problem statement again and figured out a new idea. She found the solution and scored 40 of 40.

But, Julia likes to write down her journey, and reminds herself to be smart, be able to find optimal solution in first time.

Here is the problem statement:

https://www.hackerrank.com/contests/openbracket/challenges/fraudulent-activity-notifications

And then, her submissions:

1. First submission:
pass 2 test cases, 5 test cases - runtime error
https://gist.github.com/jianminchen/ed96f667ca20d4ce6e5da61315e17cd5

Over 3 hours work,
1. timeout issue - use binary search to replace linear search, and see if the timeout issue can be solved.
2. Add position/ remove position - try to implement O(1) insertion O(1) deletion algorithm
code has flaws, insert position (p1) / remove position (p2),
p1 >= p2 or p1 < p2.
3. Look into C# bulk copy, Array.Copy, not sure if Array.Copy can be O(1) instead of O(n), using bulk copy, look up stack overflow a few times.

2. Find bugs, and continue to write new code.

https://gist.github.com/jianminchen/3beb1b21d99a62eb607f9f3b40a61bee

add new function called binarySearchAdd

function customizedArrayCopy (line 181 - line 190) - try to fix bugs
discuss different cases - 90 lines of code, hard to write without a bug, and so many cases,
think about cyclomatic complexity, or execution path, how many execution path with this design.

Julia spent hours on this function customizedArrayCopy, and it is hard to spot error/ fix error
on this function.

(Oct. 26, 2016, customizedArrayCopy function - If two case (line 267 - line 288), else, there are
3 nested statement: if/else if/else (line 289 - line 342); so, in total, 5 cases, line 252 - line 346;
This function is breaking SRP - single responsibility principle. The function spanning almost 96 lines
of code, Julia has to take more than 6 hours to write/ debug/ reason. This is not the code for
HackerRank contest!)

..., continuously submitted 9 times, score 0.

9th submission:
https://gist.github.com/jianminchen/0b7fe2b10b324e710066128682992c74

10th submission:  score 40 out of 40, using bucket sort.
https://gist.github.com/jianminchen/5e85135f68bc9be02be7f7390647ae00

Timeline analysis:

7:45am             - start to read problem statement
9:00am - first submission, pass 2 test cases, but timeout on other 5 test cases,
       Binary search can improve time complexity from O(n) to O(logn)
Work on binary search algorithm

10:11am   reviewed binary search function code
10:24am   found bugs related to Add position vs Remove position
10:40am look up Java AddRange, C# bulk copy

...  (Julia likes to play with Array.Copy, and other things - logic thinking if/ else. But to be a competitive programmer, Julia has to learn to sharpen her thoughts, work on optimal solution instead.)

12:00 - 9:30pm - work on the coding, try to write bug-free code, mess with ideas using Array.Copy, naively thinking about bulk copy - Time Complexity O(1)

9:30pm - gave up all the solutions, read problem statement and find a new idea:
9:30pm - 10:07 write a bucket sort algorithm, without too much effort, succeed.

Time complexity:

O(N^2) -> O(NlogN) -> O(N), N is the number of days.

Previous work on distribution sort, bucket sort:

1. Leetcode 164: Maximum Gap - a Distribution sort (bucket, counting, radix) algorithm
http://juliachencoding.blogspot.ca/2015/06/leetcode-maximum-gap-no-164.html

2. Radix Sort - a distribution sort
http://juliachencoding.blogspot.ca/2016/05/radix-sort-distribution-sort.html

3. Leetcode 164: Maximum Gap - a Distribution sort (bucket, counting, radix) algorithm
http://juliachencoding.blogspot.ca/2015/06/leetcode-distribution-sort-algorithm.html

Encouraging ending notes:
Can you give out a summary for the practice?

Answer:
10th submission:  score 40 out of 40, using bucket sort.
https://gist.github.com/jianminchen/5e85135f68bc9be02be7f7390647ae00

line 141 and line 142:
int SIZE = 201; int[] dPriorDays = new int[SIZE]; Just use space to trade off time, reduce time complexity from two loops on n - number of days to one loop on n (2*10^5), and one loop on SIZE (201) which is also constant tim O(1). Basic facts:
n^2 will be around 4*10^10, it will be around 40 billion. The time complexity is shortened to 1 of 1000. Things to work on:
Spend 2 hours to read this mentoring business in IT business -
http://www.theeffectiveengineer.com/blog/secret-to-growing-software-engineering-career

http://www.theeffectiveengineer.com/blog/five-key-skills-of-successful-programmers


Tech events in 2016

Oct. 20, 2016

Introduction


Julia loves to attend tech events and meet people in the city of Vancouver and also in the city of Seattle in 2016. So far in 2016, she has attended more than 6 tech events. Two hosted by Microsoft, SQL server in Seattle (March 31, Microsoft Database Systems Engineering Open House), Vancouver Tech Woman in Vancouver (Sept.); Two hosted by Amazon (May 3, Amazon web service talk; June 23, RDS talk); One by Arista Network; One by Tableau, algorithm/ data structure interview workshop.

Seattle two day vacation - tech event trip

Such a beautiful season with tour of Seattle, so many good memories and good laughs with friends.

Microsoft:
In March of 2016, she took 2 days vacation and drove to the city of Seattle to attend Microsoft SQL server tech event, and visited her FAU classmates in Seattle.

And then, she visited the headquarter of Amazon, near union lake.

Tech events are fun
She had such great time to watch the video and learned a few things on Oct. 19, 2016

Grace Hopper Celebration of Women in Computing

https://www.facebook.com/gracehoppercelebration/



Entertainment episodes in tech event:

1. Episode 1

Personal coding blog is such an entertainment topic in tech event:

A senior principle programmer (A) and Julia's conversation:

A's Questions: Who can tell quicksort best performance or worst performance?

Julia:
I can tell, the worst of quicksort is linear. Because I just wrote a blog about quicksort.

A's question: where is the blog? Show me on my cellular phone?

Julia:

"Julia coding blog" search Google.com
"quick sort" search blog

2. Episode 2

A senior principle programmer (A) and Julia's conversation:

A's question: why do you write she instead of I?

Julia:
It is more close to reader, instead of I, I, I, too self-center; I choose to write as she likes; it is a style. More picky, close to reader instead using "I".

A's question: where is the code? Show me your code.

Julia:

...


2010 - 2015 five years


Julia attended more than 5 social events in the city of Vancouver (from 2010 to 2015) hosted by facebook. And almost every time, she asked around how to improve algorithm problem solving, being competitive on algorithm problem solving.

She learned a lot, but she wanted to be a competitive programmer.

After 5 years full time job as a software programmer, she knows how weak her thinking muscle on algorithm. So, she decided to change, journal her practice through her personal coding blog in the city of Vancouver.

2015 - Now


She decided to take some risk, and take algorithm problem solving as a highest priority in her life; she works on goals she has more control, like HackerRank contest performance improvement.

Writing is most challenging for her, so she started to write more through her coding blog, and also log her practice very honestly.

Best learning is by doing, not just reading other people's work; Best learning is also a sharing, willing to take some risk to make mistakes, share the pain, struggling to make a little progress every time, and get connected to more people, motivate others to work hard as well.

Share my favorite quote about practice - when to stop?

Tuesday, October 18, 2016

geometric plane sweep algorithms - a small research

Oct. 18, 2016

Plan to spend 2+ hour to work on the algorithm called:

https://web.stanford.edu/class/cs97si/09-computational-geometry.pdf

"For example, instead of presenting sorting algorithms and balanced search trees separately, I prefer to discuss applications that integrate them such as geometric plane sweep algorithms. I believe this problem oriented exposition is helpful for using the tools later on, as well as for moving towards open-ended exploration in an area."

Teaching statement from 
http://www.cc.gatech.edu/~rpeng/teachingstatement.pdf

10/20/2016
3:30am - 5:00am, (work with jet lag)
read 30 minutes about balanced search tree:
https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree

and then,  associated array
https://en.wikipedia.org/wiki/Associative_array


Union find tutorial

Oct. 18, 2016

Plan to spend 2+ hours to work on the union find tutorial.  

Union find
http://contest.cs.cmu.edu/295/tutorials/union-find.txt

Previous study on union-find algorithms:

1. http://juliachencoding.blogspot.ca/2016/07/union-find-algorithm-undirected-graph.html

2. http://juliachencoding.blogspot.ca/2016/07/hackerrank-world-codesprint-4-roads-in.html


or search "union find" through "search this blog" feature.


Min cost flow tutorial

Oct. 18, 2016

Plan to spend 2+ hours to work on this tutorial, write down C# code. Highlight some learning experience to encourage others. 

Min cost flow
http://contest.cs.cmu.edu/295/tutorials/min-cost-flow.txt

segment tree tutorial

Oct. 18, 2016


10 - 20 minutes to go over once, segment tree is Julia's favorite to learn.

http://contest.cs.cmu.edu/295/tutorials/seg_tree.cc

Actionable Item:

Julia, please write a C# version of code, add some test cases. Make this tutorial more helpful.

C# version:
https://gist.github.com/jianminchen/010f9ec15514f54e7cf3cca0549e22bb

Nov. 29, 2016

https://www.hackerearth.com/practice/notes/segment-tree-and-lazy-propagation/


Best algorithm professor - Best coaching for Julia's HackerRank contest

Oct. 18, 2016

Julia chose to study the algorithm - work hard on her performance on the contest. Here is the blog to share the detail of her experience:

http://juliachencoding.blogspot.ca/2016/10/hackerrank-openbracket-codesprint.html

So, she likes to focus on study - best professor on algorithm research:

http://www.cs.cmu.edu/~sleator/

Julia's favorite blogs:
1. http://www.cs.cmu.edu/afs/cs/academic/class/15451-s15/schedule.html


Topcoder's tutorial for competitive programming

Oct. 18, 2016

Plan to spend 10+ hours on this topcode's tutorial. 

The following blog shows how Julia chose to work on this tutorial. 
http://juliachencoding.blogspot.ca/2016/10/hackerrank-openbracket-codesprint.html

Competition programming courses:
http://contest.cs.cmu.edu/295/


There are a number of excellent tutorials on the algorithms and techniques needed to solve these kinds of contest programs on Topcoder's Data Science Tutorials web site.

https://www.topcoder.com/community/data-science/data-science-tutorials/

Write down some notes here to share with others.

Best professor, great competitor in algorithm

Oct. 18, 2016

Cannot believe that best talent people are the professors in top universities. I am doubting that IT industry could not provide the position for the talent.

Here is how Julia conducts her research "what to work on, what to read, and what to follow". She is leaving weekends for HackerRank contest, therefore, the life style change leads to her learning style change as well.

Detail see the blog:

The blog is how to work on the performance of competition. Focus on basics.

http://juliachencoding.blogspot.ca/2016/10/hackerrank-openbracket-codesprint.html

To warm up the topic, think about how Julia works hard and sacrifice her weekend to strength her ability to perform in the world wide contest on HackerRank (Just basically go over the profile and see who is sharing ...), she did over 4 hours (one hour after each contest at least) to try to find the best people to be her mentor over months, now she found one.

Julia works on the research how to learn, what to learn as a software programmer, over 6 years in the city of Vancouver. She just learn how other side of party, how to teach? Best talent people on algorithms choose to teach.

https://www.hackerrank.com/rpeng
OpenBracket CodeSprint  7/ 2450 participants
->
http://www.cc.gatech.edu/~rpeng/
->
http://www.cc.gatech.edu/~rpeng/teachingstatement.pdf

Julia's favorite new teaching approach:
"My teaching draws upon my research in data structures, algorithms, graph theory, optimization, statistics, geometry, numerical analysis, and parallel computing. Connecting these topics and enabling students to effectively utilize key ideas from them is one of my main teaching goals. These connections are often best motivated by key problems on the boundaries of these areas. Solving such problems usually requires adapting various tools from these areas, leading to a deeper understanding of both the tools and the problems. For example, instead of presenting sorting algorithms and balanced search trees separately, I prefer to discuss applications that integrate them such as geometric plane sweep algorithms. I believe this problem oriented exposition is helpful for using the tools later on, as well as for moving towards open-ended exploration in an area."

->
"I also seek opportunities to interact with students in a wider range of academic activities. Having participated in outreach activities such as math and programming camps while in high school, I regularly volunteered for them after graduating. Since 2006, I’ve been involved with the USA Computing Olympiad, whose annual online competitions attract around two thousand participants from high schools worldwide."

USA Computing Olympiad Team
http://usaco.org/index.php?page=staff

Sunday, October 16, 2016

Leetcode solutions following Java Code Style

Oct. 16, 2016

Plan to spend 2 hours to read the Java code styles:

1.
https://google.github.io/styleguide/javaguide.html

2.
https://github.com/douglasleer/LeetCode-Java-Solutions-Code-Sample

HackerRank contest pressure and countermeasures

Oct. 16, 2016

Just a quick summary, music, dance, sports, with the art to mix them by Adias commercial, Julia found her way to release the contest stress by watching the video:
Garbiñe Muguruza: Episode 3: Keeping Happy


Here are more details:

Julia spent Saturday on Oct. 16, 2016 to work on one algorithm, she finally made full score 40 of 40 after 10 hours struggle - keep scoring 0, until she could not believe that she won two bronze medal of HackerRank contest.

As a reminder, she always remembers that tennis sayings, every one knows how to play tennis, but mental is most important part.

She went back to read the problem statement of the algorithm, and noticed that she should take advantage of expeditures range 0, 200, and used bucket sort. She made it full score after 1 hour coding.

Here is the problem statement.


Second day, she felt pressure and tried to go back to work after she waked up, even it was 5:00am; but then, she decided to relax with some entertainment.

Here are the videos:

1. How to celebrate win?


2. Garbiñe Muguruza

Garbiñe Muguruza: Episode 1: On Court


Garbiñe Muguruza: Episode 2: Off Court


Garbiñe Muguruza: Episode 3: Keeping Happy


(tennis can be very demanding, but leaving everything behind, just having fun. )

4. #CreateYourMark: Hit the court with the stars of Roland Garros


5. Ana, Caroline, Andrea and Tomas Berdych Create Noise in Melbourne



Actionable items:

Julia scored the HackerRank contest Open Bracket 60 out of 250, worked on two algorithms first day of contest; she likes to push herself to full speed starting from 9:25am, score 2 more algorithms if possible.

Now, 10/16/2016, 9:25 am, she ranks 401/ 2001.

Play to win!


China Open, Tennis, Beijing - A big learning experience

Sept. 29 - Oct. 15 China vacation

Sept. 30 - Oct. 3, 2016

As a tennis sports amateur player, Julia spent 4 days to stay in Beijing, first 4 days of vacation, spent time with hundreds of others, 
enjoyed watching WTA, ATP players practice, double/ single matches. 

She learned by watching, she talked to other fans, and she sat and watched hours long matches.

It is a different experience, when she gets so close to tennis pros and observes how they prepare for matches.

For example, she observed how ex-world top 1 player Martina Hingis practiced close to 1 hour; Julia just could not believe that Martina Hingis was on the court and Julia was sitting next to court, although she watched her play through youtube.com a lot of times.  

China open is a big event of tennis, 5th biggest event; since Vancouver no longer hosts Holyburn tennis event, Julia has to travel to China and catch more events in Beijing, Shanghai.

Julia likes to have some tennis players as her role models, like Mirtina Hingis 

She will come back to document more on her experience through China open 2015. 

HackerRank - OpenBracket CodeSprint

Oct. 15, 2016

The Saturday and Sunday (Oct. 15 - Oct. 16) are reserved for HackerRank OpenBracket CodeSprint.

Came back from the vacation trip (Sept. 29, 2016 - Oct. 14, 2016) from China on Oct. 14, 2016, Julia spent 2 days to rest at home to overcome jet lag, and also she was busy with algorithm problem solving.



Read blogs:
Julia values the contest - as a training, and also she likes to check leaderboad, and see what she can learn from others. 

Leaderboard of OpenBracker CodeSprint: 

Here is the chain she worked on:

https://www.hackerrank.com/rpeng
OpenBracket CodeSprint  7/ 2450 participants
->
http://www.cc.gatech.edu/~rpeng/
->
http://www.cc.gatech.edu/~rpeng/teachingstatement.pdf

Julia's favorite new teaching approach:
"My teaching draws upon my research in data structures, algorithms, graph theory, optimization, statistics, geometry, numerical analysis, and parallel computing. Connecting these topics and enabling students to effectively utilize key ideas from them is one of my main teaching goals. These connections are often best motivated by key problems on the boundaries of these areas. Solving such problems usually requires adapting various tools from these areas, leading to a deeper understanding of both the tools and the problems. For example, instead of presenting sorting algorithms and balanced search trees separately, I prefer to discuss applications that integrate them such as geometric plane sweep algorithms. I believe this problem oriented exposition is helpful for using the tools later on, as well as for moving towards open-ended exploration in an area."

->
"I also seek opportunities to interact with students in a wider range of academic activities. Having participated in outreach activities such as math and programming camps while in high school, I regularly volunteered for them after graduating. Since 2006, I’ve been involved with the USA Computing Olympiad, whose annual online competitions attract around two thousand participants from high schools worldwide."

USA Computing Olympiad Team
http://usaco.org/index.php?page=staff

->
http://www.cc.gatech.edu/~rpeng/CV.pdf

"ACM-ICPC International Collegiate Programming Contest 2008 1 st at the 2007 East Central North American regionals, 9th at the 2008 ACM-ICPC World Finals."

Programming Competitions Occasionally volunteers as practice partner / punching bag for active contestants. User id rpeng on competitive programming websites, TopCoder rating 2509, Codeforces rating 2242.

-> That is a hunting game Julia likes to do:

http://www.cc.gatech.edu/~rpeng/CV.pdf
            |
          \  /

Plan to spend 10 hours to work on the course first. (10/18/2016)
http://www.andrew.cmu.edu/course/15-295-archive/f12/

-> Know one more judge a time - called: Timus Online Judge
http://acm.timus.ru/help.aspx?topic=judge

->
http://www.cs.cmu.edu/~sleator/

->
http://contest.cs.cmu.edu/295/f16/

10 - 20 minutes to go over once - (10/18/2016), segment tree is Julia's favorite to learn.

A.
http://contest.cs.cmu.edu/295/tutorials/seg_tree.cc

B. Min cost flow
http://contest.cs.cmu.edu/295/tutorials/min-cost-flow.txt

C. Union find
http://contest.cs.cmu.edu/295/tutorials/union-find.txt

To join the 15-295 codeforces group, first create your codeforces account. Then go to this 15-295 Codeforces Group page. On this page you should see a list of the contests created for this course.
http://codeforces.com/group/KIrM1Owd8u/contests

Competition programming courses:
http://contest.cs.cmu.edu/295/


There are a number of excellent tutorials on the algorithms and techniques needed to solve these kinds of contest programs on Topcoder's Data Science Tutorials web site.

https://www.topcoder.com/community/data-science/data-science-tutorials/

Saturday, October 15, 2016

ACM cheat sheet - 3 hours drill

Sept. 29 - Oct. 15 China vacation

Oct. 12, 2016

Julia spent 3 hours to read the ACM cheat sheet book on Oct. 12, 2016 while taking the train from the city of Yichun to Shanghai.

How to prepare ACM contest?

https://github.com/soulmachine/acm-cheat-sheet

What she did is to memorize catalog.

She enjoyed the reading very much. She will write down some notes here.




programmer competency matrix

Sept. 29 - Oct. 15 China vacation
Oct. 10, 2016

 Julia was on vacation and experienced the jet lag, waked up early in the morning around 3:30am; and then, she received a notification of linkedin connection she sent out in June 2016, and then, she went through the connection's linkedin profile, and the she started to read the article:

 http://sijinjoseph.com/programmer-competency-matrix/

 Julia noticed that she made 2 new linkedin connection through her vacation, one from Google.com, one from Amazon.com.

  Here are 2 new connections through Linkedin:

1. https://www.linkedin.com/in/tanbernard

Value the coaching I got from the Amazon talent through Amazon tech event in 2016, "It does not matter how old you are, it matters if you are very competitive on programming".

2. https://www.linkedin.com/in/minminhan

Actionable Items:

Write down 3 things in the matrix - need to work on

A small research - From HackerRank to weChat public account

Sept. 29 - Oct. 15 China vacation
Oct. 5, 2016

 Julia likes to spend time to get to know top talent people in software industry, for example, she just went through HackerRank leader board, and then, checked one by one if she has 1 or 2 hours. She found one, and then, the talent also has a public wechat account, with great influence in China.

 http://www.weidu8.net/author/mindwind_essay

Small research on wechat public account

Oct. 15, 2016
Sept. 29 - Oct. 15 China vacation

  Julia started to spend time to read blogs, from a public account of wechat ID: angelaTalk, a programmer, a computer science PH.D. of Rise university, Airbnb programmer.

 http://chuansong.me/n/538061341827

 https://www.linkedin.com/in/angelazhu1

Excellent blogs about code review, sillicon valley, performance review and her personal experience about family and career choices.

Born to be a warrior - Sharapova interview

Oct. 8, 2016

 Spent Sept. 29 - Oct. 15 on the vacation from Vancouver to Beijing, Yichun, and then Shanghai. Experienced a lot of things as a professional software programmer.

 Need to write down one by one. First one is about WTA grand slam champion Sharapove.

 Born to be a warrior - How Sharapova handles interview? About doping? About her determination to back to WTA tour?

 https://www.youtube.com/watch?v=rWaBVelzaFk

 https://www.youtube.com/watch?v=pyeAbGKx8JA

Sharapova Limbers Up | Australian Open 2015
https://www.youtube.com/watch?v=qv__59QPf-4

Spent one hour on Sunday morning - Oct. 23, 2016 - 11:00 am - 12:00am
Learn how good the talk is -
https://www.youtube.com/watch?v=x9dKia7kC8E