Computer Science Undergraduate Bulletin

2002-2004


Faculty

Chair and Professor

Gruia-Catalin Roman (1976)
Ph.D., University of Pennsylvania, 1976
Distributed and concurrent systems, software engineering, mobile computing,visualization
Assistant Chair and Professor
Sally A. Goldman  (1990)
Ph.D., Massachusetts Institute of Technology, 1990
Computational learning theory, machine learning, algorithm design and analysis
Hugo F. and Ina Champ Urbauer Professor of Engineering
Mark A. Franklin (1970)
(Electrical Engineering)
Ph.D., Carnegie Mellon University, 1970
Computer architecture, systems analysis and parallel processing, VLSI design
Henry Edwin Sever Professor of Engineering
Jonathan S. Turner (1983)
Ph.D., Northwestern University, 1982
Networking and communications, algorithms and complexity, VLSI applications
Professor
Ron K. Cytron (1993)
Ph.D., University of Illinois, 1984
Programming language optimization, parallel computations
Associate Professors
Michael R. Brent (1999)
Ph.D., Massachusetts Institute of Technology, 1991
Probabilistic modeling applied to language, speech and genomics,
empirical study of native language learning by humans

Kenneth J. Goldman  (1990)
Ph.D., Massachusetts Institute of Technology, 1990
Distributed programming environments, distributed applications,
distributed algorithms

Ronald P. Loui (1988)
Ph.D., University of Rochester, 1988
Artificial intelligence, legal reasoning, philosophy of computing,
web agents

Weixiong Zhang (2000)
Ph.D., University of California-Los Angeles, 1994
Solving computation-intensive problems in computer science,
operations research and molecular biology

Assistant Professors

Jeremy Buhler  (2001)
Ph.D., University of Washington, 2001.
Computational Biology, genomics, algorithms for comparing and
annotating large biosequences

Jason E. Fritts  (2000)
Ph.D., Princeton University, 2000.
Media processors, computer architecture, optimizing compilers,
parallel processing, multimedia signal processing

Christopher D. Gill  (2001)
D.Sc., Washington University, 2002.
Distributed object computing, real-time systems, middleware
for ubiquitous and robotics systems

Cindy M. Grimm  (2000)
Ph.D., Brown University, 1996.
Surface modeling, image-based rendering, user-interfaces
texture generation

John W. Lockwood  (2001)
Ph.D., University of Illinois, 1995.
Reprogrammable hardware, high speed networks

Robert Pless  (2000)
Ph.D., University of Maryland, 2000.
Computational video geometry (geometry, statistics and
computation for constructing video representations
of a geometric nature)

William D. Smart  (2001)
Ph.D., Brown University, 2001.
Reinforcement learning for real world problems,
robotics: robot-human interfaces

Lihao Xu  (1999)
Ph.D., California Institute of Technology, 1999.
Distributed computing and storage systems, reliable and
high performance computing, error control codes

Senior Professors Harold B. and Adelaide G. Welge Professor of Computer Science

Jerome R. Cox, Jr. (1955)
Sc.D., Massachusetts Institute of Technology, 1954
Computer visualization, digital communication, biomedical computing

Richard A. Dammkoehler (1960)
M.S., Washington University, 1959
Computer programming theory, information retrieval, computer systems
architecture

Takayuki D. Kimura  (1978)
Ph.D., University of Pennsylvania, 1971
Communication and computation, visual programming languages,
multimedia, user interfaces

In certain cases research and teaching for the department are carried out by other professionals at Washington University. They are affiliated with the Department of Computer Science and are classified as either affiliate faculty or research associates.

Affiliate Professors

Robert J. Benson (1965)
J.D., Washington University, 1968
Information systems, systems analysis, database design

G. James Blaine III (1974)
(Electrical Engineering, Mallinckrodt Institute of Radiology)
D.Sc., Washington University, 1974
Biomedical computing, digital communications, Picture Archive and
Communications Systems (PACS)

I. Norman Katz (1967)
(Systems Science and Mathematics)
Ph.D., Massachusetts Institute of Technology, 1959
Numerical analysis, finite element methods, locational equilibrium problems,
algorithms for parallel computation

Affiliate Associate Professors

