Computer Science
- Professors R. Howell (chair), J. Leech, C. R. Rosentrater
- Associate Professors D. Hunter, K. P. Kihlstrom
- Assistant Professor W. Iba
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 descipline.
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 Degrees: 24 units
- MA 15 Discrete Mathematics (4)
- CS 10 Introduction to Computer Science I (4)
- CS 30 Introduction to Computer Science II (4)
- CS 120 Data Structures and Algorithms (4)
- CS 130 Software Development (4)
- CS 150 Topics in Computer Science: History and Ethics in Computing,
- or PHI 104 Ethics (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-divison 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-divison 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)
- One additional upper-division Computer Science course (4)
Lower-Division Course Descriptions
CS 5 Fundamentals of Computing (4) Prerequisite: fulfillment of mathematics competency requirement. 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. (Offered fall semester.)
CS 10 Introduction to Computer Science I (4) Prerequisite: fulfillment of mathematics competency requirement. 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 and spring semesters.)
CS 30 Introduction to Computer Science II (4) Prerequisite: CS 10. Introduction to Java 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 fall semester.)
CS 45 Computer Organization and Architecture (4) Prerequisite: CS 30 or consent of instructor. 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 spring semester.)
CS 90 Seminar (1) Required attendance in the seminars offered by the Natural and Behavioral Science Division during a given semester. Students enrolled will be under the guidance of a faculty mentor and will meet periodically to discuss the wide range of topics presented in the seminars. Seminars usually occur on Friday afternoons.
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. (Offered in alternate years, spring semester.)
CS 116 Artificial Intelligence (4) Prerequisite: CS 30. Computational and philosophical principles of intelligence; methods for knowledge representation; automated reasoning, and learning. (Offered in alternate years, spring semester.)
CS 120 Data Structures and Algorithms (4) Prerequisite: CS 30. Advanced data structures including balanced trees, heaps, graphs and hash tables. Analysis of algorithms. (Offered in alternate years, spring semester.)
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. (Offered in alternate years, fall semester.)
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. (Offered fall semester.)
CS 135 Formal Languages and Automata (4) Prerequisite: CS 30. Regular languages; finite automata. Context-free languages; pushdown automata; Turing machines, halting problem. Computability. (Offered in alternate years, spring semester.)
CS 140 Networks (4) Prerequisite: CS 45 or consent of instructor. Communication basics. 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. (Offered in alternate years, spring semester.)
CS 145 Operating Systems (4) Prerequisite: CS 45. Sequential processes; concurrent processes; scheduling algorithms; segmentation; paging; virtual systems; store management; networking; parallel processing; security. (Offered in alternate years, fall semester.)
CS 150 Topics in Computer Science (4) Prerequiste: CS 30 and 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. (Offered spring semester)
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 198 Research (1-4) Prerequisite: CS 30. Students will work closely with faculty on original research. (By arrangement.)