About Computer Science
Computer science is an interdisciplinary field, both in its origin and in its application. Computer science plays an important role in virtually all fields, including science and medicine, music and art, business, law, and human communication. Whether your goal is to become a practicing computer scientist or to take a few courses to develop a basic understanding of computer science for application to another field, the Department of Computer Science and Engineering at Washington University is committed to helping you gain the computing background you need.
People are attracted to the study of computer science for a variety of reasons. Consequently, the department offers a wide variety of academic programs, including a five-course minor, a second major, several undergraduate degrees, combined undergraduate and graduate programs, as well as undergraduate research opportunities and an undergraduate honors program. Each academic program can be tailored to your individual needs.
The field of computer science is very broad, encompassing all aspects of the design, analysis, implementation, and use of computer technology. These aspects may be best understood in terms of the general categories of software systems, hardware, theory, and applications.
Software systems are collections of interacting software components that work together to support the needs of computer applications. Courses in this area help you gain a solid understanding of how software systems are designed and implemented. Examples include operating systems that manage computational resources, network protocols that are responsible for the delivery of information, compilers that translate computer programs into executable form, and programming languages that support the construction of software systems and applications.
Hardware is the term used to describe the physical and mechanical components of a computer system. Courses in this area provide background in logic circuits that carry out basic computations, computer architecture that defines the organization of circuitry in a computer system, and peripheral devices such as disks and robot arms that are controlled by the computer system.
Theory is the study of fundamental possibilities and limitations of computer systems. A background in theory will help you choose among competing design alternatives on the basis of their relative efficiency and will help you verify that your implementations satisfy the specified requirements. Theory courses provide background in algorithms that describe how a computation is to be carried out, data structures that specify how information is to be organized within the computer, analysis that is used to understand the time or space requirements of a problem or solution, and verification techniques for proving that solutions are correct.
Applications are the ways in which computer technology is applied to support work in other disciplines. Most applications courses provide background not only in the applications themselves, but also in how the applications are designed and implemented. Applications areas include artificial intelligence, computer graphics, database systems, and others.
A typical well-rounded study of computer science will include background in each of these areas. However, depending on your educational goals, you may prefer to concentrate on certain areas for greater depth of knowledge. If you are planning to take the CS GRE, then you are strongly recommended to take CSE 422S, CSE 431S, and CSE 547T/CS 507T. To help you balance your elective courses, most upper-level computer science courses are numbered with a designation in one of these categories: S for software systems, M for machines (hardware), T for theory, and A for applications. You are encouraged to meet with a faculty adviser in the Department of Computer Science and Engineering to discuss your options and develop a plan consistent with your goals.
About Computer Engineering
The mission of the undergraduate program in computer engineering is to instill in students the knowledge and perspective appropriate for a professional career and for the pursuit of an advanced degree in computer engineering and in related fields. Such principles and practices include rigorous quantitative reasoning and robust engineering design in the context of a comprehensive and contemporary education in the engineering of computer systems. This includes developing an understanding of hardware and software issues, as well as their interactions. Our graduates pursue studies leading to a knowledge of hardware systems (e.g., electrical networks, VLSI); a knowledge of software systems (e.g., algorithms, operating systems); and a knowledge of how these two domains interact (e.g., digital logic, computer architecture).
Computer engineering encompasses studies of hardware, software, and systems questions that arise in the design, development, and application of computers. When you graduate with the Bachelor of Science degree in computer engineering, you will be able to understand the technical issues, evaluate the tradeoffs, and master the techniques for designing computer systems. You will also be prepared to clearly communicate your understandings and conclusions in oral and written form.
Training is provided through a variety of courses in computer science and electrical engineering; involvement in complete system development projects; and close association with computer laboratories such as the Computer and Communications Research Center, the Applied Research Laboratory, and the Electronic Systems and Signals Research Laboratory. Facilities include Sun computers and workstations, parallel computers, personal computers, numerous microprocessors, a variety of image-processing equipment, tools for VLSI design and digital systems fabrication, and extensive hardware and software capabilities for the development of special-purpose computers and the evaluation of new computer architectures.
The program is intended for well-qualified, highly motivated students who wish to study both computer hardware and software. Students who complete this program receive the Bachelor of Science in computer engineering. As an option, you may choose to pursue a double major by also satisfying the degree requirements of the B.S.C.S. or B.S.E.E.
This section introduces you to the wide variety of undergraduate programs offered by the Department of Computer Science and Engineering and will help you to start thinking about which options are right for you. We describe the minor in computer science, the second major, the premedical option, the B.S. degree, the B.S.C.S. degree, the B.S. in computer engineering, combined undergraduate and graduate programs, the Undergraduate Research Opportunities Program, and the Cooperative Education Program.
On the following pages are some sample schedules for several of the computer science and engineering degree options. These schedules demonstrate some of the many course schedules that can be selected in completing your computer science or computer engineering degree. Some students choose to take some courses during the summer to reduce their course loads during the fall and spring semesters. Your adviser can help you design a program tailored to your individual needs.
An alternative to the second major is the dual degree program, which leads to two undergraduate degrees, one in the School of Engineering and one from another school. For this option you must complete all requirements (including distribution requirements) for both degrees. If Arts & Sciences is the other school, 150 credits are required for 2 degrees. (Only 120 credits are required for the second major since a single degree is earned.) See the Engineering Student Services Office (Lopata 303, 935-6115) for details.
Premedical Option within Computer Science
Students may pursue a premedicine curriculum in conjunction with either the B.S. or B.S.C.S. degree options for computer science majors. We have provided a sample schedule for a student pursuing the B.S. degree option. The B.S.C.S. option may result in some semesters with an 18-credit-hour load; however, students may reduce this load by taking physics over the summer.