Sonoma State University Catalog 2002-2004 SSU home Front Catalog Page Contact Us Search How to use this catalog
Admissions Housing Services University Degree Degree Requirements The Schools Fees Centers, Institutes, Projects University Library Student Services Regulations & Policies The Arts at SSU Information Technology University Support Services University Curricula Calendar

Computer Science

Department Office
Darwin Hall 125
707 664-2667
www.sonoma.edu/cs

Department Chair
George Ledin Jr.

Department Secretary
Gayle Walker

Faculty
Jagan Agrawal, Richard H. Gordon, V. Scott Gordon,
Ali Kooshesh, George Ledin Jr., Robert G. Plantz,
B. Ravikumar, Lynn M. Stauffer, Tia Watts

Course Plan / Sample Four-Year Program for Bachelor of Science in Computer Science / Minor in Computer Science / Individual Class Descriptions

Programs offered
Bachelor of Science in Computer Science
Minor in Computer Science


Computer science is the scientific study of computing devices, the software that drives them, and the computational tasks they are capable of performing. As such, computer science includes both hardware science and software science; and as with all sciences, each of these possesses both theoretical and applied components. Computing theory shares knowledge and techniques with the fields of mathematics, physics, engineering, philosophy, psychology, and linguistics. Its applications span the range of human endeavors: the physical, life, and social sciences; the literary, visual, and performing arts; law, government, recreation, and virtually every sector of the commercial world. Thus, computer science is by its very nature an interdisciplinary subject that offers both a solid, unifying foundation for a liberal arts education and valuable career skills.

The curriculum consists of a rigorous course of study in computer science and mathematics, and provides the student with a thorough grounding in programming, fundamentals of computer organization, data structures, and algorithm design. It is designed to prepare students for careers in the computer industry and graduate work in computer science.

All courses submitted toward either major or minor requirements in the Computer Science Department except CS 390 (Colloquium) and CS 497 (Internship) must be taken for a letter grade (A-F); CS 390 and CS 497 can be taken only Cr/NC. This includes electives in computer science and supporting courses in other departments. This does not apply to courses that are challenged.

Bachelor of Science in Computer Science

 Degree Requirements  units
 General Education  51
 Major core requirements (up to 6 units may apply to GE)  67
 General electives  6
 Total units needed for graduation  124

Major Core Requirements

 CS 110 Introduction to Unix  1
 CS 115 Programming I  4
 CS 215 Programming II  3
 CS 250 Computer Organization: Software  3
 CS 251 Computer Organization: Hardware  3
 CS 315 Data Structures  3
 CS 351 Computer Architecture  3
 CS 355 Database Management Systems  3
 CS 370 Software Design and Development  3
 CS 415 Algorithm Analysis  3
 CS 450 Operating Systems  3
 CS 451 Systems Programming  3
 CS 454 Theory of Computation;  3
 CS 460 Programming Languages  3
 Total units in the major core  41

Major Electives

Choose 9 units of upper-division CS electives (see list below). No more than 3 units can be satisfied by a combination of CS 390, 495 and 497.
 Total units in the major electives  9

Required Supporting Courses

 MATH 142 Discrete Structures I  3
 MATH 161 Calculus and Analytic Geometry I  4
 MATH 211 Calculus and Analytic Geometry II  4
 MATH 342 Discrete Structures II  3

One additional class from the following:
MATH 222 Linear Algebra
MATH 241 Differential Equations with Linear Algebra
MATH 306 Number Theory
MATH 316 Graph Theory and Combinatorics
MATH 352 Numerical Analysis
PHYS 214 Introduction to Physics II
other, by arrangement with the CS Department: 3
 Total units in supporting courses  17
 Total units in the major  67

Upper-Division CS Electives

 CS 340 Computer Security   3
 CS 360 Object-Oriented Programming  3
 CS 365 Computer Programming and the Internet  3
 CS 375 Computer Graphics  3
 CS 385 Selected Topics  1-4
 CS 390 Computer Science Colloquium  1
 CS 452 Compiler Design and Construction  3
 CS 465 Data Communications  3
 CS 480 Artificial Intelligence  3
 CS 495 Special Studies  1-4
 CS 496 Senior Seminar  1-4
 CS 497 Internship  2

