Schools Self teaching computer programming vs taking a credit class at college

AI Thread Summary
The discussion emphasizes the importance of programming skills for students in physics and engineering, highlighting the debate between self-learning and formal classes. While some participants advocate for self-directed learning, arguing that programming can be effectively taught through practice and problem-solving, others stress the benefits of structured classes. They point out that formal education provides accountability, guidance, and the development of good coding habits, which can be particularly beneficial for those who may not be enthusiastic about computers. The consensus suggests that while self-learning is possible, a classroom environment may be more effective for beginners, especially for those who may struggle with motivation and discipline. Ultimately, participants recommend starting with a foundational programming language in a structured setting, which can make subsequent self-learning easier.
xdrgnh
Messages
415
Reaction score
0
I'm not really a big fan of computers but I understand there importance to physics. My school offers computer programming classes for engineering and science majors but I don't want a extra formal class that isn't required. Do you think it would be a good idea to self learn all of the programming?
 
Physics news on Phys.org
Computer programming skill is really too important to skip, although it may not be officially required. Best advice is to learn some either on your own or in a class. If you are weak at selfdirected learning, then take a course. If you are strong at learning on your own, then select the skill or language that would suit what you need to learn. The safest bet is register for a class and just follow the lessons, study, do the work.
 
Yes, if you're motivated and disciplined enough.
In a way, formal classes are best precisely because they force you to learn to material and to make exercises. While self-learning, this pressure doesn't exist and you'll have to force yourself to do the programming and the exercises. This is ok if you enjoy it, but it can be tedious if you're not a big fan.
 
It would be a great challenge. There is a lot LOT of programming languages out there and to teach yourself all of them is a bad idea. Plus it would take more time than taking a formal class. I say take a class.
 
Alright thanks all of you guys for the advice I'll make sure to find time to take the classes.
 
I don't think I would have been able to learn programming all that well if I had tried to learn it myself. The reason is that programming is something you learn by doing, not just by reading a text. And if you're learning something by doing, you need someone to assign you problems, where you can check what you did is right or not, and someone telling you how you are doing. A large part of how I learned was by working with others, and going to the professor's office hours for help.
 
I disagree about programming being hard to learn yourself. I think it is easy to learn yourself and self taught programmers generally program better and understand what they are doing more than those who learned to program through classwork.

As you pointed out, programming is mainly learned through doing. But coming up with that something to do is really easy. To start out with, write a program that does basic tasks like reading a file, sorting the data, and writing it back (teaches sorting and file i/o). Write a program that generates all possible combinations of 4 letters (teaches nested looping). Write a program that does numerical integration. Write a basic checkers or poker game. etc etc

Struggling to figure out how to do these things and making errors along the way is where the learning occurs. The results are pretty easy to look at and see if you got it right.
 
Programming is a great thing to learn on your own. There are lots of good books which are much easier to read than physics textbooks. Way easier to teach yourself programming than say quantum mechanics in my opinion.
 
One of the great things about programming is that it is a very interactive process even in isolation and because of this, it does have a natural way of being able to be taught in isolation.

As an example it is easy to check whether you are right or wrong pretty easily, because you can compile code and get a list of errors, or if it compiles correctly and crashes, then you can debug the program and find out what went wrong.

It is a bit harder to do this when you are learning something like an applied science like physics or chemistry. There will be instances when you screw up and it's not going to be as obvious where you went wrong. It's not to say you can't figure it out, but it is different.

If you want to do this, my advice is to pick a domain and pick a project of some sort. It can be a really small one, that might be merged into a bigger one later, that's still ok. What will happen is that you'll start with some tiny programs, and you'll learn how to make more complex programs by either taking small projects that you have written, or even external libraries, and make code that gets more complex. Since this is what you do when developing software, it will provide you with a good training ground for you to be able to do just that.

Even if you just want to code some applied models, and you just need to do something specific, you will probably use some optimized libraries of some sort and even then you need to be able to develop software where you are taking lots of separate code bases and merging them together.

You tend to do this in large scale development only the code bases that you are dealing with are a lot larger and a lot more complex.
 
  • #10
Floid said:
I disagree about programming being hard to learn yourself. I think it is easy to learn yourself and self taught programmers generally program better and understand what they are doing more than those who learned to program through classwork.

As you pointed out, programming is mainly learned through doing. But coming up with that something to do is really easy. To start out with, write a program that does basic tasks like reading a file, sorting the data, and writing it back (teaches sorting and file i/o). Write a program that generates all possible combinations of 4 letters (teaches nested looping). Write a program that does numerical integration. Write a basic checkers or poker game. etc etc

Struggling to figure out how to do these things and making errors along the way is where the learning occurs. The results are pretty easy to look at and see if you got it right.

Of course, anything can be self-learned in principal, provided you have the proper resources, but it's a matter of how difficult or easier it is compared to a classroom setting. I just think that having someone to help around and give you comments about how you're doing or having people to work with helps more in a class like programming when compared to a more theoretical subject such as some area of Math or Physics.
 
  • #11
The OP says straight out that (s)he is "not really a big fan of computers" -- doesn't sound like a good candidate for self-study.
 
  • #12
I would suggest learning your first programming language (JAVA or C/++ preferably) in a classroom setting. After that, learning additional languages can be a breeze because you have a point of reference.

The reason for the classroom setting is more than just 'learning the language', you also learn good coding habits and learn about Object-Oriented Programming in a structured manner.
 

Similar threads

Replies
0
Views
2K
Replies
12
Views
2K
Replies
16
Views
2K
Replies
14
Views
3K
Replies
1
Views
80
Replies
32
Views
3K
Back
Top