Explore Computer Science

Computer and information technology impacts many areas of our daily lives from downloading a song to driving a car. Because many of our daily tasks involve the use of technology, computer scientists can be found in nearly all professional sectors, including big technology firms, government agencies, startups, nonprofits, and local businesses, both large and small. Computer science majors possess a broad variety of skills that make them valuable to all businesses and there is an increasing need for industry to have knowledgeable computer professionals.

At the heart of the computer scientist is a passion to benefit society by solving problems through computer and information technology. They conceive, design, and test logical structures for solving problems by computer and find ways to do so by designing applications and writing software to make computers do new things or accomplish tasks more efficiently. This may include, creating applications for mobile devices, writing web-based applications to power e-commerce and social networking sites, developing large enterprise systems for financial institutions, creating control software for robots, programming the next blockbuster video game, or identifying genes for the next biotech breakthrough.

All of these advancements may involve writing detailed instructions that list the order of steps a computer must follow to accomplish a necessary function, developing methods for computerizing business and scientific tasks, maximizing efficiency of computer systems already in use, or enhancing or building immersive systems so people are better able to socialize and interact with technology

Computer scientists often work on a more abstract level than other computer professionals. Positions are not limited to traditional technology fields either. More and more computer science is becoming necessary in every job category, while the computer technology industry is emerging as a new creative field.

*Salary and Career Outcomes gathered from the 2020-2021 CSE Graduation Survey. Post-graduation outcomes reflect the percentage of students who were employed full-time in their field or were enrolled in a graduate program at 6 months post-graduation.

CSci Career Prospects. Average Starting Salary: $83,581; Post-Graduation Outcomes: Employed 75.2%, Graduate School 21.2%, Other 3.6%

Expand all

What can I do with a major in Computer Science?

INDUSTRIES

  • Aerospace
  • Automotive manufacturing
  • Communication
  • Computer-aided design
  • Consulting
  • Digital communications
  • Electrical hardware
  • Environmental agencies
  • Factory automation
  • Federal safety agencies
  • Finance
  • Hardware design
  • Healthcare
  • High speed computing
  • Industrial/food products
  • Information management
  • Insurance
  • Manufacturing
  • Medical technology
  • Product development
  • Software development
  • Systems consulting
  • Technology   
  • Telecommunications

EMPLOYERS

  • Amazon
  • Apple, Inc.
  • Best Buy
  • Cognizant Technology Solutions
  • Cray
  • Epic Systems
  • Facebook
  • Fast Enterprises
  • General Dynamics Mission Systems
  • Google
  • IBM
  • Infinite Campus
  • Medtronic
  • Microsoft
  • National Instruments
  • Open Systems International
  • Target Corporation
  • Thomson Reuters
  • TripAdvisor
  • Unisys
  • UnitedHealth Group/Optum
  • Wells Fargo

TECHNICAL SKILLS

  • Agile
  • C#
  • C++
  • CSS
  • Eclipse
  • Excel
  • GUI
  • GWT
  • HTML
  • Java
  • JBehave
  • Linux
  • Mac OS
  • Mathematica
  • MATLAB
  • Microsoft SQL
  • MotionLab
  • NetBeans
  • Scheme
  • Scrum
  • Server
  • SQL
  • Subversion
  • Test Driven Development
  • UML
  • Unix
  • Visual Basic
  • Windows

POSSIBLE POSITIONS

  • Application developer: Develop, create, and modify general computer applications software or specialized utility programs. Design software or customize software for client use with the aim of optimizing operational efficiency.
  • Computer programmer: Write and test code that allows computer applications and software programs to function and turn program designs created by software developers into instructions a computer can follow.
  • Computer support specialist: Provides technical assistance to computer system users in person, via phone or from remote location. They provide assistance concerning the use of computer hardware and software.
  • Computer systems analyst: Study an organization’s current computer systems and procedures and design information systems solutions to help the organization operate more efficiently and effectively. They bring business and information technology (IT) together by understanding the needs and limitations of both.
  • Database administrator (DBAs): Use specialized software to store and organize data, such as financial information and customer shipping records. Ensure that data are available to users and are secure from unauthorized access.
  • Information security analyst: Plan and carry out security measures to protect an organization’s computer networks and systems. Their responsibilities are continually expanding as the number of cyberattacks increases.
  • Software developer: Develop computer program and applications that allow people to do specific tasks on a computer or another device. Others develop the underlying systems that run the devices or that control networks.
  • Web developer/engineer: Design, create, and modify Web sites. Analyze user needs to implement Web site content, graphics, performance, and capacity. May integrate Web sites with other computer applications.

**Some of these positions may require an advanced degree.

