Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Exploring best practices in problem solving
Parallel partition phase for quick sort
A while ago I was wrapping my head around parallel merge sort. Since it requires additional O(n)...
Date: 03/04/2012
Load-balancing partitioner with work stealing, part two
In part one work stealing range was introduced that allows stealing of work items in contiguous...
Date: 08/10/2011
Load-balancing partitioner with work stealing, part one
Data parallelism is a computing parallelization technique where data can be separated into...
Date: 08/08/2011
Infernal dinner synchronization problem
Imagine group of hungry people with spoons sitting around pot of stew. Spoon’s handle long...
Date: 07/19/2011
Shared rooms synchronization problem
Recently I came across another interesting synchronization problem. Assume there are n rooms....
Date: 06/29/2011
Single Responsibility Principle – discovering violations
Single Responsibility Principle states: A class should have only one reason to change....
Date: 06/15/2011
Inject or locate dependencies?
Inversion of Control pattern allows to decouple components (consumers) from their dependencies and...
Date: 06/13/2011
Sleeping barber synchronization problem
Sleeping barber problem is a classic synchronization problem proposed by Dijkstra that goes as...
Date: 06/12/2011
Concurrent Object Pool
Object pool is a set of initialized objects that are kept ready to use, rather than allocated and...
Date: 05/01/2011
Concurrent set based on sorted singly linked list
Set is an abstract data structure that can store certain values, without any particular order, and...
Date: 04/06/2011
Merge binary search trees in place
Binary search tree is a fundamental data structure that is used for searching and sorting. It also...
Date: 03/27/2011
Merge sequences in parallel
In practice you may find yourself in a situation when you have several sequences of data that you...
Date: 02/25/2011
Longest consecutive elements sequence
A tiny detail that can be uncovered by looking at a problem on a different angle usually is the key...
Date: 02/12/2011
Parallel string matching
String matching is about searching for occurrence (first or all occurrences – it makes...
Date: 01/05/2011
Parallel graph search
Graph is a concept used to describe relationships between things where vertices (or nodes) represent...
Date: 12/26/2010
Joining Microsoft
Find a job you like and you add five days to every week. - H. Jackson Brown, Jr. I decided to join...
Date: 11/11/2010
Parallel merge sort
Divide and conquer algorithm solves the problem by: dividing problem into two or more smaller...
Date: 10/17/2010
Traverse binary tree in level order by spiral
Another puzzle is at stake, folks. This time it is binary tree related (not necessarily binary...
Date: 09/19/2010
External merge sort
If data to be sorted doesn’t fit into main memory external sorting is applicable. External...
Date: 08/24/2010
Print numbers by spiral
Recently I came across simple yet interesting coding problem. So here is the deal. You are given...
Date: 08/17/2010
Suffix array
Find all occurrences of a pattern (of length m) in a text (of length n) is quite commonly...
Date: 04/04/2010
Selecting k smallest or largest elements
There are cases when you need to select a number of best (according to some definition) elements out...
Date: 03/17/2010
K-way merge
The classic merge (the one used in Merge Sort) takes as input some sorted lists and at each step...
Date: 03/04/2010
Right-hand side Enumerable.Zip
With Reactive Extensions for .NET (Rx) and .NET Framework 4 a new LINQ operator was introduced...
Date: 02/22/2010
Binary heap based priority queue
Design of container that supports items ordering raises lots of interesting design questions to...
Date: 02/08/2010
Queue based on a single stack
Looking at things from different perspectives allows to understand them better. On the other hand...
Date: 01/17/2010
Disposing sequence of resources with Reactive Extensions
Recall my previous post on Disposing sequence of resources where we were solving imperatively the...
Date: 12/29/2009
Chaining responsibilities
The idea behind Chain of Responsibility pattern is quite simple and powerful: Avoid coupling the...
Date: 12/22/2009
Making callbacks more explicit
Recall my previous post Events and Callbacks vs. Explicit Calls that outlined pros and cons of both...
Date: 12/21/2009
Disposing sequence of resources
C# “using” statement has several advantages over its expanded equivalent: Shortcut is...
Date: 11/04/2009