Core Courses and Electives

Bachelor of Science in Computer Science

Students intending to enter this program at the freshman level should have completed 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 advisor as soon as possible in order that the correct sequence of courses is taken and a proper set of electives is chosen. It is also suggested that students consult with an advisor before selecting courses to meet the General Education requirements. (See program below for acceptable science electives.)

Picture of Thornton Hall

Students are encouraged to participate in the Computer Science Cooperative Education Program at SF State. 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 financial need.

Students are advised that CR/NC grades are not acceptable in courses to be counted for the Computer Science major or minor programs.


Prerequisite Policy

CS Department strictly enforces prerequisites for all courses. Prerequisites are checked by CS faculty at the beginning of each course. A grade of C or better is required to be accepted as a prerequisite. The final decision about whether a student is ready to take a course is made by the instructor who teaches the course.


Computer Science (B.S.) — 71 units

Courses are 3 units unless otherwise indicated.

Mathematics and Physics — 22 units

Science Elective — 3 units

Science elective selected from the following GE Segment II Physical and Biological Sciences, Category B, Biological Sciences courses. Other science courses are subject to approval.

Core Computer Science Requirements — 22 units

Advanced Computer Science Requirements — 24 units

Electives — 12 units (see requirements below)

Senior Presentations. Each major is required to make an oral presentation during his/her senior year. Guidelines for the presentations are available on the Computer Science web site:

Picture of a Pathway in the San Francisco State University Quad

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):

  1. CSC 520 Theory of Computing (Algorithms and Theory of Computing, Programming Languages)
  2. CSC 656 Computer Organization (Architecture)
  3. CSC 675 Introduction to Database Systems (Algorithms and Theory of Computing, Database)
  4. CSC 668 Advanced Object Oriented Software Design and Development (Programming Languages, Software Engineering)

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:

  • CSC 520 Theory of Computing (Algorithms and Theory of Computing, Programming Languages)
  • CSC 645 Computer Networks (Operating Systems and Distributed Processing)
  • CSC 650 Secure Networked Systems (Operating Systems and Distributed Processing)
  • CSC 651 System Administration (Operating Systems and Distributed Processing)


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

Areas of Special Emphasis

Algorithms and Theory of Computing
Artificial Intelligence
Graphics and Multimedia
Numerical and Symbolic Computing
Operating Systems and Distributed Processing
Programming Languages
Software Engineering