Studying Information Technology
A student asked me: “Is it possible to learn Computer Science, even if I do not like to write code? I know that computer science is the field of study that can help me to get a good job. But I am afraid that I may not do well with coding.”
Answer: Can you calculate how much money you have left in your bank after you spend $25 in a restaurant? Of course, you do because you know arithmetic. When you learn addition, subtraction, multiplication and division in school, do you have to like arithmetic? Maybe and maybe not, but you still have to learn it because it is a necessity.
Just like arithmetic, coding is a language designed to give instructions to a computer. In Computer Science, you learn about theories of the computer, but to use them, you need to know the programming languages so you can tell the computer to do things for you. Do you have to “like” writing code? Not necessary, but you still have to learn coding to communicate with a computer.
Regarding the study of Information Technology (i.e., Computer Science, Software Engineering and Information System Management), students are often dividing into two groups; the first group considers it is very hard, and even you get a job in this field, you have to work hard. If you agree with it, you may not select technology in college. The second group thinks technology is not difficult, as long as you put in the efforts, and develop the skills, you will get a good job.
Why do students think information technology is difficult? I think the reason is in studying technology; you must develop a different way of learning. You cannot memorize facts to pass exams; you cannot cram before the exam, but you learn how to give instructions to a computer so it can do things for you. Therefore, to study technology, you must “learn by doing” and if you are not familiar with this method, you may find it difficult.
The question is: “Do you have to write code?” Of course, you do need to write code but how much is depending on the job, as some require more than others. Technology changes quickly, so are programming languages. The best way to learn programming languages is to practice writing a few lines of code at a time; from simple instructions to more complex algorithms. Remember that you must “learn by doing” and do not try to memorize things. To be good at programming, you must practice by making mistakes; you will make a lot of mistakes and learn from them until you no longer making mistakes. By that time, you are very good at programming.
After learning programming skills, you also need to learn about data structures and algorithms. You will need to design algorithms using programming languages. You should know about “hash tables”; “linked lists”; “trees”; “binary search trees”; and both directed and undirected graphs. To be a good computer scientist or software engineer, you need to understand computer architecture from the lowest level, such as a transistor, integrated circuits, flip flops, caches, up to the memory, control units, RAM, CPU, and GPU. (Note: An understanding of the GPU model of high-performance computing will be important as soon most computer will use GPU in the future.)
Today, most Information Technology programs always consist of a course in computer security. The fact is the majority of security vulnerabilities come from bad code because many schools do not provide good training in programming and many students do not know how to secure their code. A good IT training program must teach students to write defensive programming; students must understand how to secure their code.
Students often asked me: “Do you have to be good at mathematics to learn technology?” I told them that the foundation of information technology is mathematics (i.e., arithmetics, linear algebra, calculus, differential equations, statistics, and probability.) They do not have to be “very good” in maths, but they need to understand it well enough to advance their career. However, information technology is not about just technical skills but also soft skills. But these skills are not something students can learn in a single class but developing over time. To develop these skills, students need to participate in class discussions, team presentations and learn how to debate their view in class. In my opinion, the Active learning method is a better way to learn technology.
To succeed in any career, you need to be self-motivated. There is no easy career or easy way to develop skills. If you have no motivation or ambition but want something easy, then you will waste time in college, and your career may not be as bright as you wish. Your motivation to succeed has to come from within; you have to put in the effort, the time and willing to learn from your mistakes. There is no career too difficult but there is the fear of difficult thing. If other students can study technology, so can you. You do not have to like coding, but you still can learn to write code. You do not have to like arithmetics, but you can learn arithmetics because it is a necessity. Do not waste time looking for an easy way to get a good job. There are a lot of students who are looking for that easy way and most have regretted later after they have a degree but no job. Today and in the near future, most jobs will use technology, and having technology skills is becoming a necessity.
- Blogs of Prof. John Vu, Carnegie Mellon University