As it stand, I am starting to become quite troubled with my major as of now. I am a sophomore this year, majoring in computer science. I sort of new what to expect when I decided on this major, but I have been progressing I have started to doubt myself and my future with my choice of major. Ever since I was about 12 years old, I have been fascinated with computers, technology, and building things. To be completely honest, I didn't really take as much time as I should have during my high school years to really figure out what it is that I want to do.
I have been building my own computers since I was about a sophomore in high school. I have also assisted many of my friends and family with building their own computers and gaming rigs. I can help people with almost any question that have about internet issues, computer issues, program problems, etc. And I really do enjoy helping people and building things. The problem that I am facing now is with where I am going from here. As I continue along with my courses, I am passing with average grades (B, C, A here and there) in the beginner/intermediate level courses. Now I am in Discrete and Data Structure/Algorithm Classes, and I am starting to struggle. Mentally, I keep questing myself what it is I am really doing every time I sit down and try to and write a program. I KNOW that I am not retaining what I am learning. The way I am being taught to do these things in class is simply boring. We are given pages of notes on a blackboard about how certain things work, then we have to go and try to apply them to a program. I am very hands on with learning. When I am copying notes for an hour straight, I don't really remember anything I am copying down, it just sort of seems like I am a machine translating notes to paper.
I have came here because I wanted to know if anyone here could offer any advice to a troubled young man wondering if he should change majors.
My teachers and family always tell me that it is ok to have to be helped with something. But I don't want to spend the next 2 years, being helped to do something that I will have to KNOW how to do. I don't like having to rely on others, I like to be able to figure things out myself. And if I can't I feel defeated. Typically I can spend DAYS trying to do some of these upper level programs I have been getting. And when I'm done with it, a week later I forgot what it is I have done. I don't feel like I'm building up a base or tool set to carry along with me.
I have been searching for major alternatives. And I have come across Electrical and Computer Engineering, which seem pretty interesting. I would like to figure out how the computer actually works! If you know what I mean? I know that I can put all these components together and connect it to a power supply and it lights up and that's cool, but what is really going on? Is there a major that deals with how the actual physical properties of the computer work on the... outside? I guess?
If anyone has any major recommendations or advice for me, that would be fantastic. I am writing this as a struggle with yet another programming assignment. Thank you to everyone that has taken the time to read this.
You'll still have to program when you're an Engineering major. Just not as much, mostly math and math. And chemistry, like thermodynamics since you're dealing with soldering and carving out circuit boards.
By the way, almost everyone struggles in a Data Structures course. It's all about finite state machines and 2's complement and binary shift, along with some other things I don't even remember. The hands-on part is basically non-existent in those courses, versus actual programming classes where you get to (hopefully) see the professor craft out some code, run it, and go through it step by step.
But if you really do plan on being an Engineer, those Data Structures classes will be a lot more important for you.
Is there a major that deals with how the actual physical properties of the computer work on the... outside? I guess?
Outside of an engineering major? Like what do you mean physical properties on the outside? If you mean like on NewEgg or other similars where they showcase a fairly high spec gaming rig crafted from individual parts, that's a designer. Not a programmer or engineer. You don't have to be a STEM major to know how to build a gaming rig.
And from your second paragraph of text, it seems to me you're kind of leaning towards a tech support type of career, if I'm not mistaken.
Universities generally have some sort of career counseling office, which is really where you should be asking these questions.
On the other hand, here's what I can answer:
The way I am being taught to do these things in class is simply boring. We are given pages of notes on a blackboard about how certain things work, then we have to go and try to apply them to a program. I am very hands on with learning. When I am copying notes for an hour straight, I don't really remember anything I am copying down, it just sort of seems like I am a machine translating notes to paper.
I'm sorry to say that this is probably a problem with the way you're taking in the class' contents. A lecture is not meant to be a spoken version of brain content you can just dump on yourself to understand the subject. You should be digesting the material and making connections for yourself, if possible during the class so you can ask questions. Of course you're going to be completely lost if you just take what you're given and do nothing with it.
How is having a "hands-on" approach to learning a disadvantage? Probably most people are like that. Go home and practice the materials that were covered in the class.
My teachers and family always tell me that it is ok to have to be helped with something. But I don't want to spend the next 2 years, being helped to do something that I will have to KNOW how to do. I don't like having to rely on others, I like to be able to figure things out myself.
Going to school is a tacit admission that there are things you can't learn on your own. Nowadays you can find books on just about every aspect of computer science, save for the absolutely newest research. If you really don't want help then school is not for you; just spend a few years by yourself pouring over books on data structures and algorithms, discrete math, computer architecture, networks, etc.