From simple scientific computing into beginning development

In summary, the person is asking for advice on how to start learning computer science. They say they want to learn to create real world software, but they don't know where to start. They ask for advice on which language to learn, how to start, and what to study.
  • #1
Acid92
43
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
  • #2
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.
 
  • #3
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:
  • #4
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.
 
  • #5
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.
 
  • #6
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.
 
  • #7
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.
 
  • #8
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.
 
  • #9
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.
 

What is the difference between scientific computing and development?

Scientific computing is the use of computer algorithms and software to solve complex scientific problems. It involves using programming languages and mathematical models to analyze data and make predictions. Development, on the other hand, is the process of creating new software or applications for a specific purpose.

What are some common programming languages used in scientific computing and development?

Some commonly used programming languages in scientific computing include Matlab, Python, and R. For development, popular languages include Java, C++, and JavaScript.

What skills are necessary for successful scientific computing and development?

To excel in scientific computing and development, it is important to have a strong foundation in mathematics, especially calculus and linear algebra. Proficiency in programming languages and problem-solving skills are also essential.

What are some examples of applications of scientific computing and development?

Scientific computing is used in a wide range of fields, including astronomy, physics, and biology, to simulate complex systems and analyze large amounts of data. Development is used to create software for various purposes, such as web development, mobile applications, and video games.

Are there any ethical considerations in scientific computing and development?

Yes, ethical considerations are important in both scientific computing and development. Data privacy and security, potential biases in algorithms, and ethical implications of software applications are some examples of ethical concerns in these fields.

Similar threads

  • STEM Academic Advising
Replies
12
Views
1K
  • STEM Academic Advising
Replies
3
Views
835
  • STEM Academic Advising
Replies
4
Views
118
  • STEM Academic Advising
Replies
7
Views
2K
Replies
15
Views
2K
Replies
2
Views
885
  • STEM Academic Advising
Replies
3
Views
882
  • STEM Academic Advising
Replies
7
Views
2K
Replies
2
Views
955
  • STEM Academic Advising
Replies
1
Views
1K
Back
Top