The San Diego State University 1996-97 General Catalog on the World-Wide Web cannot
be considered the official publication for the University.
Please refer to the printed General Catalog
General Catalog versions and rights

Computer Science
In the College of Sciences
Office: Business Administration/Mathematics 203
Telephone: (619) 594-6191
Chair: Elwin
Coordinator for Computer Science: Beck
Professors: Anantha, Baase, Beck, Carroll, Donald, Marovac, Swiniarski, Tarokh, Vuskovic
Associate Professors: Eckberg, Stewart, Vinge, Whitney
Lecturer: Root
Master of Science degree in computer science.
Major in computer science with the B.S. degree in applied arts and sciences.
Minor in computer science.
Computer Science is the study of computers and their applications. It is concerned with methods for storing and retrieving information, with the design and use of languages for writing computer programs, with the hardware systems that interpret such languages, and with the theoretical principles that form the foundations of computing. Computer Science includes a wide variety of specialties and application areas such as artificial intelligence, robotics, graphics, systems programming, simulation, and computer networks.
The Bachelor of Science in Computer Science is designed to provide students with a fundamental understanding of modern computing methodology and programming practices along with a complementary knowledge of hardware. The first two years provide the basic preparation in programming, data structures and architecture. The final two years are devoted to more advanced fundamentals and specialized electives.
Computers are used to store and manage information, to analyze scientific data, and in a wide variety of other applications. Computing technology is found in an almost limitless number of settings, ranging from automobiles to household appliances to toys. Because of this, a wide range of jobs are open to people trained in Computer Science. Employment opportunities are expected to remain very strong.
All candidates for a degree in applied arts and sciences must complete the graduation requirements listed in the section of this catalog on "Graduation Requirements."
A minor is not required for this major.
Preparation for the Major. Computer Science 107, 108, 237; Mathematics 150, 151, 245, 250, 254; Physics 195, 195L, 196, 196L, or Chemistry 200, 201, or Biology 201, 202; and two additional science courses selected with approval of a computer science adviser. These should be courses for sciences or engineering majors or have a strong emphasis on quantitative methods. (41-43 units)
Upper Division Writing Requirement. Passing the University Writing Examination or completing one of the approved writing courses with a grade of C (2.0) or better.
Major. A minimum of 37 upper division units to include Computer Science 310, 320, 370, 440, 490, 530, 560, 570; at least one course selected from Mathematics 541, 550, 551A, or 579; and 12 units of electives selected with the approval of a computer science major adviser. The student must complete an outline for the major and file a copy signed by a major adviser with the Office of Admissions and Records.
The minor in computer science consists of a minimum of 18-24 units in computer science and mathematics to include Computer -Science 107, 108; and at least 12 upper division units, or at least nine upper division units if the student completes a full calculus sequence, i.e., Mathematics 121 and 122, or 150 and 151. The courses selected are subject to the approval of the minor adviser.
Courses in the minor may not be counted toward the major, but may be used to satisfy preparation for the major and general education requirements, if applicable. A minimum of six upper division units must be completed in residence at San Diego State University.
106. Introduction to Computer Programming with
FORTRAN (3) I, II (CAN CSCI 4)
Prerequisite: Satisfaction of the Entry-Level Mathematics requirement.
Introduction to problem solving on a computer, design of -algorithms, and use of FORTRAN language. Extensive programming.
107. Introduction to Computer Programming (3) I, II, S
Prerequisite: Satisfaction of the Entry-Level Mathematics requirement.
Programming methodology and problem solving. Basic concepts of computer systems, algorithm design and development, data types, program structures. Extensive programming in Pascal.
108. Intermediate Computer Programming (3) I, II, S
Prerequisites: Qualification on the Mathematics Departmental
Placement Examination, Part IA; and Computer Science 107.
Further training in program design and development. Introduction to data structures: stacks, queues, linear lists, trees, sets. Pointers and recursion. Implementation and analysis of sorting and searching algorithms. Extensive programming in Pascal.
205. Introduction to Computational Analysis (3)
Prerequisite: Mathematics 151.
Introduction to computational analysis by examining models from chemistry, biology, and physics. Students will gain competence in floating point computations and the behavior of error.
220. UNIX and the C Programming Language (3) I, II
Prerequisite: Computer Science 108.
Introduction to the UNIX operating system: shell programming, major system services and utilities. The C language: its features and their significance in the UNIX programming environment.
237. Machine Organization and Assembly Language (3) I, II
Prerequisite: Computer Science 108.
General concept of machine and assembly language, including data representation, looping and addressing techniques, subroutine linkage, macros, interrupts, and traps.
296. Experimental Topics (1-4)
Selected topics. May be repeated with new content. See Class Schedule for specific content. Limit of nine units of any combination of 296, 496, 596 courses applicable to a bachelor's degree.
299. Special Study (1-3)
Prerequisite: Consent of instructor.
Individual study. Maximum credit six units.
310. Data Structures (3) I, II, S
Prerequisites: Computer Science 108 and Mathematics 245.
Representation of and operations on basic data structures. Arrays, linked lists, stacks, queues, orthogonal lists, trees; recursion; hash tables; dynamic storage management and garbage collection.
320. Programming Languages (3) I, II
Prerequisite: Computer Science 108.
Principles of high-level programming languages, including formal techniques for syntax specification and implementation issues. Language concepts studied through at least two imperative languages (one static and one block structured) and at least one applicative -language.
370. Computer Architecture (3) I, II
Prerequisite: Computer Science 237.
Communication between the components of a computer. Microprogramming. Programming with coroutines, traps, and interrupts. Characteristics of I/O devices and media. I/O programming.
420. Ada and Programming Methodologies (3)
Prerequisite: Computer Science 310.
Introduction to programming in Ada. Advanced concepts and features present in a variety of modern programming languages and programming methodologies as applied in Ada.
440. Social, Legal, and Ethical Issues in Computing (3)
Prerequisite: Computer Science 108.
Impact of computers, applications, and benefits, copyright, privacy, computer crime, constitutional issues, risks of computer failures, evaluating reliability of computer models, trade and communications in the global village, computers in the workplace, responsibilities of the computer professional.
470. UNIX System Administration (3)
Prerequisite: Computer Science 220.
Installing the UNIX operating system on a UNIX workstation, adding user accounts, backing up and restoring user files, installing windows, adding network capabilities, adding printers and other peripherals.
490. Senior Seminar (1)
Prerequisite: Fifteen units of upper division computer science
courses.
Preparation and delivery of oral presentations on advanced topics in computer science. General principles of organization and style appropriate for presenting such material.
496. Experimental Topics (1-4)
Selected topics. May be repeated with new content. See Class Schedule for specific content. Limit of nine units of any combination of 296, 496, 596 courses applicable to a bachelor's degree.
498. Directed Readings in Computer Science Literature (1)
Prerequisite: Credit or concurrent registration in the upper division
computer science course in which readings are to be undertaken.
Individually directed readings in computer science literature. May be repeated for a maximum of three units, taken each time from a different instructor.
499. Special Study (1-3) I, II
Prerequisite: Consent of instructor.
Individual study. Maximum credit six units.
514. Database Theory and Implementation (3)
Prerequisites: Computer Science 310 and Mathematics 245.
Database systems architecture. Storage structures and access techniques. Relational model, relational algebra and calculus, normalization of relations, hierarchical and network models. Current database systems.
520. Advanced Programming Languages (3)
Prerequisites: Computer Science 237, 310, and 320.
Object oriented programming, concurrent programming, logic programming. Implementation issues.
524. Compiler Construction (3)
Prerequisites: Computer Science 237, 310, and 320.
Syntactical specification of languages. Scanners and parsers. Precedence grammars. Run-time storage organization. Code generation and optimization.
530. Systems Programming (3) I, II
Prerequisites: Computer Science 237 and 310.
Design and implementation of systems software. Relationship between software design and machine architecture. Topics from assemblers, loaders and linkers, macro processors, compilers, debuggers, editors. Introduction to software engineering. Large project required. Not acceptable for the M.S. degree in computer science.
532. Software Engineering (3)
Prerequisites: Computer Science 310 and 320.
Theory and methodology of programming complex computer software. Analysis, design, and implementation of programs. Team projects required.
535. Object-Oriented Programming and Design (3)
Prerequisites: Computer Science 310 and 320.
Basic concepts of object-oriented programming; classes, objects, messages, data abstraction, inheritance, encapsulation. Object-oriented design methodology.
550. Artificial Intelligence (3)
Prerequisites: Computer Science 108 and either Mathematics 245
or 523.
Heuristic approaches to problem solving. Systematic methods of search of the problem state space. Theorem proving by machine. Resolution principle and its applications.
551. User Interface Environments (3)
Prerequisites: Computer Science 310 and 320.
Design of user-machine interfaces in interactive systems. Problems faced by user of an interactive system; basic issues and principles involved in design and implementation of good and friendly user-machine graphical interfaces.
552. Advanced Artificial Intelligence (3)
Prerequisites: Computer Science 310, 320, and 550.
Presentation of logic based programming languages and their usefulness in artificial intelligence, including areas such as expert systems and natural language translation. Implementation and use of chaining, recursion, lists. Substantial programming practice.
553. Neural Networks (3)
Prerequisites: Computer Science 320 and Mathematics 254.
Principles of neural networks, their theory and applications.
555. Raster Computer Graphics (3)
Prerequisite: Computer Science 551.
Bit map graphics, algorithms to connect between different formats and enhancement of pictures.
556. Robotics: Mathematics, Programming, and Control (3)
Prerequisites: Computer Science 320, Mathematics 254, knowledge of the C programming language.
Robotic systems including manipulators, actuators, sensors, and controllers. Algebraic methods for spatial description of solid objects, manipulator kinematics and control. Robot programming languages and robot programming systems.
557. Computer Control Systems (3)
Prerequisites: Computer Science 310 and Mathematics 254.
Analysis and programming of real-time computer control systems, implementation of digital controllers including programming, intelligent control systems and fuzzy control.
558. Computer Simulation (3)
Prerequisites: Computer Science 310 and Mathematics 550.
Methodology of simulation for discrete and continuous dynamic systems. State-of-the-art programming techniques and languages. Statistical aspects of simulation. Students will design, program, execute, and document a simulation of their choice.
559. Computer Vision (3)
Prerequisites: Computer Science 310 and Mathematics 254.
Algorithms and computer methods for processing of images. Visual perception as a computational problem, image formation, characterization of images, feature extraction, regional and edge detection, computer architectures for machine vision.
560. Algorithms and Their Analysis (3) I, II
Prerequisites: Computer Science 310 and Mathematics 245.
Algorithms for solving frequently occurring problems. Analysis techniques, lower bounds. Sorting, merging, graph problems (shortest paths, depth-first and breadth-first search), and others. NP-complete problems. Not acceptable for the M.S. degree in Computer Science.
561. Multimedia Systems (3)
Prerequisite: Computer Science 551.
System aspects of multimedia authoring, browsing, and database subsystem; digital representation for different media; audio and video; operating system support for continuous media applications; architectures; design and implementation of multimedia support systems; use of multimedia technology in software engineering.
562. Automata Theory (3)
Prerequisite: Mathematics 245 or 521A.
Definition of finite automata. Classification of finite automaton definable languages. Minimization of finite automata. Nondeterministic finite automata. Sequential machines with output. Regular sets and expressions. Introduction to grammars.
564. Introduction to Computability (3)
Prerequisite: Mathematics 245 or 523.
Definition of algorithm by abstract (Turing) machines. Universal Turing machines. Primitive recursive and recursive functions. The equivalence of the computational power of Turing machines and recursive functions. Limitations and capabilities of computing machines; the halting problem.
566. Queuing Theory (3)
Prerequisites: Computer Science 108 and Mathematics 550.
Performance prediction of computer networks and other systems (e.g., inventory control, customer service lines) via queuing theory techniques. Operational analysis.
570. Operating Systems (3) I, II
Prerequisites: Computer Science 310, 370, and knowledge of the C
programming language.
File systems, processes, CPU scheduling, concurrent programming, memory management, protection. Relationship between the operating system and underlying architecture.
572. Microprocessor Architecture (3)
Prerequisites: Computer Science 370 and knowledge of the C programming language.
Architecture of state-of-the-art microprocessor. Internal pipeline, internal cache, external cache, and memory management. Programming a uniprocessor. Communication among computers in a distributed environment. Architecture and programming of a multiprocessor system.
574. Computer Security (3)
Prerequisites: Computer Science 310; Mathematics 245, 550; and
credit or concurrent registration in Computer Science 570.
Principles of computer security and application of principles to operating systems, database systems, and computer networks. Topics include encryption techniques, access controls, and information flow controls.
575. Supercomputing for the Sciences (3)
Prerequisite: Extensive programming background in Fortran or C.
Interdisciplinary course, intended for all science and engineering majors. Advanced computing techniques developed for supercomputers. Overview of architecture, software tools, scientific computing and communications. Hands-on experience with CRAY.
576. Computer Networks and Distributed Systems (3)
Prerequisite: Credit or concurrent registration in Computer Science
570.
Local area networks and wide area networks; mechanisms for interprocess communication; rules for distribution of data and program functions.
596. Advanced Topics in Computer Science (1-4) I, II
Prerequisite: Consent of instructor.
Selected topics in computer science. May be repeated with the approval of the instructor. See Class Schedule for specific content. Limit of nine units of any combination of 296, 496, 596 courses applicable to a bachelor's degree. Maximum credit of six units of 596 applicable to a bachelor's degree. Maximum combined credit of six units of 596 and 696 applicable to a 30-unit master's degree.
For additional courses useful to computer
scientists, see:
Mathematics 541. Introduction to Numerical
Analysis and Computing
Mathematics 542. Introduction to Numerical
Solutions of Differential
Equations
Mathematics 561. Applied Graph Theory
Mathematics 579. Combinatorics
webmaster@libweb.sdsu.edu
1996, San Diego State University. All rights
reserved.