Published: 11 Jan 2010
By: Craig Stuntz

Most programming-related crossword puzzles are generated by computer programs, and consequently lack the design and wordplay which makes New York Times-style crossword puzzles interesting. I decided that I could do better.



This article contains "spoilers" for the puzzle. If you intend to solve the puzzle yourself then you should do that before reading the article. You can find the puzzle at the end of the article.

If you're a programmer who enjoys solving crossword puzzles, you may have seen, from time to time, puzzles in programming magazines. If so, you'll have noticed that they're usually not very good. There are a number of free software crossword puzzle generators, which can quickly and easily generate uninteresting puzzles. "Real" crossword puzzles require human intelligence to select an appropriate group of answers, write interesting clues, and build a grid which is appropriate to the puzzle.

Crossword puzzle style varies regionally; puzzles in the UK are significantly different from puzzles in the United States. I suspect that other countries have their own distinct style. In the US, the de facto standard for crossword puzzles is the New York Times. That newspaper has a number of rules for their puzzles. There are many constraints on the design of the grid, for example:

  • Daily puzzles, for example, are always 15*15 cells.
  • Words cannot be shorter than three letters.
  • All letters must be "checked"; this means that the letter must be part of both and across and a down answer.
  • The grid is nearly always symmetrical.
  • Black squares cannot be used to "wall off" one section of the grid from another.
  • There is a maximum word count which effectively limits the number of short words.

More importantly, however, the puzzles are expected to be "fresh," "lively," and fair to the solver. Constructors need to take care to not cross two very obscure words, to have a diverse mix of subject matter, and to have imaginative clues.


If you do a web search for crossword construction software, you will find a lot of results for free programs which produce bad crosswords. Because these programs don't have dictionaries or very much intelligence for how to create a good grid, they create asymmetrical crosswords using only the answers which the user provides. Therefore, most of the letters are unchecked (meaning that no word crosses them in the opposite direction). And of course these applications don't come with the knowledge of how to create a theme or interesting clues.

There are also a couple of commercial applications aimed at professional crossword constructors, who sometimes call themselves "cruciverbalists." However, buying one of these applications will not by itself allow you to create a professional-quality crossword puzzle; they require skill from the user, although they do help with some of the more mundane tasks. It is necessary to spend time solving puzzles, so that you understand the expectations of your audience. Also, your skill at solving puzzles is directly useful for creating them; in both cases you are attempting to find a way to fill in the grid.

How I created the puzzle

The first step is to decide if you're going to have a theme for the puzzle. Themed puzzles are somewhat easier to solve. Generally, the longest clues in the puzzle all relate to the theme. My theme was general software development, with a .NET focus.

Brainstorming theme words

So I started by creating a list of possible theme answers. I did this on graph paper, to make it easier to see the length of each answer. The first few words in the list looked something like this:

So at this point I'm just brainstorming. Eventually I decide that I want to use a couple of 15 character answers. Answers this long will largely dictate the shape of the grid. But I knew that I would need additional, shorter, theme words to fill in the rest of the grid, so I made a fairly long list.

Grid design

Designing a grid (in other words, the layout of the black squares) which conforms to the rules above is more difficult than it may seem. In fact, if you're looking for a shortcut when creating your own puzzles, using an existing grid (from a published puzzle) can save substantial work. Also, this is one of the areas where professional-quality crossword creation software can be really useful; the analysis of the grid can be automated to ensure that, for example, no answers will be shorter than three characters and no areas on the grid will be walled off from other areas by black squares.

In my case, I used manual trial and error to create the following grid, with the 15 character answers included:

Now I have to look for potential trouble spots. I have to think about the intersection of longer words, such as the eight letter answers which cross with 15 and nine letter answers. I also need to be on the lookout for unusual letter patterns, like a three letter answer which starts with 'Q'. So after filling in the eighth and nine letter answers, the puzzle now looks like this:

Again, I'm looking for trouble. Look at 7 down; there are not a lot of three letter words ending in 'H'. So I need to keep my eye on things like that as I fill in the rest of the puzzle.

Just as before, I move on to the hardest areas I can find; the general rule and filling in the grid is to start with the harder areas and work your way up to the easier areas. So I'm looking for the longest answers with the most unusual letters. The other thing I do is attempt to fill in the grid symmetrically. If, for any reason, I have to change the layout of the grid (the position of the black cells), I will have to make the changes symmetrically. So filling in the letters on the grid symmetrically means that I will have to redo a lot less work in this case.

The next-hardest area I can find is the top right and bottom left corners, where, in each case, four 5-letter words cross each other. I'm going to start on the bottom-left, because it includes the letter 'V' near the end of a word, which is less common than the letters in the top-right for their word positions. Let's start with that 'V'; I chose PROVO since it seemed to provide good letters for the corresponding down answers. Now this section looks like:

For 52 down, either GROSS or GLOSS will help for 65 across and 68 across. I choose the former, since ORM for 54 across fits my theme:

Now I just use trial and error to fill in the remaining answers in this section. Professional crossword software has an "auto-fill" feature which can make this easier, but if you're at all good at solving crosswords, you may find it faster to do this in your head.

At any rate, I end up with:

Although I was pretty confident that DOERS was actually a word, I looked it up in the dictionary anyway. You can get yourself into a lot of trouble if you misspell an answer, so always check your words!

I then moved on to the top-right, and then filled in the rest of the grid in a similar manner.

As I filled in the remaining answers, I tried to make them relate to each other in an interesting way. For example, having used PROVO, a city in Utah which is home to a well-known software manufacturer, I later decided to use OREM, another city in Utah which is (well, was) home to a well-known software manufacturer. Also, when two words intersect, you don't usually want to make them obscure in the same way, unless you're trying to produce a very difficult puzzle.