Keith Bennett (1993)
M.S., Washington University, 1985
System/software engineering, virtual reality and visualization, space
applications

Roger D. Chamberlain (1989)
(Electrical Engineering)
D.Sc., Washington University, 1989
Computer engineering, parallel computation, computer architecture,
multiprocessor systems

L. Andrew Oldroyd (1981)
(The Boeing Company)
Ph.D., University of Oklahoma, 1977
Image understanding and remote sensing, robotics, programming languages

Paul S. Min (1990)
(Electrical Engineering)
Ph.D., University of Michigan, 1987
Routing and control of telecommunications networks, fault-tolerance and
reliability, software systems, network management

Robert A. Rouse (1977)
(School of Medicine)
Ph.D., Northwestern University, 1968
Corporate strategic technology planning, expert systems/artificial intelligence

Affiliate Assistant Professors

Thomas L. Bugnitz (2000)
M.B.A., Washington University, 1974
Information systems, systems analysis

C. David Butler (2000)
M.B.A., University of Iowa, 1991.
Web design, database systems

Sean R. Eddy (2000)
(Genetics)
Ph.D., University of Colorodo, Boulder, 1991
Probabilistic modeling and formal grammars, genome analysis,
RNA computational molecular archaeology

Senior Research Associates
Fred Kuhns (1997)
M.S., Washington University, 1991
Operating systems, networking, software frameworks,
extensible architectures

Stan C. Kwasny (1987)
Ph.D., Ohio State University, 1980
Natural language processing, connectionism, artificial intelligence,
speech-understanding systems

Kenneth F. Wong (1984)
(Applied Research Laboratory)
D.Sc., Washington University, 1985
Computer communications, networking, software architecture

Professor Emeritus
Seymour V. Pollack (1966)
M.S. Brooklyn Polytechnic Institute, 1960
Intellectual property, information systems.

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 an basic understanding of computer science for application to another field, the Department of Computer Science 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 to 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 CS 422S, CS 431S, and 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 advisor in the Department of Computer Science to discuss your options and develop a plan consistent with your goals.


Undergraduate Programs

This section introduces you to the wide variety of undergraduate programs offered by the Department of Computer Science and will help you start thinking about which options are right for you. Additional information can be found at URL http://www.cs.wustl.edu/~sg/advising/.

Below we describe the Minor in Computer Science, the second major, the premedical option, the BS degree, the BSCS degree, the BS in Computer Engineering, combined undergraduate and graduate programs, the Undergraduate Research Opportunities Program, the cooperative-education program, and the CS honors program.

If you are interested in learning about computer technology but are not sure where to start, there are several options you might consider. If you are interested in the use of computer and networking tools for application to other areas or just to be computer-literate, we offer CS 100, a one unit hands-on introduction. If you are interested in a more in-depth study on using computer technology and applications software, we suggest you consider CS 152.  Finally, if you are interested in an introduction to computer science and computer programming we recommend starting with CS 101G.

Minor in Computer Science

If your goal is a basic foundation in computer science for application to another field, but you are not planning a career as a practicing computer scientist, the Minor in Computer Science is a good choice. The minor consists of five CS courses, including three core courses and two electives.  The core courses provide an introduction to computer science concepts and problem-solving techniques.  The electives offer flexibility to integrate your computer science studies with your major area.  You select the courses that are most important to you, whether your interests are in fine arts, linguistics, psychology, philosophy, law, business, medicine, the natural sciences, or anything else.

The requirements for the CS minor are:

Core: CS 101G, CS 102G and CS 241.

 CS electives: Any two additional CS courses selected among CS 201 and CS courses with an S, M, T or A suffix.  (See "About Computer Science" above for an explanation of the suffix designations.)

For the CS electives, you may choose two related electives for depth of coverage, or you may choose two very different courses for breadth of exposure. Please be aware of prerequisites in selecting elective courses. Should you decide to go further in the field, all courses in the CS minor can be counted toward a CS major.  All courses used for the CS minor must be taken for a grade and you must earn a C- or better.

The minor can be declared any time after the five courses to be taken are selected. A declaration of a CS minor form can be obtained in Lopata 324 or the CS office (Bryan 509).

Second Major

