Curriculum Overview 

The study of computer science includes, but is not limited to, computer programming. We learn how to solve problems by creating, implementing, and analyzing algorithms, and study how computers are organized, how they carry out their operations, how they store and transmit information, and how we control and interact with them.

Computer science has rich overlaps with a wide variety of fields, in terms of both shared skills and paradigms and interdisciplinary synergies, with particularly clear connections to mathematics, natural and physical sciences, philosophy, psychology, and the language arts. The computer is now deeply embedded in our culture and society, which means that its use and abuse are cultural and social concerns.

A major in Computer Science consists of eleven computer science courses together with a mathematics requirement. The major includes seven required computer science courses: CPS 111, 112, 222, 237, 242, 261 and 337, as well as four electives. Three of the electives must be Computer Science courses at the 300-level or above that are not cross-listed, other than CPS 390 and 490. One of the electives may be any Computer Science course at the 200-level or above or may be chosen from PHI 244, PSY/SPM 305, PSY/SPM 312 or an otherwise related course outside of computer science, approved by the chairperson. Required mathematics courses are: MAT 109, 110 and either 216 or 229.

A minor in Computer Science consists of six courses: CPS 111 and 112, and four other CPS courses, including at least one at the 300-level that is not cross-listed with another department or discipline.

A maximum of four courses taken at other institutions may count toward the Computer Science requirements of the major, and of these, at most one may count toward the 300-level elective requirement. At most two courses taken at other institutions may count toward the minor.

Opportunities exist for students to design a joint or special studies major in Bioinformatics in consultation with the Biology and Computer Science chairs.

Computer Science students have studied abroad in the following programs in recent years: Institute for Study Abroad at Butler University Programs in England, Ireland, Scotland, Australia and New Zealand. See the International Programs section of the Catalog for further information.

Courses Offered

 

A list of regularly offered courses follows. Please note the key for the following abbreviations: (A) Arts; (H) Humanities; (S) Social Sciences; (N) Natural Sciences with Laboratory; (LS) Language Studies requirement; (NSP) Natural Science in Perspective; (NW) Non-Western Cultures requirement; (WP) World Perspectives requirement.

111. Computer Science I.
Introduces basic concepts in computer science and computational problem solving through the design of algorithms and computational processes, modularization, and abstraction. Also introduces the processes of programming and software development as a means to put solutions into practice. Has a required lab, but does not satisfy the “Natural Science with Laboratory” requirement.    
Hu, McDanel, Novak

112. Computer Science II.
A second course in computer science and computational thinking, focusing on data structures and advanced programming. Topics include implementation and applications of data structures such as stacks, queues, linked lists, trees and graphs. Also introduces performance analysis of algorithms. Has a required lab, but does not satisfy the “Natural Science with Laboratory” requirement. Prerequisite: CPS 111 or permission of the instructor.    
Brody, Wilson

222. Computer Science III.
This course will prepare students for advanced computer science courses. Using a production-level programming language as a tool, students will implement advanced data structures and algorithms. Students will also study advanced programming concepts and strategies for algorithm development and analysis. Through programming projects, students will explore complex tree structures, graph algorithms, greedy algorithms, dynamic programming, divide-and-conquer algorithms, and parallelism/concurrency. Prerequisite: CPS 112 and MAT 109. Offered every Fall.   
Novak

237. Discrete Mathematics.
Basic set theory, basic proof techniques, combinatorics (the theory of counting), and graph theory with related algorithms. Prerequisite: MAT 109. Same as MAT 237. Offered every Fall. 
Brody

242. Computer Organization.
This course covers the basic instruction set, architecture, and organization of a modern computer. Fundamentals of translating higher-level languages into assembly language, and interpretation of machine languages by hardware are studied. A model of computer hardware organization is developed from the gate level upward. Topics include logic circuits, micro-architectures and microprogramming, machine architectures, and software-hardware interface issues. Prerequisite: CPS 112. 
McDanel

261. Algorithms.
Trees, graphs and networks; further analysis of algorithms and their efficiency. Prerequisite: CPS 112 and CPS/MAT 237.  
Hu

270 279. Topics in Computer Science.
Intermediate level courses.

291. Directed Reading.
Reading directed by the Computer Science staff. Permission of chairperson.

337. Theoretical Foundations of Computer Science.
An introduction to the theoretical models used to understand the capabilities and fundamental limitations of computational devices. Topics include formal languages, automata, grammars, computability, reductions, and complexity. Prerequisites: CPS 112 and CPS/MAT 237.   
Brody

338. Computational Mathematics.
Numerical analysis as implemented on computers. Polynomial and rational approximations, numerical differentiation and integration, systems of linear equations, matrix inversion, eigenvalues, first and second order differential equations. Prerequisites: CPS 111 and MAT 229. Same as MAT 338.
Staff

340. Mobile Application Development.
This course will introduce you to writing applications for the Android platform. The purpose of this course is not to narrowly teach proficiency of Android “App” development, but rather to teach proficiency in learning how to develop applications on a platform that is new to you. Mobile applications on Android will merely serve as a vehicle to achieve this. Throughout the course we will strive to achieve several goals: (a) refine your programming skills in general by solving practical problems that are apt for a mobile platform like Android, (b) learn the fundamentals of Android application development (c) refine your knowledge of the java programming language, and (d) prepare you for the job market after graduation. Prerequisite: CPS222. 
Novak

360. Introduction to Machine Learning.
This course will introduce some foundational machine learning algorithms from both a theoretical and practical perspective, with the focus on developing a deep understanding of a few important algorithms. This deep exploration will expose some of the principles and challenges that lie at the core of nearly all machine learning techniques. The study of machine learning requires the use of mathematical, computational, and empirical tools and students will gain experience bringing all of these tools to bear to understand, apply, and perhaps even improve upon the methods discussed. Prerequisites: CPS 222 and MAT 216.  
Hu

363. Introduction to Bioinformatics.
An introduction to the field of bioinformatics, addressing some of the important biology and computer science concepts related to it, with a focus on the computational aspects. Topics include a molecular biology primer, biological sequence alignments and analysis, gene mutation patterns, phylogenetic tree and construction algorithms, protein structures and functions, proteomics, application of basic machine learning algorithms, and other commonly used bioinformatics tools and resources. Prerequisites: CPS 222 or CPS 261.  
Hu

367. Artificial Intelligence.
An introduction to some of the core problems and key ideas in the field of artificial intelligence from a computational perspective. The course will focus on exploring various representational and algorithmic approaches to the problem of creating artificial agents that know things, can reason about the world, and that make good decisions. Key topics: heuristic search, adversarial search, reinforcement learning, constraint satisfaction, logical inference, probabilistic inference. Prerequisites: CPS 222 and CPS/MAT 237. Corequisite: MAT 216.    
Wilson

370 379. Topics in Computer Science.
Study of specialized areas of Computer Science.

390. Independent Study.
Independent study directed by Computer Science staff. Permission of chairperson.

391. Directed Reading.
Reading directed by the Computer Science staff. Permission of chairperson.

490. Independent Study.
Independent study directed by Computer Science staff. Permission of chairperson.

491. Directed Reading.
Reading directed by the Computer Science staff. Permission of chairperson.

Topics Courses Expected to be Offered in 2022-2023

  • CPS 173. Introduction to Computer Programming.
  • CPS 376. Parallel Computing.