Computer Science

Computers and information technology now permeate human society. People in almost any career find themselves using computers, many on a daily basis. This activity is supported by computing professionals who work in many areas, including computer design, software development, systems management, technology, consulting and computing education. Study in the field of computer science provides both computer users and professionals with an understanding of what is computable, how it can be computed and how the power of computation affects human society.

The computer science curriculum stresses the underlying theory and abstraction of computing, providing students with a broad foundation on which to build more specialized understanding. At the same time, the curriculum seeks to combine these principles with the design of applications current to each topic.

With an emphasis on problem solving as a core component of the major, it provides a good foundation of skills valuable to many different careers and is not limited to those interested in software development.

Assessment

The Computer Science Department is committed to using assessment for the improvement of its curriculum and programs. To this end, it engages in several assessment strategies.

Major

The computer science department offers a major in computer science; it also offers a major in numerical computation jointly with the mathematics department. Information about the numerical computation major is in a separate section for that major. In addition, students may develop individualized majors which meet their particular interests. (See the section on individualizing a traditional major under Academic Regulations.)

Computer Science Major (52 credits)

This major focuses on the study and implementation of algorithms and the theoretical foundations of computing. It is appropriate for students interested in the full range of computing including software design, systems analysis, and graduate study in computer science.

Minor (28 credits)

Required Courses:

MATH 118 or 119 or 120;

CSCI 161, 162;

CSCI 230 or 239;

Twelve additional computer science credits of which CSCI 130 will count only if taken prior to CSCI 161.

Students who complete MATH 120 may substitute MATH 239 for CSCI 239. Students primarily interested in business computing should take 230 and at least one of 312, 330 or 331; those interested in computing systems should take 310 and either 312, 350 or both; those interested in theoretical computer science should take 338 and 339.

Criteria for admission to the major:Students will be accepted into the Computer Science major if:

They have completed the required mathematics course, CSCI 161, 162, and at least one of 230, 239 or 310,

No more than one of the above courses has a grade below C, and

The GPA in the above courses is 2.5 or better.

Students will be conditionally accepted into the Computer Science major if:

They have not yet completed all the courses needed for unconditional acceptance into the major, but are currently enrolled in the courses which are lacking, and

They meet the other two criteria for acceptance on the courses completed thus far.

Students not accepted to the major must consult with Academic Advising. In exceptional circumstances, a student may be allowed to continue working toward a Computer Science major, subject to constraints determined by the Chair of the department in consultation with Academic Advising.

Courses (CSCI)

130 Computing: Science and Its Applications. (4)An overview of computing and its applications from a scientific perspective, designed to equip students with the basic tools needed to understand computers and use them effectively. Students will study the basic architecture of computers, the structure of programming, and the design of spreadsheets and databases. Through regularly scheduled labs they will gain hands-on experience with applications to scientific and business problems. Not intended for students majoring in the sciences. Prerequisite: Math proficiency.

161 Introduction to Problem-Solving and Programming. (4)Introduces the fundamental concepts of problem-solving and programming from an object-oriented perspective. Through the study of object-oriented design, this course also introduces the basics of human-computer interfaces, graphics, and the social implications of computing. Prerequisite: Math proficiency.

162 Problem Solving, Programming and Data Representation. (4)Continues the introduction to object-oriented problem-solving begun in CSCI 161, with an emphasis on algorithms, data structures and the social context of computing, along with significant coverage of software development. Prerequisite: 161.

271 Individual Learning Project. (1-4)Supervised reading or research at the lower-division level. Permission of department chair required. Consult department for applicability towards major requirements. Not available to first-year students.

330 Software Engineering. (4)Examines the methods and tools used to determine information requirements of a business, construct logical models of business processes, prepare specifications for program development, prepare procedures and documentation, and test, install and maintain an information system. Prerequisite: 230.

338 Algorithm Design and Analysis. (4)Introduction to formal methods for the design and analysis of complex algorithms, with an emphasis on developing students' problem-solving abilities. Focuses on computational resources and ways of conserving both time and memory. Prerequisites: 162 and either 239 or MATH 239.

340 Organization of Programming Languages. (4)The structure, design and application of various programming language paradigms, with emphasis on the principles and semantics of languages. Prerequisite: 339.

341 Compiler Theory. (4)Introduction to the design and construction techniques of modern language compilers, including both parsing and code generation. Prerequisite: 339.

369 Ethical Issues in Computing. (4)Examines a variety of philosophical and ethical questions that arise within the development and use of computer technology. Students will become familiar with several models of ethical reasoning and will apply these approaches to questions in a variety of areas of computer science, including artificial intelligence, nanotechnology, software development, and cyberspace. Prerequisite: 230 or 310 or 339.

371 Individual Learning Project. (1-4)Supervised reading or research at the upper-division level. Permission of department chair and completion and/or concurrent registration of 12 credits within the department required. Consult department for applicability towards major requirements. Not available to first-year students.

372 Individual Senior Research. (0-4)Individualized experimental, theoretical or applied projects for seniors. Each student intensively explores a topic, writes a major research paper, and makes a formal presentation to the department. Prerequisite: Consent of department chair. May be repeated for up to 4 credits.

373 Senior Research in Computer Science. (4)Directed research in computer science organized around a selected topic and conducted in a seminar format. Includes consideration of computer science research methodology and analysis of current research in the seminar topic. Each student intensively explores a topic, writes a major research paper and makes a formal presentation to the department.

398 Honors Senior Essay, Research or Creative Project. (4)Required for graduation with "Distinction in Computer Science." Prerequisite: HONR 396 and approval of the department chair and director of the Honors Thesis program. For further information see HONR 398.