A second major is ideal for interdisciplinary study in areas such as cognitive science, computational biology, chemistry, physics,  philosophy, or linguistics.  The second major option is also well-suited for students planning careers in medicine, law, business, architecture, and fine arts.

If you are earning a degree in another division (such as Business or Arts and Sciences), you earn a second major in computer science by completing the computer science and math requirements for the Bachelor of Science (BS) degree program. It is not necessary to complete other distribution requirements (i.e. natural science requirement, humanities and social sciences electives, Ecomp 100, and EP 310) of the School of Engineering to complete the second major.

If you are in the School of Engineering earning a degree in computer science, you can also earn a second major in any department in the School of Arts and Sciences simply by completing the departmental requirements.  For example, to complete a second major in psychology, you need only satisfy the Psychology Department's requirements.  You do not need to satisfy the School of Arts and Sciences breadth requirements, and the second major requires only the standard 120 units.

 Premedical Option within Computer Science

Students may pursue a pre-medicine curriculum in conjunction with either the BS or BSCS degree options (described below) for computer science majors.  We we have provided a sample schedule for a student pursuing the BS degree option.  The BSCS option may result in some semesters with an 18-credit hour load; however, students may reduce this load by taking physics over the summer.  Additional details are available from your advisor and from the university office for pre-professional advising.

 Dual Degree

Another way to combine study in two different fields is through the Combined Degree program.  In this program, by satisfying all requirements for two individual degrees, you earn two separate bachelor's degrees, one in Computer Science and the other in another discipline (from any of the five schools).  If your second degree is from College of Arts and Sciences then 150 units are required.

Bachelor of Science (BS) with a major in Computer Science

The most flexible degree option in computer science is the Bachelor of Science (BS).  The BS degree is designed for students who want a solid background for a career in computer science, with additional flexibility to choose a well-rounded variety of courses.  Because it has fewer specific course requirements than the BSCS and does not require the SEAS common studies (such as advanced mathematics, physics, chemistry, etc.), the BS degree program leaves room for you to select courses according to your particular needs and interests. Also, the BS works well if you want to complete another major along with computer science.  (See "Second Major.")  This program is also well-suited for students planning to enter medical school or law school.

Students working toward a BS Degree must meet all requirements for a Bachelor of Science Degree, and the following course requirements:

 Computer Science Core Requirements: CS 101G, 102G, 201, 241, 342S and either CS 422S, 431S, or 455S.  Each of these core courses must be passed with a grade of C- or better.

 Computer Science Electives:  At least 24 units of computer science electives, selected from any computer science course with an S, M, T or A suffix.  Students may use up to 6 units of approved independent work (CS 400, 493-494, CS 499) as part of their computer science electives.

 Math Requirement: Math 131-132-233 (or Math 141-142) and Probability (SSM 326A, Math 320, or the sequence QBA 120/QBA 121). Upon completing a course in the calculus sequence (Math 131,132,233) with a grade of C- or better, you may apply to receive credit for the preceding courses in the calculus sequence.

 Additional Requirements: 8 units in natural sciences or psychology, C+ or better in Ecomp 100 or 199 (unless waived), EP 310 (or comparable demonstration of technical writing ability), and the humanities and social sciences electives.

All computer science and math courses taken for the above requirements as well as Ecomp 100 or 199 and EP 310 cannot be taken on a pass/fail basis.

Bachelor of Science in Computer Science (BSCS)

The Bachelor of Science in Computer Science (BSCS) is the traditional computer science degree in the School of Engineering.  It is designed for students planning a career in computer science and desiring a degree with an engineering flavor.  Students working toward a B.S.C.S. degree must meet all requirements for a professional degree. In addition, there are the following departmental course requirements:

 Common Studies Program Requirement: Includes C+ or better in Ecomp 100 or 199 (unless waived), Math 131-132-233 (or Math 141-142), Math 217, Physics 117A-118A, Chem 111A-151, EP 310, humanities and social sciences electives, and an engineering breadth course. Upon completing a course in the calculus sequence (Math 131,132,233) with a grade of C- or better, you may apply to receive credit for the preceding courses in the calculus sequence.

 Computer Science Core Requirements: CS 101G, 102G, 201, 241, 342S, and 456S; either CS 260M or 306S; and either CS 422S, 431S, or 455S. Each of these core courses must be passed with a grade of C- or better.

