|
Marietta Cameron, Lewis Patterson, Richard S. Turner
The major in computer science is intended for students who wish to learn
about the design of computer systems and their applications, and is designed
to prepare students for careers in computing and/or graduate studies.
The following courses are required (13 units):
- CS 170 or CS 171 (see note below)
- CS 250
- CS 290
- CS 390 or CS 420
- CS 499
- MA 240
- one unit from the following list: CS 390, MA 207, PL 350, PS 204,
PY 204, SO 204, any Math course numbered 231 or above (excluding
interim
and teaching-experience courses). The math course selected
must be different from the course selected to satisfy previous
requirements.
- six
units from the following list: CS 300, CS 310, CS 330,
CS 360, CS 380, CS 390,
CS 420, CS 430, CS 440 ,CS 460, CS 465, CS 480. The
courses selected must be different from the courses selected
to satisfy previous requirements.
Note: Students who have prior programming experience may elect to substitute
an upper-level computer science course for the CS 170 or CS 171 requirement
by passing a qualifying exam.
Note: Grade for the senior interim (CS 499) will
be composed of two factors: the quality of work performed during the
interim; and performance
on a comprehensive exam taken during the spring term of the student’s
senior year.
Computer science majors planning on graduate work should consider taking
additional computer science courses and additional mathematics courses
beyond MA 231. Recommended computer science electives for students intending
to pursue graduate study include CS 360, CS 380, CS 390, CS 460, and
CS 465. Recommended electives for students seeking immediate employment
upon graduation include CS 300, CS 330, CS 420, and CS 430. Students
are encouraged to meet with faculty as soon as possible for advising
concerning their intended goals.
Courses required for a computer science major may be used to meet minor
requirements in mathematics. Students interested in both computer science
and mathematics should consider the interdisciplinary major in computer
science-mathematics explained in the Interdisciplinary Major Requirements
section of this catalog.
Internships and teaching experience may not count toward the minor.
Interim projects may not count toward the minor unless approved by the
computer science faculty.
The following courses are required (5 units):
- CS 170 or CS 171
- CS 250
- CS 290
- two units in CS at the 300 level or above, one of which may
be satisfied by MA 240
Disciplinary honors in computer science provides an opportunity for
those students seeking additional work, more research experience, and
further preparation for computing as a profession. Disciplinary honors
rewards those students who successfully go beyond the minimum requirements
of the discipline.
To earn disciplinary honors, a student should apply for consideration
preferably by the end of the sophomore year and no later than the end
of the fall term of the junior year. Specific requirements are as follows:
(1) Complete the requirements of the computer science major or of the
inter disciplinary major in computer science and mathematics.
(2) Complete two computer science units at or above the 300 level. These
two units are in addition to the computer science requirements of the
student's major.
(3) Complete MA 232 and a choice of MA 317, MA 321, or MA 454.
(4) Attain a minimum 3.00 grade point average in courses taken at the
College and a minimum 3.30 average for the courses within the discipline.
(5) Maintain a two year national membership within the Association for
Computer Machinery and the local student ACM.
(6) Complete a senior thesis, the proposal for which must be submitted
no later than October 15 of the senior year. The senior interim should
be devoted to work on the thesis which must be supervised by a faculty
member in computer science. This thesis must be successfully defended
before a committee of at least two faculty members. Interdisciplinary
committees are encouraged. The thesis must be completed no later than
March 31 of the senior year.
CS 105 Understanding Computers (1)
A course for non-computer science majors in the use of the computer as
a tool. This course is designed to give the student an appreciation
for the role of computers in today’s society and the use of some
general software tools, such as spreadsheet and database, as are commonly
used on personal computers. Not open to anyone having taken a college-level
computer science course within the previous five years.
CS 170 Introduction to Computing (1)
An introduction to the field of computer science. Topics include computing
concepts and terminology. A major part of this course is problem solving
and algorithm development using a programming language such as Pascal,
Java, or C++. Fall, Spring.
CS 171 Computers and the Mind's Eye (1)
An overview of the discipline of computer science and its contributions
to and from other disciplines including (but not exclusively) art,
mathematics, physics, psychology, and philosophy. This course introduces
problem solving via the computer by using tools and concepts from computer
visualization and provokes thought on how various results from computing
redefine perceptions of art and intelligence. Prerequisite: MA 115.
Fall, Spring.
CS 250 Advanced Programming (1)
A second programming course assuming a good understanding of fundamental
programming processes. Emphasis is placed on good software engineering
practices. Basic data structures are introduced. Prerequisite: CS 170.
Fall, Spring.
CS 290 Data Structures (1)
A study of structures for storing and manipulating data. Students learn
to create and use such data structures as stacks, lists, trees, and
graphs. Prerequisite: CS 250. Fall, Spring.
CS 300 Systems Programming (1)
An introduction to assembly language programming with the goal of better
understanding how computers operate. Prerequisite: CS 250. Fall 2003.
CS 310 Alternative Programming Languages (1)
A study of languages from several categories such as functional, imperative,
logical, and specialized. The student writes intermediate-level programs
in each language. Prerequisite: CS 250. Fall 2004.
CS 330 Systems Analysis (1)
The design of large-scale computer-based systems, with examples from
major application areas. Prerequisite: CS 250. Fall 2004.
CS 360 Programming Languages (1)
A study of the manner in which the various categories of programming
languages deal with the fundamentals of programming. Prerequisite:
CS 290. Spring 2005.
CS 380 Introduction to Computer Organization (1)
Introduction to organization and structure of major hardware components
of computers, the mechanics of information transfer and control within
a digital computer system, and the fundamentals of logic design. Prerequisites:
CS 250 and MA 240. Spring 2004.
CS 390 Automata, Computability, and Formal Languages (1)
A study of the theory of computer science. Topics include such areas
as computability, computational complexity, and formal languages. Prerequisites:
CS 290 and MA 240. Spring 2005.
CS 420 Database Management Systems (1)
A course in the design, function, and application of database
systems. Prerequisite: CS 290. Fall 2003.
CS 430 Data Communications (1)
An introduction to such topics as communications hardware, protocols,
networks, and communication software design. Prerequisite: CS 290.
Fall 2004. CS 440 Introduction to Computer Graphics (1)
An introduction to the terminology, standards, and basic algorithms in
computer graphics. Topics include image transformations, projections
from 3D to 2D, curve and surface modeling and three dimensional viewing.
Prerequisites: CS 290, MA 240, and MA 231. Spring 2004.
CS 460 Operating Systems and Architecture (1)
An introduction to operating systems, system architecture, and their
relationships. Prerequisite: CS 290. Spring 2005.
CS 465 Artificial Intelligence (1)
An introduction to topics such as cognitive modeling, automatic problem
solving, natural language processing, and robotics. Prerequisite: CS
290. Fall 2003.
CS 480 Compilers (1)
A study of the theory and function of compilers for high-level languages.
Prerequisite: CS 290.
CS 298, 398, 498 Teaching Experience in Computer Science (1)
CS 499 Senior Project in Computer Science (1)
An in-depth research project that brings to bear the student’s
accumulated knowledge and skills in computer science. This substantial
endeavor may include some combination of the following: computer programs,
papers, oral presentations, and community projects. Evaluation is based
on successful completion of the objectives outlined by instructor and
student at the beginning of the term. As part of the senior interim experience,
all students are required to participate in an assessment process. This
may include, but is not limited to, a standardized test, an exit interview,
an oral examination, or some combination of the above. Prerequisite:
senior standing or consent.
|