Sample Four-Year Plan for Bachelor of Science in Computer Science

Freshman Year: 29 units

 Fall Semester (14 units)  Spring Semester (15 units)
 CS 110 (1)  MATH 142 (3)
 CS 115 (4)  CS 215 (3)
 GE (3), GE (3), GE (3)  GE (3), GE (3), GE (3)

Sophomore Year: 32 units

 Fall Semester (16 units)  Spring Semester (16 units)
 MATH 161 (4)  MATH 211 (4)
 CS 250 (3)  CS 251 (3)
 GE (3), GE (3), GE (3)  GE (3), GE (3), GE (3)

Junior Year: 33 units

 Fall Semester (18 units)  Spring Semester (15 units)
 MATH 342 (3)  MATH/PHYS elective (3)
 CS 315 (3)  CS 351 (3)
 CS 355 (3)  CS 451 (3)
 CS 370 (3)  CS elective (3)
 GE (3), GE (3)  GE (3)

Senior Year: 30 units

 Fall Semester (15 units)  Spring Semester (15 units)
 CS 415 (3)  CS 460 (3)
 CS 450 (3)  CS 454 (3)
 CS elective (3)  CS elective (3)
 Elective (3), Elective (3)  Elective (3), Elective (3)
 Total semester units  124

Minor in Computer Science

Students electing this minor will be prepared for careers in business application programming, scientific application programming, computer equipment sales, as field engineers and as data processing managers among the myriad job opportunities associated with the computer field. Approval of the minor curriculum should be obtained by the junior year at the latest in order that the minor may be properly planned.

Minor Core Requirements

 CS 110 Introduction to Unix  1
 CS 115 Programming I  4
 CS 215 Programming II  3
 Total units in the minor core  8

Minor Electives

Choose 12 units of CS electives of which 6 units must be upper divison (please see previous column). CS 390, 495 and 497 cannot be applied towards the minor.
 Total units in minor electives  12
 Total units in the minor  20

Computer Science Courses (CS)

Classes are offered in the semesters indicated. Please see the Schedule of Classes for most current information and faculty teaching assignments.

101 Introduction to Computers and Computing (3) Fall, Spring

Lecture, 2 hours; laboratory, 2 hours. Topics include computer types, history of computing, computer organizations, survey of computer languages, program development, computer applications, networking, and computers in society. Weekly hands-on experience with personal computers. Not applicable to the CS major. Recommended for all students. Satisfies GE, category B3 (Specific Emphasis in Natural Sciences).

110 Introduction to Unix (1) / Fall, Spring

Laboratory, 3 hours. An introduction to the use of Unix as a programming environment. Communicating with a Unix host, shells and shell commands, files and directories, X Window System, jobs and processes, scripting, programming utilities (compiler, linker, debugger, make, hex dump, etc.). Prerequisites: GE math eligibility and previous or concurrent enrollment in CS 115, or consent of instructor.

115 Programming I (4) / Fall, Spring

Lecture, 3 hours; laboratory, 3 hours. An overview of computer organization; arithmetic and logical expressions, decision and iteration, simple I/O; subprograms; principles of good programming style, readability, documentation, structured programming concepts; top-down design and refinements; techniques of debugging and testing. Use of the above concepts will be implemented in a standard high-level programming language. Satisfies GE, category B3 (Specific Emphasis in Natural Sciences). Prerequisite: GE math eligibility or consent of instructor.

175 Introduction to Computer Graphics (3) / Spring

Lecture, 2 hours; laboratory, 2 hours. A first course in computer graphics hardware and software. Topics include graphics hardware, microcomputer graphics, presentation and business graphics, graphics for artists, computer mapping, CAD/CAM (drafting and environmental applications), animation, 3-dimensional graphics, and desktop publishing. Students will have hands-on experience using a variety of graphics programs on microcomputers. Not applicable to the CS major. Prerequisite: previous computer course or consent of instructor.

