Courses


OFFICES:
Undergraduate Affairs 3402
Graduate Affairs 3402
Applied Physics and Mathematics Building, Muir College

http://www.cs.ucsd.edu

Professors

Donald W. Anderson, Ph.D., Emeritus

Richard K. Belew, Ph.D.

Francine D. Berman, Ph.D.

Kenneth L. Bowles, Ph.D., Emeritus

Walter A. Burkhard, Ph.D.

J. Lawrence Carter, Ph.D.

Chung-Kuan Cheng, Ph.D.

Andrew Chien, Ph.D.

Garrison W. Cottrell, Ph.D.

Jeanne Ferrante, Ph.D.

Joseph A. Goguen, Ph.D.

Fan Chung Graham, Ph.D.

Ronald Graham, Ph.D.

William E. Howden, Ph.D.

Russell Impagliazzo, Ph.D.

T. C. Hu, Ph.D.

Ramesh C. Jain, Ph.D., Emeritus

Andrew B. Kahng, Ph.D.

Sidney Karin, Ph.D. (In-Residence)

Alex Orailoglu, Ph.D.

Alon Orlitsky, Ph.D.

Joseph C. Pasquale, Ph.D.

Ramamohan Paturi, Ph.D.

Pavel Pevzner, Ph.D.

Venkat P. Rangan, Ph.D.

Larry Smarr, Ph.D.

Walter J. Savitch, Ph.D.

George Varghese, Ph.D.

Victor D. Vianu, Ph.D.

S. Gill Williamson, Ph.D.

Associate Professors

Scott B. Baden, Ph.D.

Mihir Bellare, Ph.D.

Bradley Calder, Ph.D.

Charles P. Elkan, Ph.D.

William G. Griswold, Ph.D.

Keith Marzullo, Ph.D.

Alexander Vardy, Ph.D.

Assistant Professors

Daniele Micciancio, Ph.D.

Yannis Papakonstantinou, Ph.D.

Stefan Savage, Ph.D.

Dean M. Tullsen, Ph.D.

Geoffrey Voelker, Ph.D.

Bennet S. Yee, Ph.D.

Adjunct Faculty

Michael J. Bailey, Ph.D.

Samuel R. Buss, Ph.D.

Walter H. Ku, Ph.D.

Reagan Moore, Ph.D.

George Polyzos, Ph.D.

Jeffrey B. Remmel, Ph.D.

J. B. Rosen, Ph.D.

Terrence J. Sejnowski, Ph.D.

Research Faculty

Henri Casanova, Ph.D., Assistant Project Scientist

Philip Papadopoulos, Ph.D., Associate Research Scientist

Academic Coordinators

Paul Kube, Ph.D.

Gary Gillespie, M. Eng.

Computer Science and Engineering (CSE)

The Undergraduate Programs

The Department of Computer Science and Engineering offers computer science and computer engineering curricula leading to the degrees in B.S. in Computer Science, B.S. in Computer Engineering, and B.A. in Computer Science. The courses of study prepare students for graduate study in these fields as well as immediate employment. The B.A. degree is intended to provide a more flexible program of study allowing significant studies beyond computer science and engineering.

These degrees are four-year endeavors. Students in the B.S. programs need to enroll in no more than sixteen units per quarter during their junior and senior years to meet their major requirements. The B.A. program has fewer major requirements. In addition, each student must satisfy general-education course requirements determined by the student's college.

B.S. Computer Science Program

The lower-division B.S. computer science program is designed to provide a strong foundation in mathematics, physics, electrical engineering, programming methodology and skills, and computer organization. Upper-division core courses deal with the theory and design of algorithms, hardware, and software. Students can gain additional breadth and/or depth in computer science and engineering by an appropriate selection of technical electives.

Students should have sufficient background in high school mathematics so that they can take freshman calculus in their first quarter. Courses in high school physics and computer programming, although helpful, are not required for admission to the program.

The department requires a total of 134 units for the B.S. computer science program. There are three varieties of requirements: lower-division, upper-division, and technical electives.

1. LOWER-DIVISION REQUIREMENTS

Students are expected to complete the following seventy units by the end of their sophomore year.

Computer Science and Engineering: CSE 8B or 11, 12, 20 or Math. 15A, 21 or Math. 15B, and 30; twenty units.

Note: Students without any programming experience are advised to take CSE 8A and then CSE 8B, instead of CSE 11. CSE 11 is a faster paced version of CSE 8A and CSE 8B, and requires experience in programming with a compiled language.

Mathematics: Math. 20A-B, 21C, 21D, and 20F; twenty units.

Physics: Phys. 2A-B-C; 12 units. Math. 20A is a prerequisite for Phys. 2A. Students whose performance on the Department of Mathematics placement test permits them to start with Math. 20B or a higher course may take Phys. 2A in the fall quarter of the freshman year; all others will take Phys. 2A in the winter quarter of the freshman year. Students who received high grades in both calculus and Physics in high school may substitute the major's sequence, Phys. 4A-B-C for Phys. 2A-B-C.

Physics Lab: Phys. 2BL or 2CL or 2DL; two units. The lab course should be taken concurrently with the Phys. 2 or Phys. 4 sequence.

Introduction to Electrical Engineering: ECE 53A-B; eight units. ECE 53A-B are courses that give a comprehensive introduction to electrical engineering.

Probability and Statistics: Math.183; four units.

Science/Mathematics Elective: Students are required to take one of the following four-unit science/mathematics courses: Phys. 2D, Math. 20E(2F), Chem. 6A, BILD 1, 10, 12, 14, 30.

2. UPPER-DIVISION REQUIREMENTS

All B.S. computer science students are required to take CSE 100 or Math. 176, 101 or Math. 188, 105 or Math. 166, 120, 130, 131A-B, 140, 140L, 141 and 141L; forty units.

Students are expected to complete almost all of these courses by the end of their junior year. If students want to accelerate their program, they should consider taking CSE 100 or Math. 176, CSE 105, and/or CSE 140 and 140L in the sophomore year.

3. TECHNICAL ELECTIVES

B.S. computer science students are required to take six technical electives for a total of twenty-four units. Four electives must be computer science and engineering upper-division or graduate courses.

The remaining two technical electives can be chosen from the wider set of courses that includes computer science and engineering upper-division courses, graduate courses, and other electives as listed under the section titled Electives. Other restrictions in the selection of technical electives are also given in the section Electives.

4. B.S. COMPUTER SCIENCE, SAMPLE PROGRAM

FALL                WINTER              SPRING______ 
FRESHMAN YEAR  
CSE 8A or CSE 11    CSE 12              CSE 20 or 
Math. 20A           Math. 20B             Math. 15A 
GE                  Phys. 2A            Math. 21C 
                    GE                  Phys. 2B 
                                        GE__________ 
SOPHOMORE YEAR 
CSE 21 or Math 15B  Sci/Math Elec       CSE 30 
Math. 21D           Math. 20F           Math. 183 
GE                  ECE 53A             Phys 2BL or 
GE                  Phys. 2C              2CL or 2DL
                                        ECE 53B_____
JUNIOR YEAR 
CSE 100 or Math 176 CSE 101 or Math 188 CSE 120 
CSE 140             CSE 141             CSE 130 
CSE 140L            CSE 141L            CSE Tech Elec
CSE 105 or Math 166 CSE Tech. Elec.     GE 
GE                  GE______________________________ 
SENIOR YEAR 
CSE 131A            CSE 131B            CSE Tech Elec  
CSE Tech. Elec.     Tech. Elec.         Tech. Elec. 
GE                  GE                  GE__________ 

B.S. Computer Engineering Program

(Curriculum is the same in both the CSE and ECE departments.)

The B.S. computer engineering program is jointly administered by the Departments of Com-puter Science and Engineering and Electrical and Computer Engineering. Students wishing to take the computer engineering program must be admitted to one of the departments.

The lower-division computer engineering program is designed to provide a strong foundation in mathematics, physics, electrical engineering, programming methodology and skills, and computer organization. Upper-division core courses deal with the theory and design of algorithms, hardware and software, as well as electronic systems. Students can gain additional breadth and/or depth in computer science and engineering by an appropriate selection of technical electives.

Students should have sufficient background in high school mathematics so that they can take freshman calculus in their first quarter. Courses in high school physics and computer programming, although helpful, are not required for admission to the program.

B.S. computer engineering program requires a total of 146 units. There are three varieties of requirements: lower-division, upper-division, and technical electives.

1. LOWER-DIVISION REQUIREMENTS

Students are expected to complete the following seventy units by the end of their sophomore year.

Computer Science and Engineering: CSE 8B or 11, 12, 20 or Math. 15A, 21 or Math. 15B, and CSE 30; twenty units.

Note: Students without any programming experience are advised to take CSE 8A and then CSE 8B, instead of CSE 11. CSE 11 is a faster paced version of CSE 8A and CSE 8B, and requires experience in programming with a compiled language.

Mathematics: Math. 20A-B, 21C, 21D, and 20F; twenty units.

Physics: Phys. 2A-B-C-D; sixteen units. Math. 20A is a prerequisite for Phys. 2A. Students whose performance on the Department of Mathematics placement test permits them to start with Math. 20B or a higher course may take Phys. 2A in the fall quarter of the freshman year; all others will take Phys. 2A in the winter quarter of the freshman year. Students who received high grades in both calculus and physics in high school may substitute the major's sequence, Phys. 4A-B-C-D for Phys. 2A-B-C-D.

Physics Lab: Phys. 2BL or 2CL or 2DL; two units. The lab courses should be taken concurrently with the Phys. 2 or Phys. 4 sequence.

Introduction to Electrical Engineering: ECE 53A-B; eight units. ECE 53A-B are courses that give a comprehensive introduction to electrical engineering.

Probability and Statistics: ECE 109; four units.

2. UPPER-DIVISION REQUIREMENTS

All B.S. computer engineering students are required to take CSE 100 or Math. 176, 101 or Math. 188, 105 or Math. 166, 120, 131A-B, 140, 140L, 141, and 141L; thirty-six units.

In addition, all B.S. computer engineering students have to fulfill the following upper-division ECE requirements.

Linear Systems: ECE 101, ECE 171A or 161A; eight units.

Electronic Circuits and Systems: ECE 102, ECE 108; eight units.

If students want to accelerate their program, they should consider taking CSE 100 or Math. 176, CSE 105 or Math. 166, and/or CSE 140 and 140L in the sophomore year.

3. TECHNICAL ELECTIVES