Computer Science Elective Requirements: At least 18 additional units in computer science or computer science-related courses with an S, M, T or A suffix of which at least one must be a theory (T) course and at least one must be a systems (S) course and at least one must be a Machine (M) or Application (A) course. Students may use up to 6 units of  approved independent work (CS 400, 493-494, CS 499) as part of their computer science electives.  Such independent work is not classified as S, M, T or A.

 Additional Departmental Requirements: SSM 317 and SSM 326A.

All courses taken to meet the above requirements (with the exception of the humanities and social sciences electives) cannot be taken on a pass/fail basis.

 Bachelor of Science in Computer Engineering  (BSCoE)

Computer Engineering is an interdepartmental program sponsored by the Departments of Computer Science and Electrical Engineering with the goal of providing a solid education in the engineering of computer systems. The program encompasses studies of hardware, software, and systems questions that arise in the design, development, and application of computers. It is supervised by a Computer Engineering program director and committee. Upon successful completion of the program, the student receives the degree Bachelor of Science in Computer Engineering. Students with a strong interest in both computer science and computer engineering may choose to pursue the dual degree combination of a BSCS and a BSCoE.

 Combined Undergraduate and Graduate Study

The Department of Computer Science offers in depth graduate study in many areas, including networking, distributed systems, algorithms, and artificial intelligence.  Students entering the graduate programs require a background in computer science fundamentals equivalent to at least the Minor in Computer Science.  Washington University undergraduates seeking admission to the graduate degree program to obtain a master's in computer science must take the general Graduate Record Examination (GRE).  We also recommend that you take the GRE subject test in computer science or a related subject. For more information, contact the department office, (314) 935-6160.

 The Joint B.S.-M.S.

This five-year program that leads to both the bachelor's and master's degrees offers the student an excellent opportunity to combine undergraduate and graduate studies in an integrated curriculum.  The combination of the two programs extends the flexibility of the undergraduate curriculum to more advanced studies, thereby enabling students to plan their entire spectrum of computer science studies in a more comprehensive educational framework.  Consistent with the general requirements defined by the School of Engineering and Applied Science, a minimum of 150 units of academic credit is required for completion of the BSMS program. In addition, courses must be selected so that the department's undergraduate and graduate requirements are both independently met.  Students in the BSMS program can exploit the program's flexibility by taking graduate courses toward the graduate degree while still completing the undergraduate degree requirements. We have provided a sample schedule for the B.S.-M.S. program.

The BSMS program offers early admission to the graduate program in computer science in the junior or senior year and they allow you to complete the master's degree in only one additional year of study (instead of the usual 3 semesters).  Each master's level computer science course that you take at Washington University that is not counted toward your undergraduate degree can be counted toward the 30 units required for the MS.  Taking advantage of this program can also result in a financial advantage, since the total time to completion is shortened and undergraduate tuition is lower than graduate tuition. Also, if you choose to do a Master's Project or Master's Thesis, this gives you the flexibility to spread the research work over a longer period.

If you plan to apply to this program, it is recommended that you complete at least an undergraduate minor in computer science, three additional computer science courses at the 400 level, and one at the 500 level during your first four years. See the sample schedule for the B.S.-M.S. program.

 Combined Bachelor/Master's Program

This program is designed to enable students in other Washington University Schools to pursue a coordinated five-year study leading to a bachelor degree outside enginnering and a master's degree in the School of Engineering and Applied Science. The admissions process and the graduation requirements for this program are identical to those for the B.S.-M.S. program described above.

Students in this program usually complete a CS minor to obtain the background needed for their M.S. course work. Ideally students will take CS 101G, CS 102G, CS 201 (or some discrete mathematics course), CS 241, CS 306S and CS 342S as part of the undergraduate program (typically using these courses as free electives).

 B.S.-D.Sc. Program

