There is a wide range of career opportunities in industry and at the graduate level in Computer Science. While there are many different types of jobs available, this should provide you with a better idea of what types of jobs exists and which one may be of interest to you. Most of the areas listed involve varying degrees of programming.
Depending on the type of application and its size there are a number of different types of development tasks. These include:
- System Requirement Specification - Probably the most critical step, deciding exactly what the application is suppose to do. The application may be very well design and built, but if it doesn't do what the end user needs then it can be useless.
- Analysis and Design - Here the overall design of the application is established. Analysis is concerned primarily with what a system is suppose to do. A high level understanding of an application is needed before a good design can be created.
- Programming - The actual writing of code.
- Testing - For all but the simplest of application this is a critical part of a successful project. Testing is performed at a number of levels and can involve very sophisticated hardware for many embedded applications.
- Software Configuration Management - An ongoing process that ensures that a complicated application can be managed and maintained
Areas of Interest
- Embedded Programming - These type of applications typically do not have a traditional Graphical User Interface (GUI). Examples include the software found in automobile cruise control systems, digital clocks, nuclear reactor control, flight control systems, robotics and many other applications.
- Database Administrator (DBA) - Many applications are built around a database. The actual structure of a database will have a significant impact on how a program is written that accesses that database. The DBA is the person that that designs and maintains these databases.
- System Analyst - A broad term that speaks to a developer that is involved with the requirement specification, analysis and design of an application. The application can be of almost any type.
- Network - Networking is a critical part of almost any application today. The hardware is glued together using network software. Often this can be quite detailed oriented.
- Artificial Intelligence (AI) - This field attempts to create applications that perform intelligent behavior. While it is still largely a research area there are some AI applications in use today.
- Graphics and Animation - This specialized field is concern with GUI interfaces that involve heavy use of graphics and animation. This can include gaming software, web based applications and various analysis software used in may disciplines.
- Gaming - This a growing field as the demand for entertainment software increases. Not only is graphics normally an important aspect of this discipline but optimization of the underlying platform and even a bit of AI is needed.
- Web Development - A large and growing application area. The field covers a large number of sub-disciplines from client server development to animation. Being relatively new, the underlying technologies continue to change and evolve.
- Geographic Analysis - The field looks at the analysis of geographical data. A surprising number of industries and communities hire programmers to assist in this activity.
- Operating System Development - Another specialized area which is concerned with the development and maintenance of operating systems. Most operating systems are very large and undergo a lot of maintenance. In addition, there are hundreds of specialized operating systems used in a variety of other areas.
- Compiler Construction - While programmer is a the heart of all applications, a compiler is needed to translate the program into the language understood by the computer. The compiler fills this function. There are dozens of languages in use today and frequently more than one compiler and set of tools that supports a language.
A B.S. degree can provide a good foundation in computer science. However, many people decide to pursue a Master of Computer Science or a Doctor of Philosophy in Computer Science degree. Not only do they achieve a broader and more in-depth understanding of computers and software development, they frequently increase their marketability. A masters typically involves one or two more years in school while a Ph.D. can take an additional 3 to 6 years to complete. Most research and university positions require a post graduate degree, often a terminal degree (Ph.D.)