skip navigation
Sonoma State University

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
Ali Kooshesh, George Ledin Jr.
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. Computer science studies both hardware and software; 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 and sciences 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 must be taken for a letter grade (A-F). This includes electives in CS and all other courses taken to satisfy the major. This does not apply to courses that are challenged. Only those classes for which the student has received a C- or better may be used to satisfy prerequisite requirements. An instructor may require the student to provide evidence of having met prerequisite requirements.

Degree Requirements for a Bachelor of Science in Computer Science

  • Computer Science Courses (up to 3 units may apply to GE): 50 units
  • Other Required Courses (up to 3 units may apply to GE): 17 units
  • Remainder of General Education: 45 units
  • General Electives: 12 units

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

Other Required 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: 3 units
  • MATH 241 Calculus III - Differential Equations with Linear Algebra: 4 units
  • MATH 306 Number Theory: 3 units
  • MATH 316 Graph Theory: 3 units
  • MATH 352 Numerical Analysis: 3 units
  • MATH 406 Combinatorics: 3 units
  • MATH 416 Graph Theory: 3 units
  • MATH 470 Mathematical Models: 3 units
  • PHYS 214 Introduction to Physics II: 4 units
  • other by arrangement with the CS Department
3-4
Total units in other required 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 Networking 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 Elective (3) CS 370 (3)
GE (3), GE (3) GE (3)

Senior Year: 30 Units

Fall Semester (15 Units) Spring Semester (15 Units)
CS 454 (3) CS 460 (3)
CS 450 (3) CS 415 (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 major courses of which 6 units must be upper division (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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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, 315, 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)

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)

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). Prerequisites: 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. Cr/NC only. No more than 2 units can be applied to the CS major.