185 Special Topics in Computer Science (1-4)

This lower-division course may be repeated with different subject matter. Content will be indicated by the specific topic. Prerequisite: consent of instructor.

215 Programming II (3) / Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Pointers and dynamic allocation of storage; linked lists; an introduction to the object oriented programming (OOP) paradigm; classes and objects; encapsulation; member variables and member functions; inheritance and polymorphism; scoping; templates; iterators; error handling techniques. Prerequisite: CS 110 and 115, or consent of instructor.

250 Computer Organization: Software (3) Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Introduction to assembly language programming, computer system organization from the machine language point of view, assembly language implementation of high-level language constructs, and elementary data structures. Prerequisite: CS 110 and 115, or consent of instructor.

251 Computer Organization: Hardware (3) Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Number systems and complement arithmetic, boolean logic, K-maps, combinational circuits, sequential circuits, programmable logic, main memory, timing, control and ALU design, and microprogramming. Laboratory work will include circuit simulation and hands-on work with boards. Prerequisite: MATH 142 or consent of instructor.

285 Selected Topics in Computer Science (1-4)

This lower division course may be repeated with different subject matter. Content will be indicated by the specific topic. Prerequisite: as indicated in the specific topic description or by consent of instructor.

315 Data Structures (3) / Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Fundamental concepts of data structure design and implementation using the object oriented paradigm; implementation using static arrays, dynamic arrays, linked lists, trees, binary search trees, balanced trees (AVL, red-black, B-trees), heaps, hashing and graphs; development of fundamental abstract data types (ADTs) including sets, lists, stacks, queues, priority queues, tables (maps and multimaps) and graphs; introduction to concepts of algorithm analysis. Prerequisites: CS 215 or consent of instructor.

340 Computer Security (3)

Current methods for increasing security, protecting privacy, and guaranteeing degrees of confidentiality of computer records; ensuring computer installation safety; protecting software products; preventing and dealing with crime; value systems, ethics, and human factors affecting use and misuse of computers. Discussion of recent technical, legal, and sociopolitical issues influencing computer security problems. Prerequisites: CS 215, 250 and 251, or consent of instructor.

351 Computer Architecture (3) / Fall, Spring

Instruction set design; memory-processor structures; memory hierarchies: cache, virtual memory and secondary storage; CISC, RISC, stack architectures; pipelining; I/O interfacing; comparative examples of existing architectures. Prerequisites: CS 215, 250 and 251, or consent of instructor.

355 Database Management Systems Design (3) Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Design and implementation of database management systems. Topics covered include: database architecture, relational algebra, data models, data normalization, SQL, storage structure of databases, security, data integrity and database administration. Prerequisite: CS 215 or consent of instructor.

360 Object-Oriented Programming (3)

Principles of object-oriented programming, including encapsulation, inheritance, and polymorphism, and design patterns for object-oriented programming. Specific applications are developed in one or more object-oriented programming languages and will cover the use of application frameworks and graphical user interfaces based on object-oriented principles. Prerequisites: CS 215 or consent of instructor.

365 Computer Networking and the Internet (3)

Lecture, 2 hours; laboratory, 3 hours. A study of the principles, algorithms, and protocols used in computer networks with an emphasis on those used in the Internet. Prerequisites: CS 215, 250 and CS 251, or consent of instructor.

370 Software Design and Development (3) Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Techniques of software design and development. Software lifecycle, requirements, formal specification, metrics, design, functional and structural testing, rapid prototyping, complexity, version control, and team management. Prerequisite: CS 215 or consent of instructor.

375 Computer Graphics (3)

An introduction to the principles of computer graphics hardware, coordinate transformations, 2- and 3-dimensional primitives, raster display algorithms, polygon manipulation, interactive techniques, device-independent software, and curve fitting. Prerequisites: CS 215 and MATH 161, or consent of instructor.

385 Selected Topics in Computer Science (1-4)