GET INVOLVED

  • Active Energy Club
  • Association for Computing Machinery
  • Association for Computing Machinery for Women
  • CSE K-12 Outreach
  • CSE Ambassadors
  • CSE International Ambassadors
  • Engineers Without Borders
  • Girls Who Code Volunteers
  • National Society of Black Engineers
  • Plumb Bob Honorary Leadership Society
  • Science and Engineering Student Board
  • Society of Asian Scientists and Engineers
  • Society of Hispanic Professional Engineers
  • Society of Women Engineers
  • Solar Vehicle Project
  • Tau Beta Pi
  • TeslaWorks
  • Theta Tau

Q&A with Ryan Zoeller, National Instruments, Software Engineer

What do you do?

My responsibilities include:

  • Maintaining and improving support for hardware-in-the-loop test software, including developing real-time software targeting Linux RT
  • Application software development for Windows using C# and WPF
  • Improving automated testing for existing software targeting Linux RT and other real-time operating systems

What’s a typical work day? 

I work independently on software development and testing projects in areas being newly explored by the company. I collaborate with other engineers for code-reviews and brainstorming improvements to existing solutions. Plus, I periodically sync up with project managers on development status and feedback from marketing and systems engineers on customer needs.

What qualities are important for this position?

  • Ability to work both independently and collaboratively, especially in areas where little existing knowledge exists among team-members.
  • Critical thinking and willingness to find root-cause of problems.
  • Willingness to interact with people across multiple divisions of the company and outside your area of expertise.

What about technical skills?

  • Multilingual knowledge of programming languages, especially including a willingness to learn new languages and the paradigms considered idiomatic to them.
  • Ability to critically evaluate your own work and the code delivered by others.
  • High-level understanding of different operating-systems and digital hardware.

What training were you offered for your position?

New employees are all given a week-long training on National Instruments’ (NI) software and hardware. Beyond that, NI pushes continuous learning and training including an annual R&D-wide multi-day conference where engineers can present to their peers on topics of their choice. We are encouraged to participate in learning through book-clubs where teams read and discuss topical books such as CLR through C# and Clean Code.

What part of your job is most satisfying?

Working in areas being newly explored by the company where I can make tangible change and directly impact customers.

Most challenging? 

The area I am working in is relatively new and generally not well established. I am sometimes the first person in the team to work on a problem, and I am responsible for becoming the subject matter expert so that I can share that knowledge with others.

What are your possible career paths now?

Software engineers typically move upwards along a track, which keeps them programming, meaning that employees do not have to take on management responsibilities if they would prefer not to. Opportunities are available however for developers to take on roles as scrum masters, project managers, and product support engineers who interface more directly with customers.

Advice for current students?

Don't stop your education when class ends. There are opportunities all around you to not only further your education and develop your technical skills, but also to network and meet contacts who will help you post-academia.

Any other advice you’d like to share?

