Im looking to build a word game similar to boggle. Basically I have random letters appear in a 4x4 grid. I need to know how many words can be spelled using that specific layout of letters. So my question has 2 parts:

1) Where can I get a dictionary of words to check against for use in a game like this? Ive heard of some people creating their own, but Im not looking to compile a list of a handful of words, Im looking to compare against every word in the english language. Like a scrabble dictionary or something similar.

2) Once I have the dictionary, how do I go about writing an algorithm that will first create a grid of random letters, and then analyze that grid and scan it for all the possible words that are in the dictionary?

Hopefully that makes sense. Im just making this game for giggles and if anything it would be good practice and give me a good learning experience. Especially if someone can shed some light on algorithms.

Any advice would be really appreciated! Thanks!