Cal State East Bay Catalog 2009-2010

Return to the front page of the catalog Search the catalog Mail us your feedback How to use the catalog
Undergraduate Programs

Computer Science
 * Department Information
 * Program Description
 * Career Possibilities
 * Features
 * Preparation
 * Major Requirements (B.S.)
 * Options
 * Other Degree Requirements
 * Minor Requirements
 * Undergraduate Courses
 * Footnote
Department Information

Department of Mathematics and Computer Science
College of Science
Office: North Science 335
Phone: (510) 885-3414







E-mail: mathcs@csueastbay.edu
Website: http://www.sci.csueastbay.edu/mathcs
Student Service Center: North Science 337
Phone: (510) 885-4011
 






Professors Emeriti
Edward L. Keller, Ph.D. University of Michigan
Christopher L. Morgan, Ph.D. Brandeis University
William R. Nico, Ph.D. University of California, Berkeley
Bruce E. Trumbo, Ph.D. University of Chicago
 
Professors
Edward A. Billard, Ph.D. University of California, San Diego
Kevin A. Brown, Ph.D. University of South Carolina
Kevin E. Callahan (Chair), Ph.D. University of California, San Diego
James S. Daley, Ph.D. University of California, Berkeley
Julie S. Glass, Ph.D. University of California, Santa Cruz
Kathleen Hann, Ph.D. University of California, Davis
Gary E. Lippman, Ph.D. University of California, Riverside
Michael K. Mahoney, Ph.D. University of California, Santa Barbara
Massoud Malek, Ph.D. University of Houston
Edna E. Reiter, Ph.D. University of Cincinnati
Istvan Simon, Ph.D. Stanford University
Stuart Smith, Ph.D. University of California, Berkeley
William Thibault, Ph.D. Georgia Institute of Technology
Donald L. Wolitzer, Ph.D. Northeastern University
Ytha Y. Yu, Ph.D. University of California, Berkeley
 
Associate Professors
Jagdish Bansiya, Ph.D. University of Alabama, Huntsville
Leann Christianson, Ph.D. University of South Carolina
Levent Ertaul, Ph.D. University of Sussex (United Kingdom)
Lynne L. Grewe, Ph.D. Purdue University
Hilary J. Holz, D.Sc. George Washington University
C. Matthew Johnson, Ph.D. College of William and Mary
Dan Jurca, Ph.D. Northwestern University
Chung-Hsing Ou Yang, Ph.D. University of California, Berkeley
Farzan Roohparvar, Ph.D. Iowa State University
David Yang, Ph.D. Columbia University
 
Assistant Professors
Roger W. Doering, Ph.D. University of California, Berkeley
Madhavi D. Gandhi, Ph.D. University of California, Davis
Julia Olkin, Ph.D. Rice University
Ellen Veomett, Ph.D. University of Michigan
Shirley Yap, Ph.D. University of Pennsylvania
 
Lecturers
Susan Benjamin, M.S. California State University, Hayward
Jack A. Carter III, Ph.D. University of Texas
Francis Conlan, Ph.D. University of California, Davis
Michael A. Contino, M.A. Villanova University
Dorothy E. Fujimura, M.S. University of Illinois
Philip D. Gonsalves, B.S. California State University, Hayward
Ching-Cheng Lee, Ph.D. University of London (England)
Denise Sargent-Natour, M.A. Wayne State University
Jean Simutis, Ph.D. University of California, Davis
Vincent Slivinsky, Ph.D. The Pennsylvania State University
 
Computer Science Coordinator: William R. Nico
 
 
Please consult the 2010-2011 online catalog for any changes that may occur.
Program Description

Programs in Computer Science at Cal State East Bay are designed to prepare students for employment or for advanced study in computer science. The student's course of study will provide a solid foundation of theoretical knowledge as well as experience with practical applications in hardware and software.
 
