January 17, 2007 TO: Students considering transfering to a CS program at SJSU FROM: Jeff Smith, Undergraduate Computer Science Coordinator The following are rough guidelines for equivalencies for courses in the BSCS degree program at SJSU. The term "upper-division course" means a junior or senior level (3rd or 4th year) course. A lower-division course is a 1st or 2nd year course. Math 30: Most first-semester calculus courses will count. For universities on quarter systems, two quarters may be necessary. Math 31: Should cover integration of functions of one variable, and also sequences and series. Math 32: Should cover calculus of several variables (partial derivatives, multiple integrals) Math 42: Should have thorough coverage of logic, proof, and mathematical induction, as well as coverage of sets, functions, relations, counting (elementary combinatorics), and probability. Math 129A: Should cover through eigenvalues and eigenvectors. Combined courses in linear algebra & differential equations should be at least 5 semester units. Need not be an upper-division course, but lower-division courses are unlikely to count toward the minimum number of upper-division units of math & CS courses required by the BSCS. Math 161A: Should be a calculus-based, upper-division course. Lower-division courses might be acceptable if they are offered by topnotch schools. Such courses might be counted toward the minimum number of upper-division units in Math & CS courses required by the BSCS. Phys 50: Should be a calculus-based course taken by science or engineering majors. Phys 50 covers mechanics, but it is possible for the Phys 50 BSCS requirement to be waived by a course covering other topics in ephysics. Phys 51: Should be a calculus-based course taken by science or engineering majors, covering electricity & magnetism. The "additional science course": Must be a science course that counts toward a science or engineering major. Phil 134: Must be a course in the ethics & social impact of computer science. It needn't be upper division, but only upper-division courses may count toward Advanced GE Area V. The determination of whether a course will count toward Area V is made by a GE advisor. The Phil 134 requirement replaces the Phil 110 requirement effective Spring 2007. CS 46A: Should be an acceptable prerequisite for a course equivalent to CS 46B (see below). At many institutions, the first course in programming is not sufficient to enable one to take a CS 46B equivalent. CS 46B: Should cover elementary data types (stacks, queues, linked lists, elementary trees), hashing, searching, and elementary sorting. Should introduce O-notation. The course needn't be in Java, but if it isn't you will need knowledge of Java equivalent to that covered in CS 49J (see below) to continue in CS at SJSU. CS 49C: Most introductory courses in C will be sufficient. Courses in C and Unix that are worth at least 5 semester units are likely to be sufficient. Courses in C++ alone are *not* likely be sufficient -- students who have completed a CS 49C equivalent should be able to complete a programming assignment in C in the first few weeks of a follow up course. Such students should know, for example, how to simulate pass-by-reference in C, how to use the C I/O library, how to allocate memory in C, and how to use structs. The occasional C++ course will cover these and other C-specific issues, but most will not. To grant an equivalency for 49C, I will need to see course materials for the proposed equivalent -- catalog descriptions alone are often insufficiently descriptive. Other proposed equivalencies will be handled on a case-by-case basis. In many of these cases, I will not be able to decide without seeing course materials. CS 49J: Should have coverage of Java equivalent to that of a 2-semester sequence like CS 46A-46B. A one-semester course is unlikely to have such coverage. CS 47 (roughly equivalent to the current CS 140, which it has replaced as a BSCS requirement): Most courses in assembly language will be sufficient. CS 140: See CS 47. CS 143C, 143M: CS 143C is oriented toward analysis; CS 143M is oriented toward algebra. Courses that cover a little of both may be accepted as BSCS electives, although in this case credit will be given for neither either CS 143C or 143M if taken at SJSU. CS 146: Should cover more advanced data types (advanced trees and heaps, graphs). Should be the only data structures prerequisite for an Analysis of Algorithms course (as opposed to a Data Structures and Algorithms course). Needn't be in Java, but instructors of other CS courses at SJSU may assume that you know enough Java to write programs similar to typical CS 146 assignments. CS 147: Should be a course in computer architecture (with a hardware emphasis). If you have taken a course that is a mixture of computer organization and computer architecture, it may be difficult for us to give you credit for either CS 47 or CS 147. CS 152: Should cover programming language paradigms, with a strong emphasis on the functional paradigm. A course in programming language principles or paradigms will be acceptable if accompanied by a course in functional programming. CS 155: Should at least mention NP-completeness. Should be distinct from a CS 146 equivalent. CS 157A: Should have a prerequisite of data structures or file structures or both. Should address technical issues of data or file structures rather than being an MIS course. CS 116A, 149, 153, 154, 156: Most upper-division courses in these areas will be acceptable equivalents, especially if they are from accredited institutions.