When someone goes to a college to study Computer Science, she/he does not have to worry much about what programming languages to learn because the degree plan already contains an outline of almost all the required courses. Today, we are going to answer the question of which programming language one should learn if she/he does not have a Computer Science background. We are writing this article for anyone who will probably not go for a formal degree in computing (like Computer Science, Bioinformatics).
There is a common misconception that only people from Computer Science can learn programming. The fact is, many early Computer Science professors were physicists and mathematicians. Programming is advancing and becoming more and more high-level (human-interpretable) day by day. As a result, the concept that programming is only for nerds is changing. 🤓 Learning to program has become common in business and scientific sectors. We still have miles to go in shattering all the misconceptions and seeing programming as a general skill though.
The next generation is learning to code
Inclusion of coding in high and middle schools is becoming popular. Even some elementary schools expose their students to coding to some extent. We believe every college graduate will have some level of programming skill by the end of the coming decade. It is great to think that the future generation will have the programming skill as the nation and the world need. A sad part of the transition is that industries adopting new technology always create pressure on the previous generation.
One example of such pressure is the automation of car manufacturing that led to the unemployment of many workers. Soon, self-driving trucks will lead to the unemployment of many drivers. The younger generation will probably learn to become remote operators of automated robots in manufacturing or self-driving vehicles on interstates.
Similar to the issues of automation, think about the new generations who will have programming skills regardless of their majors. There is a chance that corporate personnel, accountants, and office managers produced form the new generation will replace the earlier workforce in many sectors, especially in Business. This is one of the reasons to keep oneself up-to-date with the current technology in his/her line of work.
Anyway, we did a lot of talking. We have one more item before we go to the point. What is the difference between programming and web development? We need to discuss this because many people, including freshman Computer Science students, confuse programming with web development.
What is the difference between programming and web development
Programming refers to writing programs using a computer language. Examples of programs are MS Word, Notepad, or the Game software you have on your desktop or laptop computer. On a phone, the calculator app and the Google Maps app, are two examples of programs. Programmers/coders develop programs using a programming language. Some popular programming languages are Java, C/C++, and Python.
Web development refers to developing websites. Web development does not require programming. However, programming skill is a plus in web development. A web developer may or may not have programming skills. An example of web development is how we built this particular website computing4all.com. For web development, web developers use a markup language like HyperText Markup Language (HTML). HTML contains a pre-defined semantics that, when placed on the server, browsers can read and render. HTML is a way to tell the browser how to display the content. For example, how can we make some text bold and some italic?
In this article, we are talking about programming using a programming language. We are NOT discussing web development languages.
What programming language should I learn first?
We have an excellent answer for you, but before we give you a superb answer, we will provide a brief explanation. The short answer to the question, “what programming language should I learn first” is “it depends.” We are sure the next question is, “it depends on what?” It depends on your computing needs, your current expertise level, and the learning resources that are available to you.
Let us move to the great answer to the question of what programming language to learn the first time, which is an elaborate version of “it depends.” As mentioned before, it depends on your particular situation. The following subsections explain several cases and the programming language(s) suitable for each case.
If you are going to learn your first programming language by yourself
If you are going to learn your first programming language all by yourself, our suggestion is, go with Python. The reason why we are suggesting Python is that it hides a lot of complexity of a regular programming language. You will be able to see the result as you run each line, which is not the case for regular programming languages like Java or C++.
On a similar spirit, we would suggest Matlab if you have access to it. Matlab is not free. Most universities purchase Matlab subscriptions for faculty, staffs, and students. Unless you get it as a part of your job facilities, we suggest you avoid it because it is an expensive piece of software. Matlab is mathematics-oriented and requires an understanding of vector and matrix operations. You can safely ignore Matlab unless your projects specifically need complex mathematical operations.
If you are going to spend money on your first programming course
Let us assume that you can find a mentor. The mentor could be someone or some organization offering courses on Java, C++, and Python. Let us also assume that you are willing to spend some money to enroll in a class. In this particular situation, we would suggest you learn Java.
If you are wondering why we are recommending Java as your first course, you have the perfect question in mind. Java is more generalized than C++. The program you write in Windows runs on Mac and Linux systems. As a result, Java reduces the complexity of learning a programming language a lot.
Then, why not Python? Python is a great language. Researchers in our labs prefer Python over Java because Python programs are shorter in length, hence quicker to code. Note that we are not talking about what is a better programming language; instead, we are discussing what language one should learn first. After you learn Java, you will have a basic understanding of a standard programming language. As a result, learning Python and C++ by yourself will be just a matter of time.
In summary, if you are going to pay to learn a programming language, go for Java. You will be able to learn more programming languages yourself after you have a good grasp on Java.
If you are in college now
If you are in college now and if you are in a discipline other than Computer Science, you can go for an early stage Computer Science course. Most undergraduate programs in the US universities allow at least one free elective course as a part of the undergraduate degree program. A free elective course is any three-credit course from any discipline regardless of your major.
We are providing three ideas involving which course(s) to go for below.
Idea 1: CS1
If you are interested in programming, enroll in the first core programming course offered by the Computer Science Department at your university. The first core programming course is commonly called CS1 (short for Computer Science One). Our guess is, the course will teach either Java or C/C++. Whatever the language is, you will learn all the basics, which will help you if you want to continue the practice of programming.
If you are confused about whether you will be able to do well in CS1 or not, you can speak with the professor who is serving as the Undergraduate Program Director in the Computer Science Department. When you talk to the Undergraduate Program Director, mention that you want to do your free elective in Computer Science. The program director will be able to suggest the right course for you. If you are not comfortable with going for CS1, the Program Director will probably recommend going for CS0, which we explain below.
Idea 2: CS0
Some Computer Science departments in the country offer an elementary-course (not CS1), which is suitable for learning some basics of Computer Science. This course is sometimes called Computational Thinking. It is commonly called CS0 (Computer Science Zero.) The undergraduate Computer Science program does not require students to take CS0. That is, CS0 is not a mandatory course for Computer Science students.
A Computer Science Department generally designs the CS0 course with content from problem-solving and programming. The course also contains the history of Computer Science and how computers work. CS0 is a great early stage course that counts toward any undergraduate program as a free elective. If you are not in Computer Science and if you would like to know about programming without diving too much into the details, we think, CS0 is an excellent course for you.
Idea 3: Minor in Computer Science
If you are in any discipline that does not require exposure to programming languages and if you are super-eager to include Computer Science expertise in your list of skills, a minor in Computer Science is probably right for you. When you do a minor in Computer Science, you make sure to complete three or four Computer Science courses that the Computer Science Department of your university has listed as required for a minor in CS.
Please make sure to speak with the Computer Science Undergraduate Program Director if you have any question. Different Computer Science Departments have different requirements for a minor. We would suggest not to delay the graduation more than a semester for a minor. If at all possible, we suggest you go for summer courses to make sure you graduate on time.
If you are an early-stage college student, you can plan well right now to go for a minor in Computer Science. One good thing is that at least one of the additional courses will count as a free elective in your major program. One caveat is, if one of the Computer Science courses required for the minor has a non-computer Science prerequisite, you might have to complete that prerequisite first.
If you plan for a Computer Science minor, plan for it early because usually, you will not be able to enroll in more than one Computer Science course in a semester for your CS minor. The required Computer Science courses for a CS minor generally spread throughout three to four semesters because some courses are prerequisites of others.
What else should a beginner know about programming
Programming is an excellent skill to achieve and master. We believe that anyone can learn to code and gain programming skill. Programming is a great tool to address one’s computational needs. That said, one cannot master the skill without passion and hard work. Be prepared to go through the frustration when you are learning to code. No one learns the first programming language without obstacles. Have patience and face the challenges. Practice makes women and men perfect in programming. 🤓
Written by Dr. Monika Akbar and Dr. Mahmud Shahriar Hossain