I use emacs' org-mode: http://orgmode.org/
It's great, your TODO items are headers in a document, so you can write your notes under them and hierarchically organize them. It supports tags, custom statuses, priorities, you can even use it to estimate effort and keep track of time spent on various tasks.
It has agenda views where it gathers your stuff from multiple files and displays them in various ways, like the weekly agenda that displays your upcoming tasks for the days of the week. You can schedule tasks, set deadlines, and even set recurring tasks. Of course you can define your own views and it's extremely customizable.
At first it's a bit complex (especially if you have never used emacs before), when I started out I barely used any of thr features but my workflow slowly evolved to include more and more. There are non-programmers who only use emacs for org-mode so don't be scared to give it a try!