Bulletin

Computer Science

College of Science and Engineering
Dean: James C. Kelley

Department of Computer Science
TH 906
415-338-1008
Chair: Gerald Eisman

Undergraduate Advisers: Douglas, Hodges, Kroll, Murphy, Wong, C.S.
Graduate Coordinator: B. Levine

Faculty
Professors—Astromoff, Douglas, Eisman, Levine

Associate Professors—Kroll, Murphy

Assistant Professors—Hodges, Hsu, W., Wong, C.S.

Lecturers—Brandstatter, Johnston, Morse, Osborne, Rotem, Sheehan, Wernick

Adjunct Professors—Haines, Oklobdzija

Programs
B.S. in Computer Science

Minor in Computer Science

M.S. in Computer Science


Program Scope
The primary goal of the B.S. in Computer Science is to prepare students for employment as computer specialists in the software development and computer manufacturing industries or in industries which depend heavily on computer usage. A secondary goal is to prepare some students for study toward advanced degrees. The B.S. program stresses a basic foundation in mathematics and physics, and a thorough study of the fundamentals of the discipline—software development, computer architecture, operating systems, programming languages, algorithms, and the theoretical foundations of computer science. A wide variety of elective courses such as database systems, artificial intelligence, computer architecture and graphics, allow students to emphasize study in selected areas. Ethical and social issues of computing are discussed throughout the curriculum. It is strongly recommended that students who will seek employment as computer specialists in industry gain a basic understanding of the general aims and problems of that industry by taking a minor or the equivalent in one of the appropriate university programs.

An Endowed Scholarship Fund, established in the memory of Jules H. Strauss, supports an annual award worth approximately $2,000 to a computer science major who shows scholarly accomplishment and demonstrates a financial need. The Chevron Corporation Achievement Award in Computer Science in the amount of $1,500 is given each semester to a junior or senior who has exhibited exceptional achievement.

Many university students want to acquire enough computer science background to enable them to use computers effectively in their major areas, or to provide an alternative source of income after graduation, but do not want to study computer science in the depth required for the B.S. degree. For such students, a minor consisting of the most central courses in the B.S. program, plus some electives, is ideal.

The primary goal of the M.S. program is to prepare students for employment as computer specialists in the computer manufacturing and software development industries or in industries which depend heavily on computer usage. Secondary goals are to prepare students to transfer to Ph.D. granting institutions and to provide computer science background for those wishing to prepare themselves for high school and junior college teaching.

Computing Facilities
Access to Internet is provided by most of the following facilities:

Central Facilities:

Several microcomputer laboratories are located around campus.

Departmental Facilities:

Financial Assistance
Graduate assistantships are frequently available for qualified master's students. These opportunities include assisting with the management of department and university computer laboratories as well as lecturer positions for beginning undergraduate computer science courses.

Career Outlook

BACHELOR OF SCIENCE IN COMPUTER SCIENCE

Students intending to enter this program at the freshman level should complete two years of algebra and one semester of trigonometry in high school. One year each of high school geometry and physics is very desirable as well.

All lower division courses (course numbers below 300) included among the degree requirements are available at many community colleges in California; students intending to enter the program upon transferring to San Francisco State University from a community college should take as many of those courses there as possible.

Students should plan their program of study in the major with the help of a departmental adviser in order that the correct sequence of courses be taken and a proper set of electives be chosen. It is also suggested that students consult with an adviser before selecting courses to meet General Education requirements.

Students are encouraged to participate in the Computer Science Cooperative Education Program at SFSU. Under this program, they may obtain industrial employment related to their academic studies. This combination of on-the-job training and academic experience can greatly enhance the value of an undergraduate degree in computer science.

Students are advised that except for the laboratory courses, CSC 212, CSC 216, and CSC 311, CR/NC grades are not acceptable in courses to be counted for the computer science major program.

Courses for this program are listed in alphabetical sequence (see Computer Science discipline in the "Announcement of Courses" section).

Mathematics and Physics (23 units)
							Units
MATH 220-222	Calculus and Analytic Geometry I-III 
		(3 each)				 9
MATH 246	Introduction to Linear Algebra or
	MATH 325	Linear Algebra			 3
MATH 250	Probability and Statistics with 
		Computing				 3
PHYS 220/222	General Physics with Calculus I		 4
PHYS 230/232	General Physics with Calculus II	 4
Core Computer Science Requirements (22 units)
CSC 210		Introduction to Computer Programming	 3
CSC 212		Software Development Tools with UNIX	 2
CSC 301		Fundamentals of Computer Science	 3
CSC 310		Assembly Language Programming and 
		Introduction to Computer Organization	 3
CSC 311		Assembly Language Programming 
		Laboratory				 2
ENGR 356	Basic Computer Architecture		 3
CSC 330		Discrete Mathematical Structures for 
		Computer Science			 3
CSC 410		Data Structures				 3
Advanced Computer Science Requirements (9 units)
CSC 415		Principles of Operating Systems		 3
CSC 510		Analysis of Algorithms I		 3
CSC 600		Programming Language Design		 3

Senior Presentation. Each major is required to make an 
oral presentation on an area of computer science during 
his/her senior year. Guidelines for the presentation are 
available in the department office			 0
Electives (see requirements below)			12
		Total for major				66
Elective Requirements (four 3-unit courses)
Electives are selected from the nine subareas of Computer Science listed below. Electives must meet the following requirements.

  1. One of the electives must be either CSC 520, Theory of Computing, or CSC 656, Computer Organization. (CSC 520 and CSC 656 can be used to partially meet the depth and breadth requirements.)
  2. Depth Requirement: two of the electives must be chosen from the same subarea of the discipline.
  3. Breadth Requirement: electives must be chosen from three different subareas.
