Bulletin--Computer Science Discipline

COMPUTER SCIENCE*


College of Science and Engineering
(See Computer Science in the Academic Programs section for information on degrees)

*See also Mathematics, particularly MATH 400 and 890. Students are advised that most Computer Science classes require homework done on the university's computers. This generally requires spending time outside class at the various computing facilities.

Undergraduate Courses

110 Introduction to Computer Science (3)

F,S
Prerequisite: consent of instructor. An introduction to the fundamentals of computer science with emphasis on computing systems, algorithms, data manipulation and simple programming.

111 Introductory Computer Science Laboratory (2)

Prerequisites: completion of or concurrent enrollment in CSC 110 and consent of instructor. Laboratory activities to supplement and amplify the material covered in CSC 110. Conduct assignments and projects in introductory programming.

210** Introduction to Computer Programming (3)

F,S
Prerequisites: a grade of C or better in MATH 107 or equivalent and passing mathematics pretest. Introduction to a modern programming language. Algorithms and basic programming concepts. Numerical and non-numerical problems. Required of Computer Science majors. [CAN CSCI 12]

**Students enrolling in CSC 210 must take an entry examination given the first day of class. Results are used to determine eligibility.

212 Introduction to Software Development Tools in UNIX (2)

Prerequisite: CSC 210 or equivalent or consent of instructor. May be taken concurrently with CSC 210. Laboratory activities to supplement and amplify the material covered in CSC 210. Introduction to UNIX and program development in the UNIX environment. Proper and improper use of computer networks. CR/NC grading only.

216 Introduction to LISP Programming—Self-Paced (2)

Prerequisite: prior computer experience. Self-paced introduction to symbolic programming using Common LISP. Functions, lists, predicates, applications, programming, simple recursion, multidimensional recursion. Preparation for advanced course work in artificial intelligence.

301 Fundamentals of Computer Science (3)

Prerequisites: grade of C or better in CSC 210, 212, and MATH 220. CSC 212 may be taken concurrently. Rigorous introduction to the principal areas of computing—fundamental algorithm concepts, computer organization, data structures and abstractions, programming methodologies, distributed and parallel computation, areas of application including artificial intelligence and database systems, social and ethical issues of computing.

310 Assembly Language Programming and Introduction to Computer Organization (3)

F,S
Prerequisite: a grade of C or better in CSC 210. Computer organization. Data representation. Machine and assembly language programming. Indexing, indirect addressing. Subroutine linkage. Assemblers and interpreters.

311 Assembly Language Programming Laboratory (2)

Prerequisite: CSC 310 or equivalent and consent of instructor. May be taken concurrently with CSC 310. Laboratory activities to supplement and amplify the material in CSC 310. Assembly language programming techniques and computer organization demonstrations.

330 Discrete Mathematical Structures for Computer Science (3)

F,S
Prerequisites: a grade of C or better in MATH 220 and a grade of C or better in CSC 210. Review of set algebra, relations and functions. Permutations. Propositional logic. Proof techniques. Introduction to graph theory. Infinite sets. Applications to computer science.

410 Data Structures (3)

F,S
Prerequisite: a grade of C or better in CSC 301, 310, and 311. Computer representation of character strings, linked lists and trees, multiply linked structures. Algorithms for their manipulation. Introduction to garbage collection and dynamic storage allocation.

411 Data Structures Laboratory (2)

S
Prerequisite: completion of or concurrent enrollment in CSC 410 and consent of instructor. Laboratory activities to supplement and amplify the material covered in CSC 410. Conduct data structures assignments and projects.

415 Operating Systems Principles (3)

F,S
Prerequisite: a grade of C or better in CSC 410. Survey operating systems concepts such as concurrent processes, basic synchronization techniques, deadlock, memory management, file systems, security, networks, distributed processing.

416 Operating Systems Laboratory (2)

Prerequisite: completion of or concurrent enrollment in CSC 415 or consent of instructor. Laboratory activities to support CSC 415. Topics such as systems programming languages, libraries' debugging tools, make facilities and reliability of software systems.

510 Analysis of Algorithms I (3)

F,S
Prerequisites: a grade of C or better in CSC 330 and 410. Detailed study of the basic notions of the design of algorithms and the underlying data structures. Several measures of complexity are introduced. Emphasis on the structure, complexity, and efficiency of algorithms. Examples are taken from numerical and non-numerical computations.

520 Theory of Computing (3)