Although I had some ideas for clues from the outset, I didn't spend a lot of time on them and tell the grid was complete. There's no point in spending time writing a clue for an answer which might have to be removed as the grid evolves.

People who solve crosswords tend to be good at certain kinds of clues and bad at others. For example, I'm reasonably good at science clues, but terrible at sports clues. Likewise, some people might be good at "fill in the blank" clues but bad at puns. So a good puzzle will have a mixture of different kinds of clues.

The different kinds of clues in the puzzle include:

  • Fill in the blank, e.g., "Bit _____" (ROT)
  • Homophones, e.g., "Conceals or skins" (HIDES)
  • Other wordplay, e.g., "One third of a dance?" (CHA) – think of "cha-cha-chá"
  • Related clues, e.g., "It's not RESTful" (SOAP) and "It's restful" (NAP)
  • Specialized knowledge, e.g., "Do-nothing ASM" (NOP)

There are also some rules to follow when writing clues. Generally speaking, if the answer is plural, then the clue should be plural, as well. Likewise, if the answer is an abbreviation, then the clue should itself contain an abbreviation. The clue should not contain the answer, so you would not use "Gnu's Not Unix (abbr.)" as a clue for GNU.


Although I was, in a sense, editing the puzzle continuously throughout its creation, I spent additional time doing formal editing after it was complete. This included looking up most of the terms used in the clues. For example, I discovered that I had misspelled "Ms-PL" as "MS-Pl"; the former capitalization is correct. Also, I used voice transcription software to transfer the clues from my original, pencil and paper draft to the electronic version you are reading now, and this introduced errors which I had to fix. Errors are bad in any written work, but they're obnoxious in a crossword puzzle, as errors can make it difficult to impossible to solve the puzzle.

The Crossword Puzzle

This is a programming and .NET-themed crossword puzzle.


1. Outfielder or salad

5. It's not RESTful

9. Code conditional

14. Stereo

15. Lock part

16. Remove suds

17. It can be O(n)

19. Rub out

20. Do-nothing ASM

21. Binary bit

22. ADO.NET _____

31. White mineral

32. The _____ (Cameron film)

33. Upon

34. Auditor (abbr.)

35. "Would you like _____ with that?"

36. Aluminum producer

37. "The _____ Particle " (Higgs boson)

38. GUI library for Turbo Pascal

39. Libel

42. It's on the Help menu

43. Your code is full of them

48. Pack of paper

49. Common JavaScript function

50. Expression of boredom

51. Language _____

54. 22 Across, e.g.

55. €, per ISO-4217

56. Utah city, home to Novell

59. Ms-PLed Web framework

65. Conceals or skins

66. Appoint or chair

67. Utah city, home to WordPerfect Corp.

68. Not slackers

69. Debugging expert Ferrandez

70. Profits


1. One third of a dance?

2. Grease

3. The _____ (Roald Dahl book)

4. Enhanced with technology, as Steve Austin

5. Freighter factory

6. A grain

7. Byproduct of combustion

8. Concentration meas.

9. "Goodnight, _____" (folk song first recorded by Leadbelly)

10. Digital defense

11. Watson and Crick discovered its structure

12. Racetrack feature

13. Charge

18. Bit _____

21. Sounds heard in a yoga class

22. UNIX directory containing conf. files

23. It's restful

24. WTF, BCL, JIT, etc.

25. Cybercrime investigators

26. Grain alcohol?

27. Donkey

28. Not NYSE or NASDAQ

29. Tigger's pal

30. Pressure meas.

35. Thrown _____ a loop, or a loop

36. Java UI toolkit

37. The first thing you see after you die?

38. Removes whitespace

39. Institute which invented the mouse

40. Lead-in to at work or without hats

41. Consume

42. Librarians' org.

43. Count (on)

44. Raw material

45. Grosse _____, MI

46. Kind of pointer in 16-bit Windows

47. Like most programmers?

49. Processor

50. Director Tim

52. A dozen dozen

53. Tech book publisher

56. You need one to teach computer science

57. Mexican river?

58. Poem

59. Internal compiler data structure

60. Match, in poker

61. Delphi source code file extension

62. Soldier's dinner (abbr.)

63. Conduct a background check

64. Joomla, for example

<<  Previous Article Continue reading and see our next or previous articles Next Article >>

About Craig Stuntz

Sorry, no bio is available

View complete profile here.

Other articles in this category

Android for .NET Developers - Location and Maps
In Windows Phone and iOS getting the current position of the device in terms of latitude and longitu...
Android for .NET Developers - Using Web Views
In this article, I'll show a native app that contains a web-based view. The great news is that HTML ...
Android for .NET Developers - Building a Twitter Client
In this article, I'll discuss the features and capabilities required by an Android application to ta...
Developing a Hello World Java Application and Deploying it in Windows Azure - Part II
In this article we will see the steps involved in deploying the WAR created in the first part of thi...
Ref and Out (The Inside Story)
Knowing the power of ref and out, a developer will certainly make full use of this feature of parame...

You might also be interested in the following related blog posts

Provide the source code to download the article read more
Back to Basics: LinkedLists read more
How I got started in programming. read more
Graham's Law of Power read more
Functional programming - F# and Erlang read more
Better multithreading support needed in .NET read more
Metadata, Interop, and Dynamic Languages read more
Creating a Quick and Dirty Online Blackjack Game read more
An ASP.NET 2.0 BlackJack Game read more
Special Discount on SQL Server 2005 Reporting Services Courseware read more

Please login to rate or to leave a comment.