All B.S. computer engineering students are required to take six technical electives for a total of twenty-four units. One of these courses must be either ECE 111 or ECE 118. Of the remaining five courses, four must be computer science and engineering or electrical and computer engineering upper-division or graduate courses.

The remaining course can be any computer science and engineering or electrical and computer engineering upper-division or graduate course, or any other course listed under the section titled Electives. Other restrictions in the selection of technical electives are also given in the section Electives.

4. B.S. COMPUTER ENGINEERING, SAMPLE PROGRAM

FALL                 WINTER                SPRING________  
FRESHMAN YEAR  
CSE 8A or CSE 11     CSE 12                CSE 20 
Math. 20A            Math. 20B               or Math. 15A 
GE                   Phys. 2A              Math. 21C 
                     GE                    Phys. 2B 
                                           GE____________
SOPHOMORE YEAR 
CSE 21 or Math. 15B  Math. 20F             CSE 30 
Math. 21D            ECE 53A               ECE 53B 
Phys. 2C             ECE 109               Phys. 2D 
GE                   GE                    Phys. 2BL or 
                                             2CL or 2DL__ 
JUNIOR YEAR 
CSE 100 or Math 176  CSE 101 or Math. 188  CSE 105 or 
CSE 140              CSE 141                 Math. 166 
CSE 140L             CSE 141L              CSE 120 
ECE 102              ECE 108               (Req. Tech. Elec.- 
GE                   GE                      ECE 111 or 
                                             ECE 118) 
                                           GE____________ 
SENIOR YEAR 
CSE 131A             CSE 131B              ECE 171A or 
ECE 101              CSE/ECE Tech. Elec.     161 or 162A 
CSE/ECE Tech. Elec.  CSE/ECE Tech. Elec.   CSE/ECE Tech. 
GE.                  GE                      Elec. 
                                           Tech. Elec. 
                                           GE____________

B.A. Computer Science Program

The B.A. computer science program gives students more latitude in designing their course of study. The lower-division program is designed to provide a strong foundation in mathematics, physics, programming methodology and skills, and computer organization. Upper-division core courses deal with the theory and design of algorithms, hardware, and software. Students can gain additional breadth and/or depth in computer science and engineering by an appropriate selection of technical electives. By requiring fewer technical electives, the B.A. computer science program serves those students desiring more time for undergraduate studies outside their major subject.

The department requires a total of 104 units for the B.A. computer science program. There are three varieties of requirements: lower-division, upper-division, and technical electives.

1. LOWER-DIVISION REQUIREMENTS

Students are expected to complete the following fifty-two units by the end of their sophomore year.

Computer Science and Engineering: CSE 8B or 11, 12, 20 or Math. 15A, 21 or Math. 15B, and 30; twenty units.

Note: Students without any programming experience are advised to take CSE 8A and then CSE 8B, instead of CSE 11. CSE 11 is a faster paced version of CSE 8A and CSE 8B, and requires experience in programming with a compiled language.

Mathematics: Math. 20A-B, 21C, 21D, and 20F; twenty units.

Physics: Phys. 2A-B-C; twelve units. Math. 20A is a prerequisite for Phys. 2A. Students whose performance on the Department of Mathematics placement test permits them to start with Math. 20B or a higher course may take Phys. 2A in the fall quarter of the freshman year; all others will take Phys. 2A in the winter quarter of the freshman year. Students who received high grades in both calculus and physics in high school may substitute the major's sequence, Phys. 4A-B-C for Phys. 2A-B-C.

2. UPPER-DIVISION REQUIREMENTS

All B.A. computer science students are required to take CSE 100 or Math. 176, 101 or Math. 188, 105 or Math. 166, 120, 131A, 131B, 140, 140L, 141, and 141L; thirty-six units.

Students are expected to complete almost all of these courses by the end of their junior year. If students want to accelerate their program, they should consider taking CSE 100 or Math. 176, CSE 105 or Math. 166, and/or CSE 140 and 140L in the sophomore year.

3. TECHNICAL ELECTIVES

B.A. computer science students are required to take four technical electives for a total of sixteen units. Of these four electives, at least two must be computer science and engineering upper-division or graduate courses.

The remaining two technical electives can be chosen from a wider set of courses that includes computer science and engineering upper-division courses, graduate courses, and other electives as listed under the section titled Electives. Other restrictions in the selection of technical electives are also given in the section Electives.

4. B.A. COMPUTER SCIENCE, SAMPLE PROGRAM

FALL                WINTER              SPRING________  
FRESHMAN YEAR  
CSE 8A or CSE 11    CSE 12              CSE 20 
Math. 20A           Math 20B              or Math 15A 
GE                  Phys. 2A            Math. 21C 
                    GE                  Phys. 2B 
                                        GE____________
SOPHOMORE YEAR 
CSE 21 or Math 15B  Math. 20F           CSE 30 
Math. 21D           GE                  GE 
Phys. 2C            GE                  GE____________ 
JUNIOR YEAR 
CSE 100 or Math 176 CSE 101 or Math 188 CSE 120 
CSE 140             CSE 141             CSE Tech. Elec 
CSE 140L            CSE 141L            GE 
CSE 105 or Math 166 GE                  GE____________ 
SENIOR YEAR 
CSE 131A            CSE 131B            Tech. Elec. 
CSE Tech. Elec.     Tech. Elec. 
GE____________________________________________________ 

Electives

The discipline of computer science and engineering interacts with a number of other disciplines in a mutually beneficial way. These disciplines include mathematics, electrical engineering, and cognitive science. The following is a list of upper-division courses from these and other disciplines that can be counted as technical electives.

At most four units of CSE 197, 198, or 199 may be used towards technical elective requirements. CSE 195 cannot be used towards course requirements. Undergraduate students must get instructor's permission and departmental stamp to enroll in a graduate course.

Students may not get duplicate credit for equivalent courses. The UCSD General Catalog should be consulted for equivalency information and any restrictions placed on the courses. Additional restrictions are noted below. Any deviation from this list must be petitioned.

Mathematics: All upper-division courses except Math. 168A-B, 179A-B (Math. 183—Computer Engineering majors only), 184A-B, 189A-B, and 195-199.

If a student has completed CSE 167, then he or she cannot get elective credit for Math. 155A. Students may receive elective credit for only one of the following courses: CSE 164A, Math. 174, Math. 173, Phys. 105A-B, CENG 100, MAE 107. No credit for any of these courses will be given if Math. 170A-B-C is taken. Students may receive credit for either one of the following: Math. 166 or CSE 105 (but not both), Math. 188 or CSE 101 (but not both), Math. 176 or CSE 100 (but not both).

Credit will be given for only one of the following: ECE 109 or Math. 183 or Econ. 120A.

Electrical and Computer Engineering: All ECE upper-division courses except 195-199.

CSE 143 is equivalent to ECE 165. Students may not get credit for both CSE 123A and ECE 158A. Credit will be given for only one of the following: ECE 109 or Math. 183 or Econ. 120A.

Cognitive Science: Theory and Cognitive Phenomena 101A-B-C, Cognitive Neuroscience 107A-B-C, Theory of Computation and Formal Systems 108A, Symbolic Modeling of Cognition 108B, Neural Network Models of Cognition I 108C, Everyday Cognition 130, Distributed Cognition 131, Cognitive Engineering 132, Semantics 150, Language Comprehension 153, Natural and Artificial Symbolic Representational Systems 170, Neural Network Models of Cognition II 181, Artificial Intelligence Modeling II 182, Multimedia Design 187A-B.

Students may not get credit for both CSE 150 and Neural Network Models of Cognition I 108C or for both CSE 151 and Artificial Intelligence Modeling II 182.

Mechanical and Aerospace Engineering: All upper-division MAE courses except MAE 140 (ONLY Computer Science majors may take MAE 140) and 195-199.

Students may receive elective credit for only one of the following courses: CSE 164A, Math. 174, Math. 173, Phys. 105A-B, CENG 100, MAE 107. Students may only get credit for one of the two courses, CSE 167 or MAE 152.

Economics: Microeconomics 100A-B, Game Theory 109, Macroeconomics 110A-B, Mathematical Economics 113, Econometrics 120A-B-C, Applied Econometrics 121, Management Science Microeconomics 170A-B, Decisions Under Uncertainty 171, Introduction to Operations Research 172A-B-C, Economic and Business Forecasting 178.

Credit will be given for only one of the following: ECE 109 or Math. 183 or Econ. 120A.

Linguistics: Phonetics 110, Phonology I 111, Phonology II 115, Morphology 120, Syntax I 121, Syntax II 125, Semantics 130, Mathematical Analysis of Language 160, Computers and Language 163, Computational Linguistics 165, Psycholinguistics 170, Language and the Brain 172, and Sociolinguistics 175.

Engineering: Team Engineering 101.

Music: Computer Music II 172, Audio Production: Mixing and Editing 173.

Psychology: Engineering Psychology 161

Minor and Program of Concentration

The CSE minor requires successful completion of a total of nine CSE courses. To be admitted into the minor, students must have a 2.5 GPA and a C- or better in CSE 8B or 11, 12, 20, 21, 30. The remaining four CSE courses are CSE 100, CSE 101, and two additional CSE upper-division courses subject to enforcement of prerequisites. In order for the minor to be awarded students must receive an average 2.0 GPA in the upper-division courses.

Note: Students without any programming experience are advised to take CSE 8A and then CSE 8B, instead of CSE 11. CSE 11 is a faster paced version of CSE 8A and CSE 8B, and requires experience in programming with a compiled language.

Students should consult their college provost's office concerning the rules for the minor or program of concentration. Because our undergraduate program is highly impacted, winter or spring enrollment is recommended for CSE 8A or CSE 8B or CSE 11.

Effective Fall 2000, Mathematics/Computer Science Majors will not be allowed the Minor in Computer Science.

Computing Courses for Non-Majors

The department offers slower-paced courses providing a practical introduction to computers, computation, and programming: CSE 1—an introduction to computers and CSE 5A—an introduction to structured programming using the C/Java programming language.

Policies and Procedures for CSE Undergraduates

ADMISSION TO MAJORS

Freshman students who have excelled in high school and have declared CSE on their application will be directly admitted by the dean of the School of Engineering into their major. The only way to become a computer science (CS) or computer engineering (CE) major is to be directly admitted as an entering freshman (transfer students see TRANSFER STUDENT section below) These students will be notified directly of their status.

Because of heavy student interest in departmental programs, and the limited resources available to accommodate this demand, maintenance of a high quality program makes it necessary to limit enrollments to the most qualified students.