F,S
Prerequisite: a grade of C or better in CSC 330. Introduction to automata, formal languages, and the notion of computability. Sequential machines as language acceptors. Context free and context sensitive grammars. Computable and recursive functions, universal turing machines. Introduction to unsolvable problems.

600 Programming Language Design (3)

F,S
Prerequisite: a grade of C or better in CSC 310 and 410. Design concepts for high-level programming languages. Comparative study of several languages and an introduction to grammars and parsing techniques.

610 Sorting and Searching (3)

S
Prerequisite: a grade of C or better in CSC 410. Detailed study and comparative analysis of alternative algorithms for sorting and searching complex data structures.

620 Natural Language Processing (3)

F,S
Prerequisite: a grade of C or better in CSC 410. Use of English as a programming and data specification language. General study of language characteristics, including phrase-structure, transformational, and string-adjunct grammars. Computational semantics. Application to information retrieval and question-answering systems.

630 Computer Graphics Systems Design (3)

F,S
Prerequisites: a grade of C or better in CSC 410, MATH 246. Graphics display hardware architecture. Structure of device independent graphics systems. Two- and three-dimensional viewing pipelines, transformations and projections. Hidden line and hidden surface removal algorithms. Raster graphics techniques and color space models.

640 Software Engineering (3)

Prerequisite: CSC 415 or consent of instructor. Stages of software development, management issues, automated software development tools, programming methodologies, programming tools.

645 Computer Networks (3)

Prerequisite: CSC 415. Study of computer network design, evaluation, and testing. Examination of computer network standards and implementation. Hardware/software design issues and compatibility issues.

656 Computer Organization (3)

Prerequisites: ENG 356 and CSC 415 or consent of instructor. Organization of system components; processor and instruction set architecture; memory system design; language and operating system support; and performance issues.

665 Artificial Intelligence (3)

Prerequisite: CSC 410 or consent of instructor. Computational methods for studying intelligence. Automated problem solving, heuristic search, planning, inference, natural language processing, and machine learning. Paired with CSC 865. Students who have completed CSC 665 may not take CSC 865 later for credit.

668 Object-Oriented Programming (3)

Prerequisites: senior or graduate standing, grade of B or better in CSC 410, or consent of instructor. The object-oriented programming paradigm is studied. The concepts presented include the notion of an "object-world" with programming abstractions such as iteration, classes, polymorphic functions, and inheritance. The notion of reusable software components is studied. Paired with CSC 868. Students who have completed CSC 668 may not take CSC 868 later for credit.

671 Neural Networks (3)

Prerequisite: CSC 410. Analysis of artificial neural networks. Selected applications from: associative memories, learning, search, data bases, fuzzy set techniques, pattern recognition, and adaptive processing. Paired with CSC 871. Students who have completed CSC 671 may not take CSC 871 later for credit.

675 Introduction to Database Systems (3)

Prerequisite: a grade of C or better in CSC 410. Relational query languages. Semantic data models. Logical and physical database design. Privacy issues. Introduction to implementation techniques (catalogs, query optimization, concurrency control, security and integrity enforcement).

690 Undergraduate Seminar (3)

S
Prerequisite: consent of instructor. Topic to be specified in the Class Schedule. This course is used from time to time to present subjects not covered in the regular Computer Science curriculum. May be repeated for credit as topics vary.

694 Cooperative Education Program (6 or 12)

F,S
Prerequisite: SCI 293 or consent of instructor. Intended for computer science majors. Supervised employment in an academically relevant field of study. Objectives are career development, occupational experience, and educational subsidy. Units do not count toward the major. Limited free elective credit is available. CR/NC grading only.

695 Computing in the Community (2)

Prerequisites: junior or senior standing, computer experience, and consent of instructor. Extensive field work training Bay Area non-profit agencies in the use of computer tools such as conferencing and database systems. Development of user documentation. CR/NC grading only.

699 Special Study (3)

Prerequisites: departmental permission and consent of instructor. An approved study proposal must be on file by the time of registration. Library and laboratory research projects. Final report must be approved by the instructor and filed with the department.

Graduate Courses

720 Advanced Operating Systems (3)

S
Prerequisite: CSC 415 with a grade of C or better, or consent of instructor. Advanced operating systems topics such as analysis of scheduling and memory management algorithms, use of concurrent languages for systems development and distributed systems. Term projects include design and implementation of major components of an operating system.

730 Advanced Database Systems (3)

