Computer Science &
Software Engineering

Immerse yourself in computing.

With the small class sizes of a liberal arts school and the rigorous, well-rounded curriculum and premier resources of a dedicated tech school, you’ll have all the advantages you need to excel.

Computer science class in progress

Blending academics, research, and service.

As a Computer Science major, you’ll learn programming and problem-solving techniques. Studying math, databases, computer architecture, programming language structure, and object-oriented design will prepare you to work in database or systems administration, online and mobile development, and more. There’s even the option to complete the degree in three years, getting a jump start on your career.

Interested in collaborating with others to build large software systems? Then Software Engineering is the right major. Explore design, development, requirements engineering, testing, and quality assurance—all skills wanted by companies ranging from local startups to major defense contractors or medical software companies and everything in between.

What You’ll Study

Students begin with foundational math problem-solving and programming classes, before specializing in upper-division courses. Butler’s flexible liberal arts curriculum allows many of our students to add a second major or minor that will give them a marketplace advantage. Popular choices are music, mathematics, media arts, or a foreign language.

An algorithm is a set of instructions, or recipe, for solving a problem. Computer Science is the study of algorithms for solving problems. The core areas of computer science include:

  • Computer Architecture (Hardware): We need computers to run our algorithms.
  • Operating Systems: We need these to make the hardware useable.
  • Programming Languages: We need to express our algorithms in a way the computer can understand them.
  • Algorithm Design and Analysis: We need to create algorithms and analyze them for correctness and efficiency.
  • Theory: We need to understand what algorithms can and cannot do, because there are problems that cannot be solved by any algorithm.

Before taking courses in the core areas of computer science, students at Butler get a solid foundation in mathematical problem solving and programming. They also have the opportunity to take courses in application areas of computer science, such as databases, web and internet programming, computer graphics, cryptography, and so on.

Software Engineering is the study of methods and practices for building and maintaining software systems. Today, commercial software requires large teams of people to build and maintain. Defining the roles of the people on the team, how they should communicate, and the processes they should follow so that the software they create is reliable and effective is a very hard, ongoing research problem. The core areas of software engineering include:

  • Requirements Engineering: We need to specify exactly what the software is supposed to do.
  • Design: We need to know what algorithms to employ, and what data structures and subsystems to use.
  • Development: We need to coordinate a team of programmers to build the software system.
  • Testing and Quality Assurance: We need to we make sure the software matches the requirements.
  • Maintenance and Re-Engineering: We need to repair, adapt, and modify existing systems to keep pace with changing requirements.

There is a perception today that software engineering jobs are all moving overseas. It is true that the development of software from a good design can, and often is, outsourced. But the other areas of software engineering are very difficult to outsource. Those jobs are here.

Like students in the computer science program, our software engineering majors begin by building a foundation in mathematical problem solving and programming. They also get a solid background in computer science before specializing in software engineering courses. All software engineering students do a team-oriented industrial internship. Additional software engineering experience is available on campus through our service-learning program, EPICS.

Most of our students, whether majoring in Computer Science or Software Engineering, choose to add a second major or a minor. We strongly encourage this, as it gives our students a broader and more balanced background, and it gives them an advantage in the marketplace. Recent choices for a minor or second major include a foreign language, business (accounting, finance, etc.), economics, mathematics, media arts, music, philosophy, physics, and political science. Business, mathematics, and media arts are the most popular choices.

We help our students prepare for a career in several ways. There are many, many opportunities for internships in Indianapolis. (Typically we have more opportunities than students!) Some students have done internships overseas. We require all our students to take an ethics course specifically designed for computer science students. We have an industrial advisory board of local CEOs and CIOs, who often visit the department, and a local professional (often a department alum) talks to our students once a month over lunch.

In addition, students with interest in graduate school may choose to participate in undergraduate research through the Butler Summer Institute. Our department supports and participates in the University Honors Program.

Aside from our students who choose to attend graduate school, the vast majority of our graduates find good jobs in the computer industry within a few months of graduation, and often they have offers well before graduation from a company they interned with.