This course may be repeated with different subject matter for credit in the CS major. Prerequisites: upper-division standing with consent of a CS advisor and consent of instructor.

390 Computer Science Colloquium (1) / Fall, Spring

Series of lectures on current developments in computer science. May be repeated for credit; a maximum of 3 units can be applied to the CS major; students will be required to attend all presentations, keep a journal, and do a research project based on one or more of these presentations. Contact the department for specific information. Cr/NC only.

395 Community Involvement Program (1-4)

CIP involves students in basic community problems. The most common task for a CS student will be tutoring at a local school. Not applicable to the CS major. Prerequisites: CS 115 and consent of instructor.

415 Algorithm Analysis (3) / Fall, Spring

Design and analysis of algorithms, with an emphasis on execution and storage efficiency. Topics will include algorithms for searching, sorting, hashing, exploring graphs, integer and polynomial arithmetic. Standard design techniques such as divide-and-conquer, greedy method and dynamic programming. NP-completeness. Prerequisites: CS 315 and MATH 342, or consent of instructor.

450 Operating Systems (3) / Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Multiprogramming and timesharing systems; concurrent programming; scheduling policies; storage management; security; virtual machine implementation; memory management techniques; I/O subsystems and drivers; analysis of a sample operating system. Students may be required to program and test modules for the sample system. Prerequisites: CS 250 and 315, or consent of instructor.

451 Systems Programming (3) / Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. The use and design of systems software, including compilers, assemblers, linkers and loaders, I/O programming, runtime access of operating system facilities, processes, and debugging tools. Prerequisites: CS 250, 251 and 315, or consent of instructor.

452 Compiler Design and Construction (3)

Lecture, 2 hours; laboratory, 3 hours. Application of language and automata theory to the design and construction of compilers. Lexical scanning, top-down and bottom-up parsing; semantic analysis, code generation; optimization. Design and construction of parts of a simple compiler using compiler generation tools. Prerequisite: CS 215 and 250, or consent of instructor.

454 Theory of Computation (3) / Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. Mathematical study of the types of problems that can and cannot be solved by computers. Abstract mathematical models of computing devices and language specification systems. Classification of computer-solvable problems. Prerequisites: CS 315 and MATH 342, or consent of instructor.

460 Programming Languages (3) / Fall, Spring

Lecture, 2 hours; laboratory, 3 hours. A survey of the syntactic, semantic, and implementation features of functional, procedural, object-oriented, logic and concurrent programming languages. Prerequisites: CS 250 and 315, or consent of instructor.

465 Data Communications (3)

Lecture, 2 hours; laboratory, 3 hours. The ISO reference model, theoretical basis for data communications, data transmission theory and practice, telephone systems, protocols, networks, internetworks, with examples. Prerequisites: CS 351 and MATH 342, or consent of instructor.

480 Artificial Intelligence (3)

A survey of techniques that simulate human intelligence. Topics may include: pattern recognition, general problem solving, adversarial game-tree search, decision making, expert systems, neural networks, fuzzy logic, and genetic algorithms. Prerequisite: CS 315 or consent of instructor.

495 Special Studies (1-4)

This course is intended for students who are doing advanced work in an area of computer science (e.g., a senior project). Prerequisite: an upper-division CS course in the area of interest and consent of instructor.

496 Senior Seminar (1-4)

Discussion of a topic of current importance in computer science. Independent student projects or oral presentations may be required. Prerequisite: senior standing in CS curriculum.

497 Internship (2)

Student projects conceived and designed in conjunction with an off-campus organization or group. The internship is intended to provide on-the-job experience in an area of computer science in which the student has no prior on-the-job experience. Computer hardware or computer time required for the internship, as well as regular supervision of the intern, must be provided by the off-campus organization. Prerequisite: student must be within 30 units of completion of the CS major. May be taken Cr/NC only. No more than 3 units can be applied to the CS major.


Questions or Comments:
Sonoma State University
1801 East Cotati Avenue
Rohnert Park, CA 94928
SSU Home - Catalog Home - Contact Us - Search - Catalog Help