The School of Engineering and Applied Science has established a new combined Bachelor of Science/Doctor of Science program. This program is designed to enable highly motivated students of exceptional talent to embark on an accelerated course of studies and research leading to a Doctor of Science degree within seven years. The degree requirements for B.S.-D.Sc. degree are those associated with the B.S. and D.Sc. degree programs. However, graduate courses at the 500-level or above may be counted toward both degrees subject to departmental approval. Students may be admitted to the program upon entry to Washington University but no later than the junior year. More information about the doctoral program can be found in our Guide to the Doctoral Program and a sample schedule for the B.S.-D.Sc. program.

 B.S.-M.B.A. Program

The growing importance of computer-based information systems in the business environment has produced a sustained high demand for graduates with master's degrees in business administration and undergraduate majors in computer science and engineering.  A sample curriculum showing a "typical" schedule for a B.S.-M.B.A. student.

 Research and Industry Experience

If you want to become involved in computer science research or get experience in industry while you are an undergraduate, there are many opportunities to do so.  A few of these are listed below.

CO-OP: The Cooperative Education Program allows you to get valuable experience working in industry while an undergraduate.  Doing a CO-OP can help give you another perspective on your education, and may lead to full-time employment.  A large number of companies participate in this program.  More information is available from the CO-OP office in Lopata 204.

UROP: The Undergraduate Research Opportunities Program in the Department of Computer Science helps to match undergraduates with faculty and research groups.  Research projects are available either for pay or for credit through CS 400 (Independent Study). See http://www.cs.wustl.edu/cs/cs/urop/urop.html for details.
 
Honors Program: If you maintain a 3.5 GPA and complete a thesis describing research that you have performed while an undergraduate, then you will graduate "with distinction" and your thesis title will appear on your transcript.  Besides being a valuable experience, completing a thesis can be advantageous if you apply to graduate school.  When selecting this option you should register for
CS499 Undergraduate Honors Thesis.  Students in the honors program are encouraged to take several graduate level courses and to serve as undergraduate teaching assistants for upper-level undergraduate courses.


Computing Facilities

The School of Engineering and Applied Science has numerous undergraduate laboratories.  The computer science laboratories including a UNIX lab, 4 Pentium labs and an Open-Shop lab with Pentiums and Macintoshes.  In addition, many computer science undergraduates join research groups and for this work they use state-of-the-art equipment such as Silicon Graphics Workstations, our ATM computer network testbed, and a visualization laboratory with state-of-the-art video production and multimedia publication capabilities.


Advanced Placement/Proficiency

Students recieving a 4 or 5 on the AB Computer Science AP exam are awarded 4 units of credit equivalent to CS 136G. Students continuing their study of Computer Science should enroll in CS 101G. Students with unusually strong background beyond the scope of the AP exam should consult Dr. Sally Goldman (sg@cs.wustl.edu; 5-7545) for guidance on appropriate placement. No credit is given for the A Computer Science AP exam.

Upon request, the Computer Science department will evaluate a student for proficiency for any of our introductory courses. If a student is determined to be proficient in a given course, that course will be waived (without awarding credit) in the student's degree requirements and the student will be offered guidance in selecting a more advanced course.


Prerequisite Chart


 Undergraduate Courses

As discussed in the earlier section "About Computer Science" the letter suffix indicates if a course is classified in the general category of software systems (S), ardware (M), theory (T) or applications (A).  The only exceptions are its introductory courses CS 101G, 102G, 201, 241 and service courses which cannot be taken for credit towards the CS course requirement for minors or majors. Course Descriptions for all courses offered by the Department of Computer Science.

 Sample Schedules

On the following pages are some sample schedules for several of the Computer Science degree options.  These schedules demonstrate some of the many course schedules that can be selected in completing your CS 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.



 The Bachelor of Science in Computer Science Degree (BSCS)
 Sample Schedule for a First-year Student Beginning Computer Science

Note: If you want to take CS 342S by the end of your sophomore year then take the CS courses as given by the next schedule -- BS starting Freshman year.
           Units 
Fall  Spring 
First Year 
 
Calculus II, III (Math 132, 233)  or 
Accelerated Calculus I, II (Math 141, 142)
3 or  4  4
General Physics I, II (Physics 117A, 118A)   4 
Computer Science I, II (CS 101G,102G) 4
Humanities/social sciences electives  -
Ecomp 100 or 199
 ----- 