Computer Science is the study of computation and of methods for addressing, processing, storing, and transmitting information. It encompasses a broad perspective that includes what a computer is, its uses and applications, and theoretical approaches to what can be computed. The core curriculum in Computer Science, involving a blend of theory and practice, offers opportunities for problem solving in many areas and provides experience with a variety of computers, computer languages, and software packages. A typical student's experience can include scientific programming, language design and implementation, file handling and database design, data communication and networking, artificial intelligence, hardware design, and graphic implementations ranging from interface design to artistic presentations.
 
A strong mathematical background is important in Computer Science. High school students who are interested in computer science should take as much mathematics as possible, particularly algebra, trigonometry, and precalculus. Community college students who are planning to transfer to Cal State East Bay should take the calculus sequence, linear algebra, discrete structures, a sequence of courses in some programming language (such as C, C++, Java), and a course in computer organization and assembly language.
 
Student Learning Outcomes
Students graduating with a B.S. in Computer Science from Cal State East Bay possess technical competence to: 1) design and implement computer programs; 2) use data structures in program design; 3) know and use modern programming techniques; and 4) use software engineering design principles.
 
Students possess a fundamental understanding of Computer Science theory including: 1) mathematical problem solving skills; 2) design and analysis of algorithms; 3) understanding of computer architecture and operating system concepts; 4) analysis of programming languages.
 
Students 1) are able to work effectively as team members; 2) have an understanding of their professional and ethical responsibilities and appreciate the impact of computer science solutions in the societal context; and 3) can communicate effectively, both in written and oral form.
Career Possibilities

Computer Network Support Employee • Computer Operations Manager • Computer Sales Representative • Customer Support Employee • Database Applications Program Analyst or Designer • Graphics Specialist • Programmer or Administrator • Programming Team Member, Specializing in Design, Testing, or Documentation • Scientific Applications Programmer • Software Engineer Systems Analyst • Systems Manager or Programmer • Technical Writer • Teacher/Professor
Features

Computer Science students at Cal State East Bay have access to some of the most modern and powerful computer equipment available. The campus provides a network backbone, including connection to the Internet and hundreds of personal computers. The department also has equipment of its own, including a network of Unix workstations and classrooms equipped for computerized demonstrations. Several computer labs on campus offer remote access and assistance with problems. Cal State East Bay has an active Computing Club which hosts a variety of events and projects.
 
Each year the department offers a number of scholarships covering a portion of fees for the subsequent year. Applications may be obtained from the department during winter.
 
A booklet containing sample schedules, as well as further information about the computer science major, is available in the Mathematics/Computer Science Student Service Center (North Science 337). This information may be obtained electronically at http://www.mcs.csueastbay.edu.
Preparation

For Advanced Placement course equivalencies, see Registration chapter.
Major Requirements (B.S.)

Many students pursue a double major in Mathematics and Computer Science, since a number of courses are common to both majors and can be double-counted. Another popular combination is a major in computer science and a minor in mathematics.
 
Please consult an advisor in your major department for clarification and interpretation of your major requirements. Computer Science majors may complete the following 80-unit program or may elect to complete an 88-unit option in Computer Engineering, Networking and Data Communications, or Software Engineering (see "Options" section). The B.S. degree requires a total of 180 units.
 
All Computer Science majors must complete each of the following courses in sections I, II, and III with a grade of "C" or better.






 
I.  Mathematics (24 units)
 

Six courses are required:

MATH 1304, 1305, 2304 Calculus I, II, III sequence (12)
MATH 2101 Elements of Linear Algebra (4)
MATH 2150 Discrete Structures (4)
 

Choice of:

STAT 3401 Introduction to Probability Theory I (4) or STAT/MATH 3502 Statistical Inference I (4) or STAT/ENGR 3601 Introductory Statistics and Probability for Science and Engineering (4). STAT/ENGR 3601 is recommended.
 

A student who has recently taken a pre-calculus course in high school should be prepared to begin the calculus sequence. A student with three years of high school mathematics, including two years of algebra and one year of geometry, should be prepared to take MATH 1130, or possibly MATH 1300. Students who are unsure about what mathematics course to begin with, should call the department office for advice.
 
