When you use feeds for a CSV import, you have to make a few decisions. When dealing with large quantity of records (say more than 2000) to import, you probably should turn OFF periodic import and turn on Process in background. This will cause feeds to import something like 50 records at a time for each cron run. In order to make feeds import more on each cron run, add the following to your settings.php:
When you want to allow anonymous users to be able to add content, you configure all the permissions you'd expect but the one you might not expect is to give them permission to "Show format selection for nodes." This is part of the better formats module.
I recently did a little project to display a coupon with an expiration date that was calculated. It just adds 21 days to today's date and prints it on the coupon. Here is what the code looks like: