Computer Science  {SF State Bulletin 2012 - 2013}

Image: San Francisco State University seal on a gold background

Computer Science

College of Science and Engineering

Dean: Sheldon Axler

 

Department of Computer Science

TH 906
Phone: 415-338-1008
E-mail: csgrad@sfsu.edu
Website: http://cs.sfsu.edu

 

Chair: Dragutin Petkovic
Undergraduate Advisers: Hsu, Okada, Puder, Wong, Yang
Graduate Coordinator: Levine
Graduate Advisers: Levine, Murphy

 

Faculty

Professors: Dujmovic, Levine, Murphy, Petkovic, Wong
Associate Professors: Hsu, Puder, Singh, Yoon
Assistant Professors: Okada, Yang
Adjunct Professors: Buturovic, Lank
Lecturers: Roberts, Tomasevich, Wall

 

Programs

Bachelor of Science in Computer Science

Minor in Computer Science

Master of Science in Computer Science

Concentrations in:

 


 

Program Scope

The primary mission of the Department 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 integrated with teamwork and group projects. 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 and publications, 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 and Practicum option 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 Bachelor of Science 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, game development, and software engineering allow students to emphasize study in selected areas. Ethical and social issues of computing are discussed throughout the curriculum. Senior courses include teamwork and group project assignments in order to better prepare students for the future job markets. A number of skill-based courses have been added to provide necessary training in the latest software technologies. The Bachelor of Science program is ABET accredited.

 

