Computer Science and Software Engineering Program
BS in Software Engineering, a disciplined methodology for developing high quality software systems.
BS in Computer Science, the study of algorithms, including the core areas of operating systems and networks, programming languages, algorithm design and analysis, theory, and application areas such as artificial intelligence and database systems.
Our department offers majors in Computer Science and Software Engineering, as well as a minor in Computer Science.
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. Also, students may designate computer science or software engineering as their major and enroll in the Butler University/IUPUI dual-degree engineering program. In this case, electrical engineering is a common choice for the engineering degree.
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.