Common employers are IT consultancies and IT service providers. However, as most businesses rely on computers to function effectively, there are also opportunities within the IT departments of major organisations in sectors such as:.
Another option is to set up your own business, providing IT services such as web design and consultancy. Find information on employers in information technology and other job sectors. Computing degrees combine theoretical study and practical projects, teaching you subject-specific skills including:. You'll learn how to specify, design and construct computer-based systems, evaluate and recognise potential risks and design creative solutions.
Continuing professional development CPD is especially important when you're working with computers as technology and software develops at such a rapid pace. You may choose to continue your studies at postgraduate level, studying a computer science subject in greater detail through an MSc or PhD. Further study is essential for a career in academia and can be useful for a range of other careers, for example, developing new technologies and products.
You could also complete a teaching qualification in order to teach IT in secondary schools. Find out more about teacher training options. So they are all important to someone in the world. I am writing from my perspective and from the viewpoint of someone who chose the career path of a mobile developer. This was the meat of everything that I learned and got me going with programming. These were the classes where you learned to program.
Before I took these classes, I had barely even programmed at all. And we worked ourselves all the way up to creating our own text-based battle game. Looking back at the code I wrote makes me embarrassed. I have come a long way since then. So what did I learn here? I want to say everything. I learned if statements, loops, boolean logic, class creation, struct creation, creating interfaces, polymorphism, inheritance and more.
There was also some use of basic data structures like arrays and vectors. This class was added to the transcript to get people used to boolean logic. Which we had down in the first two weeks of the class. Unfortunately for us, unsuspecting students, it goes pretty far down the rabbit hole. Now, these are all useful things to know.
But the issue is that students were encouraged to take this class early. Usually alongside Progamming I and II.
And these are some advanced topics. I would struggle now to use mathematical methods of proof. And I remember I really struggled back then. I now know that logic, set and set operations, recursive definitions and graph theory can be useful. But that is only with the hindsight of being a programmer for a few years.
What I apply daily in my current career is logic and maybe set operations. Recursive definitions and graph theory have really only been helpful for interviews. But take this with a grain of salt because I am a mobile developer. A back end dev would probably find graph theory very useful. This class was good. Very good. Data structures are used all over computer programming and are the backbone of most of the code people write. They allow us to store data in a way that is useful to the programs we write.
The ability to look at data and know the best way to store it for time and space performance is a very useful skill to have. I learned about arrays, stacks, linked lists, doubly linked lists, trees, graphs, heaps and all the different flavors of these data structures like self-balancing trees.
This class not only helped me understand data structures but also helped me to better organize the data that I was storing. This class was done in C which made it even more interesting. C can be very finicky but also very powerful if used correctly. I had to be very careful with how I allocated and cleaned up memory which was also very good for teaching about memory management.
There were so many useful things in this class that it is hard to cover all of them. If you are shaky on data structures, then start brushing up on some basics because they are very important. This class was somewhat useful. Algorithms are useful. They drive the best software in the world and make them powerful enough to stay relevant in the modern world. But this class had some issues. The most useful part of this was learning Big O notation. Computer scientists will find themselves working with engineers.
Recommended reading Calculus by Spivak. The Unix philosophy Computer scientists should be comfortable with and practiced in the Unix philosophy of computing. Specific recommendations Given the prevalence of Unix systems, computer scientists today should be fluent in basic Unix, including the ability to: navigate and manipulate the filesystem; compose processes with pipes; comfortably edit a file with emacs and vim ; create, modify and execute a Makefile for a software project; write simple shell scripts.
Thus, it's best to challenge students to complete useful tasks for which Unix has a comparative advantage, such as: Find the five folders in a given directory consuming the most space.
Report duplicate MP3s by file contents, not file name on a computer. Take a list of names whose first and last names have been lower-cased, and properly recapitalize them. Find all words in English that have x as their second letter, and n as their second-to-last. Directly route your microphone input over the network to another computer's speaker. Replace all spaces in a filename with underscore for a given directory.
Report the last ten errant accesses to the web server coming from a specific IP address. Linux Server Hacks.
The single Unix specification. Systems administration Some computer scientists sneer at systems administration as an "IT" task.
This is true. In theory. Specific recommendations Every modern computer scientist should be able to: Install and administer a Linux distribution. Configure and compile the Linux kernel. Troubleshoot a connection with dig , ping and traceroute. Compile and configure a web server like apache. Compile and configure a DNS daemon like bind. Maintain a web site with a text editor. Cut and crimp a network cable. Programming languages Programming languages rise and fall with the solar cycle.
A programmer's career should not. Racket Racket, as a full-featured dialect of Lisp, has an aggressively simple syntax.
For a small fraction of students, this syntax is an impediment. If taught correctly, Lisp liberates. The Racket Docs. C remains without rival in programming embedded systems.
JavaScript JavaScript is a good representative of the semantic model popular in dynamic, higher-order languages such as Python, Ruby and Perl. As the native language of the web, its pragmatic advantages are unique. Squeak Squeak is a modern dialect of Smalltalk, purest of object-oriented languages. It imparts the essence of "object-oriented.
Recommended reading Effective Java by Bloch. Prolog Though niche in application, logic programming is an alternate paradigm for computational thinking. Recommended reading Learn Prolog Now! Another tutorial. Scala Scala is a well-designed fusion of functional and object-oriented programming languages. Programming Scala by Wampler and Payne. Haskell Haskell is the crown jewel of the Hindley-Milner family of languages. Recommended reading Learn You a Haskell by Lipovaca. But, since it must be taught, it must be taught in full.
Programming Pearls by Bentley. Assembly Any assembly language will do. Since x86 is popular, it might as well be that.
Specific recommendations Computer scientists should understand generative programming macros ; lexical and dynamic scope; closures; continuations; higher-order functions; dynamic dispatch; subtyping; modules and functors; and monads as semantic concepts distinct from any specific syntax. Lisp in Small Pieces by Queinnec. Discrete mathematics Computer scientists must have a solid grasp of formal logic and of proof. Specific recommendations For computer scientists, it's important to cover reasoning about: trees; graphs; formal languages; and automata.
How To Solve It by Polya. Data structures and algorithms Students should certainly see the common or rare yet unreasonably effective data structures and algorithms. Specific recommendations At a minimum, computer scientists seeking stable long-run employment should know all of the following: hash tables; linked lists; trees; binary search trees; and directed and undirected graphs. Recommended reading CLRS.
Any of the Art of Computer Programming series by Knuth. Theory A grasp of theory is a prerequisite to research in graduate school. Specific recommendations At the undergraduate level, theory should cover at least models of computation and computational complexity. Recommended reading Introduction to the Theory of Computation by Sipser. Computational Complexity by Papadimitriou. Algorithms by Sedgewick and Wayne.
Architecture There is no substitute for a solid understanding of computer architecture. Computer scientists should understand a computer from the transistors up. Specific recommendations A good understanding of caches, buses and hardware memory management is essential to achieving good performance on modern systems. To get a good grasp of machine architecture, students should design and simulate a small CPU. Recommended reading nand2tetris , which constructs a computer from the ground up.
Computer Organization and Design by Patterson and Hennessy. Operating systems Any sufficiently large program eventually becomes an operating system. Specific recommendations It's important for students to get their hands dirty on a real operating system. To get a better understanding of the kernel, students could: print "hello world" during the boot process; design their own scheduler; modify the page-handling policy; and create their own filesystem.
Recommended reading Linux Kernel Development by Love. Ethics: As technology continues to advance—especially with tools like artificial intelligence and machine learning—professionals in this field must develop an understanding of ethics and its impact on computer science.
Critical Thinking: Being able to identify a problem, analyze the details of the situation, and then formulate an effective solution is an incredibly important aspect of computer science work. Attention to Detail: Effective computer scientists must be able to pay close attention to detail, as their work is often complex, demanding, and requires a keen eye. Creative Problem Solving: Solutions to many of the problems computer scientists are tasked with solving are not always obvious, and instead require these individuals to think outside of the box.
Communication: Communication is a key soft skill in most industries , and computer science is no different. Professionals in this field must be able to communicate effectively with their teams , their bosses, and their stakeholders—including using data to tell stories and share insights. Listening : Tied to the need for proper communication skills is a need for computer scientists to be good listeners.
Collaboration: Despite common misconception, computer scientists very rarely work in isolation. In fact, more often than not, they are required to operate as part of a team, either working with other computer scientists to reach a solution or develop a product, or working with other members of a larger business team on a project. Interview Skills When pursuing a new role in any industry, applicants should work to develop their interview skills.
Portfolio Building While computer scientists may not utilize a print or online portfolio to display their work the way professionals in other fields might, it is still important for them to know how to properly share their work in an interview if asked. Networking Networking is a pivotal part of any interview process, no matter the industry.
She has been working in the marketing sector for over 5 years and has experience writing B2B and B2C long-form content for a variety of publications and audiences, as well as short-form social media content for an array of unique brands. Related Articles. How to Become a Computer Forensics Investigator. Artificial Intelligence vs. Did You Know?
0コメント