This is a list of 10 most prestigious and old programming contests and challenges which you can participate and win prizes. Most of them are annual competitions but few are continuous and you can enter at any time. You can use C, C++, Java or C# .NET or any other programming language in these contests.

This article is about a collection of common Computer Science algorithms which may be used in C projects. The C Programming Language has a much smaller Standard Library as compared to other more modern programming languages such as Java or Python. The library provides a basic set of mathematical functions, string manipulation, type conversions, and file and console-based I/O.

In order to find middle element of linked list in one pass, you need to maintain two pointers, one increment at each node while other increments after two nodes at a time. By having this arrangement, when first pointer reaches end, second pointer will point to middle element of linked list.

Stanford Engineering Everywhere (SEE) offers few computer science courses to students online and at no charge. Programming Abstractions course covers advanced programming topics such as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.

This is the implementation of Kruskal’s Algorithm in C Programming Language. This algorithm is directly based on the generic MST (Minimum Spanning Tree) algorithm. Kruskal’s algorithm is a greedy algorithm in graph theory that finds a minimum spanning tree for a connected weighted graph. It finds a subset of the edges that forms a tree that includes every vertex, where the total weight of all the edges in the tree is minimized.

Originally written in 1979 at Computer Laboratory, Cambridge (England), it was reprinted in 1997 in the book “Readings in Information Retrieval”. Initially it was written in BCPL language. Here is the list of implementations in other programming languages including C, Java and Pearl implementations done by author himself.

This is implementation of Bayer-Trees, which are normally used for indices of data bases. These routines provide all stuff that is needed to create and destroy; insert, update and delete; load and destroy; search and traverse; check a tree. Sort huge amounts of data by doing a multi-phase sorting on temporary files.

The SFL (Standard Function Library) is an open source portable function library for C/C++ programs. Written by iMatix, the SFL provides about 450 functions for compression, encryption, encoding, datatype conversion and formatting, dates, times, calendars, internet programming (MIME, CGI) and many more.

This is a slow but working Visual Basic implementation of the 256-bit Serpent algorithm. Serpent was a finalist for Advanced Encryption Standard (AES) and appears to be a very secure powerful algorithm. The Advanced Encryption Standard, or AES, is a symmetric block cipher chosen by the U.S. government for the encryption of classified electronic data and is implemented in software and hardware throughout the world to encrypt sensitive data.

Quicksort is a well-known sorting algorithm developed by C.A.R. Hoare: Quicksort. QuickSort is an efficient algorithm based on Divide and Conquer rule and is still a commonly used algorithm for sorting. It works by selecting a ‘pivot’ element from the array and partitioning the other elements into two sub-arrays and recursively sorting them.