For example, the following four electives meet the requirements (subareas are shown in parentheses):

CSC 520 meets requirement 1.
CSC 620 and CSC 671 are both in the Artificial Intelligence subarea (depth requirement 2).
CSC 520, CSC 620, and CSC 675 are in three different subareas (breadth requirement 3).

NOTE: It is recommended that students planning to continue their study of computer science in graduate school take both CSC 656 and CSC 520.

The courses listed below constitute a partial list of suitable courses. Each semester the department offers several courses under the title of CSC 690, Undergraduate Seminar, which meet elective requirements. In addition, many students find that by their senior year they are prepared to undertake certain graduate courses in computer science. Any course substitutions must be approved by the major adviser.

Subareas of Specialized Emphasis

Algorithms and Theory of Computing

CSC 520 Theory of Computing
CSC 610 Sorting and Searching

Architecture

ENGR 456 Computer Systems
CSC 656 Computer Organization

Artificial Intelligence

CSC 620 Natural Language Processing
CSC 665 Introduction to Artificial Intelligence
CSC 671 Neural Networks

Database

CSC 675 Introduction to Database Systems

Graphics

CSC 630 Computer Graphics Systems Design

Numerical and Symbolic Computing

MATH 400 Numerical Analysis I

Operating Systems and Distributed Processing

CSC 645 Computer Networks

Programming Languages

CSC 520 Theory of Computing
CSC 668 Object Oriented Programming

Software Engineering

CSC 668 Object Oriented Programming
CSC 640 Software Engineering

MINOR IN COMPUTER SCIENCE

Students are advised that except for the laboratory courses, CSC 212, CSC 216, and CSC 311, CR/NC grades are not acceptable in courses to be counted for the Computer Science Minor Program.

Program Requirements
							Units
CSC 210		Introduction to Computer Programming	 3
CSC 212		Software Development Tools with UNIX	 2
CSC 301		Fundamentals of Computer Science	 3
CSC 310		Assembly Language Programming and 
		Introduction to Computer Organization	 3
CSC 311		Assembly Language Programming 
		Laboratory				 2
CSC 410		Data Structures				 3
ENGR 356	Basic Computer Architecture			 3
One upper division computer related elective by approval 
of the minor adviser					 3
		Total for minor				22

MASTER OF SCIENCE IN COMPUTER SCIENCE

Admission to Program
Candidates for admission to the Computer Science M.S. Program should have strong backgrounds in the mathematics which underlies all sciences, the fundamental programming techniques, and the basic concepts of computer architecture, as well as demonstrated potential for graduate study in computer science. The requisite academic background is normally evidenced by a 3.3 grade point average with no grades below a B in the following courses or their equivalents: CSC 330, 410; and ENGR 356. In addition, the student must have completed the following with no grades below a B: MATH 220, 221, 222. Candidates for admission must submit two or more letters of recommendation from individuals familiar with their previous academic work and/or potential for graduate study. Finally, candidates must submit their scores on the GRE aptitude test, taken within three years prior to the date of application. Letters of recommendation and test scores should be sent to the Graduate Admissions Officer, Department of Computer Science.

Candidates who satisfy most but not all requirements for admission may sometimes be admitted on condition that they achieve the requisite grade point average in the courses mentioned above in the minimum possible time. (These courses, however, may not be counted toward the M.S. degree requirements.)

Written English Proficiency Requirement
Level One: newly admitted students are required to take the Graduate Essay Test (GET, administered by the Testing Office) preferably before the first enrollment takes place, but no later than completion of the first nine units of course work toward the master's degree. If remedial work is necessary, the student shall be expected to complete courses in writing or other corrective work acceptable to the department. Level Two: the second level of proficiency in written English must be demonstrated before graduation. At this time, the student must demonstrate writing skills which exemplify scholarly style in computer science. This is generally demonstrated by the master's thesis. Students who do not write a thesis can satisfy this requirement by obtaining the approval of the graduate adviser based on a letter of support from a faculty member who has evaluated the student's English proficiency. The evaluation should be based on written assignments completed for graduate level Computer Science course work.

Policy on Enrollment for Directed Research
The Computer Science Department has adopted the policy that all graduate students who are working with a research adviser (above and beyond general advising during office hours) and/or having his/her thesis reviewed, must enroll in at least one unit of CSC 897 or 899. Registered students will have priority for departmental computing resources.

The Master of Science in Computer Science consists of core courses covering advanced topics in software, hardware, and computer science theory with additional elective courses covering the breadth of the discipline. There are two options for the culminating experience for the degree: a master's thesis or the master's comprehensive written examination.

A maximum of nine units of undergraduate courses (numbered below 700) may be applied to the graduate degree.

Courses for this discipline are listed in alphabetical sequence (see Computer Science discipline in the "Announcement of Courses" section).

							Units
CSC 720		Advanced Operating Systems		 3
CSC 810		Analysis of Algorithms II		 3
CSC 856		Advanced Computer Architecture		 3
Upper division or graduate electives selected on 
advisement from the areas listed below			18
One of the following:					 3
	Three additional units of electives and
	Master's Comprehensive Written 
		Examination or
	CSC 898	Master's Thesis and Oral Defense of 
		Thesis
		Minimum total				30
NOTE: Details of the Master's Comprehensive Written Examination or Master's Thesis requirement may be obtained at the Computer Science Department office.

Areas of Computer Science

Architecture
Artificial Intelligence
Database Systems
Graphics
Operating Systems
Programming Languages
Theory of Computation and Algorithms
Special Study or Research


Bulletin 1994-96 Table of Contents, SFSU Home Page

last modified June 1, 1995