The Department of Computer Science offers two comprehensive undergraduate degree programs that prepare students for professional careers and/or graduate studies in computer science.

A carefully-designed set of core courses provides a solid foundation in computer science covering the entire spectrum of theory, software, and hardware. Upper-division technical electives build on the core to allow students to gain depth of knowledge in specialized areas of computer science.  

Students majoring in another discipline may obtain a minor in computer science by completing specified courses with a grade of C or better.

Learning Goals and Assessments

Mission Statement

The basic goal of the department is to train students to become skilled computing professionals who are able to formulate complex computational problems, reason critically about various solution approaches, and articulate and implement efficient software solutions. They should be able to apply knowledge of core theoretical ideas and abstractions to practical requirements using good design principles. Our undergraduate curriculum also prepares students for graduate study and more generally, to recognize the importance of continued re-training that is absolutely essential in order to adapt to rapidly changing technologies and emerging inter-disciplinary computational challenges.

Student Learning Goals and Outcomes

Successful students from our undergraduate degree programs (both BA and BS) are expected to have the following competencies. They must:

  • Develop programming and analytical problem-solving skills based upon the understanding of abstraction, sound mathematical foundations, principles of algorithm design and analysis, and good software methodology and engineering.
  • Build knowledge and develop skills that facilitate lifelong learning.
  • Learn to contribute to professional teamwork and participate in collaborative projects.

Assessment Standards and Measures

The department broadly follows the curricular guidelines for undergraduate Computer Science (CS) education that are periodically updated by the Association of Computing Machinery.

In particular, the current version of the ACM curricula (2013) not only describes a minimal core set of topics that are essential for anyone obtaining an undergraduate degree in Computer Science, but also specifies detailed learning objectives associated with the CS body of knowledge. We use these learning objectives to assess the CS program’s effectiveness with respect to at least the first two learning outcomes listed above.

To do this, we will be adopting a uniform assessment framework for every course in our curriculum: In each assignment and each exam in that course, the instructor will decide a specific learning objective to be assessed and frame a question that tests students on that objective — the identity of the question will not be revealed to the students.

Statistics of student responses on these marked questions will be collected and used to provide feedback to the instructors on the level of competence demonstrated by the students on the corresponding learning objectives. We expect that this strategy coupled with appropriate analysis and correlation (to factor in the differences in teaching methods among different instructors), will provide us with a summative perspective of what is working well in our program and what is not.