How to number courses in an undergraduate Computer Science curriculum? I am looking to assign numbers to courses in an undergraduate Computer Science curriculum. Are there any formal guidelines?

The "3 vs. 4 numbers" debate has been institutionally settled - we are using 3. I know the convention of numbering the absolute beginner courses as 101.
And that the left-most number indicates the relative difficulty of the course. I would like the other 2 numbers to be meaningful as well.

At the moment, we have courses as follows:


100 level - 3 courses
200 level - 1 group of 3 courses and 2 groups of 2 courses each
300 level - 5 courses
400 level - 4 courses


For the higher level courses, the decision is somewhat easy as the courses belong to distinct areas (parallel computing, artificial intelligence etc.) and can be numbered accordingly. But the lower level courses intentionally span multiple areas and cannot be numbered so.

So, what guides or suggestions can I follow?
The general rules that I've seen (but have not been written down) typically work as follows:


Sequences of related courses should have, as much as possible, consecutive course numbers.
Courses that are prerequisites of other courses should have lower numbers than the courses that depend upon them.
Courses that are closely related to one another should have closely spaced numbers.
Within a century, introductory, general, and required courses should have lower numbers than the elective courses.


Since you have a three digit number to work with, you can use the middle digit to relate courses according to thematic areas (x0y and x1y numbers could correspond to basic or interdisciplinary subjects; x2y could be algorithms, and so on).