14 or 15 
--- 
15
 Second Year 
 
General Chemistry I (Chem 111A) -
General Chemistry Laboratory I (Chem 151)  -
Differential Equations (Math 217)  -
Engineering Mathematics (SSM 317)  4
Formal Foundations of Computer Science (CS 201) -
Algorithms and Data Structures (CS 241)  3
Digital Computers I: Organizational and Logical Design (CS 260M)   or 
Processing Systems and Structures (CS 306S) 
3
Humanities/social sciences electives  3
Free electives 3
  --- 
15 
--- 
16
Third Year 
 
Object-Oriented Software Development Lab (CS 342S)  -
Computer science electives 6
Technical Writing (EP 310)  -
Probability and Statistics for Engineering (SSM 326A)  -
Common Studies breadth electives 3
Humanities/social sciences electives 3
Free electives  3
   --- 
15 
--- 
15
Fourth Year 
 
Operating Systems Organization (CS 422S)  or 
Translation of Computer Languages (CS 431S)  or 
Programming Systems and Languages (CS 455S) 
 - 
Computer science electives  6
Software Engineering Workshop (CS 456S)  3
Free electives  6
  ---- 
15 
---- 
15
 1 If Ecomp 100 is waived, this course can be replaced bya free elective.
 


 The Bachelor of Science (BS) with a major in Computer Science
 Sample Schedule for a First-Year Student Beginning Computer Science

This schedule also applies to a student doing a second major by just replacing the natural science courses, humanities/social sciences electives, Ecomp, and EP 310 by the distribution requirements for your major.

           Units 
Fall Spring
First Year 
 
Calculus II, III (Math 132, 233)  1  or 
Accelerated Calculus I, II (Math 141, 142) 
3 or 4 4
Computer Science I, II (CS 101G,102G)  4 4
Formal Foundations of Computer Science (CS 201)  - 3
Humanities/social sciences electives  3 -
Free electives  3 -
Ecomp 100 or 199  2  - 3
----- 
13 or 14 
--- 
14 
Second Year 
 
Algorithms and Data Structures (CS 241)  3 -
Object-Oriented Software Development Laboratory (CS 342S) - 3
Computer science elective - 3
Natural Science or Psychology 
Humanities/social sciences electives 
Free electives 
--- 
16 
--- 
16 
Third Year 
 
Computer science electives  6
Technical Writing (EP 310)  3  - 
Probability and Statistics for Engineering (SSM 326A) 
Natural Science or Psychology   or 
free electives 
Humanities/social sciences electives 
Free electives 
--- 
15 
--- 
15 
Fourth Year 
 
Operating Systems Organization (CS 422S)   or 
Translation of Computer Languages (CS 431S)   or 
Programming Systems and Languages (CS 455S) 
 3 
Computer science electives  6
Humanities/social sciences electives 
Free electives  6
--- 
15 
--- 
15

 1 Upon completing Math 132 with a C- or better you may apply to receive credit for Math 131.
 2 If Ecomp 100 is waived, this course can be replaced bya free elective.
 


 The Bachelor of Science (BS) with a major in Computer Science
 Sample Schedule for a Student Beginning Computer Science in Third Semester

This schedule also applies to a student doing a second major by just replacing the natural science courses, humanities/social sciences electives, Ecomp, and EP 310 by the distribution requirements for your major.
 
           Units 
 Fall  Spring 
First Year 
 
Calculus II, III (Math 132, 233)   or  
Accelerated Calculus I, II (Math 141, 142) 
3 or 4  4
Humanities/social sciences electives  3
Free electives  9
----- 
15 or 16 
--- 
16 
Second Year 
 
Natural science or psychology  3 or 4  3 or 4
Computer Science I (CS 101G) 
Computer Science II (CS 102G)  4
Formal Foundations of Computer Science (CS 201) 
Humanities/social sciences electives  3
Free electives 
Ecomp 100 or 1991  -
----- 
16 or 17 
----- 
13 or 14
Third Year 
 