The Master of Science in Computer Science prepares students for a wide variety of careers in computing or related industries as well as for advanced study toward a Ph.D. Our program blends strong and practical education with high quality research and project activities. In addition to a general program covering the breadth of the computing discipline, the department offers three sub-specializations or concentrations: Software Engineering; Computing for Life Sciences; and Computing and Business. The concentration in software engineering covers the design and development of large yet useable software systems in a world where software teams are distributed globally. The concentration in computing for life sciences covers the development of computer applications and technologies aimed at supporting the burgeoning biotechnology industry. The concentration in computing and business provides a blended approach providing students with a solid technical background in computer science as well as core topics in modern business practices. The research component of our graduate studies has been significantly increased and involves students in pursuing research projects, writing papers and attending conferences. The program is supported by the SF State Center for Computing for Life Sciences (http://cs.sfsu.edu/ccls/index.html) and several specialized laboratories which provide research and project focus as well as opportunities to collaborate with faculty and students from other SF State departments and industry.

 

Computing Facilities

Central Facilities

  • A network of Unix, Linux, and PC servers supported by SF State Division of Information Technology
  • A SUN server (libra) supported by SF State Computing Services and used for Computer Science classes
  • Microcomputer labs in SF State library; several other microcomputer labs are located around campus

 

General Undergraduate Computing Facilities

  • Intel servers (Windows and Linux)
  • Apple servers
  • Unix servers
  • PC laboratory

 

Specialized Centers, Laboratories, and Computing Resources

  • Center for Computing for Life Sciences (including high performance 40-node DELL cluster supercomputer)
  • Multimedia and Visualization Laboratory
  • Biocomputing and Media Research Group
  • Computer Music Laboratory
  • Virtual Computing: VMware GSX server, Microsoft VirtualPC Server

 

Career Alternatives

  • Bioinformatics developer
  • Software engineer
  • Manager of software development teams
  • System programmer/administrator
  • Computer network specialist
  • System security and/or performance manager
  • Application software designer
  • Database designer/programmer/administrator
  • Programmer in scientific or business applications
  • Web and internet specialist
  • Game developer

 

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 adviser 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 adviser before selecting courses to meet the General Education requirements. (See program below for acceptable science electives.)

 

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.

 

On-line course descriptions are available.

 

Mathematics and Physics (22 units)

Course Title Units
MATH 226-227 Calculus I-II (4 each) 8
MATH 324 Probability and Statistics with Computing 3
MATH 325 Linear Algebra 3
PHYS 220/
PHYS 222
General Physics with Calculus I/Laboratory (3/1) 4
PHYS 230/
PHYS 232
General Physics with Calculus II/Laboratory (3/1) 4

Science Electives (4 units)

Course Title Units
Science electives selected from among the following GE Segment II Physical and Biological Sciences, Category B, Biological Sciences courses: BIOL 100/101, or BIOL 210/211 or BIOL 230 (removed from GE effective spring 2013.) Other science courses are subject to approval. 4

Core Computer Science Requirements (21 units)

Course Title Units
CSC 210 Introduction to Computer Programming 3
CSC 220 Data Structures 3
CSC 230 Discrete Mathematical Structures for Computer Science 3
CSC 256 Machine Structures 3
CSC 300 GW Ethics, Communication and Tools for Software Development - GWAR 3
CSC 340 Programming Methodology 3
CSC 413 Software Development 3

Advanced Computer Science Requirements (24 units)

Course Title Units
CSC 415 Principles of Operating Systems 3
CSC 510 Analysis of Algorithms I 3
CSC 600 Programming Language Design 3
CSC 640 Software Engineering 3
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: http://cs.sfsu.edu. 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):

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

 

Areas of Special Emphasis

Algorithms and Theory of Computing
CSC 520, Theory of Computing
CSC 621, Biomedical Imaging & Analysis
CSC 630, Computer Graphics Systems Design
CSC 637, Software Techniques for Computer Music
CSC 671, Neural Networks
CSC 675, Introduction to Database Systems
MATH 400, Numerical Analysis

 

Architecture
CSC 641, Computer Performance Evaluation
CSC 656, Computer Organization

 

Artificial Intelligence
CSC 620, Natural Language Technologies
CSC 621, Biomedical Imaging & Analysis
CSC 665, Artificial Intelligence
CSC 671, Neural Networks

 

Database
CSC 664, Multimedia Systems
CSC 675, Introduction to Database Systems

 

Graphics and Multimedia
CSC 621, Biomedical Imaging & Analysis
CSC 630, Computer Graphics Systems Design
CSC 631, Multiplayer Game Development
CSC 637, Software Techniques for Computer Music
CSC 642, Human-Computer Interaction
CSC 664, Multimedia Systems

 

Numerical and Symbolic Computing
MATH 400, Numerical Analysis

 

Operating Systems and Distributed Processing
CSC 615, UNIX Programming
CSC 641, Computer Performance Evaluation
CSC 645, Computer Networks
CSC 650, Secure Networked Systems
CSC 651, System Administration
CSC 667, Internet Application Design and Development

 

Programming Languages
CSC 520, Theory of Computing
CSC 620, Natural Language Technologies
CSC 639, Software Testing and Quality Assurance
CSC 665, Artificial Intelligence
CSC 668, Advanced Object Oriented Software Design and Development

 

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

 

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 CR/NC grades are not acceptable in courses to be counted for the Computer Science Minor.

 

Courses are 3 units unless indicated otherwise. On-line course descriptions are available.

 

Program Requirements

Course Title Units
CSC 210 Introduction to Computer Programming 3
CSC 220 Data Structures 3
CSC 256 Machine Structures 3
CSC 340 Programming Methodology 3
CSC 413 Software Development 3
Upper division computer related electives by approval of the minor adviser 6

Total for minor: 21

 

Graduate Programs in Computer Science

Program Description

All students share breadth requirements in the areas of computing foundations, computer systems, and software development. Particular concentrations then differ in the choice of courses that provide depth in a chosen area and in the work done for the culminating experience. Students are expected to decide on a concentration prior to enrollment in the second semester. Integrated into the curriculum is significant team and project experience. There are two options for the mandatory culminating experience, the master's thesis or the applied research project.

 

Students electing the concentration in Computing and Business will complete all of the requirements for a full Computer Science Masters degree. In addition, they would complete a series of business courses (foundation MBA courses). Completion of this concentration would provide skills for graduates to assume management responsibilities in organizations that require managers who understand both the computing and business aspects of information technology.

 

The grading method CR/NC is allowed only for CSC 895 or CSC 898. All other courses listed on the Advancement to Candidacy (ATC) form must be letter grade.

 

Elective Requirements

All students are required to include elective credits in their program. Electives include:

  • All upper division or graduate courses offered by the Computer Science Department, including breadth requirement courses and CSC 897 and CSC 899. CSC 893 may not count as an elective course.
  • Courses from other programs such as biology, engineering, business, or mathematics may be accepted with the approval of the graduate adviser and culminating experience supervisor.

 

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

 

Graduate Seminar Requirement

In addition to curricular requirements, prior to enrolling in CSC 895/898, all graduate students are required to attend the department Graduate Seminar series during one semester of their studies. These weekly seminars explore current topics in computer science research and assist students with choosing a topic for the culminating experience. Details for meeting this requirement may be found at http://www.cs.sfsu.edu/news/2005_2006-Pernet-Requirments.html.

 

Practicum

This 1-3 unit option is chosen by students who wish to enhance their master’s degree by completing an industrial practicum. After finding the job in local industry, the student will submit a research proposal to the department’s supervisor (normally the department chair) that describes the expected work and learning outcome. The department’s supervisor must approve the proposal before the student begins the research. Once approved, the student will enroll in 1 unit of CSC 893, Supervised Industrial Research. At the conclusion of the work experience, the student must file a written report outlining the research and work experience. The report is submitted to the department’s supervisor. Students may repeat CSC 893 for a maximum of 3 units. The total number of units for the degree for students who complete the CSC 893 practicum option will be 33 units. It is recommended that this option be pursued only during the summer.

 

Note: CSC 893 allows international students to obtain permission to work off campus for the duration of the course.

 

Admission to Program

Admission to the graduate program in computer science is a two-step process that should be completed simultaneously:

  1. Apply to San Francisco State University: Complete the on-line CSU Mentor application. Follow all other requirements for admission to the university by accessing www.sfsu.edu/~gradstdy/.
  2. Apply to the Department of Computer Science graduate program: Full details can be found at http://cs.sfsu.edu/GradApply.html.

 

We encourage students with four-year degrees other than Computer Science to apply to our program as conditional applicants. Please check the link in Step 2 above for details.

 

Financial Assistance

Graduate assistantships are occasionally available for qualified master's students. These opportunities include participating in funded research projects, assisting with management of departmental and university computer laboratories as well as lecturer positions for beginning undergraduate computer science courses. Frequently, there are internship opportunities available for work at local companies. International students should address all questions related to their visa status and eligibility for practical training (off-campus work) to the Office of International Programs.

 

Written English Proficiency Requirement

Level One:Computer science students admitted to the M.S. program are required to satisfy English Level One prior to the end of their first year of study at SF State. Level One is satisfied by obtaining either a score of 4 or better on the GRE Analytical Writing Exam or a passing grade in SCI 614 or CHS 514. Students may enroll in CHS 514 if all sections of SCI 614 are full. SCI 614 is strongly recommended for all students who wish to develop their skills in professional writing.
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 report.

 

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.

 

Master of Science in Computer Science

For general information for all computer science students, see Graduate Programs in Computer Science above.

 

Courses are 3 units unless indicated otherwise. On-line course descriptions are available.

 

Core Requirements

Computing Foundations: units selected from the following: (3 units)

Course Title
CSC 810 Analysis of Algorithms II
CSC 825 Advanced Automata Theory

 

Computer Systems: units selected from the following: (3 units)

Course Title
CSC 720 Advanced Operating Systems
CSC 835 Distributed Systems
CSC 846 Systems Architecture
CSC 746 High Performance Computing

 

Software Development: units selected from the following: (3 units)

Course Title
CSC 848 Advanced Software Engineering
CSC 868 Advanced Object Oriented Design and Development

Total for Core: 9

 

Program

General Requirement (9 units)

Three 3 unit courses drawn from 700-800 level Computer Science courses. 700-800 courses paired with 600 courses require adviser’s approval. CSC 899 may not count towards this requirement.

 

Electives (6 units)

Upper-division/graduate 3 unit electives selected on advisement

 

Practicum Option: (3 units)

(on advisement) up to 3 units of CSC 893

 

Culminating Experience

Course Title Units
CSC 897
    or
CSC 899
Independent Research
 
Independent Study
3
CSC 895
 
    or
CSC 898
Applied Research Project
and Oral Project Presentation

Master's Thesis
and Oral Defense of Thesis
3

Total for Culminating Experience: 6

Total: 30 - 33

 

Master of Science in Computer Science:
Concentration in Computing and Business

 

The goals of this concentration are to provide a blended approach providing students with a full technical background in computer science as well as some basics in core issues related to modern business practices. Graduates with this concentration will have the skills to:

  • Perform R&D in the computing field.
  • Manage software development teams in small and large companies.
  • Assume management responsibilities in organizations that require managers who understand both the computing and business aspects of information technology.
  • Be effective in small software startups or as consultants.

 

For general information for all computer science students, see Graduate Programs in Computer Science above.

 

Courses are 3 units unless indicated otherwise. On-line course descriptions are available.

 

Program

Core Requirements (9 units)

(see above)

 

General Requirement (9 units)

Three 3 unit courses drawn from 700-800 level (graduate) Computer Science courses. 700-800 level courses paired with 600 level (undergraduate) courses require adviser’s approval. CSC 899 may not count towards this requirement

 

Computer Science Elective (3 units)

Upper-division/graduate 3 unit electives selected on advisement

 

Business Core Requirements

Course Title Units
BUS 780 Financial Accounting 2
BUS 788 Management Principles and Organizational Behavior 3
BUS 784
 
    or
BUS 787
The Political, Social,
and Legal Environment of Business


Marketing Management and Multi-national Operations
3

Total for Business Core Requirements: 8

 

Business Elective (3 units)

700 or 800 level course in Business, Management, Finance, Decision Sciences, or Marketing, selected on advisement

 

Practicum Option (3 units)

(on advisement) up to 3 units of CSC 893

 

Culminating Experience

The thesis/project must have a business component. The student’s culminating experience committee will be composed of two members of the computer science faculty and one member of the business faculty.

Course Title Units
CSC 897
    or
CSC 899
Independent Research
 
Special Study
3
CSC 895
 
    or
CSC 898
Applied Research Project
and Oral Project Presentation

Master's Thesis
and Oral Defense of Thesis
3

Total for Culminating Experience: 6

Total for Concentration: 38 - 41

 


Master of Science in Computer Science:
Concentration in Software Engineering

 

This concentration emphasizes both the principles and best practices of software engineering with the blend of individual and practical team-oriented projects in distributed and global setting. Graduates with this concentration will have skills to:

  • Perform R&D in computing field or continue to Ph. D. programs.
  • Be successful software engineers in global development environment.
  • Manage or be tech leads in small and large software development teams including those operating in global environment.

 

For general information for all computer science students, see Graduate Programs in Computer Science above.

 

Courses are 3 units unless indicated otherwise. On-line course descriptions are available.

 

Program

Core Requirements (12 units)

(see above) CSC 848 and CSC 868 Mandatory

 

Concentration Requirements:

Course Title Units
CSC 840 Software Metrics and Quality Assurance 3
ISYS 663 Information Technology Project Management 3
Choose one of the following:
CSC 841 Computer Performance Evaluation 3
CSC 842 Human Computer Interaction
CSC 845 Advanced Computer Networks
CSC 867 Advanced Internet Applications Design and Development
CSC 875 Advanced Topic Database Design

Total for concentration: 9

 

Electives (3 units)

One upper-division/graduate 3 unit elective selected on advisement

 

Practicum Option (3 units)

(on advisement) up to 3 units of CSC 893

 

Culminating Experience

The thesis/project must have a component covering Software Engineering aspects of the work

Course Title Units
CSC 897
    or
CSC 899
Independent Research
 
Special Study
3
CSC 895
 
    or
CSC 898
Applied Research Project
and Oral Project Presentation

Master's Thesis
and Oral Defense of Thesis
3

Total for Culminating Experience: 6

Total for Concentration: 30-33

 

Master of Science in Computer Science:
Concentration in Computing for Life Sciences

 

The goal of this concentration is to introduce and educate students in variety of topics in the field of computational life sciences including bioinformatics, data mining and machine learning for analytics, biomedical imaging, and health and medical informatics. No prior knowledge of biology or biotechnology is needed. Students graduating with this concentration will be able to:

  • Perform R&D or continue into Ph.D. programs in computational life sciences as well as in general computer science.
  • Be effective as software engineers or IT professionals in life science industry as well as in information technology in general.

 

For general information for all computer science students, see Graduate Programs in Computer Science above.

 

Courses are 3 units unless indicated otherwise. On-line course descriptions are available.

 

Program

Core Requirements (9 units)

(see above) CSC 810 Mandatory

 

Concentration Requirements

Course Title Units
CSC 857 Bioinformatics Computing 3
CSC 858 Foundations of Biotechnology and Life Sciences 3
Choose one of the following: 3
CSC 730 Advanced Database Systems
CSC 821 Biomedical Imaging and Analysis
CSC 869 Data Mining
CSC 872 Pattern Analysis and Machine Intelligence
CSC 890 Special Topics in Computing for Life Sciences

Total for concentration: 9

 

Electives (6 units)

Upper-division/graduate 3 unit electives selected on advisement

 

Practicum Option (3 units)

(on advisement) up to 3 units of CSC 893

 

Culminating Experience

The thesis/project must have a component covering Computing for Life Sciences aspects of the work.

Course Title Units
CSC 897
    or
CSC 899
Independent Research
 
Independent Study
3
CSC 895
 
    or
CSC 898
Applied Research Project
and Oral Project Presentation

Master's Thesis
and Oral Defense of Thesis
3

Total for culminating experience: 6

Total: 30 - 33

 

 

SF State Home