It should be noted that students may not enroll in any baccalaureate level mathematics or computer science class unless they have met the Entry Level Mathematics (ELM) requirement or are exempt from it. Information about the ELM is available from the Testing Office at (510) 885-3661.
 
II.  Lower Division Computer Science (12 units)
 

Required courses:

CS 1160 Introduction to Computer Science and Programming Methods (4)
CS 2360 Programming Methods and Introduction to Software Engineering (4)
CS 2430 Computer Organization and Assembly Language Programming (4)
 

Although CS 1160 is the required introductory course for Computer Science majors, it may be difficult for students with no experience using computers. Students who do not know how to use a word processor or who have no knowledge of computer files and operating systems should consider taking CS 1020 (Introduction to Computers) before taking CS 1160.
 
Students who have completed a multi-quarter course in C, C++, Java, or Pascal at another college should consult the Mathematics/Computer Science Department; they may be able to substitute their previous coursework for CS 1160 and possibly CS 2360.
 
III.  Upper Division Computer Science: Required Courses (16 units)

CS 3120 Programming Language Concepts (4)
CS 3240 Data Structures and Algorithms (4)
CS 3430 Computer Architecture (4)
CS 4560 Operating Systems (4)
 
IV.  Upper Division Computer Science: Concentration (16 units)

The selection of all elective Computer Science courses is important in giving the major a coherence, with depth in key areas. These electives must be chosen with the assistance and approval of a faculty advisor.
 
A student must take four of the following eight courses:

CS 3560 Introduction to Systems Programming (4)
CS 3590 Data Communications and Networking (4)
CS 4660 Database Architecture (4)
CS 4110 Compiler Design (4)
CS 4170 Theory of Automata (4)
CS 4245 Analysis of Algorithms (4)
CS 4310 Software Engineering I (4)
MATH/CS 3750 Numerical Analysis I (4)
 
V.  Electives (12 units)

Any of the following courses may be used in meeting this requirement. However, at least 4 units (other than units from CS 3898) must be from courses with the CS prefix.
 

A.  Any course(s) from IV not used in meeting the requirements in that category.
 

B.  Any upper division course in Computer Science except those used in meeting requirements III or IV. No more than 4 units of CS 4900, Independent Study, and no more than 4 units of CS 3898, Cooperative Education, may be applied to the Computer Science major requirements.
 

C.  Any graduate course in Computer Science (except CS 6000 and CS 6909).
 

D.  Any upper division course in the Department of Mathematics and Computer Science or the Department of Statistics that is applicable to the BS degree major in Mathematics.
 

E.  Any courses from the following list:

CIS 3281 Systems Analysis and Design (4)
CIS 3282 Object-Oriented Systems Analysis and Design (4)
CIS 4272 Advanced Topics in Business Computer Systems (4)
CIS 4273 Decision Support and Expert Systems (4)
PHIL 3002 Modern Logic (4)
PHYS/ENGR 3280 Electronics (4)
 

The student is responsible for meeting all prerequisites for any of these courses. Many of the courses in (E) have prerequisites that are not included among major requirements.
 
Note: Students contemplating graduate study in Computer Science should consult with a faculty advisor early in their programs. They should be sure to include an adequate number of theory courses in their major and should have an extensive background in Mathematics.
Options

The major with one of the following three options consists of 88 units. In addition to the 24 units of mathematics courses (Section I), the 12 units of lower division computer science courses (Section II), and the 16 units of upper division computer science courses (Section III) required for a B.S. degree major in computer science, students choosing an option in Computer Engineering, Networking and Data Communications, or Software Engineering must complete an additional 36 units. See below.
 






1.  Computer Engineering (36 units)

The Option in Computer Engineering emphasizes the design of computer hardware and software and the close interaction between the two. It is an area of study with many issues, ranging from the design and development of large scale systems requiring an integration of hardware and software, to the design and deployment of special purpose devices used for control of physical processes. The option provides a foundation of knowledge for immediate application, but also provides a background for further study in the field.
 

a.  Computer Engineering Concentration (24 units)

