Computer Science

College of Science and Engineering
Dean: Sheldon Axler

Department of Computer Science
TH 906
415-338-1008
E-mail (undergraduate): cs@sfsu.edu
E-mail (graduate): csgrad@sfsu.edu
Chair: Barry Levine (Acting)

Undergraduate Advisers: Cavalli-Sforza, Eisman, Hsu, Kroll, Lank, Wong
Graduate Coordinator: Murphy

Faculty

Professors—Dujmovic, Eisman, Levine, Murphy, Wong

Associate Professors—Hsu, Kroll

Assistant Professors—Cavalli-Sforza, Lank, Puder, Yoon

Adjunct Professor—Wall

Lecturers—Osborne, Rankovich-Dujmovic, Tomasevich

Programs

B.S. in Computer Science
Minor in Computer Science
M.S. in Computer Science


Program Scope

The primary mission of Computer Science is to prepare students for employment as computer specialists in the software development and computer manufacturing industries and for continued study toward advanced degrees. The department offers a broad curriculum covering the major areas of the computing discipline. Students are exposed to the fundamentals of computing architecture and computing theory, and focus their studies on the areas of software and system development. Faculty work directly with students to develop in them the skills and knowledge of computing professionals.

Department faculty are committed to teaching excellence. They remain current in the rapidly changing field of computing technology through continued research, direct consultation with local industries, and seminar programs that bring top researchers to campus to speak on current developments in the field. Programs such as the Supervised Industrial Research Program provide opportunities for graduate students to complement their academic learning with real world experience.

The department has an additional commitment to sharing its knowledge and skills with the rest of the university community, with local schools, and with community based organizations of the Bay Area.

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.

Computing Facilities

Central Facilities

General Undergraduate Computing Resources

Specialized Computing Resources

Career Alternatives

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, as well as basic knowledge of computer organization and programming, are very desirable.

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 as soon as possible 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.

An Endowed Scholarship Fund, established in the memory of Jules H. Strauss, offers an annual award to a computer science major who shows scholarly accomplishment and demonstrates a financial need.

Students are advised that except for the laboratory course, CSC 212, CR/NC grades are not acceptable in courses to be counted for the computer science major or minor programs.

On-line course descriptions are available.

Mathematics and Physics (25 units) Units
MATH 226-227 Calculus I-II (4 each) 8
MATH 324 Probability and Statistics with Computing 3
MATH 325 Linear Algebra 3
MATH 330 or
CSC 330
Discrete Mathematical Structures for Computer Science 3
PHYS 220/222 General Physics with Calculus I (3/1) 4
PHYS 230/232 General Physics with Calculus II (3/1) 4
Science Electives (4 units)  
Science electives selected from among the following GE Segment II Physical and Biological Sciences, Category B, Biological Sciences courses: BIOL 100 and BIOL 101, BIOL 210 and BIOL 211, and BIOL 230. Other science courses are subject to approval. 4
Core Computer Science Requirements (21 units)
CSC 210 Introduction to Computer Programming 3
CSC 212 Software Development Tools with UNIX 2
CSC 213 Fundamentals of Computer Science 3
CSC 305 Social and Ethical Implications of Computing 1
CSC 310 Assembly Language Programming and Introduction to Computer Organization 3
ENGR 356 Basic Computer Architecture 3
CSC 313 Data Structures 3
CSC 413 Software Development 3
Advanced Computer Science Requirements (21 units)
CSC 415 Principles of Operating Systems 3
CSC 510 Analysis of Algorithms I 3
CSC 600 Programming Language Design 3
Senior Presentations. Each major is required to make an oral presentation and a written presentation in an area of computer science during his/her senior year. Guidelines for the presentations are available in the department office 0
Electives (see requirements below) 12
Total for major 71

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 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.

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 same courses can be used to meet depth and breadth requirements. However, a course cannot be counted towards more than one area of emphasis. For example, the following four electives can be used to meet the requirements in different ways in order to highlight a different area of emphasis (areas of emphasis are shown in parentheses):

The different ways in which these courses can meet the elective requirements are:

Emphasis: Algorithms and Theory of Computing

CSC 520 meets requirement 1
CSC 520 and CSC 675 meet requirement 2 (depth in Algorithms)
CSC 520 or CSC 675 (Algorithms), CSC 656 (Architecture), and CSC 668 (Programming Languages or Software Engineering) meet requirement 3

Emphasis: Programming Languages

CSC 520 meets requirement 1
CSC 520 and CSC 668 meet requirement 2 (depth in Programming Languages)
CSC 520 or CSC 668 (Programming Languages), CSC 656 (Architecture), and CSC 675 (Database) meet requirement 3

