Professors Kapfhammer (Chair), Jumadinova, Roos, Wenskovitch
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 compiler design, 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.
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 the listed learning outcomes in each of the following categories:
- 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.
- 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.
- 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.
- Understands advanced concepts in areas such as compiler design, 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 the both the technical and research literature.
- Professional Development
- Understands how to work in a team and evidences the willingness to commit to lifelong learning.
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: basic courses, core courses, advanced courses, and applications. There are two majors in computing, Computer Science and Applied Computing, 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. The Applied Computing major is designed to prepare students for entry-level software development positions or entrepreneurial and management positions in computing and computing related areas.
Computer Science Courses
NOTE: For students who matriculated before Fall 2016, all Computer Science courses with a laboratory count as a laboratory course in the Natural Sciences for the purpose of satisfying the College distribution requirement