CS 3432 Digital Design Lab (4)
CS 3434 Microprocessor Lab (4)
CS 3590 Data Communications and Networking (4)
CS 4430 Computer Architecture II (4)
CS 4432 VLSI Circuit Design (4)
PHYS 2702 Heat, Sound, Electricity and Magnetism (4)
 

b.  Computer Engineering Electives (12 units)

Choice of three courses from the following:
 

CS 3560 Introduction to Systems Programming (4)
CS 4310 Software Engineering I (4)
CS 4590 Computer Networks (4)
CS 4594 Broadband Networks and Communications (4)
CS 4596 Wireless and Mobile Networking (4)
CS 4840 Computer Graphics (4)
 
2.  Networking and Data Communications (36 units)

Data communication and networking comprise an important, broad subfield of computer science. The Networking and Data Communications Option provides a concentration in the study of electronic networks. It emphasizes the analysis, design, and management of software that controls electronic networks. This option will enhance students' chances for immediate employment in the area while also preparing them for a flexible long-term career.
 

a.  Upper Division Computer Science: Concentration (16 units)

CS 3560 Introduction to Systems Programming (4)
 
Choice of three courses from the following:

CS 4660 Database Architecture (4)
CS 4110 Compiler Design (4)
CS 4170 Theory of Automata (4)
CS 4245 Analysis of Algorithms (4)
CS 4310 Software Engineering I (4)
MATH/CS 3750 Numerical Analysis I (4)
 

b.  Networking Concentration (8 units)

CS 3590 Data Communications and Networking (4)
CS 4590 Computer Networks (4)
 

c.  Networking and Data Communication Electives (12 units)

Choice of three courses from the following:
 

CS 4525 Principles of Network Security (4)
CS 4592 Network Operations and Administration (4)
CS 4594 Broadband Networks and Communications (4)
CS 4596 Wireless and Mobile Networking (4)
 
3.  Software Engineering (36 units)

Software engineering is an important subfield of computer science and is an area of intense activity, both in research and in applications. The Software Engineering Option emphasizes code development as an engineering science and gives students the understanding and skills necessary to participate in the systematic analysis and development of large, real-world software projects.
 

a.  Upper Division Computer Science: Concentration (16 units)

Choice of four courses from the following:
 

CS 3560 Introduction to Systems Programming (4)
CS 3590 Data Communications and Networking (4)
CS 4110 Compiler Design (4)
CS 4170 Theory of Automata (4)
CS 4245 Analysis of Algorithms (4)
MATH/CS 3750 Numerical Analysis I (4)
 

b.  Software Engineering Concentration (12 units)

CS 3340 Introduction to Object-Oriented Programming (4)
CS 4310 Software Engineering I (4)
CS 4311 Software Engineering II (4)
 

c.  Software Engineering Electives (8 units)

Choice of two courses from the following:
 

CS 3520 Web Site Development (4)
CS 4320 Software Testing and Quality Assurance (4)
CS 4330 Building Secure Software (4)
CS 4660 Database Architecture (4)
Other Degree Requirements

In addition to major requirements, every student must also complete the University requirements for graduation which are described in the Baccalaureate Degree Requirements chapter in the front of this catalog. These include the General Education-Breadth requirements; the second composition (ENGL 1002) requirement; the cultural groups/women requirement; the performing arts/activities requirement; the U.S. history, U.S. Constitution, and California state and local government requirement; the University Writing Skills Requirement; and the residence, unit, and grade point average requirements.
Minor Requirements

Students majoring in other fields may wish to complete a coherent pattern of work in Computer Science or Software Development for the purpose of expanding their employment and educational opportunities.
 
Computer Science Minor (36 units)
 






I.  Lower Division Mathematics (12 units)

MATH 1304 and 1305 Calculus I and II (8)
MATH 2150 Discrete Structures (4)
 
II.  Lower Division Computer Science (12 units)

CS 1160 Introduction to Computer Science and Programming Methods (4)
 
CS 2360 Programming Methods and Introduction to Software Engineering (4)
 
CS 2430 Computer Organization and Assembly Language Programming (4)
 
III.  Upper Division Computer Science (12 units)
 

A.  Two courses from the following list:

CS 3120 Programming Language Concepts (4)
CS 3240 Data Structures and Algorithms (4)
CS 3430 Computer Architecture (4)
CS 4560 Operating Systems (4)
 

B.  One upper division Computer Science elective.

This may be a third course from the list in (A) above or any course from category IV of the requirements for the major in Computer Science.
 
Software Development Minor (36 units)
 






I.  Required Courses (28 units)

CS 1160 Introduction to Computer Science and Programming Methods (4)
MATH 1304 Calculus I (4)
MATH 1305 Calculus II (4)
MATH 2150 Discrete Structures or MATH 2304 Calculus III (4)
 
CS 2360 Programming Methods and Introduction to Software Engineering (4)
CS 3240Footnote HAYCAT-FOOTDIG Data Structures and Algorithms (4)
CS 4310 Software Engineering I (4)
 
II.  Choice of two courses from the following (8 units):

CS 3340 Introduction to Object-Oriented Programming and Design (4)
CS 3520 Web Site Development (4)
CS 3560 Introduction to Systems Programming (4)
CS 4660 Database Architecture (4)
 
Mathematics Minor
Students majoring in Computer Science find it relatively easy to obtain a minor in Mathematics because there is a significant overlap in lower division requirements for the CS major/Math minor. To accomplish this, a student must complete three approved upper division mathematics electives. Two of these electives must be chosen from the following five courses: MATH 3100, 3121, 3215, 3300, and 3331; the third elective must be an upper division mathematics course (which may include any cross-listed, upper division course in Statistics or Computer Science, but not MATH 4021, 4022, 4023, or 4024). See undergraduate Mathematics chapter for details.
Undergraduate Courses

The course prefix for the following courses is CS.
 
Mathematics courses offered by the Department of Mathematics and Computer Science are fully described in the Mathematics section of this catalog. (Note: In order to enroll in any baccalaureate-level Mathematics or Computer Science course, students must satisfy the Entry-Level Mathematics (ELM) requirement.)
 


1020  
 
Introduction to Computers (4)
Computers, their use and place in modern society. Computer organization and hardware, computer software. Introduction to use of the computer, operating system commands, word processing, database management, other applications, and computer programming. Internet and its use. Ethical and societal issues. No prior computer experience necessary; course recommended for students of any major who want to learn about computers and how to use them. Prerequisite: Satisfaction of the Entry Level Mathematics (ELM) requirement. Not open to students with credit for CIS 1270.
 
1160  
 
Introduction to Computer Science and Programming Methods (4)
An introduction to computers, problem solving, algorithms, and program design. Use of University computing facilities. Programming done in C++. Topics include control structures, arrays, functions, input and output. Students with no computer experience are encouraged to take CS 1020 as preparation for this course. Prerequisite: MATH 1300 or equivalent.
 
2020  
 
Introduction to Web Design and Technology (2)
Technology and design of web sites, systems and services. Human factors issues, computer-human interfaces design, web system design and development and testing; evaluation processes. Website development using multimedia, graphics, image, and animation tools. Topics from e-commerce solutions and networking fundamentals. Prerequisite: Satisfactory completion of ELM. Not open to students with credit for CS 352. Not for credit in computer science major.
 
2170  
 
C Language Programming (2)
Programming in the C language, especially in a Unix environment. Not open for credit to students with a previous course in C or C++ programming. Prerequisite: A previous course in programming.
 
2360  
 
Programming Methods and Introduction to Software Engineering (4)
A systematic approach to the design, construction, and management of large computer programs, emphasizing programming style, documentation, debugging techniques, and testing. Includes files, structured data types, information hiding, pointers, and linked lists. Prerequisite: CS 1160.
 
2430  
 
Computer Organization and Assembly Language Programming (4)
Functional organization of digital computers and programming in machine and assembly language. Internal representation of data, binary arithmetic, machine instructions, addressing modes, subroutine linkage, macros. Introduction to assemblers, linkers, and loaders. Prerequisite: An introductory programming course.
 
3120  
 
