Alex Solutions Coding Challenge

You are currently studying to complete a software development certification provided by an online education provider. The certification requires the completion of twelve online course units, which may or may not specify pre-requisite course units. In order to register for a new course unit, you must have already completed all pre-requisite course units before registering for the new course.

You decide to write a program that, given a list of courses and their pre-requisites, produces a possible order in which you may complete as many of the provided course units as possible, adhering to the pre-requisite requirements.

Provided to you are the following:

  1. A comma-seperated file containing course titles and unique ids, "courses.csv".
  2. A comma-seperated file containing course pre-requisites, by id, "prerequisites.csv".
  3. This problem description, "readme.md".

Please provide us with the following:

  1. A brief (one or two page) document describing your thought process, how you arrived at the given solution and any challenges that you faced.
  2. A simple program in your preferred language, no more than approximately one-thousand lines of code, that can produce a solution to the problem. 
  3. A short test script that can be executed on any linux workstation to run your program with example input and parameters.
  4. The git repository, included with this problem, complete with your commit history.

We are primarily interested in your process, so any solution you can provide before the specified time and date will be sufficient. We also do not expect effort exceeding more than a few hours of your time, consider the length of your typical technical interview as a baseline.

We also ask that you please do not distribute or make public any of the content found within this coding challenge as it has been administered in confidence.

We encourage you to email us with any questions, comments and feedback that you might have.

Sincerely,

The Alex Solutions Product Team.