I'm a business informatics student so I am taking introduction to computer science and computer programming, and so far I hate everything that has to do with this major aside from these 2 courses which I am really enjoying so far, so I am considering changing to a computer science and engineering major, but I want to make sure this is what I will enjoy before I make this change so I am researching some stuff relating to computer science online, one of which being discrete mathematics. Do you think discrete maths gives good insight on how CS is like? How about 'Theory of computation' and 'Intro to Artificial Intelligence'? Do you have any other recommendations for courses or subjects that DO give good insight on CS and do not have any course prerequisites so I can look into them and be able to follow? Thanks in advance to those who take the time to answer and help :)
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
Here are some thoughts about your suggestions for further study, plus one that you didn't mention.
This course should be part of the background for every computer scientist. The material is relevant for lots of areas we deal with and can be interesting and engaging whether or not one is going to concentrate on CS. That said, though, the subject matter won't necessarily give you an insight into what CS is really about unless it is specifically tailored to computer science applications (which it rarely is, in my experience).
Theory of Computation
A great choice, though it takes a bit of "mathematical maturity" to get through (meaning that you might find Discrete listed as a prerequisite). In one sense, this is the foundation for much of the rest of CS, since it asks "What things can and cannot be computed?" and often proceeds to answer this question by looking at increasingly more powerful models of computation, asking what kinds of problems these models can and cannot solve. Full disclosure: I'm a theorist and so find this area to be particularly beautiful.
Well taught, this can turn out to be an eye-opening introduction to a lot of CS topics as well as being, in many people's opinion, just downright fascinating. Poorly taught, though, this can be little more than a specialized data structures course (still interesting, just not as much fun).
You didn't specify what your programming course covered, but this is a natural follow-on. Learning to program, you were exposed to what one might call the standard collections of algorithmic basics, like selection (if statements), loops, arrays, function calls, and (if you were lucky), recursion. A course in Data Structures goes on from there and usually is organized around the "canonical" structures used for organizing data, structures like lists, trees, stacks, hash tables, and the like. This is absolutely indispensable for any practicing computer scientist. At many schools, in fact, it's the next course to be taken after the first programming course.
So, what should you do next? All of your possibilities have their merits, but I'd advise a Data Structures course, for a couple of reasons. First, if you take it and hate it (assuming that your reaction isn't just due to a lousy teacher or a poorly-designed course), then CS is probably not the way you want to continue and it'll be good to find that out early. If, on the other hand, you take it and walk out with the reaction "that was fun", then you'll not only have shown you probably have an aptitude for all the rest that will follow, but at most schools, you'll have placed yourself at the right point in the CS curriculum to continue.
Best of luck.