This is definitely a different program than what I did (probably a bit more advanced, Bachelor's in the UK seem to be a bit more involved than in the US), especially the math component. I looked at a bunch of the courses, and then decided not to focus on the math things as I really won't have anything to add.
As for the CS courses... some of the early ones will definitely bore you based on the amount of programming you have already done and the concepts you already know. Here are my thoughts on some of the later courses:
M263 - This seems like a good way to break people in to programming, though probably a lot of things you already know.
M255 - I prefer starting with lower level languages and working to OO, but this program starts with OO, which is a fine approach to modern programming. This course uses BlueJ. I do not like BlueJ. Otherwise it seems like a pretty standard intro to programming course.
M257 - Interesting approach to exploring the versatility of Java, and programming in general, targeting different devices, etc.
M362 - Concurrency is where it's at from now on. You should definitely take this course. Even if a lot of the building blocks are being made easier to use, knowing how everything works, semaphores, critical sections of code, etc. is still important.
M363 - This is an important course that I didn't take when I was in school, and I regret it. There's more to software projects than banging out code.
M364 - While it's probably best to have someone on a team that's devoted to designing the UI and user experience, having an insight into this is a good idea for everyone. Often programmer-designed interfaces are abysmal.
M366 - AI is very interesting. The course I took on it was not at all. I am honestly more interested in the ethical discussions about AI than it's implementation, and really liked by computer ethics course more than my AI course. This course sounds a lot different than the one I took, so it may be more worthwhile. The items discussed seem more advanced, though there is a big focus on the history and current approaches to AI. It doesn't seem like you'll write a lot of code yourself, but I could be mistaken.
M359 - You may already know a lot about relational databases already, but if not this course is critical. RDBMS's are the backing store for current software. A solid understanding is critical.
Some holes in this program, in my opinion, are:
Advanced Hardware. M150 mentions hardware, but it seems very basic. The course I took on hardware/software interaction, instruction sets, assembly, etc. was one of the best I had.
Operating Systems. They define how the vast majority of developers interact with a computer (unless you're writing ASM directly for some embedded device, or writing an OS yourself), and the direction they take, how the drive/abstract hardware, and the APIs the present is extremely important.
Compilers. Again, one of the most rewarding courses I took was compilers. Turning high level code to machine code (or Bytecode, which is machine code for a virtual machine) makes programming large systems possible for a much wider group. Without them designing and implementing large systems would be much more difficult. Without great compilers we couldn't take advantage of advances in CPUs without learning the nitty-gritty ourselves and writing by hand. I think an understanding and appreciation of compilers and runtimes is critical.
This is all, of course, biased by my own experiences as a student in an undergraduate computer science program from ~2002-2004 in Texas in the US. I'm sure the things that stand out the most in my mind are the things that were later in the program, and the intro courses shouldn't be discounted, but I just don't remember them making as big of an impact looking back.
A word of warning: you know much more about programming and have a lot more experience than a number of your peers will. You may have to sit through some classes that you don't get a lot out of if you can't test out of them. Just take it in stride, and spend time when you can with your professors discussing the material with them to get a deeper understanding. Don't express to them constantly that you don't need to be there, or be overzealous about showing your superior knowledge of the subject matter in early courses. It's unbecoming and will make professors hate you. You do not want your professors to hate you. Based on the way you present yourself here, i doubt seriously that you'd do that, but being stuck in courses on subjects you've mastered can be frustrating. Just take it in stride.
Good luck if you decide to pursue this. Enjoy it. The camaraderie and access to people that are knowledgeable, excited, and engaged about the subject matter in your peers and professors will likely be unmatched for the rest of your life.
-Lee