Programming Language Concepts (4)
Survey and critical comparison of a variety of computer languages. Issues include syntax, semantics, control structures, data representation. Discussion of both design and implementation; of both imperative and declarative languages. Prerequisite: CS 2360 and 2430.
 
3240  
 
Data Structures and Algorithms (4)
Definition, design, implementation of abstract data structures, including stacks, queues, generalized lists; implementation as contiguous or linked structures. Structures include tables and hashing, trees, graphs. Algorithms for manipulating structures, searching, sorting; introduction to the analysis of these algorithms. Prerequisites: MATH 2150, CS 2360, CS 2430.
 
3340  
 
Introduction to Object-Oriented Programming and Design (4)
Programming in an object-oriented language, using object-oriented techniques and concepts. Classes, operator overloading, information hiding, inheritance, and polymorphism. Memory management. Parameterized classes. Exception handling. Object-oriented design of programs. Prerequisite: CS 3240 and knowledge of C or C++.
 
3430  
 
Computer Architecture (4)
Logical design of digital computers. Boolean algebra, combinational and sequential circuits, computer arithmetic, memories, integrated circuits, control processors, input/output. No electronics experience needed. Prerequisite: MATH 2150, CS 2430.
 
3432  
 
Digital Design Lab (4)
Design assembly and test of combinational and sequential circuits. Digital systems design using computer-aided-design tools and programmable logic devices. Prerequisite: CS 3430. Two hrs. lect., 6 hrs. lab.
 
3434  
 
Microprocessor Lab (4)
Microprocessor organization and operation; hardware/software interaction; memory, serial, and parallel I/O port interfacing; interrupt-handling. Prerequisite: CS 3430. Three hrs. lect., 3 hrs. lab.
 
3520  
 
Web Site Development (4)
Web servers and browsers. HTML, images, audio and video files, indexer, forms, CGI scripts, Java programming, JavaScript. Prerequisite: CS 3240.
 
3560  
 
Introduction to Systems Programming (4)
Introduction to systems programming in a modern environment. Introduction to fundamental concepts of operating systems; analysis of a particular operating system (organization, interfaces, system calls, files, process control and communication, resource sharing). Shell and C programming. Development tools. Prerequisite: CS 2360.
 
3590  
 
Data Communications and Networking (4)
Fundamentals of data communications: media, transmission, encoding and processing, interfacing, error detection and handling, link control, multiplexing, circuit and packet switching. Introduction to network architecture and topology: local and wide area networks. Prerequisites: CS 3430 and knowledge of C or C++.
 
3750  
 
Numerical Analysis I (4)
(See MATH 3750 for course description)
 
3752  
 
Introduction to Digital Signal Processing (4)
Mathematical modeling of signals and systems. Continuous and discrete signals, with applications to audio, images, video, communications, and control. Frequency domain modeling and frequency response. Sampling of continuous-time signals. A simulation-based laboratory is part of the course. Prerequisites: MATH 1304, 2101; CS 1160. Cross-listed with ENGR 3752. Three hrs. lect., 3 hrs. lab.
 
3860  
 
Computer Music Programming (4)
Introduction to the concepts and software techniques of computer music. Students write programs to produce sounds, process sounds, and organize sounds into musical structures. Fundamentals of digital audio. Synthesis techniques. Reverberation and sound spatialization. Algorithmic composition. Computer languages for synthesis and scoring. The MIDI standard. Prerequisites: MATH 1300 and CS 1160.
 
3898  
 
Cooperative Education (1-4)
Supervised work experience in which student completes academic assignments integrated with off-campus paid or volunteer activities. Prerequisites: at least 2.0 GPA; departmental approval of activity; completion of lower division Computer Science major requirements, and upper division standing. A maximum of 4 units will be accepted toward the Computer Science major. May be repeated for credit, for a maximum of 8 units. CR/NC grading only.
 
4020  
 
Computing and Social Responsibility (4)
Social impact and ethical aspects of computing: responsibility of practicing professionals, effects on privacy, security, property rights of individuals and institutions, etc. Topics include system reliability, intellectual property, computer crime, attacks on computer systems, and societal dependence on computers. Prerequisites: CS 3240, or consent of instructor.
 