Algorithms and Data Structures (CS 241)  -
Digital Computers I: Organizational and Logical Design (CS 260M)   or 
Processing Systems and Structures (CS 306S) 
-
Object-Oriented Software Development Laboratory (CS 342S) - 3
Computer science electives  6
Technical Writing (EP 310)  3
Natural science or psychology   or 
free electives 
-
Humanities/social sciences electives  3
Free electives  -
--- 
15 
--- 
15 
Fourth Year 
 
Operating Systems Organization (CS 422S)   or 
Translation of Computer Languages (CS 431S)   or  
Programming Systems and Languages (CS 455S) 
 3  -
Computer science electives 
Probability and Statistics for Engineering (SSM 326A)  3  - 
Free electives  6
---- 
15 
---- 
15 
 1 If Ecomp 100 is waived, this course can be replaced bya free elective.
 


 The Bachelor of Science (BS) with a major in Computer Science
 Sample schedule for a premedical student

This schedule also applies to a student doing a second major by just replacing the natural science courses, humanities/social sciences electives, Ecomp, and EP 310 by the distribution requirements for your major.
           Units 
Fall  Spring 
First Year 
 
Calculus II, III (Math 132, 233)   or  
Accelerated Calculus I, II (Math 141,142) 
3 or 4 
Computer Science I, II (CS 101G,102G) 
General Chemistry I, II (Chem 111A,112A) 
General Chmistry Laboratory I, II (Chem 151,152) 
Fundamentals of Biology I (Bio 296A) 
Humanities/social sciences electives 
------ 
15 or 16 
--- 
17 
Second Year 
 
Formal Foundations of Computer Science (CS 201)  -
Algorithms and Data Structures (CS 241) 
Fundamentals of Biology II (Bio 297A) 
Fundamentals of Biology III: Genetics (Bio 3051) 
General Physics I, II (Physics 117A, 118A) 
Humanities/social sciences electives 
Ecomp 100 or 199 1 
--- 
14 
--- 
14
Third Year 
 
Object-Oriented Software Development Laboratory (CS 342S)
Computer science electives 
Organic Chemistry I, II (Chem 251, 252) 
Organic Chemistry Laboratory I (Chem 257) 
Biology elective with lab  5
Probability and Statistics for Engineering (SSM 326A) 
--- 
14 
--- 
17 
Fourth Year 
 
Operating Systems Organization (CS 422S)   or  
Translation of Computer Languages (CS 431S)   or 
Programming Systems and Languages (CS 455S) 
Computer science electives 
Technical Writing (EP 310) 
Humanities/social sciences electives
--- 
15 
--- 
15 
 1 If Ecomp 100 is waived, this course can be replaced bya free elective.
 


The B.S.-M.S. Program
Sample schedule 1

        Units 
Fall  Spring 
Third Year 
 
Computer Science electives (for B.S.) 
Computer Science electives (for M.S.) 
Technical Writing (EP 310)  -
Probability and Statistics for Engineering (SSM 326A) 
Natural science or psychology   or  free elective  -
Free electives 
-- 
15
-- 
15
Fourth Year  
 
Operating Systems Organization (CS 422S)   or 
Translation of Computer Languages (CS 431S)   or  
Programming Systems and Languages (CS 455S) 
Computer Science electives (for B.S.) 
Computer Science electives (for M.S.) 
Humanities/social science electives 
Free electives 
--- 
15 
--- 
15 
Fifth Year 
 
Computer Science electives (for M.S.) 
Free electives 
--- 
15 
--- 
15 
1 This assumes that the first two years are as shown on the
sample program for the B.S.  The B.S.C.S. could instead be used if desired. For the M.S. 30 units of computer science course work is required which is not used in any way for the B.S. degree. Of these 30 units, at least 18 units must be 500-level computer science courses. Any courses taken outside the department requires departmental approval. None of the 30 units may be taken as independent study (i.e., CS 500 or 600). Students may count, toward the M.S., up to 9 units of approved 400-level courses. Furthermore, there must be at least one 500-level (T) course, at least one 500-level Systems (S) course, and at least one Machine (M) or Application (A) course taken for the M.S.
 
 


The B.S.-D.Sc. Program
Sample Schedule 1

           Units 
Fall Spring
First Year 
 
