sreda, 6. januar 2016

Reasons why studying computer science

Transitioning into my sophomore year, this summer has given me a lot of time to think and reflect upon my experiences towards majoring in Computer Science. I feel that it was extremely different from the way it's commonly portrayed in the media, or even of how I expected it to be. So here are the six realities of being a computer science major:
1. Chances are, it will be peer/family driven. Personally, my brother was the one who encouraged me to take a computer science class. I had tried to learn how to code before, but was so unsuccessful that I couldn't even set up the development environment. Even though he dropped out of his intro CS class, he told me that I could do it and that the field needed more women engineers like me. Through his faith in me, I took a web development course and jumped on the intro CS track at Stanford, and have stuck on the CS train ever since.
2. You will feel like God. The number one thing that attracts me to a CS major is the fact that I a) build stuff that stays around forever (who said that the internet being written in ink is a bad deal?) b) have it be accessible to so many people and c) it's like teaching a really stupid baby to do something. Mehran Sahami, a really famous and one of my awesome CS professors, told us on the first day of class that computers are really dumb, but are really good at following instructions. Almost too good, to the point they do everything to the letter. If you can talk to the computer in it's language, and make it do what you want it to do, then you're golden.
3. Suddenly, everything needs to be decomposed. My problem solving skills have become immensely better after becoming a computer science major. In fact, now everything I think of as a problem. Running late this morning? I break the problem down: what is going to take the most time, and how can I effectively cut corners to avoid wasting time? My parents often rely on me to fix anything technologically related (television, phones, you name it). I approach every issue as a software problem: what could be wrong? Look for the symptoms of the problem, see where it shows up. Understand the system, what could be causing it. And then usually, I can get the solution.
4. It's easy to give up. It's easy to give up and say, oh, who cares, someone else will code it for me. Another one of my awesome CS Professors, Eric Roberts, showed us on the first day of my second introductory class that even if Stanford graduated all of its students as CS majors, and the Valley hired all of them, they'd still need more people to fill the jobs. It's not surprising that software is where the jobs are, and even working for eBay, talent is one thing that the company is aggressively looking for. You can give up, but what about what could be? Maybe you could code the next app
5. Experimentation is key. Learning CS involves experimentation. You have to mess around with the code, really get into it. Sometimes it means that you'll break something that was already working. But the great thing is that in return, you get to learn something new, sometimes something that isn't even documented or fixed. This definitely happens to me at work everyday. Sometimes I feel like taking the lazy approach and just going back to the old ways of doing things, but trust me, it's definitely a lot better to just play around with it.
6. You'll doubt it everyday. Being a CS major is hard, which is probably why so many people don't do it. You'll doubt everyday whether you're meant for it, and will want to give up. You'll see kids doing it since they were two years old and will think, "Damn, why do I even bother trying?" You'll fail programming interviews/exams, and will ponder this question (personal experience here). The truth is, no one talks about how hard it is because they don't want to think about it. Even now, a year later, I'm still doubting my decision to major in CS or software engineering. I had these doubts the day I set foot in my first, second, and third CS class to every exam I took to the first day of my internship to days when I don't push code to Github. But the truth is, it's OK to doubt yourself, as long as it doesn't hold you back. You don't think you're the best? Of course you're not! Don't be afraid of it, you won't get anywhere unless you try.
So if you're someone who's contemplating computer science, or someone who's afraid: stop, and just do it. Forget the boys who tell you that you can't do it, forget all the haters who are jealous of your zeal. Code. If it's broken, if you get a segmentation fault or Java exception, go fix it. Chances are if you just assume that you're not meant for it, you'll never be able to feel the thrill of getting something to work (even if it is just "Hello World"), all because you're stopping you.

Computer science possible career paths

Let us consider what is involved in a career path in each area.
  • Career Path 1: Designing and implementing software. This refers to the work of software development which has grown to include aspects of web development, interface design, security issues, mobile computing, and so on. This is the career path that the majority of computer science graduates follow. While a bachelor’s degree is generally sufficient for entry into this kind of career, many software professionals return to school to obtain a terminal master’s degree. (Rarely is a doctorate involved.) Career opportunities occur in a wide variety of settings including large or small software companies, large or small computer services companies, and large organizations of all kinds (industry, government, banking, healthcare, etc.). Degree programs in software engineering also educate students for this career path.
  • Career Path 2: Devising new ways to use computers. This refers to innovation in the application of computer technology. A career path in this area can involve advanced graduate work, followed by a position in a research university or industrial research and development laboratory; it can involve entrepreneurial activity such as was evident during the dot-com boom of the 1990s; or it can involve a combination of the two.
  • Career Path 3: Developing effective ways to solve computing problems. This refers to the application or development of computer science theory and knowledge of algorithms to ensure the best possible solutions for computationally intensive problems. As a practical matter, a career path in the development of new computer science theory typically requires graduate work to the Ph.D. level, followed by a position in a research university or an industrial research and development laboratory.
  • Career Path 4: Planning and managing organizational technology infrastructure. This is the type of work for which the new information technology (IT) programs explicitly aim to educate students.
Career paths 2 and 3 are undenably in the domain of computer science graduates. Career paths 1 and 4 have spawned the new majors in software engineering and information technology, respectively, and information systems graduates often follow Career path 1, too. Computer scientists continue to fill these positions, but programs in software engineering, information technology, and information systems offer alternative paths to these careers.
























What is computer science

Computer Science is the study of computers and computational systems. Unlike electrical and computer engineers, computer scientists deal mostly with software and software systems; this includes their theory, design, development, and application.
Principal areas of study within Computer Science include artificial intelligence, computer systems and networks, security, database systems, human computer interaction, vision and graphics, numerical analysis, programming languages, software engineering, bioinformatics and theory of computing.
Although knowing how to program is essential to the study of computer science, it is only one element of the field. Computer scientists design and analyze algorithms to solve programs and study the performance of computer hardware and software. The problems that computer scientists encounter range from the abstract-- determining what problems can be solved with computers and the complexity of the algorithms that solve them – to the tangible – designing applications that perform well on handheld devices, that are easy to use, and that uphold security measures.
Graduates of University of Maryland’s Computer Science Department are lifetime learners; they are able to adapt quickly with this challenging field.