In contrast, for example, the following courses do not meet the elective requirements because CSC 520 cannot be double counted as Algorithms and Programming Languages:

The courses listed below constitute a partial list of suitable courses for meeting the elective requirements. The department frequently offers, under the title of CSC 690, new courses that meet elective requirements. Many students also find that, by their senior year, they are prepared to undertake certain graduate courses in computer science. Occasionally, students in good academic standing may take CSC 699, Independent Study, instead of a regularly scheduled course. Students are advised to check university and college regulation regarding academic standing requirements. Finally, it is occasionally possible to use a course taken in a different department or at another university (but only if the course is not offered at San Francisco State University) to satisfy elective requirements. Any course substitutions must be approved in advance by a senior adviser.

Areas of Special Emphasis

Algorithms and Theory of Computing
CSC 520, Theory of Computing
CSC 630, Computer Graphics Systems Design
CSC 635, Software Techniques for the Processing of Computer Music and Sound Data
CSC 671, Neural Networks
CSC 675, Introduction to Database Systems
MATH 400, Numerical Analysis I

Architecture
CSC 641, Computer Performance Evaluation
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
CSC 642, Human-Computer Interaction

Numerical and Symbolic Computing
MATH 400, Numerical Analysis I

Operating Systems and Distributed Processing
CSC 641, Computer Performance Evaluation
CSC 645, Computer Networks
CSC 650, Secure Networked Systems
CSC 667, Internet Application Design and Development

Programming Languages
CSC 520, Theory of Computing
CSC 620, Natural Language Processing
CSC 640, Software Engineering
CSC 665, Introduction to Artificial Intelligence
CSC 668, Object Oriented Programming

Software Engineering
CSC 640, Software Engineering
CSC 642, Human-Computer Interaction
CSC 667, Internet Application Design and Development
CSC 668, Object Oriented Programming

MINOR IN COMPUTER SCIENCE

Many university students want to acquire sufficient 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. Students are advised that except for the laboratory course, CSC 212, CR/NC grades are not acceptable in courses to be counted for the Computer Science Minor.

Program Requirements Units
CSC 210 Introduction to Computer Programming 3
CSC 212 Software Development Tools with UNIX 2
CSC 213 Fundamentals of Computer Science 3
CSC 310 Assembly Language Programming and Introduction to Computer Organization 3
CSC 313 Data Structures 3
CSC 413 Software Development 3
Upper division computer related elective by approval of the minor adviser 3
Total for minor 20

MASTER OF SCIENCE IN COMPUTER SCIENCE

Admission to Program

Candidates for admission to the Computer Science M.S. program must have a strong backgrounds in 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 210, 212, 213, 310, 313, 330, 413; and ENGR 356. In addition, the student must have completed the following with no grades below a B: MATH 226, 227, 324, and 325. 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 general GRE aptitude test, taken within three years prior to the date of application (institution code: 4684, department code: 0402). Letters of recommendation and test scores should be sent to the Graduate Admissions Officer, Computer Science Program.

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. requirements.)

Financial Assistance

Graduate assistantships are occasionally available for qualified master's students. These opportunities include assisting with management of departmental and university computer laboratories as well as lecturer positions for beginning undergraduate computer science courses. In addition, a new program, the Supervised Industrial Research Program, provides an opportunity for graduate students in computer science to obtain experience working in the local computing industry while attending the university. International students should address all questions related to their visa status and eligibility for practical training to the Office of International Programs.

Written English Proficiency Requirement

Level One: Effective Spring 2003, all computer science students admitted to the M.S. program are required to satisfy English Level One no later than their first semester of enrollment in the core graduate courses. Level One is satisfied by either a score of PASS on the Graduate Essay Test (GET, administered by the SFSU Testing Center) or a passing grade in SCI 614. Students are only allowed to take the GET once, preferably prior to their first semester of enrollment. 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 demonstrated by the master's thesis or the research project.

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: the Master's Thesis or the Applied Research Project.

A maximum of nine units of upper division courses (numbered below 700) may be applied to the degree with the consent of the course instructor and graduate adviser.

Online course descriptions are available.

Program Requirements 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
CSC 895 Applied Research Project and
  Oral Project Presentation or
  CSC 898   Master's Thesis and
  Oral Defense of Thesis
Minimum total 30

Areas of Computer Science (graduate electives)

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

Policy on Enrollment While Conducting Directed Research

Pursuant to Policy F89-165 adopted by the Academic Senate in 1989, 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 or project reviewed, must enroll in at least one unit of CSC 895, 897, 898, or 899. Registered students will have priority for departmental computing resources.