Calculus II, III (Math 132, 233) 2  3 4
Computer Science I, II (CS 101G,102G)  4 4
Formal Foundations of Computer Science (CS 201)  - 3
Humanities/social sciences electives  3 3
Free electives  6 -
Ecomp 100 or 199 3  - 3
--- 
16 
--- 
17 
Second Year 
 
Algorithms and Data Structures (CS 241)  3 -
Processing Systems and Structures (CS 306S) 3 -
Object-Oriented Software Development Laboratory (CS 342S) - 3
Computer science elective - 3
Physics 117-118 
Humanities/social sciences electives 
Free electives 
--- 
16 
--- 
16 
Third Year 
 
Independent Study (CS 400) 3
Operating Systems Organization (CS 422S)   or 
Programming Systems and Languages (CS 455S)4 
-
Introduction to Formal Languages and Automata (CS 507T)4 3
Computer Systems Organization (CS 521M)4 3
Technical Writing (EP 310)  3  - 
Probability and Statistics for Engineering (SSM 326A)
Humanities/social sciences electives 
Free electives  -
--- 
15 
--- 
15 
Fourth Year 
 
Operating Systems Organization (CS 422S)   or 
Translation of Computer Languages (CS 431S)4 
-
Advanced Algorithms (CS 539T)4 3
DSc 500-level Application Breadth Course4 3
CS 500-level elective 3
Free electives  9 6
Doctoral Research (CS 690)
--- 
15 
--- 
15 
Fifth Year 
 
CS 500-level elective  6
Doctoral Research (CS 690)  3
--- 
--- 
9
Sixth Year 
 
CS 500-level elective  3
Doctoral Research (CS 690)  3
--- 
--- 
9
Seventh Year 
 
Doctoral Research (CS 690)  9

1 The B.S.C.S. could instead be used if desired. It is typical for a student, after the third year, to spend summers working on his/her research. It is assumed that the student completes the requirements for the Faculty Review by the start of the fifth year, completes the oral qualifying exam in the fifth year, completes and defends the dissertation proposal in the sixth year, and completes and defends the dissertation in the seventh year.
 2 Upon completing Math 132 with a C- or better, you may apply to receive credit for Math 131.
 3 If Ecomp 100 is waived, this course can be replaced by a free elective.
 4 This course satisfies one of the six courses required by the D.Sc. Breadth Requirement.


The B.S.-M.B.A. Program
Sample schedule 1

        Units 
Fall  Spring 
Third Year 
 
Object-Oriented Software Development Lab (CS 342S) 
Management Information Systems (CS 467A) 
Operating Systems Organization (CS 422S)   or 
Translation of Computer Languages (CS 431S)   or  
Programming Systems and Languages (CS 455S) 
Advanced Algorithms (CS 441T)   - 
Technical Writing (EP 310)  -
Probability and Statistics for Engineering (SSM 326A)  3
Humanities/social sciences electives 
Free electives 
-- 
15
-- 
15
Fourth Year  
 
Introduction to Financial Accounting (Acct 5001)  1.5 
Financial Management (Fin 5200) 
Professional Development Planning (Mgt 5300)  0.5 
Introduction to Management and Strategy (Mgt 5301)  1.5  -
Integrating Case Experience (Mgt 5303)  -
Managerial Economics (MEC 5400) 
Managerial Statistics (MEC 5410) 
Marketing Management (Mkt 5500) 
Organizational Behavior and Design (OB 5600)  -
Operations Management (OMM 5700)  -
Strategy Cost Analysis (ACT 5002)  1.5 
M.B.A. electives 
CS electives 
Free electives 
--- 
17.5 
--- 
16.5 
Fifth Year 
 
Strategic Management (Mgt 5302)  -
M.B.A. electives 
Software Engineering Workshop (CS 456S)  -
400-level (or above) CS electives 
--- 
15 
--- 
14 
1 This assumes that the first two years are as shown on the
sample program for the B.S.C.S.  A B.S.-M.B.A. program can also be done.  During the 4th and 5th years, a total of 60 units are required where at least 45 must be from the Olin School of Business's M.B.A. program and the remaining 15 units may be 400-level or higher courses from the engineering school taken during the two years of M.B.A. study.

2 Schedule presumes that computer science students will pass proficiency examinations in MEC 5300, MEC 5310 and MEC 5320.