So I am halfway through my first computer science class in college. The class is C++ and I have an A in it right now but I feel like I have no idea what is going on. We are doing functions right now and are about to start arrays but I can't do any of the lab work without using a tutorial. I have no prior programming experience either. Is this normal. I will say I have the worst teacher ever. He gave his first lecture after the midterm. I just don't know when this is going to sink in or if it ever will. Is anyone else in the same boat or know tricks to get this stuff to sink in better?
Getting good at programming usually comes with experience. Learning how all of this stuff works and how to go about using it is the first step. Getting experience actually using these things will really drive it home as to how to really use it properly. I have been working a coding job for almost a year (started coding like 2-3 years ago) and I am still learning things on a regular basis. I have to ask people stuff most days, but I am much more knowledgeable now than I was when I started and am even able to help out some of the new folks now. Programming is one of those things that often takes years to get decent at.
I agree with @1920.1080p.1280.720p, only way to git gud at programming is to practice.
Be creative, come up with interesting problems to solve and put what you've learned into use.
Learning about arrays? COOL. Write a program that fills a set range in an array with a number. Next, write a program that fills "shapes" in a 3 dimensional array. Write a program that does binary operations on those shapes. Sound stupid? Well, this would be pretty usefull for putting down shapes and filling spaces in minecraft maps. No matter how stupid the math or puzzle problem sound, you can always find a way to put it into practical use.
There are plenty of websites out there that give you simple programming puzzles / prompts for you to solve. Or, you can come up with your own stuff. When I was freshman in college I wrote my own convex-polygonal-vertex+line collision and response engine, a math expression evaluater (coverts expressions to polish notation and solves with stack math engine), etc. Think of cool creative things to program and start dragging the internet looking for information you need to program a solution.
Some of my favorite programming puzzles involve non-square grids like hexagons or triangles, vertex-line intersection math, and ray tracing. Maybe even try things like solving Dijkstra's algorithm when you get to it in class.
First off congrats on taking a programming class. Also, IMO you've made a good choice picking C++ as a language.
Now, C++ is a "tough" language to learn, likely because it was written by some of the smartest programmers for their tasks, not necessary created to help people to learn to program. So, keep in mind it was designed by people with ALOT of knowledge and programming experience.
However, by learning C++ and sticking to it - you will learn, in the long run, more than simply python or java for that matter. You'll learn the differnce between stack and heap, you'll learn memory allocation, and about how a computer runs. But that's for later, first you'll need to learn to program, like create functions, make an array, write a for loop, etc.
My advice is, don't blame the teacher. They may suck, but dedicate the time to learn this stuff, it isn't easy. You have resources - there are some good programmers on this forum who can help with questions. Don't just seek the solution to the homework question - figure out how to program.
Also, don't blame the language, ever. It's not the languages fault you may not know how to solve a problem using it. It's the programmers job to implement the solution.
Stay focused and motivated. An A doesn't mean the world in the long run. You will NOT be a 10 year veteran C++ programmed at the end of the semester. That title comes with years of hard work and dedication.
Also, this is something that hindered me in my early programming days.
Don't let it bother you if you hit a wall and can't finish a programming project (speaking of stuff on your own, not school assignments, lol).
Be ambitious, try to program stuff just past what you think you can do. When you can't finish it, that's fine, dump it and move on to the next idea. Feel no remorse, don't let it slow you down. Each time you move onto the next project idea, you put into use what you learned from the last one and you will get faster and faster at writing what you do know.
If you never begin to program something big because you know you won't be able to finish/solve it completely, you'll never grow as a programmer. I have couple of my own projects that I come back to every couple years. I look at my code and I think, "who wrote this crap?!?!". I can say that because I've learned so much since last time I tried it. Each time I rewrite it I get farther than I did before and I hit a new wall... something I can't solve at the time. I drop it and move on. Later I'll come back to it and see that I know how to solve that problem and continue with it till I hit the next big one. It just demonstrates how your programming skill grows with experience.
TL;DR: Be ambitious with your programs. Don't be afraid to start something you know you can't finish; just get as far as you can and you will stretch your skills.
I'm going to add my voice here.
I've only been coding for about a year and a half. I'll be hitting two years this summer. No programming experience before and I'm doing solid B's in my classes and I struggle every day to remain confident in my abilities. So, you and I have something in common.
Don't make the mistake I did: Don't code just to get the project done. This is going to bite you later, because everything in this degree and field builds on each other. Some things that seems stupid, outdated, and unimportant, are actually very important later, because they will help you understand the more complicated concepts. Try to understand.
Even if you don't understand, keep trying. I am much slower than some people in this field, and it bothers me. But because I keep plugging away, some things eventually click. A lot of this stuff in conceptual, and when we don't have much to compare with, it's hard to remember a lot of it. Remember what you can, and keep trying.
Find things that interest you in this field. While you're learning the basics, what are the things that don't make you fall asleep during class? Is it data analysis? Web Development? Algorithms? Patterns? Games? Automation? ETC.
These are things that will turn into a passion.
Practice. and more Practice. This is how I remember things. Doing them over and over and over and over.
My teacher sucked too
COBAL and FORTRAN was big back then but I never got the hang of BASIC, hence my nick.
The equipment has improved.
These really sucked.
Playing Lander was a blast however! They even had a Star Trek game:)
Thread revived by potential spam bot.