From simple scientific computing into beginning development

AI Thread Summary
A Math/Physics freshman seeks guidance on transitioning from basic programming in Fortran and Python to real-world software development, expressing interest in learning computer science concepts like algorithms and systems. Suggestions include starting with a popular language like Java or C, utilizing IDEs like Eclipse or Processing for easier learning, and considering auditing CS courses for foundational knowledge. The discussion emphasizes the importance of understanding core CS principles rather than just language syntax, highlighting the challenge of self-teaching without feedback. Resources like online courses from reputable universities are recommended for structured learning. Ultimately, the consensus is that developing programming skills is a gradual process that requires persistence and exploration of various resources.
Acid92
Messages
43
Reaction score
0
Hey guys I need some advice: I am a Math/Physics freshman whos pretty much a noob to programming in general; I have some experience with Fortran (taught as part of laboratory) and Python (self taught) but only in the context of elementary numerical methods / scientific computing. I have basically no clue about actual computer science (e.g. algorithms, architecture, systems, networks etc) or software development but would like to begin to learn it as a hobby. My goal for now is to be able to at least begin to learn non-trivial stuff in actual real world development (e.g. games, apps, systems, web etc), the only problem is I don't know where to start / how to go about it. I live in the UK so I can't take computer science and development courses at uni (only allowed a strict range of Math/Physics courses for my degree).

I get the impression that the first thing I need to do is to learn a popular language like C, C++ or Java. Since I am interested in actual computer science, I reckon C would be best since it's a middle level language? However, programming texts only teach you the syntax of the language, how do you go about learning actual development? I mean I've been looking for non-trivial projects in Python but the little I've found seems to involve things like advanced GUIs, databases, networking etc which I don't know.

I guess what I am asking is, once you learn a popular/used language, what then? How do you enter, or at least approach, the world of real world software development?
 
Physics news on Phys.org
I would suggest Java as all major software companies have moved in that direction. You can do all sorts of generalpurpose programmingwith and there are tons (tonnes) of libraries around to extend the core java. Also you should look into learning Eclipse or NetBeans IDE. These are the tools of professional programmers they primarily support Java but also have plugins for C and C++.

If this feels somewhat daunting or you don't have the time then check out Processing.org. Its a simpler IDE based on Java and designed for doing interactive graphics. You'll find its quite easy to use and you'll learn Java and OpenGL apis for graphics.

In addition, Processing has support for Android development although you must install the Android toolkit and it has support for Javascript (which is java-like but isn't java at all).

And I forgot to mention that Processing comes with a ton (tonne) of examples. It could be easily used to create moderately complex games.

Writing a game involves several areas of CS namely graphics, user interface design and database development for persistent game play and for multi-player games where persistence is a must.
 
I hope you realize that it might be years of studying CS and programming before you are actually able to create any real world software. Since you can't take the classes for credit, can you audit some of the CS classes at your uni? Courses like data structures, some language courses, what have you, would go a long way into helping shore up your understanding.

I guess what I am asking is, once you learn a popular/used language, what then? How do you enter, or at least approach, the world of real world software development?

You actually have to learn some CS.

Since I am interested in actual computer science, I reckon C would be best since it's a middle level language?

C is a high level language, the high level languages only differ by levels of abstraction/programming focus. There is no such thing as a mid level language.
 
Last edited:
Student100 said:
There is no such thing as a mid level language.
There are are loads of examples of CS profs that use the term middle level programming language.
http://www2.sis.pitt.edu/~ir/KS/Data/Leicester/ccccover.html

You simply google "middle level programming language" and you find that there is such a thing as a middle level language.
 
jesse73 said:
There are are loads of examples of CS profs that use the term middle level programming language.
http://www2.sis.pitt.edu/~ir/KS/Data/Leicester/ccccover.html

You simply google "middle level programming language" and you find that there is such a thing as a middle level language.

Middle level in the context of what? When C hit the scene, it was a high level language. Just because we have more managed languages that abstract further from C doesn’t mean we need to create a special category for it. It’s still a high level language.

Unless of course we don’t mind ending up with a thousand different categories as new more abstracted language continue to pop into existence.

“Hey man, what kind of language was Java again?”

“I think its middle high low level now, but I’m not sure”

Lets get back on topic.
 
Student100 said:
Unless of course we don’t mind ending up with a thousand different categories as new more abstracted language continue to pop into existence.
Thats exactly what is happening (a continuous/relative scale) and generally humans have no problem dealing with a continuous scale instead of a binary option. It is actually preferable for some because it allows one to decide what level of abstraction they want to start learning from.
 
Student100 said:
I hope you realize that it might be years of studying CS and programming before you are actually able to create any real world software. Since you can't take the classes for credit, can you audit some of the CS classes at your uni? Courses like data structures, some language courses, what have you, would go a long way into helping shore up your understanding.



You actually have to learn some CS.

I am planning on asking my tutor/professors if it is possible to take optional courses, the problem is that all my Math/Physics courses are compulsory so I won't be able to do much optional things anyways. I realize that I won't be creating real world software any time soon but I still want to learn the material to at least be able to understand the code for actually useful stuff even if it is very basic software.

I enjoy coding and am interested in computer science, but I am slightly more interested in Math/Physics; unfortunately here in the UK I can't do all the courses that simply want to (you guys in the US are lucky, the flexibility of uni there is on another level). In the end if I decide to attempt to become a developer, I guess I will probably go to graduate school for CS (in the UK, some unis do offer taught graduate programs, Msc, in general CS for non-CS graduates) but can't I learn more serious CS than language syntax? I guess even more specifically what I am asking is how to go about self teaching myself essential CS (through texts etc). It will probably be difficult but I don't think its impossible. Ps I was torturing myself with undergraduate analysis texts back in senior high school and don't have much of a social life so it won't be that much of a bother for me.
 
You don't have to actually take the classes if it's more for your personal knowledge, but in the US we can audit/generally just sit in classes and listen to lectures. I don't know if this is possible in the UK, but it might be a good alternative for your situation.

The difficulty of learning CS from a book is you generally have no one to give you feed back on your code/methods. Syntax is easy, it's also easy to program like a cowboy and just get stuff to compile. It's much more difficult to get into the nuts and bolts of things without some type of guidance and feedback.

This is my personal opinion and may not be accurate for you. Look into the equivalent of data structures class and see what material your peers are learning from.
 
One of our (best) professors Lawrence Angrave (who coincidentally did his undergrad/masters/PhD at Oxford in Physics) is about to launch a course on Coursera for developing Android apps which can be found here:

https://www.coursera.org/course/androidapps101

I don't know much about this course but I do know Angrave. He's totally bent, extremely knowledge and very entertaining. His class at our school is very tough but a lot of fun and incredibly enriching. I'd definitely take a look at that course. Since I imagine you've already got a lot on your plate it might be more interesting to do something 'fun' rather just add another class to your load.

However, if that doesn't interest, there's a TON of resources for learning to develop software and learning CS. It must be the most freely and abundantly taught subject ever. MIT has an intro CS course up. Stanford does, too. Stanford also has a data structures course up.

Learning to code is like learning to play the guitar; just pick up and start playing some chords. Or, it's like learning math. How do you learn math? It's so huge. You learn the basics then you just start learning what you can where you can. Maybe you get your own voice along the way. Don't worry to0 much about 'which language'. CS is ideas. Languages are just (meager) tools. People who get hopped up about languages are missing the point.
 

Similar threads

Back
Top