Admission to the department as a major, transfer, or minor is in accordance with the general requirements established by the School of Engineering.

Effective fall 1998, pre-major status is limited to selected transfer students. These requirements and procedures are described in detail in the section on Admission to the School of Engineering in this catalog. For enrollment in CSE courses, see the following section.

Space permitting and in its sole discretion, the computer science and engineering department may periodically grant admission to the Compu-ter Science (CS) or Computer Engineering (CE) majors to a small number of academically exceptional UCSD undergraduate students who were not admitted to these majors as entering students. Exceptional admission will be considered for students having an overall UCSD GPA of 3.5 or better who have taken at least two CSE, math, or science courses demonstrating special aptitude for the CS or CE curriculum. Applications for exceptional admission must include submission of a course plan demonstrating ability to satisfy graduation requirements and a personal statement addressing the applicant's motivation to join the CS or CE major, in addition to other criteria established by the department.

TRANSFER STUDENTS

The B.S. or B.A. in Computer Science and the B.S. in Computer Engineering are heavily impacted majors and admission is limited to applicants who have demonstrated a high level of achievement commensurate with the prospect of success in these majors. Successful applicants must have completed substantial training at the community college and must have achieved a high level of academic performance there. For example, the required minimum of 90 quarter transfer units must include 18 quarter units of calculus, 12 quarter units of calculus-based physics, and the highest level computer science course offered at their community college.

Effective fall 2001 applicants seeking admission as transfer students will be considered for direct admission into the Computer Science (CS) or Computer Engineering (CE) majors in the Department of Computer Science & Engineering (CSE). The only way to become a computer science (CS) or computer engineering (CE) major is to be directly admitted as an entering transfer student. Although the actual required GPA cutoff depends on the number of openings, at least a 3.2 GPA in the community college transfer courses, and a 3.4 GPA in math, physics and computer science courses, are likely to be needed to gain admission. Transfer students who have declared pre-CSE will be considered for direct admission to the major.

Space permitting and in its sole discretion, the computer science and engineering department may periodically grant admission to the Compu-ter Science (CS) or Computer Engineering (CE) majors to a small number of academically exceptional UCSD undergraduate students who were not admitted to these majors as entering students. Exceptional admission will be considered for students having an overall UCSD GPA of 3.5 or better who have taken at least two CSE, math, or science courses demonstrating special aptitude for the CS or CE curriculum. Applications for exceptional admission must include submission of a course plan demonstrating ability to satisfy graduation requirements and a personal statement addressing the applicant's motivation to join the CS or CE major, in addition to other criteria established by the department.

ENROLLMENT IN CSE COURSES

Student demands exceed capacity in many CSE courses. Accordingly, many CSE courses may have enrollment restrictions which give priority to students in the following order:

  1. CSE majors, CSE M.S., and CSE Ph.D. students.
  2. CSE pre-majors, and ECE CE majors and pre-majors, and Math-CS majors. Pre-major status is conferred to transfer students and to those students admitted prior to fall 1998.
  3. Students fulfilling a non-elective requirement in another program.
  4. CSE minors.
  5. All other majors or pre-majors in other SOE departments.
  6. All others, with permission of the department of Computer Science and Engineering.

Where these restrictions apply, the registrar will not enroll low-priority students in the course.

ENROLLING IN UPPER-DIVISION COURSES

The Department of Computer Science and Engineering will attempt to provide sufficient sections of all lower-division courses. Students will, however, be screened to ensure that they meet all course enrollment restrictions.

Admission to upper-division courses will be restricted to students having completed all prerequisites with a C- or better (or consent of the instructor.) Courses have enrollment restrictions which give priority in the following order: students admitted by the department to a major or minor curriculum; students fulfilling a requirement for another major; all others. Within these categories, priority is determined on the basis of graduation date and/or credits completed. Where these restrictions apply, the registrar will not enroll nonmajors except by department approval. Students who are undeclared will not be admitted to upper-division computer science and engineering courses.

Those students not in compliance with the above restrictions should be forewarned that they will automatically be dropped from course rosters (at any time during the quarter) when it comes to the attention of the department that a student is enrolled in a course without being eligible because of restrictions and/or the performance standards have not been met. Admission to all computer science and engineering courses will require obtaining either authorization through telephone registration or department stamps on an add/drop card, and it will be given only by the student affairs personnel.

GRADUATION REQUIREMENTS

All upper-division major requirements and technical electives except CSE 197, 198, or 199 must be taken for a letter grade. To graduate, a grade-point average of 2.0 will be required in upper-division courses in the major, including technical electives. In addition, each student must satisfy general-education course requirements determined by the student's college, as well as major requirements determined by the department. The five colleges at UCSD require widely different numbers of general-education courses. Each student should choose his or her college carefully, considering the special nature of the college and breadth of education, realizing that some colleges require considerably more courses than others.

Five-Year Bachelor's-Master's Program

Undergraduate students in the Department of Computer Science and Engineering who are enrolled in the B.S. or B.A. computer science or B.S. computer engineering degree programs, and who have a cumulative GPA of a 3.4 and also a GPA of 3.4 in at least seven of the nine core courses, are eligible to apply for the Five Year Bachelor's-Master's Degree Program. The deadline to apply is the fourth week of the fourth quarter before graduation. Acceptance into this program is an honor which carries with it practical benefits—the graduate application process is simplified (no GREs required), students accepted into this program can be admitted fall, winter, and spring quarter, based upon availability of openings in the program. Advanced students are given access to graduate level courses and have the opportunity to do graduate level research earlier under the direct supervision of UCSD's faculty, and students are able to complete the B.A., B.S., and M.S. degree within a five-year time period. Courses taken can be used toward either the B.A., B.S., or M.S. degree, but not counted toward both degrees. Additional information and applications can be obtained by contacting the CSE Student Affairs Office, APM 3402.

The Graduate Program

The graduate program offers master of science and doctor of philosophy degrees in computer science and computer engineering. To be accepted into either course of study, a student must have a B.A./B.S. degree in computer science, computer engineering, or a related area.

The graduate program is concerned with fundamental aspects of computation; emphasis is divided among the areas of theory, hardware, software systems, and artificial intelligence. The computer engineering specialization places a greater emphasis on hardware and the design of computer systems.

Admission to the graduate program is done through the Office of Graduate Admissions, Department of CSE. Deadline for application is January 8. Admissions are always effective the following fall quarter. For admission requirements, please refer to the departmental Web page:
http://www-cse.ucsd.edu/graduate/

Admission decisions for the M.S. and Ph.D. programs are made separately. An M.S. student who wishes to enter the Ph.D. program must submit a new application to the CSE admissions committee.

Computer Science Program

Master of Science Program

The department offers the master of science degree in computer science. The degree can be pursued under either the Thesis Plan I or the Comprehensive Examination Plan II. Each plan requires forty-nine units of work. For full-time students, all the requirements must be completed within two years. Students with an adequate background in computer science can complete the M.S. program within four to five quarters of full-time study.

THESIS OR COMPREHENSIVE EXAM

There are two plans of study for the master's degree: Plan I, in which the student writes a thesis, and Plan II, in which the student takes a set of comprehensive exams.

Plan I: Thesis Option, No Comprehensive Exam

This plan involves both course work and research, culminating in the preparation of a thesis. The student must take twelve units of CSE 298 (Independent Study) to fulfill the research requirement, and a thesis based on research must be written and subsequently reviewed by the thesis committee. This committee, which is appointed by the dean of Graduate Studies and Research, consists of three faculty members, with at least two members from within the CSE department.

Plan II: Comprehensive Examination, No Thesis

Under this plan, the student must pass a written comprehensive examination designed to test the student's knowledge in basic computer science material. The examination can normally be passed with a thorough knowledge of topics covered in the undergraduate and first-year graduate computer science programs. It is offered every year in the first few weeks of the fall quarter and in the first few weeks of the spring quarter. Each student is allowed three attempts to pass the examination. The student must secure at least a master's-level pass in the written comprehensive examination. More information regarding the comprehensive examination can be found in a separate document provided by the CSE graduate office.

In particular, the written examination is structured around the three CSE core areas: algorithms and data structures; operating systems; and computer architecture and digital logic design.

Required Courses

Students entering the M.S. Program in Computer Science will choose an area of concentration from among twelve areas. Each concentration is an area in which the faculty has significant research expertise.

The typical concentration is a collection of three courses which are designed to give the student in-depth training in the chosen field. Additionally, to ensure breadth, all students are required to take four core courses.

Core courses must be completed with an average grade of B and no grade below B–. The four core courses required of all students are as follows:

CSE 202. Algorithms Design and Analysis
CSE 221. Operating Systems
CSE 240. Principles of Computer Architecture
CSE 292. Faculty Research Seminar

The department expects to offer concentrations in the following areas:

Artificial Intelligence
Communication Networks
Computer Architecture and Compilers
Cryptography and Security
Database and Information Retrieval
Design Automation for Microelectronic Designs
Distributed and Fault-Tolerant Computing
Multimedia Systems
Parallel and Scientific Computing
Software Engineering
Storage Systems
Ph.D. Preparation

The specific courses involved in each of the concentrations are detailed in a separate bulletin which is available in the Graduate Student Affairs Office, 3402 AP&M.

Project

Students electing Plan II are required to execute a project while enrolled in four units of CSE 293.

Electives

In addition to completing the required core courses and fulfilling either the thesis or comprehensive examination requirements described above, the student must also complete additional approved courses to bring the total number of units to forty-nine. The number of units of electives depends upon whether the student chooses Plan I or Plan II. The electives consist of other CSE graduate courses or courses from a list of approved electives. Units obtained in the courses CSE 293, 298, 299, 501, 502, and any of the seminar courses CSE 209, 229, 259, 269, 290, and 294 do not count toward the elective requirement.

Doctoral Program

The general requirements for the Ph.D. program are stated in the Graduate Studies section of the catalog. A brief summary of the general requirements is also provided in the section titled All Doctoral Programs. Consistent with these requirements, the department has established a set of requirements to be fulfilled in the first two to three years of the Ph.D. program as described below.

COURSE REQUIREMENTS

Ph.D. students are expected to complete the course requirements in the first two years of the program. They are expected to maintain, on an annual basis, a 3.4 grade-point average for the core courses.

Ph.D. students entering with a master's degree may petition for a waiver of the core courses or for substitution by alternative courses.

CORE COURSES

Each Ph.D. student must take all of the following courses. A student typically completes all the core courses within the first year of the graduate study.

