Computer Science
Professors Jumadinova (Chair), Bonham-Carter, Kapfhammer, Luman, Graber, Green, Zhao
Computer Science is about computers and computation; the essence of the discipline is the study of algorithms—the design, development and characterization of algorithms, their realization as computer programs, the analysis of the correctness and efficiency of algorithms, and the limitations of the algorithmic method as an approach to problem solving. The department’s offerings include an introduction to the discipline including programming, data structures, and discrete mathematics; core courses in theoretical computer science, computer languages, computer organization, algorithm analysis, and software systems design; advanced courses in computer security, operating systems and distributed systems; and a variety of applications and electives. The human dimensions of computing—social, professional, and ethical implications—are treated throughout the department’s courses. The Computer Science programs have an integral laboratory component—nearly all of the courses include a weekly formal laboratory session to provide for practice and experimentation utilizing the principles learned in the classroom and from the course texts. The laboratory component affords the opportunity for hands-on experience with several computing and network systems. The Department has laboratories adjacent to faculty offices and classrooms in Alden Hall including an advanced-technology computer science classroom that facilitates active learning; a software development laboratory designed for group work on large software systems; and a laboratory for advanced coursework and research.
The study of computer science leads to and requires the ability to analyze ideas, to think logically, and to communicate ideas clearly and concisely. In this way, study of computer science contributes to the foundation of an excellent liberal arts education.
Note: Students who major in Computer Science may not double-major in Integrative Informatics. Students who minor in Computer Science may not major in Integrative Informatics.
Computer Science Learning Outcomes
Students who successfully complete either a major or a minor in the discipline of computer science are expected to demonstrate the successful attainment of learning outcomes in each of the following categories:
- Introduction
- Understands the basic and practical foundations of computer science (e.g., algorithms, data types, conditional logic, recursion, procedural programming concepts, object-oriented programming principles);
- Knows how to use standard development tools to implement software solutions to problems.
- Fundamentals
- Can design, implement, evaluate, improve, and document an algorithmic solution to a problem;
- Understands the mutually beneficial connections between (i) computer hardware and software and (ii) theoretical computer science and practical software development.
- Applications
- Understands the basics of application areas such as networking, data management, artificial intelligence, and computer graphics;
- Can apply key concepts from these application areas to formulate and solve problems and evaluate solutions implemented as computer programs.
- Advanced
- Understands advanced concepts in areas such as computer security, operating systems, and distributed systems;
- Knows how to apply key ideas from these advanced subjects to formulate and solve problems and evaluate solutions implemented as complete, efficient, and effective computer systems.
- Independent Research
- Demonstrates critical thinking abilities and effective written and oral communication skills;
- Can identify, analyze, and use sources in both the technical and research literature.
- Professional Development
- Understands how to work in a team and evidences the willingness to commit to lifelong learning.
Programs
The major and minor field programs are designed to provide a solid academic basis in the principles of computer science combined with practical experience in software systems design, implementation, and analysis. Courses are divided into four categories: introduction courses, fundamentals courses, advanced courses, and applications. There is one major in computing, Computer Science, and several interest-focused minors.
The Computer Science major is designed to prepare students for advanced study of computer science or any of a variety of positions in the computing industry or in other industries requiring computing expertise.