4110  
 
Compiler Design (4)
Design and construction of high-level language translators. Formal language theory, parsing algorithms, interpreting, code generation, optimization. Construction of a small compiler. Prerequisites: CS 3120, 3240.
 
4170  
 
Theory of Automata (4)
Formal models of automata, language, and computability and their relationships. Finite automata and regular languages. Push-down automata and context-free languages. Turing machines, recursive functions, algorithms and decidability. Prerequisites: MATH 2101, 2150, 2304. Cross-listed with MATH 4170.
 
4245  
 
Analysis of Algorithms (4)
Design, analysis and implementation of algorithms. Methods of algorithm design, including recursion, divide and conquer, dynamic programming, backtracking. Time and space complexity analyses in the best, worst, and average cases. NP-completeness; computationally hard problems. Applications from several areas of Computer Science. Prerequisites: MATH 2101, 2304, CS 3240. Cross-listed with MATH 4245.
 
4310  
 
Software Engineering I (4)
Concepts and issues in the development of large software projects. Systematic approaches to requirements, analysis, design, implementation, testing, and maintenance of high-quality software. Prerequisite: CS 3240.
 
4311  
 
Software Engineering II (4)
Continuation of Software Engineering I with emphasis on the object-oriented design to implementation stages of the life cycle. Design methodologies including the Unified Modeling Language, illustrated with example design patterns. Implementation in Java. Topics include standards, documentation, instrumentation, testing. Prerequisites: CS 3340, 4310.
 
4320  
 
Software Testing and Quality Assurance (4)
Concepts and issues in the testing and quality control of large software projects. Topics include white box, black box, unit, integration, and validation testing; quality assurance through planning, review, and use of software metrics. Prerequisite: CS 3240.
 
4330  
 
Building Secure Software (4)
Security and safety analysis in software design and development. Vulnerability detection and avoidance. Topics include authentication, principle of least privilege, buffer overflows, race conditions, time-of-check vs. time-of-use, trust management, access control, and other security relevant issues. Prerequisite: CS 3240.
 
4430  
 
Computer Architecture II (4)
Advanced computer organization and design. Topics chosen from among RISC architectures, computer arithmetic, pipelining, cache memory and parallel processors. Recommended: knowledge of C programming. Prerequisite: CS 3430.
 
4432  
 
VLSI Circuit Design (4)
Fundamental design techniques for VLSI (Very Large Scale Integrated) circuits. Theory of implementing complex integrated circuits on a microchip. Use of computer aided design tools. Prerequisites: CS 3430, 3432.
 
4525  
 
Principles of Network Security (4)
Computer network security fundamentals. Cryptography (Symmetric key algorithms and Public key algorithms). Authentication and identification, message integrity techniques. Access control and key management. Wireless security. Discussion of particular protocols, e.g., IPSEC, TLS, PGP, S/MIME, etc. Prerequisite: CS 3590.
 
4526  
 
Principles of Wireless, Mobile, Grid and Pervasive Computing Security (4)
Comprehensive new topics in Wireless, Mobile, Grid and Pervasive Computing which includes IEEE 802.11 Wireless Security, Security in Mobile Telecom Networks (GPRS, UMTS), security in MANET, VANET, WSN, Bluetooth, VoIP, Grid networks and Mobile Agents. Prerequisite: CS 4525.
 
4560  
 
Operating Systems (4)
Principles of operating system design and implementation. Concurrent processes, interprocess communication, job and process scheduling; deadlock. Issues in memory management (virtual memory, segmentation, paging) and auxiliary storage management (file systems, directory structuring, protection mechanisms). Performance issues. Case studies. Prerequisites: CS 3240 and CS 3430.
 
4590  
 
Computer Networks (4)
Computer network analysis, design, and implementation. A detailed study of the network, transport and application layers of the TCP/IP model. Specific emphasis on protocols, services, design issues and performance. Programming assignments using TCP/IP. Prerequisite: CS 3590.
 
4592  
 
