Computer Science
Professors R. Howell, J. Leech, C. R. Rosentrater
Associate Professors D. Hunter (chair), W. Iba, K. P. Kihlstrom
Description of the Major. Computers permeate every aspect of our society, and the science of computing is an exciting and rapidly changing field. Designed to give students the best preparation for careers in computer science, the program at Westmont emphasizes the development and analysis of algorithms and the understanding of good software development principles. The major introduces students to computer science and develops the requisite technical skills for work in the field, further study, or research. Students who complete the major earn a B. A. or B.S. degree.
The Westmont program, however, goes beyond the acquisition of technical skills by adding the perspective gained through group work, problem-solving, and critical thinking. The rationale for these emphases is simple: the modern computing environment involves professionals from many fields working together as a team to solve problems. Success in such an environment requires the ability to analyze problems from many sources and communicate clearly with people from other backgrounds. Set in the context of a liberal arts college, the computer science program at Westmont offers broad opportunities for exposure to problems and ideas from other disciplines. In recognition of the increasingly interdisciplinary contexts faced by computer professionals, our program also provides a B.A. or B.S. in computer science with an emphasis in a second discipline.
The program also offers students the opportunity to examine the ethical issues of modern computing from a Christian perspective. Our society needs the leadership and insight of individuals who are able to combine technical knowledge with ethical and moral principles.
Distinctive features. Students enjoy the benefits of working closely with faculty in a variety of settings. Santa Barbara has earned the nickname “Silicon Beach” by being home to a number of high-tech companies; thus opening the way for student work and/or paid internships off-campus. Similar opportunities exist elsewhere in companies in which our alumni have a leadership role. Advanced students can gain valuable experience and deeper understanding by participating in research with faculty or through working for the Mathematics and Computer Science Department as teaching assistants.
The schedule of courses is arranged so that computer science majors can complete the program in the normal four years and still take advantage of one of numerous off-campus semester opportunities, such as the Europe Semester. In order to do this a student should plan to participate in the off-campus program in the fall semester of either the third or fourth year, the choice being determined in part by which of the upper-division computer science electives he/she wishes to take.
Career Choices. Opportunities for careers in computer science are both numerous and diverse, and a critical shortage of well-prepared professionals is predicted to exist for many years to come. Students who choose to further their studies in graduate school will be well prepared to do so. In addition, the fields of operations research, management science, linguistics, and most types of applied science welcome the talents of those properly trained in computer science. Computing on the mission field is also a growing area in which students will be able to make significant contributions.
Requirements for the Computer Science Major
Core Courses Required for All Computer Science Major Programs: (32 units)
CS 10 Introduction to Computer Science I (4)
CS 30 Introduction to Computer Science II (4)
CS 120 Data Structures/Algorithms (4)
CS 130 Software Development (4)
CS 110 Historical and Ethical Issues in Computing or PY 104 Ethics (4)
CS 192 Project (2)
CS 195 Senior Seminar (4)
CS 198 Research (2)
MA 15 Discrete Mathematics (4)
In addition to the core courses, one of the following four programs must be completed, providing depth in computer science and (optionally) one other field of interest. Students customize their program in conjunction with their faculty advisor and, in the case of an emphasis in a second field, also with a faculty member from the other department.
(1) General B.A. in Computer Science (44 units including core)
CS 45 Computer Organization and Architecture (4)
CS 105 Programming Languages (4)
Additional CS/Math courses to bring the total to 44 units
(2) General B.S. in Computer Science (56 units including core)
CS 45 Computer Organization and Architecture (4)
CS 105 Programming Languages (4)
MA 9 Calculus (4)
Additional CS/Math courses to bring the total to 56 units
(3) B.A. in Computer Science with Emphasis in a Second Field
(48 or more units including core)
Three additional CS/Math courses, one of which must be a CS upper-division course
Three courses from a second field of interest, two of which must be upper-division courses
(4) B.S. in Computer Science with Emphasis in a Second
Scientific Field (56 or more units including core)
Three additional CS/Math courses, one of which must be a CS upper-division course
Three courses from a second field of interest, two of which must be upper-division courses
Additional CS/Math courses and/or courses from the second field to bring the total to 56 units
Requirements for a Computer Science Minor:
24 units
CS 5 Fundamentals of Computing (4)
CS 10 Introduction to Computer Science I (4)
CS 30 Introduction to Computer Science II (4)
MA 15 Discrete Mathematics
or MA 9 Elementary Calculus I (4)
CS 130 Software Development (4)
CS 195 Senior Seminar (4)
Lower-Division Course Descriptions
CS 5 Fundamentals of Computing (4) Prerequisite: Admissions math requirement (see p. 240). No prior computer or programming experience required. Introduction to basic principles of computing, problem solving, algorithmic thinking, and abstraction. Overview of hardware and software. Applications including spreadsheets, databases, artificial intelligence, networks, and web development. Social and ethical issues including viruses, privacy, security, intellectual property, anti-trust, and the digital divide.
CS 10 Introduction to Computer Science I (4) Prerequisite: Admissions math requirement (see p. 240). No prior computer or programming experience required. Basics of programming including language features, disciplined programming style, and documentation. Problem solving, algorithm design, and the software development process. (Offered fall semester.)
CS 30 Introduction to Computer Science II (4) Prerequisite: CS 10. Introduction to object-oriented programming. Abstract data types including lists, stacks, queues, and trees. Sorting and searching algorithms. Big-O notation. Graphical user interface design. Software testing and program verification. (Offered spring semester.)
CS 45 Computer Organization and Architecture (4) Prerequisite: CS 30. Computer structure; introduction to digital logic, data representation, computer arithmetic, software vs. hardware tradeoffs, addressing techniques, instruction sets, cache, virtual memory, pipelining, interfacing processors and peripherals. (Offered fall semester.)
Upper-Division Course Descriptions
CS 105 Programming Languages (4) Prerequisite: CS 30. Language processors; data; binding time; operations; sequence control; referencing environments; scope of a variable; storage management; operating environment, syntax; translation.
CS 116 Artificial Intelligence (4) Prerequisite: CS 30. Computational and philosophical principles of intelligence; methods for knowledge representation; automated reasoning, and learning.
CS 120 Data Structures and Algorithms (4) Prerequisite: CS 30. Advanced data structures including balanced trees, heaps, graphs and hash tables. Analysis of algorithms.
CS 125 Database Design (4) Prerequisite: CS 30. Database system architecture; relational and object-oriented databases, the Structure Query Language (SQL), normal forms and database design; query processing and optimization; handling transactions, concurrency control, crash recovery; data warehousing and data mining.
CS 130 Software Development (4) Prerequisite: CS 30. Software life-cycle. Fundamental concepts of software design. Supporting modern language features. Verification and validation techniques. The course is organized around a major group software project.
CS 135 Formal Languages and Automata (4) Prerequisite: CS 30. Regular languages; finite automata. Context-free languages; pushdown automata; Turing machines, halting problem. Computability.
CS 140 Networks (4) Prerequisite: CS 45. Network technologies including packet switching, framing, local and wide area technologies, network addressing, repeaters, bridges, hubs, switches, topologies, next-hop forwarding, shortest path computation, delay and throughput, and protocol layers. Internetworking including IP, TCP, UDP, datagrams, routers, and protocol ports. Network applications including client-server paradigm, and domain name system. Web technologies and protocols including HTTP, CGI, and Java.
CS 145 Operating Systems (4) Prerequisite: CS 45. Sequential processes; concurrent processes; scheduling algorithms; segmentation; paging; virtual systems; store management; networking; parallel processing; security.
CS 150 Topics in Computer Science (4) Prerequisite: CS 30 or consent of instructor. Special courses offered on selected advanced topics in computer science. Content as announced. May be repeated for credit in a different topic.
CS 190 Practicum (1-4) Prerequisite: CS 30. Field experience arranged in conjunction with the department and supervised by professional computer scientists. Up to four units of practicum may be counted toward the major. (By arrangement.)
CS 192 Project (1-4) Prerequisite: CS 130. Participation in a multi-person computer science project.
CS 195 Senior Seminar (4) Prerequisite: computer science majors and minors with senior standing and CS 130. In this capstone class, students reflect on computer science as a discipline, the connections with other disciplines, the impacts of technology upon society, and ethical considerations introduced by computers. In the process of completing a major project, students consider marketing, design, implementation, testing, and maintenance. In this class, seniors complete and present their online portfolio. As the culmination of their program, students explore the transition to graduate school or the commercial sector.
CS 198 Research (1-4) Prerequisite: CS 30. Students will work closely with faculty on original research. (By arrangement.)