F
Prerequisite: a grade of C or better in CSC 410. CSC 675 is strongly recommended. Advanced course in database systems offering in-depth coverage of key topics: Standard SQL, query optimization, concurrency control, crash recovery, authorization and integrity enforcement; and an introduction to object-oriented, extensible, deductive, and distributed database systems.

756 Microprogramming (3)

S
Prerequisites: a grade of C+ or better in CSC 310 and a grade of C or better in ENGR 356. Theoretical concepts and current applications of microprogramming in both the microprocessor and large scale processor contexts. Each student designs a simple computer and constructs firmware to emulate it on a microprogrammable processor.

810 Analysis of Algorithms II (3)

S
Prerequisite: a grade of C or better in CSC 510. Continuation of CSC 510. Theory of NP-Completeness.

815 Graph Theory Algorithms (3)

Prerequisite: graduate standing or consent of instructor. Selected topics from graph theory, matching theory, flows in networks and game playing programs. Emphasis is on algorithms. Correctness proofs and computational efficiency discussed. On game playing programs the emphasis is on the alpha-beta pruning algorithms and heuristics, and is illustrated by a completed game.

850 Compiler Design (3)

Prerequisites: B or better in CSC 410 and consent of instructor. Techniques for design and implementation of compilers including lexical scanners, top down and bottom up parsers, precedence grammars, symbol table manipulation, LR (k) grammars, semantics routines, and code generators.

851 Compiler Design Laboratory (2)

Corequisite: CSC 850. Laboratory activities to supplement and amplify the compiler design material covered in CSC 850.

852 Advanced Compiler Design (3)

Prerequisite: consent of instructor. Continuation of the project for CSC 850 in addition to advanced topics in compiler design.

853 Advanced Compiler Design Laboratory (2)

Corequisite: CSC 852. Laboratory activities to supplement and amplify the advanced compiler design features covered in CSC 852.

856 Advanced Computer Architecture (3)

F
Prerequisite: a grade of C or better in CSC 656 or consent of instructor. Study in-depth of computer organization contrasting alternative architectural and device-technological features with the processing requirements of different computation algorithms.

865 Artificial Intelligence (3)

Prerequisite: CSC 410 or consent of instructor. Computational methods for studying intelligence. Automated problem solving, heuristic search, planning, inference, natural language processing, and machine learning. Paired with CSC 665. Students who have completed CSC 665 may not take CSC 865 for credit. CSC 865 covers more advanced material, written assignments, and/or oral presentation than CSC 665.

868 Object-Oriented Programming (3)

Prerequisites: senior or graduate standing, grade of B or better in CSC 410, or consent of instructor. The object-oriented programming paradigm is studied. The concepts presented include the notion of an "object-world" with programming abstractions such as iteration, classes, polymorphic functions, and inheritance. The notion of reusable software components is studied. Paired with CSC 668. Students who have completed CSC 668 may not take CSC 868 for credit. CSC 868 covers more advanced material, written assignments, and/or oral presentation than CSC 668.

871 Neural Networks (3)

Prerequisite: CSC 410. Analysis of artificial neural networks. Selected applications from: associative memories, learning, search, data bases, fuzzy set techniques, pattern recognition, and adaptive processing. Paired with CSC 671. Students who have completed CSC 671 may not take CSC 871 for credit. CSC 871 covers more advanced material, written assignments, and/or oral presentation than CSC 671.

875 Advanced Topics in Database Systems (3)

Prerequisites: CSC 675 and consent of instructor. Advanced aspects of selected topics in database systems. Choice of topics and method of instruction depend upon availability of staff and facilities. May be repeated once for credit when topics vary.

890 Graduate Seminar (3)

F,S
Prerequisite: consent of instructor. Topic to be specified in Class Schedule. Presentation of a subject outside the regular computer science curriculum particularly beyond the level of the regular courses. May be repeated for credit when topics vary.

897 Research (3-6)

F,S
Prerequisite: consent of Computer Science Department. Independent and original investigation under supervision of a faculty member.

898 Master's Thesis (3)

F,S
Prerequisites: consent of program and advancement to candidacy for the Master of Science in Computer Science. Graduate Approved Program and Proposal for Culminating Experience Requirement forms must be approved by the Graduate Division before registration.

899 Special Study (1-3)

F,S
Prerequisites: approval of the department and the instructor. Special study of a particular problem under the direction of a faculty member. The student must present a written, detailed report of the work accomplished to the staff of the department.


Course Disciplines Listing, Bulletin 1994-96 Table of Contents, SFSU Home Page

last modified June 13, 1995