CSE 200
CSE 202
CSE 221
CSE 230
CSE 240
CSE 292

ELECTIVES

Each Ph.D. student must take sixteen units of technical electives consisting of other CSE graduate courses or approved alternatives.

TEACHING ASSISTANTSHIP REQUIREMENT

Effective fall 1998, all students enrolled in the Ph.D. program must have one quarter of training as a teaching assistant. This is a formal degree requirement and must be completed before the student is permitted to graduate. The requirement is met in one of two ways:

  1. serving as a 50 percent teaching assistant with pay (taking CSE 501)
  2. taking CSE 502 (teaching experience)

COMPREHENSIVE EXAMINATION REQUIREMENT

The comprehensive examination for Ph.D. students consists of two parts. The first part is a written examination, identical to that required for master's degree students. This examination tests the student's knowledge of basic computer science and can be passed with a thorough knowledge of undergraduate and first-year graduate computer science material. The written examination is structured around the following five CSE core areas: algorithms and data structures; computability, complexity and logic; programming languages; operating systems; and computer architecture and digital logic design. It is offered every year in the first few weeks of the fall quarter and in the first few weeks of the spring quarter. Each student is allowed three attempts to pass the examination. All Ph.D. students should complete their written comprehensive examination successfully within two years following the quarter in which they are admitted to the Ph.D. program. However, a student typically completes the written part of the comprehensive examination successfully by the fall quarter of the second year. More information regarding the comprehensive examination can be found in a separate document provided by the CSE graduate office.

RESEARCH EXAMINATION REQUIREMENT

The second part of the examination for Ph.D. students is an oral research examination designed to get an early assessment of the Ph.D. student's research ability in some field in computer science. The content of this exam is developed by the student in collaboration with a faculty adviser in CSE. Students are expected to take this examination within one year following the quarter in which they pass the written comprehensive examination.

Computer Engineering Program

Computer engineering, jointly administered between the CSE and ECE departments, offers the master of science and doctoral degrees with the degree title computer science and engineering (computer engineering). Computer engineering explores the engineering analysis and design aspects of algorithms and technology. Specific research areas include computer systems, signal processing systems, architecture, networks, computer-aided design, fault tolerance, and data storage systems.

Master of Science Program

The degree can be pursued under either the Thesis Plan I or the Comprehensive Examination Plan II. Each plan requires forty-nine units of work. For full-time students, all the requirements must be completed within two years. Students with an adequate background in computer engineering can complete the M.S. program within four to five quarters of full-time study.

PLAN I: THESIS OPTION, NO COMPREHENSIVE EXAM

This plan of study involves both course work and research, culminating in the preparation of a thesis. A total of forty-nine units of credit is required, as follows:

Core Courses

The following core courses must be completed with an average grade of B, and no grade below B–:

Three Software Courses:

    CSE 202
    CSE 221
    CSE 231

Three Hardware Courses:

    CSE 240
    ECE 260A
    CSE 243 or ECE 251A or ECE 263A

Two Analysis Courses:

    CSE 200 or CSE 201
    CSE 222 or ECE 257A

and:

    CSE 292

Electives

Students must elect at least four technical units among graduate courses within the Departments of AMES, CSE, ECE, Mathematics, and Physics.

Thesis

Twelve units of CSE 298 must be taken with a faculty member in CSE or ECE who agrees to act as adviser for the thesis to fulfill the research requirement.

A thesis based on research must be written and subsequently reviewed by a committee, consisting of three faculty members, with at least two members from within the CSE department. The committee is appointed by the dean of Graduate Studies.

PLAN II: COMPREHENSIVE EXAMINATION, NO THESIS

In order to receive the M.S. degree in computer engineering under this plan, a student must complete the course requirements listed below and pass a written comprehensive examination.

The written examination is structured around the following three CSE core areas: algorithms and data structures; operating systems; and computer architecture and digital logic design.

Core Courses

Three Software Courses:

    CSE 202
    CSE 221
    CSE 231

Three Hardware Courses:

    CSE 240
    ECE 260A
    CSE 243 or ECE 251A or ECE 263A

Two Analysis Courses:

    CSE 200 or CSE 201
    CSE 222 or CSE 257A

and:

    CSE 292

Electives

Students must elect at least twelve technical units among graduate courses within the Departments of MAE, CSE, ECE, Mathematics, and Physics.

Project

    Four units of CSE 293.

Comprehensive Examination

The comprehensive examination is designed to test the student's knowledge in basic computer science and engineering material. The examination can normally be passed with a thorough knowledge of topics covered in the undergraduate and the first-year graduate computer science or computer engineering programs.

It is offered every year in the first few weeks of the fall quarter and in the first few weeks of the spring quarter. If fewer than seven people sign up, then the department may cancel the examination in the spring quarter. Each student is allowed three attempts to pass the examination. The student must secure at least a master's-level pass in the written comprehensive examination.

This examination is the same for both the computer science and the computer engineering graduate programs. More information about the comprehensive examination can be obtained in a separate document from the CSE graduate office.

Doctoral Program

The general requirements for the Ph.D. program are stated in the Graduate Studies section of the catalog. A brief summary of the general requirements is also provided in the section titled All Doctoral Programs. Consistent with these requirements, the department has established a set of requirements to be fulfilled in the first two to three years of the Ph.D. program as described below.

COURSE REQUIREMENTS

Ph.D. students are expected to complete the following computer engineering curriculum of forty-nine unit course requirement within the first two years. Ph.D. students entering with a master of science degree may petition to waive individual core course requirements or to substitute approved alternative courses. All Ph.D. students must attain a cumulative grade-point average of 3.4 in the core courses.

CORE COURSES

Each Ph.D. student must complete the following core requirements:

Three Software Courses:

    CSE 202
    CSE 221
    CSE 231

Three Hardware Courses:

    CSE 240
    ECE 260A
    CSE 243 or ECE 251A or ECE 263A

Two Analysis Courses:

    CSE 200 or CSE 201
    CSE 222 or ECE 257A

and:

    CSE 292

ELECTIVES

Students must take sixteen units of technical electives from among graduate courses within the Departments of MAE, CSE, ECE, Mathematics, and Physics.

TEACHING ASSISTANTSHIP REQUIREMENT

Effective fall 1998, all students enrolled in the Ph.D. program must have one quarter of training as a teaching assistant. This is a formal degree requirement and must be completed before the student is permitted to graduate. The requirement is met in one of two ways:

  1. serving as a 50 percent teaching assistant with pay (Students must also be enrolled in four units of CSE 501)
  2. taking CSE 502 (teaching experience)

COMPREHENSIVE EXAMINATION REQUIREMENT

The comprehensive examination for Ph.D. students consists of two parts. The first part is a written examination, identical to that required for master's degree students. This examination tests the student's knowledge of basic computer science and engineering and can be passed with a thorough knowledge of undergraduate and first-year graduate computer science and engineering material. The written examination is structured around the following five CSE core areas: algorithms and data structures; computability, complexity, and logic; programming languages; operating systems; and computer architecture and digital logic design. This examination is the same for both the computer science and the computer engineering graduate programs.

It is offered every year in the first few weeks of the fall quarter and in the first few weeks of the spring quarter. Each student is allowed three attempts to pass the examination. All Ph.D. students should complete their written comprehensive examination successfully within two years following the quarter in which they are admitted to the Ph.D. program. However, a student typically completes the written part of the comprehensive examination successfully by the fall quarter of the second year. More information regarding the comprehensive examination can be found in a separate document provided by the CSE Graduate Office.

RESEARCH EXAMINATION REQUIREMENT

The second part of the examination for Ph.D. students is an oral research examination designed to get an early assessment of the Ph.D. student's research ability in some field in computer science. The content of this exam is developed by the student in collaboration with a faculty adviser in CSE or ECE. Students are expected to take this examination within one year following the quarter in which they pass the written comprehensive examination.

All Doctoral Programs

Qualifying Examination and Advancement to Candidacy

The qualifying examination is the second examination (the first being the written and the oral comprehensive examination) taken by the Ph.D. students and is a requirement to advancement to candidacy. Prior to taking the qualifying examination a student must have satisfied the departmental graduate requirements and have been accepted by a CSE faculty member as a Ph.D. thesis candidate. All doctoral students must be advanced to candidacy by the end of four years from the first quarter of registration. It is administered by a doctoral committee appointed by the dean of Graduate Studies and Research and consists of faculty from CSE and other departments. More information on the composition of the committee can be obtained from the CSE graduate office. The examination is taken after the student and his or her adviser have identified a topic for the dissertation and initial progress has been made. The candidate is expected to describe his or her accomplishments to date and plans for future work.

Dissertation

The dissertation defense is the final Ph.D. examination. A candidate for the Ph.D. is expected to write a dissertation and defend it in an oral examination conducted by the doctoral committee.

Financial Aid

Financial support is available to qualified graduate students in the form of fellowships, loans, and assistantships. Anticipated stipends for half-time research assistantships are $1542 per month, with the possibility of full-time employment during the summer months. For a half-time teaching assistantship, the anticipated stipend will be $1540 per month. Requests for application forms for admission and financial support should be directed to the Department of Computer Science and Engineering. The department offers support to graduate students in the Ph.D. program only.

Departmental Ph.D. Time Limit Policies

Students must be advanced to candidacy by the end of four years. Total university support cannot exceed seven years. Total registered time at UCSD cannot exceed eight years.

Courses

Student demand exceeds capacity in many CSE courses. Accordingly, many CSE undergraduate courses may have enrollment restrictions which give priority to students in the following order:

  • CSE majors, CSE M.S., and CSE Ph.D. students
  • CSE pre-majors, ECE CE majors and pre-majors, and Math-CS majors
  • students fulfilling a non-elective requirement in another program
  • CSE minors
  • all other majors or pre-majors in other SOE departments
  • all others, with permission of the Department of Computer Science and Engineering
Where these restrictions apply, the registrar will not enroll low-priority students in the course.

A tentative schedule of course offerings is available from the department, APM 3402, each spring for the following academic year. The tentative schedule for 1999–2000 is also found at http://www-cse.ucsd.edu/ugrad/offerings99-2000.html

Lower-Division

CSE 1. Introduction to Computers (4)
(Formerly CSE 60) The main technical topic is the use of Macintosh and UNIX computers. Lectures cover the history of computing, how computers are used in society today, an introduction to software development using Hypercard, worldwide information access through the Internet, and a few topics in computer science. Prerequisite: none. This course is not suitable for engineering majors.

