You are a graduate student in theoretical mathematics, dabbling every so often in some interesting but equally useless computer science theory. From the beginning of the year, Professor Carl Hayden had agreed to help you with some research in exchange for grading some papers.

Or so you tell everyone. The truth is, both of you are in on a scheme to overthrow the dictatorial government. Unfortunately, he'd left you an (uncoded) message on the grading key yesterday:

I'm going to have to leave for a while. Another professor in the department seems to like to do research a little too far out of their field. I'd like to let you in on my ruminations, but this margin is a bit too small for that. I'll keep you posted when I find something.

Your hunches were right - there was a spy somewhere.

True to the message, he wasn't anywhere to be found today, leaving you and some other grad students to teach. As you walked into the classroom, you find that his computer was still on - and with a Word document titled "Lesson plans" typed up with the following:

MATH 4173 (graph theory)
Problems 100, 105, 106, 107 (Algorithm book)

CS 6369 (cryptography)
Discuss key from last class
Page 67
Problems 97, 114, 108

CS 6944 (advanced programming languages)
Implement skipping whitespace between tokens                 
Page 71 
Problems 82, 112                
Page 104    
Problems 55, 70, 83                     

CS 4543 (programming languages I)               
Continue code from last class   
Purple book                      
Page 114    
Problems 69, 100                   
Page 160    
Problems 72, 101, 114                

Blue book               
Page 82 
Problems 73, 78, 103  

...which you found strange, because he has this terrible pet peeve of listing things like these in ascending order (or even by class number). And also because the only one of those classes he actually teaches is graph theory.

In another window, he has a webpage with all of the math professors' names:

T. Bayer
E. Thygesen
A. Lavrova
R. Fenton
M. Demers
T. Glockner
L. Dias
C. Hayden
N. Jonassen
L. Burnett
E. Duigan

You check the clock and decide that you still have some time before class starts. Unfortunately, the only book you have access to is the graph theory algorithms textbook. The section was a review (probably, the problems were so mixed up) and the chosen problems had the following graphs:

100:(full size at http://i.stack.imgur.com/QWK7Z.png)
enter image description here
enter image description here
106: enter image description here
107: enter image description here

After a few minutes of pondering and evidence-destroying, you know for certain who to be careful around as you organize your next attack.

Who is the spy?

(This is my first puzzle...any feedback is appreciated!)


You wonder if any clues under the "programming languages" classes might have something to do with esoteric programming languages; one of your closer fellow agents consistently complains about their being banned.

Hint 2:

Prof. Hayden also has a habit of abbreviating "redundant" things. Like some problem numbers - if you're doing 71, 74, 75, and 77, he'll refer to them during class as problems 1, 4, 5, and 7.

Hint 3:

OOC: TAGS!!! GOTTA HAVE SOME TAGS!!! And, again, the title actually is useful. Finally, since none of those are really hints, the "descriptions" before the problem listings actually help quite a bit with the solutions.

  • 1
    $\begingroup$ Welcome to the site greenapple656. This is an in-depth puzzle. I look forward to seeing the answer! $\endgroup$
    – Quiquȅ
    Mar 27 '16 at 16:13
  • 1
    $\begingroup$ In the second graph (105) the edges between A and H and between E and F are unweighted: is this intentional? $\endgroup$ Mar 28 '16 at 2:27
  • $\begingroup$ @2012rcampion Argh...nope, it wasn't; it's just freaking frustrating to make up graph theory problems. I uploaded a fixed graph. Thanks for pointing that out! ^^" $\endgroup$ Mar 28 '16 at 4:29
  • $\begingroup$ @Quiquȅ Thanks! I've prowled this site for a while, and sort of had a random strike of inspiration a few days ago. I'm glad to hear that this might actually be going somewhere :) $\endgroup$ Mar 28 '16 at 4:52
  • 1
    $\begingroup$ Welcome to the site, @greenapple656! I am really interested on knowing the answer! I tried my best, but all I could come by was that (maybe) the number of spaces may be a clue of the number of pages to skip... I am probably on the wrong way - I tried a few times, but I couldn't find any logical sentence/expression doing this... $\endgroup$
    – Mizu
    Apr 5 '16 at 3:38

Note: This answer follows 2012rcampion's answer and kanchigai's explanation.

Following on kanchigai's idea that

in GRph7FS, GRph7 might mean to take the 107 exercise from the graph theory book

Then we can

take the other two letters (FS) as start and ending points, the path between them being FEDPTS

Decoding that

using Vigenere with Carl as a key:

And that's the identity of our spy.

  • $\begingroup$ Yes!!! I've just accepted it, though not sure if there's a convention where you only accept fully-explained answers... $\endgroup$ Apr 8 '16 at 0:28
  • $\begingroup$ I think it's right to accept whoever got the answer even if they didn't fully explain it. You'd have to cobble together all 5 answers to explain everything. $\endgroup$
    – Tony Ruth
    Apr 8 '16 at 0:31
  • $\begingroup$ I don't think there is, but I can copy the other two answers (with attribution) here later. It's hard to type in a phone... $\endgroup$
    – ffao
    Apr 8 '16 at 0:32
  • $\begingroup$ @TonyRuth Ah. Thanks :) I guess we'll just have to make whoever's looking for answers read the entire page~ $\endgroup$ Apr 8 '16 at 1:29
  • $\begingroup$ @greenapple656 I've added links in order. $\endgroup$
    – cst1992
    Apr 8 '16 at 6:15

Translating the page and problem numbers from decimal to ASCII, we get:

MATH 4173 (graph theory)                     => "dijk"

CS 6369 (cryptography)                       => "Carl"
Discuss key from last class

CS 6944 (advanced programming languages)     => "GRph7FS"
Implement skipping whitespace between tokens

CS 4543 (programming languages I)            => "rEd HerRINg"
Continue code from last class

The first code phrase is likely to be a hint that we should use Dijkstra's algorithm on one or more of the graphs.

I also noticed that the last two classes have a variable number of spaces before the newlines. In order, they are:

  • 17, 1, 16, 4, 21
  • 15, 3, 22, 4, 19, 4, 16 and 15, 1, 2

Turning these directly into letters doesn't seem to work.

  • $\begingroup$ Awesome, you're halfway there! Just pointing out that one of the ASCII messages wasn't quite decoded correctly (though the correct version's rather enigmatic anyways.) Also, about the spaces...there's more to the title that meets the eye :) $\endgroup$ Mar 28 '16 at 4:46
  • $\begingroup$ Everything fits fine here... apart from that 160. $\endgroup$
    – cst1992
    Apr 7 '16 at 10:10
  • $\begingroup$ @cst1992 Thanks for pointing that out! I didn't realize it, but in my system's default character encoding (WindowsANSI) it's actually a non-breaking space. It copied out of the notebook as an ordinary space and I never noticed! $\endgroup$ Apr 7 '16 at 10:25

To add to previous answers

Using the Whitespace programming language on the extra spaces, I obtain, using an interpreter


  • $\begingroup$ "Exit" isn't part of the output, it's just something the interpreter adds. $\endgroup$
    – f''
    Apr 7 '16 at 16:29


Tony Ruth mentioned this point, so I just extend it with hint 3 -

  • Under Graph Theory, there is "dijk". Dijkstra's algorithm. Thus, we (probably) will use Graph Theory.
  • Under Programming Languages (both Advanced and Programming Languages I), we use a programming language.
  • Thus, under Cryptography, we should find something to use with Cryptography. Again, "Carl" can be a key...but again, it might be something that is encrypted.

"To each his own" means that everybody does that which is interesting or likable to him or her, so it makes sense with the title that every class provides clues using methods from the subject of the class.

But we learn that the lesson descriptions are also important -

  • Thus, I am fairly sure "Carl" is the key - because it says "key from last class". It also probably is the key to whatever we get from Graph Theory (by using Dijkstra's?). And from the output of the Whitespace computer program, it is probably a Vigenere key.
  • I am not sure what the "skipping whitespace between tokens" is, but it might be hint to the Whitespace programming language
  • "Continue code from last class" probably is a hint that the spaces are part of the same program of the spaces before, from the "previous" class (Advanced Programming Languages)

And I'm only guessing, but GRph7FS might be Graph Theory Problem 107 from Hint 2...I don't know what FS is though...

  • $\begingroup$ That's...wow, you've actually nailed a lot of it! (though it's not necessarily totally new information.) And @ffao - you are literally one step away from the answer. Maybe try looking at the list of professors, if you've tried to vigenère-decode it already? $\endgroup$ Apr 7 '16 at 23:06
  • $\begingroup$ I had decoded it wrong and it came out as garbage before... got it now $\endgroup$
    – ffao
    Apr 8 '16 at 0:07
  • $\begingroup$ And, for completeness, the last one is "Red Herring", which means it's nothing important and is just there as a filler. $\endgroup$
    – cst1992
    Apr 8 '16 at 6:23

All of the graphs have two sequences of letters in the alphabet with missing letters in between.

The first graph is missing the letters: NO

The second graph is missing: IJKLMNO WXYZ

The third is missing: GHIJKLMNO UVWXYZ

The fourth is missing: GHIJKLMNO XYZ

For some reason the sequences always start at A and P

I noticed in 2012rcampion's answer that the classes seem to be related to the decoded message he found. For instance dijk is under graph theory and this is a graph algorithm. Carl is under cryptography, so maybe it is a key? And what he got from the advanced programming languages class does not look like anything. Maybe the key CARL can decode it?

  • $\begingroup$ Sorry...not quite what I was looking for. You did get some important points, though. $\endgroup$ Mar 28 '16 at 4:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.