I could write you the code for autotiles. It's not hard at all. And I made a tile engine for an xna game last fall. I'll see if I can dig it up.
In terms of handling the actual tiles, you should have an object for each one, and you should be able to test if it's on screen as a method of that object, so each frame, you should loop through and test if each tile is on screen, and if it is, draw it. The main advantage of objects instead of an array of numbers is that you can store more data on each tile, such as passability, terrain tag, etc.