CSE 5A. Introduction to Programming I (4)
(Formerly CSE 62A) Introduction to algorithms and top-down problem solving. Introduction to the C language including functions, arrays, and standard libraries. Basic skills for using a PC graphical user interface operating system environment. File maintenance utilities are covered. (A student may not receive credit for CSE 5A after receiving credit for CSE 10 or CSE 11 or CSE 8B or CSE 9B or CSE 62B or CSE 65.) Prerequisite: A familiarity with high-school level algebra is expected, but this course assumes no prior programming knowledge.

CSE 5B. Introduction to Programming II (4)
(Formerly CSE 62B) Introduction to algorithms and top-down problem solving. Completion of the C programming language including structures, pointers, multi-dimensional array, C-preprocessor, and standard libraries. Simple data structure techniques. Continua-tion within the pc operating system environment; graphical user interface. (A student may not receive credit for CSE 5B after receiving credit for CSE 10 or an equivalent course.) Prerequisites: Math. 1A/2A /20A and CSE 5A or CSE 62A.

CSE 8A. Introduction to Computer Science: Java (4)
Basic Unix. Basics of Java language. Classes, methods, and parameters. Modularity and abstraction. Documentation techniques. Testing and verification techniques. Basic Inheritance. Event driven programming. Programming with AWT library or other similar library. CSE 8A-B is a slower paced version of CSE 11 with more programming practice. (Students who have taken CSE 9A or CSE 9B or CSE 10 or CSE 11 may not take CSE 8A.) Prerequisite: high school algebra. Majors only.

CSE 8B. Introduction to Computer Science: Java (4)
Continuation of the Java language. Continuation of programming techniques. More on Inheritance. Exception handling. CSE 8A-B is a slower paced version of CSE 11 with more programming practice. (Students who have taken CSE 9A or CSE 9B or CSE 10 or CSE 11 may not take CSE 8B.) Prerequisite: high school algebra. Majors only.

CSE 11. Introduction to Computer Science and Object-Oriented Programming: Java (4)
Introduction to computer science and programming using the Java language. Basic UNIX. Modularity and abstraction. Documentation, testing and verification techniques. Basic object-oriented programming including inheritance and dynamic bind. Exception handling. Event-driven programming. Experience with AWT library or other similar library. Prerequisites: high-school algebra and a course in programming in a compiled language. Majors only.

CSE 12. Basic Data Structures and Object-Oriented Design (4)
Basic data structures including stacks, queues, lists, binary trees, hash tables. Basic object-oriented design including encapsulation, polymorphism, classes as the implementation of abstract data types. Memory management, pointers, recursion, and big-o notation. Uses the C/C++ and Java programming language. Prerequisite: CSE 8B or CSE 11.

CSE 20. Introduction to Discrete Mathematics (4)
Basic discrete mathematical structure: sets relations, functions, sequences, equivalence relations, partial orders, and number systems. Methods of reasoning and proofs: propositional logic, predicate logic, induction, recursion, and pigeonhole principle. Infinite sets and diagonalization. Basic counting techniques; permutation and combinations. Applications will be given to digital logic design, elementary number theory, design of programs, and proofs of program correctness. Credit not offered for both Math. 15A and CSE 20. Equivalent to Math 15A. Prerequisites: CSE 8B or CSE 9B or CSE 10 or CSE 11.

CSE 21. Mathematics for Algorithms and Systems (4)
This course will provide an introduction to the discrete mathematical tools needed to analyze algorithms and systems. Enumerative combinatorics: basic counting principles, inclusion-exclusion, and generating functions. Matrix notation. Applied discrete probability. Finite automata. Credit not offered for both Math.15B and CSE 21. Equivalent to Math 15B. Prerequisites: CSE 20 or Math. 15A.

CSE 30. Computer Organization and Systems Programming (4)
(Formerly CSE 70.) Introduction to organization of modern digital computers—understanding the various components of a computer and their interrelationships. Study of a specific architecture/machine with emphasis on systems programming in C and Assembly languages in a UNIX environment. Prerequisites: CSE 12 and CSE 20 or Math. 15A; or consent of the instructor.

CSE 80. UNIX Lab (2)
The objective of the course is to help the programmers create a productive UNIX environment. Topics include customizing the shell, file system, shell programming, process management, and UNIX tools. (P/NP grades only.) Prerequisite: CSE 8B or CSE 9B or CSE 10 or CSE 11.

CSE 81. The Internet and the World Wide Web (4)
Introduction to communication networks and the World Wide Web, a set of interconnected multimedia information servers, from a user's perspective. Students obtain hands-on experience with Web browsers and search engines, and learn to design HTML documents and CGI scripts. Prerequisite: CSE 1 or CSE 5A or CSE 8A or CSE 8B or CSE 9A or CSE 9B or CSE 10 or CSE 11.

Upper-Division

CSE 100. Advanced Data Structures (4)
Descriptive and analytical presentation of data structures and algorithms. Lists, tables, priority queues, disjoint subsets, and dictionaries data types. Data structuring techniques include linked lists, arrays, hashing, and trees. Performance evaluation involving worst case, average and expected case, and amortized analysis. Credit not offered for both Math. 176 and CSE 100. Equivalent to Math. 176. Prerequisites: CSE 12, CSE 21 or Math. 15B, and CSE 30, or consent of the instructor. Majors only.

CSE 101. Design and Analysis of Algorithms (4)
Design and analysis of efficient algorithms with emphasis of non-numerical algorithms such as sorting, searching, pattern matching, and graph and network algorithms. Measuring complexity of algorithms, time and storage. NP-complete problems. Credit not offered for both Math. 188 and CSE 101. Equivalent to Math 188. Prerequisites: CSE 12, CSE 21 or Math. 15B or Math. 100A or Math. 103A. Majors only.

CSE 102. File and Storage Structures (4)
(Formerly CSE 161B.) Descriptive and analytic introduction to file structures and storage media. Sequential files, external sorting; index structures, B+-trees, linear hashing, Patricia, grid; random and sequential access storage devices, WORM, data compression. Prerequisite: CSE 100 or Math. 176 or consent of the instructor. Majors only.

CSE 105. Theory of Computability (4)
An introduction to the mathematical theory of computability. Formal languages. Finite automata and regular expression. Push-down automata and context-free languages. Computable or recursive functions: Turing machines, the halting problem. Undecidability. Credit not offered for both Math. 166 and CSE 105. Equivalent to Math 166. Prerequisites: CSE 12, CSE 21 or Math. 15B or Math. 100A or Math. 103A. Majors only.

CSE 107. Introduction to Modern Cryptography (4)
Topics include private and public-key cryptography, block ciphers, data encryption, authentication, key distribution and certification, pseudorandom number generators, design and analysis of protocols, zero-knowledge proofs, and advanced protocols. Empha-sizes rigorous mathematical approach including formal definitions of security goals and proofs of protocol security. Prerequisites: CSE 21 or Math. 15B, CSE 101 or Math. 188, CSE 105 or Math. 166. Majors only.

CSE 111. Object Oriented Software Design (4)
Introduction to object-oriented analysis and design. Object-oriented modeling methods for analysis and design, object-oriented general design paradigms, object-oriented design techniques. Cyclic development of object-oriented systems. Prerequisites: CSE 8B or CSE 9B or CSE 10 or CSE 11, CSE 12, and CSE 100 or Math. 176. Majors only.

CSE 112. Software Engineering (4)
(Formerly CSE 110.) This course will cover software engineering topics associated with large systems development such as requirements and specifications, testing and maintenance, and design. Specific attention will be given to development tools and automated support environments. Prerequisites: CSE 111. Majors only.

CSE 120. Principles of Computer Operating Systems (4)
(Formerly CSE 171A.) This course introduces the basic concepts used to structure computer operating systems. Examples of notions introduced and discussed are batch processing, multiprogramming, input/output, pooling, interrupt handling, processes, descriptors, process synchronization, interprocess communication, memory management, virtual memory, caching, buffers, naming, files, interactive command interpreters, and processor scheduling. Prerequisites: CSE 100 or Math. 176 and CSE 141. Majors only.

CSE 121. Operating Systems: Architecture and Implementation (4)
(Formerly CSE 171B.) Case study of architecture and implementation of a selected modern operating system. In-depth analysis through a detailed study of source code. Topics include process creation, context-switching, memory allocation, synchronization mechanisms, interprocess communication, I/O buffering, device drivers, and file systems. Prerequisite: CSE 120.

CSE 123A. Computer Networks (4)
(Formerly CSE 166.) Introduction to concepts, principles, and practice of computer communication networks with examples from existing architectures, protocols, and standards. Layering and the OSI model; switching; local, metropolitan, and wide area networks; datagrams and virtual circuits; routing and congestion control; internetworking. Prerequisite: CSE 120 or consent of the instructor. Majors only.

CSE 123B. Communications Software (4)
Protocol software structuring, The Internet protocol suite, Inter-process communication, Protocols for real-time and multimedia (digital audio and video) communication, multicast, bridging, and group communication protocols, protocols for mobile and personal communication networks, application-level protocols, secure communication. Prerequisite: CSE 120 or consent of the instructor. CSE 123A is strongly recommended. Majors only.

CSE 126. Multimedia Systems (4)
Multimedia technologies; multimedia storage models and structures; data models and interfaces; multimedia information systems; video/audio networking; media synchronization; image computing and information assimilation; conferencing paradigms and structured interaction support. Prerequisite: CSE 120 or consent of the instructor.

CSE 127. Introduction to Computer Security (4)
Topics include basic cryptography, security/threat analysis, access control, auditing, security models, distributed systems security, and theory behind common attack and defense techniques. The class will go over formal models as well as the bits and bytes of security exploits. Prerequisite: CSE 21 or Math. 15B, and CSE 120. Majors only.

CSE 128. Concurrency (4)
Specification of concurrent programs safety, liveness, and fairness: producer-consumer; mutual exclusion; atomic read/writes; semaphores; monitors; distributed algorithms and memory coherency; programming with threads; concurrency in popular programming languages and operating systems. Prerequisite: CSE 120. Majors only.

CSE 130. Programming Languages: Principles and Paradigms (4)
(Formerly CSE 173.) Introduction to programming languages and paradigms, the components that comprise them, and the principles of language design, all through the analysis and comparison of a variety of languages (e.g., Pascal, Ada, C++, PROLOG, ML.) Will involve programming in most languages studied. Prerequisites: CSE 12 and CSE 100 or Math. 176. Majors only.