Network Operations and Administration (4)
Network operations, administration, and management. Management Information Base (MIB). Standards including SNMP, CMIP, ASN-1. Network management programming. Network Management of Ethernet and TCP/IP. Survey and applications of existing network management systems. Prerequisite: CS 3590.
 
4594  
 
Broadband Networks and Communications (4)
Principles of broadband networks and communications. Telephone system structure, signaling, services, and protocols. Circuit, packet and cell switching. Broadband signaling and traffic management. Advanced switch technology. Case studies. Prerequisite: CS 3590.
 
4596  
 
Wireless and Mobile Networking (4)
Network protocols and mechanisms to support mobility, e.g., Mobile-IP, M-RSVP, proxies. Issues including routing, tunneling, security, and handoffs. Wireless communication standards including AMPS, IS-95, GSM, PCS, and satellite standards. Underlying technologies including multiplexing and coding. Prerequisite: CS 3590.
 
4660  
 
Database Architecture (4)
Relational, network, and hierarchical data models. Data description and data manipulation languages. Schemas, query processing, database system architecture. Integrity, concurrency, and security techniques. Distributed databases. Prerequisite: CS 3240.
 
4665  
 
Database Operations and Administration (4)
Topics in the operation and administration of databases, including database creation, account maintenance, data import and export, system backup, and performance tuning. Hands-on experience administering an Oracle database. Prerequisite: CS 4660.
 
4750  
 
Numerical Analysis II (4)
(See MATH 4750 for course description)
 
4810  
 
Artificial Intelligence (4)
"Intelligent" computer programs and models of human intelligence. Game playing, robotics, computer vision, understanding natural language, knowledge engineering, computer learning. Prerequisite: CS 3240.
 
4835  
 
Human-Computer Interaction (4)
Human-centered software development and evaluation, human performance models, accommodating human diversity, principles of good design and good designers, introduction to usability testing. HCI aspects of multimedia systems, information systems, and collaboration and communication. Course work includes programming projects and fieldwork. Prerequisites: CS 3240 and either CS 3120 or 3340; or consent of instructor. Cross-listed with ENGR/PSYC 4835.
 
4840  
 
Computer Graphics (4)
Survey of computer graphics hardware, algorithms, techniques, and standards. Software development on color-mapped raster-scan computer graphics system. Prerequisites: MATH 2101, 2304 and CS 3240, 3430.
 
4845  
 
Fuzzy Sets and Fuzzy Logic (4)
Fuzzy set theory, fuzzy logic, approximate reasoning and relations between fuzzy set theory, probability theory, belief theory, and possibility theory. Fuzzy aggregation operators, fuzzy relations, and fuzzy clustering. Class project options: decision making, pattern recognition, databases, control, data mining. Prerequisites: CS 1160, MATH 2150, and course in probability or statistics; or permission of instructor. Cross-listed with ENGR 4845 and MATH 4845.
 
4848  
 
Computer Animation Programming (4)
Principles and techniques used to produce software for computer-generated animations. Survey of traditional animation techniques. Issues in 3-D viewing, rendering, and modeling. Motion specification and interpolation. Physically-based and behavioral modeling. Prerequisite: CS 4840.
 
4849  
 
Game Programming (4)
Survey of technologies for programming computer games. Topics include: mathematics, data structures, graphics (rendering, animation, cinematography), game logic, scripting, networking and server design, audio, artificial intelligence. Prerequisites: CS 4810 or CS 4840 or equivalent experience.
 
4865  
 
Graphical User Interface Programming Using a Rapid Application Development Tool (4)
Event-driven programming in a windowed Graphical User Interface environment using a Rapid Application Development tool set. Pull-down menus, tool bars and other standard control objects, pointing devices, object hierarchy, standard dialogs, connecting to databases, state table programming. Prerequisite: CS 3340.
 
4900  
 
Independent Study (1-5)
 
Footnote

Footnote HAYCAT-FOOTDIG   Has a prerequisite not included in the minor.
Return to the front page of the catalog Search the catalog Mail us your feedback How to use the catalog

© 2009 The California State University
Last Updated: January 8, 2009