Internships are an excellent opportunity to try something you might not normally do. I moved to Austin, Texas (it’s really hot and doesn’t snow, if you're into that) following my sophomore year for an internship with NI, and ultimately ended up at the company full-time. If you don’t end up enjoying an internship, you have an easy exit strategy. So, take advantage of that and be adventurous.

Q&A with Brent Miller, Integration Engineering Manager, Ivanti

What do you do?

What do you do?

Software development manager; product integrator, Scrum Product Owner

What’s a typical work day? 

The mornings are usually catching up on individual work and Webex meetings with our European coworkers. The afternoons resume with meetings and more individual work. 

What qualities are important for this position?

Being able to communicate complex technical problems is probably the most important part of my job. Understanding requirements from Product Management and making those ideas in to functioning software is my goal. To achieve that, learning depth about many different concepts is required. Self-directed learning plus communicating are equally valuable.

What about technical skills? 

Knowledge of software construction, architectures, computability theory, and end-user experience. To do my job well, I have to see the entire software ecosystem from all sides.

What training were you offered for your position? 

Conferences, in-office training from Agile/Scrum coaches, online self-directed learning. I was also fortunate enough to attend a mini 5-day MBA Essentials course at Carlson School of Management a few years ago.

What part of your job is most satisfying?

The travel and face-to-face collaboration with our other offices and teams. 

Most challenging? 

Managing all of the different requirements, wants, desires, and demands from all parts of the business. There is never enough time or people to do everything. My role is about balance every need and executing tasks in priority order.

What are your possible career paths now?

CTO, and everything in between, if I'm up for it. CEO could be possible, but I might favor staying on the technical side of a business.

Advice for current students?

Computer science is a fantastic major. Think of it as a "professional problem solving" degree. You learn how to break down problems and solve simpler parts. Learning to program isn't the goal of this major, so don't focus on that too much. Good coding skills come once you have a job. 

Any other advice you'd like to share?

Being able to communicate technical things is more important than being able to program or do technical things.

Q&A with Josh Fehrmann, Director, Clinical Trial Management System and Clinical and Translational Science Institute, University of Minnesota

What do you do?

I’m a supervisor (manage staff), project manager (oversee multiple projects to support clinical research), and business analyst (collaborating with different users, including IT staff, product vendors, and other stake holders in the research and medical field)

What’s a typical work day? 

Methodically advance projects, align technical priorities with business strategy, work with about 10 fulltime staff in addition to leading multiple cross-functional workgroups through various projects. I also oversee security of private data, manage requests, plan new projects, and provide support for our world-class researchers in any way I can.

What qualities are important for this position?

Adaptability, willingness to learn something new routinely, patience, collaborative mind set, ability to create novel solutions, and respect for research.

What about technical skills? 

Understanding development methodologies, testing, QA best practices, Business Analysis techniques, SQL, and IT security.

What training were you offered for your position? 

Certifications for our Clinical Trial Management System, project management, business analysis, management practices, and organization development.

What part of your job is most satisfying?

Accomplishing tasks that help researchers and their staff.

Most challenging?

Meeting resource-intense business needs with minimal staff.

What are your possible career paths now?

Research IT director

Advice for current students?

Consider how you could potentially use what you learn to improve the world we live in.

Any other advice you'd like to share?

Always keep an eye and ear open to what is coming around the corner.

Q&A with Ramith Jayatilleka, Software Development Engineer, Amazon Inc.

What do you do?

Designing and programming distributed software systems

What’s a typical work day? 

Writing code, reviewing code, mentoring, designing better solutions, having fun

What qualities are important for this position?

Deep understanding of how computers tick, can take criticism well, can give criticism well, passion for solving problems

What about technical skills? 

Distributed systems, programming, writing, AWS

What training were you offered for your position? 

CS major, internal tech talks, internal classes, textbooks

What part of your job is most satisfying?

Teaching others new methods of approaching problems

Most challenging?

Circumventing bad management 

What are your possible career paths now?

Technical lead, independent engineering advisor, architect, software manager, technical project manager

Advice for current students?

Explore programming on your own or with friends. If you find joy in building things, you'll thrive.

Any other advice you'd like to share?

Tesla Works is a great student organization at the University of Minnesota that works on multiple projects that need programmers.

Q&A with Mason O’Neil, Architect, C.H. Robinson

What do you do?

Design the software architecture and direction of our Navisphere Carrier product line (websites and mobile apps). Work with our product owners and delivery leads to coordinate which developers work on which tasks and in what order. Influencing the future of the product's features and infrastructure.

What’s a typical work day? 

A variety of meetings discussing the future of the product, design future software solutions, support the other engineers with any questions, and write code whenever I can.

What qualities are important for this position?

You need to be able to work with people. You need to be able to inspire leadership and influence over a group of engineers. In my specific role, I also need to be able to stay organized while multi-tasking. Often times, you will be challenged to move from one meeting discussing a future project to a meeting discussing a current project. Then when you get back to your desk, there will be a line of developers with questions about their current tasks. Staying focused and being able to multitask is huge.

What about technical skills? 

In my position, I need to be technically proficient in a variety of different programming languages and software design patterns. Ideally, you would be the expert in every or most of the technologies your product uses.

What training were you offered for your position? 

Periodic in-person courses and unlimited online courses

What part of your job is most satisfying?

Making sense out of all the chaos of a large team with a large/diverse product. Finding the balance of every developers strengths, areas they wish to improve on and weaknesses against the balance of delivering a great product in a sufficient timeline. Nothing is more satisfying than putting the right puzzle pieces together and in the most efficient way possible. 

Most challenging?

The diversity of programming languages you need to be proficient with and the lack of day hours you have to write code in those languages.

What are your possible career paths now?

Enterprise Architect, which is a manager of architects, who sets technical direction for a department instead of a given product line. From there IT director, which manages Enterprise architects, as well as other IT manager, and then possibly CTO/CIO

Advice for current students?

Do it! If you are interested in creating software, problem solving, working together as a team and/or building incredible technologies the average person doesn't understand, then computer science is a great platform for that. It also pays extremely well! 

Any other advice you'd like to share?

Hangout with your classmates outside of class! Even if you are partnered with those people for just a month-long project, getting some food and being able to decompress and laugh outside of the computer lab will go miles towards the relationships you will build with these people over your time at the University of Minnesota.

Q&A with Michael Black, Software Engineer, Target

What do you do?

Design, develop, and support modern applications that support Target's e-commerce platform and in-store operations. 

What’s a typical work day? 

Most days, I spend developing features for the projects I'm currently working on, with some meetings scattered intermittently. When I'm working on more complex or largely scoped features, I tend to have more meetings with engineers and product owners to completely understand the feature and discuss the details.

What qualities are important for this position?

Being open-minded and accepting that you will always have much to learn is huge. This will allow you to effectively listen to others, build professional relationships, and continuously develop your own skillset.

What about technical skills? 

The ability to write good code is very important. 

What training were you offered for your position? 

I went through a 15-month rotational program called the Technology Leadership Program.

What part of your job is most satisfying?

When my software impacts the lives of guests shopping at Target. 

Most challenging? 

Learning how to have constructive arguments with someone who has a very different understanding and opinion from you.

What are your possible career paths now?

As I advance in my career, I'll have the opportunity to gain more responsibility over a larger scope of projects. Depending on how my soft skills develop, I could also pursue a career in engineering management.

Advice for current students?

Pursue whatever your interests or passions are, and learn to love learning.

Q&A with Alex Detrick, Senior Software Engineer, Grubhub

What do you do?

My work includes: reviewing code, implementing features, gathering requirements for new features, proposing new software architecture designs to directors and team leads, ensuring successful deployments, testing all features (unit tests, integration tests, functional tests, load tests), monitoring systems in production, and being "on call" every 6 weeks to be paged if systems go down (even at 3 a.m.!)

What is a typical day like?

I have a lot of autonomy in what my day-to-day schedule looks like. So my typical day is mainly focused around completing the work that our team committed to business stakeholders to get done for that week. Individually each engineer on the team completes tasks, but as a whole our goal is to commit to a set of work on Monday and complete them by Friday. If we do, we get donuts!

What personal qualities or abilities are important to being successful in this position? 

Teamwork. Nothing about a software engineer can be done in isolation. Even if you have the best idea if you can't convince others that it is a good idea, it won't go anywhere.

Communication. This comes in two forms. First of all, it is important to be available and responsive to people. This means making sure to regularly check email and Slack chats. It also means giving thoughtful and full response when people ask for something. When people have to ask clarifying questions or you didn't answer their question at all, the time it takes to get answers increases and that could delay critical work. Especially when this communication goes across teams.

Adaptiveness to change. We are constantly reflecting on our processes, practices, and tools. Nothing is guaranteed to be true for ever. In order to stay competitive it is important to be aware of the changing environment and adapt. This means that not only is the willingness to change important, but so is the ability to bring change, which is even harder.

What technical skills are important to being successful in your job?

At a high level: Knowledge of building scalable web solutions (SQL and NoSQL best practices); Debugging distributed systems; Writing code that can be tested and monitored; Critically review and constructively comment on code changes; Seek to automate any manual tasks 

We use many of these tools to achieve the above: Languages (Java, Scala, Groovy); Frameworks & Libraries (Spring, Gatling, Lombok, JUni); Monitoring & Debugging (Datadog, Pagerduty, Splunk); Source control (Git, Stash); Processes & Tools (Agile, JIRA); Build Tools (Gradle, Jenkins); Databases (Cassandra, MySQL); Deployments (Docker, Spinnaker, Virtual Machines)

What part of your job is most satisfying?

I feel very satisfied after solving a problem. This can show up in many different ways. Sometimes it is as simple as implementing a new feature and writing testable and easy to read code that the team approves with no comments. It can also mean solving tracking down the cause of a bug in production and getting a fix out when the pressure is high. I often find that enabling someone else to solve their problems is even more rewarding than solving one yourself, so teaching and mentoring also comes into play.

What part of your job do you find most challenging? 

Working with business to implement effective solutions. Conversations between business and technology stakeholders often bring more friction than technology to technology stakeholder conversations. Making sure that we are spending the right amount of time and effort to solve a problem that business has is non-trivial.

Sometimes the business has a big ask that could take months to complete and we need to make sure that an appropriate technology solution is applied. Sometimes this means doing all the work that was requested, other times it means working on smaller iterative solutions so we learn faster and make sure we are building the correct thing.

What type of training was offered for your position?

No formal training was offered for my position. Much of the training happens on the job. Grubhub does have a learning allowance that can be used for books, online courses, or conferences.

What are possible career paths or promotional opportunities? 

From my position, people usually have three options. The first, is to just stay as a Senior Engineer. The second, is to become a Team Lead. As a Team Lead, your responsibilities shift from coding and implementing solutions, to working with your team to make sure they are all performing at their best. The third, is to become a Technical Lead or Principal Engineer. This role has the same set of responsibilities as a Senior Software Engineer, but they are leaned on much more for technical decisions, both large and small. Those who want more responsibility but still want to stay directly involved in technical solutions choose this path.

Regardless of the path you choose, you can still go up the ladder to Director, VP, then Executive.

Advice for current students?

The education I received through this program was incredibly valuable in increasing my perspective on the field. Before this program I felt very isolated since I had only had a few jobs and hadn't built up a strong network of engineers to discuss problems and topics with. Afterwards, I felt more aware of the field of software engineering as a whole and it has made me a more humble engineer.

If you would like to increase your perspective and skills on software engineering, I would highly recommend this University of Minnesota major as a complement to your industry work.