CSE 131A. Compiler Construction I (4)
(Formerly CSE 163A.) Introduction to the compilation of programming languages, principles and practice of lexical and syntactic analysis, error analysis, syntax-directed translation, and type checking. Prerequisites: CSE 30, CSE 100 or Math. 176, and CSE 105 or Math. 166. Majors only.

CSE 131B. Compiler Construction II (4)
(Formerly CSE 163B.) Principles and practice for the design and implementation for the back-end of translators for programming languages, symbol tables, syntax-directed translation, code generation, optimization, and compiler structure. Prerequisites: CSE 30, CSE 100 or Math. 176, CSE 105 or Math. 166, and CSE 131A. Majors only.

CSE 132A. Database System Principles (4)
Basic concepts of databases, including data modeling, relational databases, query languages, optimization, dependencies, schema design, and concurrency control. Exposure to one or several commercial database systems. Advanced topics such as deductive and object-oriented databases, time allowing. Prerequisite: CSE 100 or Math. 176. Majors only.

CSE 132B. Database Systems Applications (4)
Design of databases, transactions, use of trigger facilities and datablades. Performance measuring, organization of index structures. Prerequisite: CSE 132 or CSE 132A or equivalent.

CSE 133. Information Retrieval (4)
(Formerly CSE 181.) How to find "relevant" documents (e.g., an electronic mail message or a book) from very large corpora (e.g., all the world's electronic mail or the library.) Students will construct and experimentally evaluate a complete IR system for a modest textual corpus. Prerequisite: CSE 100 or Math. 176. Majors only.

CSE 134A. Web Server Languages (4)
Design and implementation of interactive World Wide Web documentation using server-side programs. Languages covered include HTML, Perl, and JavaScript. Other languages as time allows. Prerequisite: CSE 100 or Math. 176. Majors only.

CSE 134B. Web Client Languages (4)
Design and implementation of interactive World Wide Web clients using helper applications and plug-ins. The main language covered will be Java. Prerequisite: CSE 100 or Math. 176. Majors only.

CSE 140. Components and Design Techniques for Digital Systems (4)
(Formerly CSE 170A) Design of Boolean logic and finite state machines; two-level, multi-level combinational logic design, combinational modules and modular networks, Mealy and Moore machines, analysis and synthesis of canonical forms, sequential modules. Prerequisites: CSE 20 or Math. 15A, CSE 30. CSE 140L must be taken concurrently. Majors only.

CSE 140L. Digital Systems Laboratory (2)
(Formerly CSE 175B) Implementation with computer-aided design tools for combinational logic minimization and state machine synthesis. Hardware construction of a small digital system. Prerequisites: CSE 20, CSE 30. CSE 140 must be taken concurrently.

CSE 141. Introduction to Computer Architecture (4)
(Formerly CSE 170B) Introduction to computer architecture. Computer system design. Processor design. Control design. Memory & I/O systems. Prerequisites: CSE 140, CSE 140L, or consent of the instructor. CSE 141L must be taken concurrently.

CSE 141L. Project in Computer Architecture (2)
Hands-on computer architecture project aiming to familiarize students with processor, control and memory, and I/O systems. Prerequisites: CSE 140, CSE 140L, or consent of the instructor. CSE 141 must be taken concurrently.

CSE 142. Advanced Digital Logic Design (4)
(Formerly CSE 170C) Digital logic optimization; functional decomposition and symmetric functions; reliable design and fault diagnosis; structure of sequential machines; asynchronous circuit design. Assignments using logic synthesis tools. Prerequisites: CSE 140, CSE 140L

CSE 143. Microelectronic System Design (4)
(Formerly CSE 172A) VLSI process technologies; circuit characterization; logic design styles; clocking strategies; computer-aided design tools; subsystem design; design case studies. System design project from hardware description, logic synthesis, physical layout to design verification. Prerequisites: CSE 140, CSE 141.

CSE 144. Computer-Aided Design of VLSI Circuits (4)
(Formerly CSE 172B) Introduction to Computer-Aided Design. Placement, assignment and floor planning techniques. Routing. Symbolic layout and compaction. Module generation and silicon compilation. Prerequisites: CSE 140 and CSE 140L, or consent of the instructor.

CSE 150. Programming Languages for Artificial Intelligence (4)
Note: CSE 150 is pending CEP approval. (Formerly CSE 162) Experience using two very different approaches to artificial intelligence programming. Symbolic manipulation using LISP, with examples drawn from heuristic search, inference, and/or resolution theorem proving. Pattern recognition and transformation using neural networks with perception and back propagation learning algorithms, applied to problems such as face recognition, English past tense formation, etc. Prerequisites: CSE 8B or CSE 9B or CSE 10 or CSE 11, CSE 12, and CSE 100 or Math. 176. Majors only.

CSE 151. Introduction to Artificial Intelligence (4)
An introduction to theoretical issues and computational techniques arising from a comparison of human and machine intelligences. Knowledge representation languages; problem-solving heuristics; machine learning and application areas including vision, robotics, and natural language understanding will be reviewed. Prerequisite: CSE 150 or consent of the instructor. Majors only.

CSE 160. Introduction to Parallel Computation (4)
(Formerly CSE 174) General introduction to parallel computation focusing on important current topics and issues in parallel architecture, algorithms, and software. Topics include parallel machine organization, parallel algorithm paradigms, parallel programming environments and tools, and heterogeneous computing. Parallel programming and project assignments given to provide hands-on experience. Prerequisite: CSE 100 or Math. 176. Majors only.

CSE 164. Solving Problems with High Performance Computers (4)
Note: CSE 164 is pending CEP approval. Exploration of techniques for solving problems on high performance and parallel computers. Topics include: algorithm design, efficient implementation techniques (load balancing and communication optimization), programming model design. Building high performance applications. Prerequisites: CSE 101 or Math. 188 and CSE 120, or consent of the instructor.

CSE 167. Computer Graphics (4)
(Formerly CSE 177) Representation and manipulation of pictorial data. Two-dimensional and three-dimensional transformations, curves, surfaces. Projection, illumination, and shading models. Raster and vector graphic I/O devices; retained-mode and immediate-mode graphics software systems and applications. Prerequisites: Math. 2EA/20F and CSE 100 or Math. 176. Majors only.

CSE 171. User Interface Design (4)
Explores usability, representation and coordination issues in user interface design with some focus on distributed cooperative work, semiotics, and the interplay between socio-cognitive and technical issues. Most examples and homework involve the Web. Prerequisites: CSE 8B or 11, CSE 20 or Math. 15A, and CSE 100 or Math. 176. Majors only.

CSE 190. Topics in CSE (4)
Topics of special interest in computer science and engineering. Topics may vary from quarter to quarter. May be repeated for credit with the consent of instructor. Prerequisite: department stamp required.

CSE 191. Seminar in CSE (1–4)
A seminar course on topics of current interest. Students, as well as, the instructor will be actively involved in running the course/class. This course cannot be counted toward a technical elective. Prerequisite: consent of instructor.

CSE 195. Teaching (4)
Teaching and tutorial assistance in a CSE course under the supervision of the instructor. (P/NP grades only.) Prerequisite: consent of the department chair. Department stamp required.

CSE 197. Field Study in Computer Science and Engineering (4, 8, 12, or 16)
Directed study and research at laboratories away from the campus. (P/NP grades only.) Prerequisite: consent of the instructor and approval of the department. Department stamp required.

CSE 198. Directed Group Study (2 or 4)
Computer science and engineering topics whose study involves reading and discussion by a small group of students under the supervision of a faculty member. (P/NP grades only.) Prerequisite: consent of the instructor. Department stamp required.

CSE 199. Independent Study for Undergraduates (2 or 4)
Independent reading or research by special arrangement with a faculty member. (P/NP grades only.) Prerequisite: consent of the instructor. Department stamp required.

Graduate

CSE 200. Computability and Complexity (4)
Decidability and undecidability, r.e. and recursive sets, Church's thesis; time and space complexity, non-determinism, complexity classes P, NP, L, NL, PSPACE, EXP, closure properties of classes, relations between classes, time and space hierarchy theorems; NP-completeness, Cook's theorem, reducibility; propositional logic; randomized computation, classes RP and BPP. Prerequisites: CSE 165 or CSE 105 or Math. 166 or CSE 206 or equivalent.

CSE 201. Applied Computability and Complexity (4)
(Formerly CSE 261.) Models of computation: finite automata, context-free grammars, Turing machines, random access machines and circuits. Undecidability. First order logic. Complexity: time and space, theory of NP and P, intractability. Intended for students in the computer engineering program. Prerequisite: CSE 105 or CSE 206 or equivalent. A student may not receive credit for both CSE 201 and CSE 200.

CSE 202. Algorithm Design and Analysis (4)
(Formerly CSE 279.) The basic techniques for the design and analysis of algorithms. Divide-and-conquer, dynamic programming, data structures, graph search, algebraic problems, randomized algorithms, lower bounds, probabilistic analysis, parallel algorithms. Prerequisite: CSE 101 or consent of instructor.

CSE 203. Combinatorial Algorithms (4)
(Formerly CSE 268A.) This course presents combinatorial algorithms commonly used in computer science. These algorithms include shortest paths, maximum flow, multi-terminal maximum flows, PERT network, dynamic programming, backtrack, binary trees, greedy algorithms, and matrix computation. Prerequisite: consent of instructor.

CSE 204. Mathematical Programming (4)
(Formerly CSE 268B.) Convex function, separating hyperplanes. Linear programming, simplex method, quality complementary slackness. Revised simplex method, column-generating techniques in LP. Integer programming. Prerequisite: consent of instructor.

CSE 205. Complexity of Intractability (4)
(Formerly CSE 265C.) Intractability. Relativized complexity. Circuit complexity: size and depth, alternation. Efficient and optimal algorithms: matrix and arithmetic. Axiomatic complexity. Other advanced topics. Prerequisites: CSE 200 and consent of instructor.

CSE 206. Automata, Formal Languages, andComputability (4)
(Formerly CSE 265A.) Finite automata: non-determinism, regular expressions, regular grammars, 2-way FSAs, minimal state FSAs, context-free languages: normal forms, pumping lemmas, recognition algorithms, push-down automata, DCFLs. Turing Machines; variations on TMs, recursive and r.e. sets, universal TMs, Church's thesis, diagonalization, reducibility, Chomsky Hierarchy. Prerequisites: CSE 105 or equivalent, consent of instructor.

CSE 207. Cryptography and Network Security (4)
Introduction to modern cryptography emphasizing provable security and its applications. Topics include private and public key cryptography; encryption; authentication; digital signatures; key distribution; protocols. Prerequisite: CSE 200 or CSE 201 or CSE 202 or equivalent.

CSE 208A. Topics in Complexity of Algorithms and Data Structures (4)
(Formerly CSE 268C.) Advanced topics in concrete complexity, including decision trees and branching programs, advanced data structures, boolean circuits, communication complexity, and randomized algorithms. Content may vary from year to year; may be repeated for credit with consent of instructor.

CSE 208C. Topics in Theoretical Computer Science (1-4)
Topics of special interest in theoretical computer science. Topics may vary from quarter to quarter. May be repeated for credit with the consent of instructor. Prerequisite: consent of instructor. (S/U grades permitted.)

CSE 208D. Logic in Computer Science (4)
Basic material on mathematical logic (as a tool in computer science) for foundations of descriptive complexity, logic programming, non-monotonic reasoning, temporal logic, and reasoning about knowledge and belief. Applications to databases, automatic theorem proving, program verification, and distributed systems. Prerequisite: CSE 200 for graduates; CSE 105 for undergraduates.

CSE 209. Seminar in Theoretical Computer Science (1-4)
Topics of special interest in theoretical computer science to be presented by staff members and students under faculty direction. May be repeated for credit. Prerequisite: consent of instructor. (S/U grades only.)

CSE 210. Principles of Software Engineering (4)
(Formerly CSE 264A.) General principles in modern software engineering. Both theoretical and practical topics are covered. Theoretical topics include proofs of correctness, programming language semantics, and theory of testing. Practical topics include structured programming, modularization techniques, design of languages for reliable programming, and software tools. Prerequisites: CSE 100, 131A, 120, or consent of instructor.

CSE 211. Software Testing and Analysis (4)
Survey of testing and analysis methods. Introduction to advanced topics in area as well as traditional production methods. Topics include inspections and reviews, formal analysis, verification and validation standards, non-statistical testing, statistical-testing and reliability models, coverage methods, testing and analysis tools, and organization management and planning. Methods special to special development approaches such as object-oriented testing will also be described. Prerequisite: undergraduate major in computer science or extensive industrial experience.

CSE 218. Advanced Topics in Software Engineering (4)
This course will cover a current topic in software engineering in depth. Topics in the past have included software tools, impacts of programming language design, and software system structure. (S/U grades permitted.) Prerequisite: none.

CSE 220. Computer Systems (4)
Review of basic principles of computer systems. Key topics from the areas of operating systems, networks, distributed systems and performance evaluation: parallel processes, synchronization, communication protocols, distributed systems, hierarchical and distributed storage architectures, distributed concurrency control and transactions, computer security, and queueing models.

CSE 221. Operating Systems (4)
(Formerly CSE 264B.) Operating system structures, concurrent computation models, scheduling, synchronization mechanisms, address spaces, memory management protection and security, buffering, streams, data-copying reduction techniques, file systems, naming, caching, disk organization, mapped files, remote file systems, case studies of major operating systems. Prerequisites: CSE 120 and 121, or consent of instructor.

CSE 222. Communication Networks (4)
(Formerly CSE 281L.) Computer communication network concepts, techniques, protocols, and architectures, with emphasis on analysis of algorithms and protocols, performance trade-offs, and design methodologies. Topics will include layering, data link control, routing, flow control, topological design, performance evaluation techniques (measurements, analysis, and simulation). Prerequisite: CSE 123A or consent of instructor. (S/U grades permitted.)

CSE 223. Distributed Systems (4)
(Formerly CSE 281N.) Basic structuring concepts: service, server, client-server relations, basic network architecture and point-to-point communication services, variable communication delays and failures, logical and physical time, time services, request/reply transport services, remote procedure calls, naming and directory services, distributed concurrency control, distributed file and database services, transactions and the atomic commit problem, security in distributed systems. (S/U grades permitted.) Prerequisite: CSE 220 or CSE 221, or consent of instructor.

CSE 224. Computer System Performance Analysis (4)
(Formerly CSE 281R.) Experimental and analytical approaches. Design, measurement, simulation, and modeling for system performance evaluation. Measurement tools such as workloads, benchmarks, experimental design: confidence intervals, analysis of data; simulation: trace driven, Monte Carlo, transient removal; modeling: Little's Law, queueing, mean-value analysis. (S/U grades permitted.) Prerequisite: CSE 220 or consent of instructor.

CSE 225. High Performance Distributed Computing (and Computational Grids) (4)
Architecture of high performance distributed systems (e.g., frameworks and middleware). High performance distributed objects (DCOM, Corba, Java Beans) and networking with crosscut issues for performance, availability, and performance predictability. Scalable servers, metacomputing, and scientific computing. Prerequisites: CSE 121 and CSE 123A.

CSE 227. Computer Security (4)
This course covers systems security concepts: protection domains, rusted computing base, access control, information flow, security models, correctness proofs, software testing techniques, and selected computer security topics. Examine techniques used by attackers to penetrate systems and countermeasures. Prerequisites: CSE 202 and CSE 221.

CSE 228B. Storage Systems (4)
(Formerly 281F.) Secondary and tertiary storage systems, optical and magnetic media, performance analysis, modeling, reliability, redundant arrays of inexpensive disks, striping, log and maximum distance separable data organizations, sparing. Prerequisite: CSE 220 or consent of instructor.

CSE 228C. Communications Software (4)
Internetworking: concept and architectural model, and comparison with other network architectures. Addressing and address resolution, conventions. The Internet datagram Protocol, gateway protocols and routing. The ICMP and network control and testing. Transport layer protocols, adaptive flow control, high-speed extensions. Experimental and other protocols. Prerequisites: CSE 221 and CSE 123A, or consent of instructor. (S/U grades permitted.)

CSE 228D. Real-Time Systems (4)
Basic concepts (periodic, sporadic processes, static vs. dynamic scheduling) specification, time and clocks, scheduling and timing analysis, real-time programming languages, real-time operating systems, software engineering. Prerequisite: CSE 221 or CSE 220, or consent of instructor. (S/U grades permitted.)

CSE 228E. Fault-Tolerant Systems (4)
(Formerly CSE 281E.) Services, servers, and the depends-upon relation, failure classification, failure semantics, failure masking, exception handling: detection, recovery, masking and propagation, termination vs. resumption in exception handling, fail-stop processors and I/O controllers, reliable storage, reliable communication, process groups, synchronous and asynchronous group membership and broadcast services, automatic redundancy management, case studies of fault-tolerant systems. Prerequisite: CSE 220 or CSE 221, or consent of instructor.

CSE 228F. Multimedia Systems (4)
Emerging multimedia technologies; multimedia storage models and structures; video/audio networking; intra-media continuity; inter-media synchronization; admission control and support for real time; distributed multimedia systems; structured interaction support (collaboration and teamwork); multimedia encoding. Prerequisite: consent of instructor. (S/U grades permitted.)

CSE 228G. Wireless Networks (4)
Topics in wireless networks with emphasis on packet-switching integrated services networks. Multiaccess protocols, link layer protocols, TCP/IP over wireless, mobile IP, wireless ATM, PCS, satellite networks. Hand-off strategies, capacity/resource allocation, interface with wireline networks, multimedia. Prerequisite: CSE 123A or CSE 222, or consent of instructor.

CSE 229. Seminar in Computer Systems (1-4)
Topics of special interest in computer systems to be presented by staff members and students under faculty direction. May be repeated for credit. Prerequisite: consent of instructor. (S/U grades only.)

CSE 230. Principles of Programming Languages (4)
(Formerly CSE 273.) Functional versus imperative programming. Type systems and polymorphism; the ML language. Higher order functions, lazy evaluation. Abstract versus concrete syntax, structural and well-founded induction. The lambda calculus, reduction strategies, combinators. Denotational semantics, elementary domain theory. Prerequisite: CSE 130 or equivalent, or consent of instructor.

CSE 231. Advanced Compiler Design (4)
(Formerly CSE 264C.) Advanced material in programming languages and translator systems. Topics include compilers, code optimization, and debugging interpreters. Prerequisites: CSE 100, 131A-B, or consent of instructor.

CSE 232. Principles of Database Systems (4)
(Formerly CSE 264D.) Database models including relational, hierarchic, and network approaches. Implemen-tation of databases including query languages and system architectures. Prerequisite: CSE 100 or consent of instructor.

CSE 232B. Database System Implementation (4)
A hands-on approach to the principles of databases implementation. Algebraic rewriters/optimizers, query processors, triggers. Beyond centralized relational databases. Prerequisites: CSE 232.

CSE 233. Database Theory (4)
(Formerly CSE 280Z.) The course is a rigorous introduction to the theory of databases. Topics include the theory of query languages, dependency theory, deductive databases, complex objects, object-oriented databases, and other advanced topics and research issues as time allows. Evaluation will be done by homework and research projects. (S/U grades permitted.) Prerequisites: one of CSE 132 or CSE 232, and CSE 200 or consent of instructor.

CSE 238. Topics in Programming Language Design and Implementation (4)
Current topics in programming language design and implementation such as intermediate representations for software tools, cost models, optimizing for high-performance or parallelism, optimization of object-oriented languages, and use of AI techniques in compilers. (S/U grades permitted.) May be repeated three times for credit. Prerequisite: CSE 231 or consent of instructor.

CSE 240. Principles in Computer Architecture I (4)
(Formerly CSE 270A.) Architectural description tools, performance evaluation, uniprocessor issues, including I-unit and E-unit concepts, RISC/CISC issues, bottlenecks, I/O channels and processors, micro- and nano-programming, memory hierarchy, virtual machines, high-level language machines. Performance enhancements: pipelining, instruction lookahead, branch prediction, reduced semantic dependencies. Prerequisite: CSE 141 or consent of instructor.

CSE 241. Advanced Computer Architecture (4)
Parallel computer architecture (shared memory, processor-memory interconnect), multithreading, advanced topics in memory hierarchy design and instruction-level parallelism. This course is a departure point for research in high-performance computing and computer architecture. Prerequisite: consent of instructor.

CSE 242. Design Systems for VLSI Circuits (4)
(Formerly CSE 281U.) Introduction to VLSI circuits; layout design entry; logic design entry; symbolic layout; layout compaction; logic simulation; circuit simulation; design for testability; two-level logic synthesis; multi-level logic synthesis. (S/U grades permitted.) Prerequisite: consent of instructor.

CSE 243. Computer-Aided Design for VLSI (4)
(Formerly CSE 281V.) Microarchitecture synthesis; logic synthesis; synthesis systems for testability insertion; intelligent silicon compilation; synthesis systems for digital signal processing; expert systems in design automation; control unit synthesis; hardware description language issues; design automation databases. (S/U grades permitted.) Prerequisite: consent of instructor.

CSE 248A. Application of Combinatorial Algorithms toCAD (4)
(Formerly CSE 281D.) Description of models in VLSI design. Current literature in CAD. Application of combinatorial algorithms and mathematical programming techniques to circuit layout, array computation, etc.

CSE 250A. Artificial Intelligence I (4)
(Formerly CSE 278A.) Issues in knowledge representation (using logic, semantic networks, production systems, and connectionist representations) will be the focus of this course. A discussion of logic programming languages (like PROLOG) and automatic theorem proving will then lead to a discussion of heuristic search. Prerequisite: CSE 151 or equivalent.

CSE 250B. Artificial Intelligence II (4)
(Formerly CSE 278B.) This course will discuss knowledge representations used to search for solutions, make deductions, plan, and problem solve. The application of these techniques to expert systems will be mentioned. Machine learning will also be a major topic of this course. Prerequisite: CSE 250A.

CSE 251. Natural Language Processing (4)
(Formerly CSE 281W.) A survey of the traditional approaches to natural language processing, including basic parsing, knowledge representation, and discourse analysis. Material covered in the survey will be chosen from such topics as augmented transition networks, case grammars, semantic networks, and unification grammar. (S/U grades permitted.) Prerequisites: graduate standing and either 151 or consent of instructor.

CSE 252. Computer Vision (4)
(Formerly CSE 281M.) Illuminant, surface, and camera models. The role of irradiance, chrominance, stereo disparity, optical flow, and texture in computing interpretations of images. Edge detection, image segmentation, local and global constraints from segment boundaries. Object representations and algorithms for recognition. Extremum problems in vision, including regularization and maximum-likelihood techniques. Relation to human vision. Prerequisite: Math. 2A-B-C-D-E or equivalent. (S/U grades permitted.)

CSE 253. Neural Networks (4)
This course covers Hopfield networks, application to optimization problems, layered perceptrons, recurrent networks, and unsupervised learning. Programming exercises explore model behavior, with a final project on a cognitive science, artificial intelligence, or optimization problem of the student's choice. Prerequisites: knowledge of C and consent of instructor. (S/U grades permitted.)

CSE 254. Machine Learning (4)
(Formerly CSE 281T.) This course will discuss a wide range of techniques used to allow computers to learn directly from experience with their environment rather than requiring programming by humans. The survey will span both high- and low-level learning techniques as well as theoretical models that allow these various techniques to be compared. (S/U grades permitted.) Prerequisite: 250B.

CSE 255. Intelligent Systems (4)
Basic knowledge representation and problem-solving method. Expert system architectures, languages, and tools. Scheduling, planning, diagnosis, and training applications. Fuzzy logic and heuristic control. Neural network, decision tree, and statistical methods for data mining. Guidelines for successful intelligent system deployment. (S/U grades permited.) Prerequisite: CSE 151 or graduate standing in the Advanced Manufacturing Program, or consent of instructor.

CSE 256. Statistical Natural Language Processing (4)
An introduction to modern statistical approaches to natural language processing: part of speech tagging, work sense disambiguation and parsing, using Markov models, hidden Markov models and probabilistic context free grammars. Prerequisite: CSE 250B or equivalent experience.

CSE 257. Computational Biology (4)
Computational methods are indispensable to an understanding of the vast datasets emerging from human and other organisms' genomes. This course surveys algorithms underlying genome analysis, sequence alignment, phylogenetic trees, protein folding, gene expression, metabolic pathways, and biological knowledge base design. Prerequisite: Pharm 201 or consent of instructor.

CSE 257A. Bioinformatics II: Sequence and Structure Analysis—Methods and Applications (4)
Introduction to methods for sequence analysis. Applications to genome and proteome sequences. Protein Structure, sequence-structure analysis.

CSE 257B. Algorithms in Computational Biology (4)
This course will concentrate on computer science (algorithmic and combinatorial) aspects of computational, molecular biology and will cover computational gene hunting, DNA mapping and sequencing, DNA arrays, sequence comparison, gene finding, pattern discovery in DNA, genome rearrangements, and computational proteomics. Prerequisite: CSE 257A or BENG 202.

CSE 258A. Connectionists Natural Language Processing (4)
(Formerly CSE 281P.) This course will explore connectionist (or parallel distributed processing) models and their relation to cognitive processes. The course will cover various learning algorithms and the application of the paradigm to models of language processing, memory, sequential processes, and vision. (S/U grades permitted.) Prerequisite: CSE 250B or equivalent experience.

CSE 259. Seminar in Artificial Intelligence (1)
A weekly meeting featuring local (and occasional external) speakers discussing their current research in Artificial Intelligence Neural Networks, and Genetic Algorithms. (S/U grades only.) Prerequisite: none.

CSE 260. Parallel Computation (4)
(Formerly CSE 274A.) This course provides an overview of parallel hardware, algorithms, models, and software. Topics include Flynn's taxonomy, interconnection networks, memory organization, a survey of commercially available multiprocessors, parallel algorithm paradigms and complexity criteria, parallel programming environments and tools for parallel debugging, language specification, mapping, performance, etc. Prerequisite: graduate standing or consent of instructor.

CSE 261. Parallel and Distributed Computation (4)
(Formerly CSE 274B.) The course concentrates on developing easy-to-parallelize numerical algorithms for optimization without being specific on the implementation. Topics are selected from iterative methods for linear and nonlinear equations; network problems; asynchronous algorithms and partially asynchronous iterative methods. Prerequisite: consent of instructor.

CSE 262. System Support for Applications of Parallel Computation (4)
This course will explore design of software support for applications of parallel computation. Topics include: programming languages, run time support, portability, and load balancing. The course will terminate in a project. Prerequisite: consent of instructor.

CSE 263. Parallel Algorithms (4)
(Formerly CSE 274D.) An introductory course in parallel algorithms on mesh, tree, hypercube, PRAM, and related architectures. The algorithms include sorting and routing, matrix algorithms, graph algorithms, and fast Fourier transform. Prerequisites: CSE 202, CSE 260, or consent of instructor.

CSE 268A. Topics in Parallel Computation (4)
(Formerly CSE 281Y.) Current topics of interest in parallel computation will be discussed such as heterogeneous computing, advanced topics in parallel programming environments, parallel programming models, performance criteria, etc. (S/U grades permitted.) Prerequisite: graduate standing or consent of instructor.

CSE 268C. Topics in High-Performance Programming (4)
A systematic approach to the design, writing, and tuning of programs to sustain near-peak performance with particular emphasis on RISC processors and massively parallel computers. A project will involve measuring and improving the performance of a computational kernel. Prerequisite: CSE 141 or consent of instructor.

CSE 269. Seminar in Parallel Computation (1-4)
A seminar course in which topics of special interest in parallel computation will be presented by staff members and graduate students under faculty direction. Topics vary from quarter to quarter. May be repeated for credit. Prerequisite: consent of instructor. (S/U grades only.)

CSE 270. Statistics and Probability for Manufacturing (4)
This course covers probability and conditional probability for discrete and continuous random variables, combinations and permutations, joint random variables, estimation, hypothesis testing, and statistical quality control, with a view to applications in manufacturing. Prerequisite: none.

CSE 271. User Interface Design: Social and Technical Issues (4)
Web technologies (HTML, Java, JavaScript, etc.) can quickly build superb new systems, as well as phenomenally ugly systems that still fully meet their performance and functional requirements. This course explores interface usability and representation issues, with some focus on hypermedia and cooperative work. Prerequisites: CSE 20, CSE 100, or equivalent.

CSE 275. Social Aspects of Technology and Science (4)
Note: CSE 275 is pending CEP approval. Explores approaches to the sociology of technology and science, especially information technology. Topics include requirements engineering, actor-network theory, post-modernism, the Web, user interface design, and public policy. Prerequisites: CSE 8B or CSE 11, and background in the humanities.

CSE 290. Seminar in Computer Science and Engineering (1-4)
(Formerly CSE 280A.) A seminar course in which topics of special interest in computer science and engineering will be presented by staff members and graduate students under faculty direction. Topics vary from quarter to quarter. May be repeated for credit. (S/U grades only.) Prerequisite: consent of instructor. (Offered as faculty resources permit.)

CSE 291. Topics in Computer Science and Engineering (1-8)
(Formerly CSE 281A). Topics of interest in computer science and engineering. Topics may vary from quarter to quarter. May be repeated for credit with the consent of instructor. (S/U grades permitted.) Prerequisite: consent of instructor. (Offered as faculty resources permit.)

CSE 292. Faculty Research Seminar (1)
(Formerly CSE 282.) Computer science and engineering faculty will present one hour seminars of the current research work in their areas of interest. Prerequisite: CSE graduate status.

CSE 293. Special Project in Computer Science and Engineering (1-8)
(Formerly CSE 269.) The student will conceive, design, and execute a project in computer science under the direction of a faculty member. The project will typically include a large programming or hardware design task, but other types of projects are possible. One-six units may be repeated to a total of nine units. Prerequisite: CSE graduate student status. (S/U grades only.)

CSE 294. Research Meeting in CSE (2)
Advanced study and analysis of active research in computer science and computer engineering. Discussion of current research and literature in the research specialty of the staff member teaching the course. Prerequisite: consent of instructor.

CSE 298. Independent Study (1-16)
Open to properly qualified graduate students who wish to pursue a problem through advanced study under the direction of a member of the staff. (S/U grades only.) Prerequisite: consent of instructor.

CSE 299. Research (1-16)
Prerequisite: consent of instructor.
(S/U grades only.)

CSE 501. Teaching Assistantship (2-4)
Teaching and tutorial activities associated with courses. May be used to meet teaching experience requirement for candidates for the Ph.D. degree. Number of units for credit depends on number of hours devoted to class or section assistance, and student contact. (S/U grades only.) Prerequisite: consent of department chair.

CSE 502. Teaching Experience (2)
Teaching experience in an appropriate CSE Under-graduate Course under direction of the faculty member in charge of the course. Lecturing at least twice during the quarter in either a problem-solving session or regular lecture. Meets teaching experience requirement for candidates for the Ph.D. degree. (S/U grades only.) Prerequisites: consent of instructor and department chair.


 
Copyright 2001, The Regents of the University of California. Last modified July 13, 2001.
Reflects information in the printed 2001-2002 General Catalog. Contact individual departments for the very latest information.