Graduation Requirements

B.S. Computer Science Program Requirements

Required Support Courses

Math 30 and 31 (see note 4 and note 8).......Calculus
Math 32 or 142 or 161A.................. (see note 4)
Math 42..........................Discrete Mathematics
Math 129A............................Linear Algebra I
Approved Science Elective(s).............(see note 5)
CS 100W (see note 8).......Technical Writing Workshop
Phil 134 (see note 8)......Computers, Ethics, Society

Required Computer Science Courses

CS 46A...........................Intro to Programming
CS 46B.......................Intro to Data Structures
CS 47.......................Intro to Computer Systems
CS 146...................Data Structures & Algorithms
CS 147..........................Computer Architecture
CS 149..............................Operating Systems
CS 151.........................Object-Oriented Design
CS 152..........................Programming Paradigms
CS 154...............Formal Languages & Computability
CS 160...........................Software Engineering
CS 116B, 123B, 153, 157B, 158B, 161, 167B, or 167C (see note 6)

Elective Computer Science Courses

(courses totaling 16 units to be selected from the following list -- see notes 1 and 9)
CS 49C.................Programming in C (see note 10)
CS 49J..............Programming in Java (see note 10)
CS 72.........................Unix and Unix Utilities
CS 108...................Introduction to Game Studies
CS 116A....................Intro to Computer Graphics
CS 116B..................Computer Graphics Algorithms
CS 120A..............Lab Electronics for Scientists I
CS 120I.............Lab Electronics for Scientists II
CS 122.................Advanced Programming with Perl
CS 123A..............................Bioinformatics I
CS 123B.............................Bioinformatics II
CS 130............................Windows Programming
CS 134.............Computer Game Design & Programming
Math 142.......................Intro to Combinatorics
CS 143C...........Num Analysis & Scientific Computing
CS 143M...........Num Analysis & Scientific Computing
CS 144.......................Advanced C++ Programming
CS 153....................Concepts of Compiler Design
CS 155...........Intro to Design & Anal of Algorithms
CS 156...............Intro to Artificial Intelligence
CS 157A..........Intro to Database Management Systems
CS 157B................Database Management Systems II
CS 158A.............................Computer Networks
CS 158B...................Computer Network Management
CS 159...................Intro to Parallel Processing
CS 161...............................Software Project
Math 161A........................Applied Statistics I
Math 162................Statistics for Bioinformatics
CS 166...........................Information Security
CS 167A.....................DB2 Fundamentals for z/OS
CS 167B..........DB2 Application Development for z/OS
CS 167C...............DB2 Query Optimization for z/OS
Math 171...........Foundations of Math & Computer Sci
CS 172A....Fundamentals of Unix System Administration
CS 172B....................Unix System Administration
CS 173............Advanced Unix System Administration
CS 174....................Server-Side Web Programming
CS 175......................Mobile Device Development
Math 177.............Linear & Non-Linear Optimization
Math 178........................Mathematical Modeling
Math 179........................Intro to Graph Theory
CS 85A,B,C, 185A,B,C.....................(see note 7)
CS 96, 196..................(requires prior approval)
CS 180, Math 203............(requires prior approval)
CS 180H.................Individual Studies for Honors
CS 180I............................Internship Project

Notes

  1. 37 units of upper division mathematics and computer science courses must be included among the courses used to satisfy these program requirements. Neither CS 100W nor CS 110L may count among these 37 units.
  2. Transfer students should see an advisor to determine course equivalencies for courses being transferred.
  3. To enroll in a math or computer science course, a student must have obtained a C- or better in each of its prerequisite courses. A grade of C- or better is required in all courses counted toward the major.
  4. Math 30P may be used instead of Math 30. For information on enrollment in Math 30 or Math 30P, see http://www.math.sjsu.edu/~calculus.
    If Math 142 or Math 161A is used to satisfy the Math 32/142/161A requirement, it may not also count as an elective course.
  5. Electives must be chosen so that 14 units of science course work is taken.  Courses
     used for GE Areas B1, B2, B3, and R will count toward these 14 units.  At least 5 units of these 14 units must count toward a science or engineering major.  More information is available on the department web site.
  6. A course used to meet this requirement cannot also be counted as a CS elective. However if two or more courses from this list are completed successfully, all but one may count as a CS elective.
  7. Most combinations of 3 units of CS 85 and CS 185 may be used as an elective course. Only one elective course may be replaced in this way.
  8. Math 30 satisfies the Area B4 requirement for General Education. CS 100W satisfies the Area Z requirement, and Phil 134 the Area V requirement, for SJSU Studies.
  9. At least 4 units of electives must have CS 46A as a required direct or indirect prerequisite.
  10. CS 49C and CS 49J require department approval to count as BSCS electives.  CS 49C approval will be granted to any student who is not also getting credit for a lower-division course taught in C or C++.  CS 49J approval will be granted to any incoming transfer student who is satisfying both the 46A and the 46B requirements with courses that don't use Java.