Computer Science

College of Engineering and Computer Science

Program Description

The Bachelor of Science degree in Computer Science is accredited by the Computing Accreditation Commission (CAC) of ABET, Inc. (http://www.abet.org/), providing majors with a sound educational base in Computer Science. The Minor in Computer Science and the Minor in Information Security and Computer Forensics are available for students majoring in disciplines other than Computer Engineering.

The Department offers an MS in Computer Science and an MS in Software Engineering.

The Department also offers programs in conjunction with other units: with the Electrical and Electronic Engineering Department, a BS and an MS in Computer Engineering (refer to the Computer Engineering section of this catalog).

Special Features

  • The research interests of the department faculty span a broad spectrum of Computer Science including active databases, algorithm analysis, autonomic computing, bioinformatics, compilers, computer architecture, computer forensics, computer graphics and computer game design, computer networks and communications, computing theory, cryptography, data models and database management systems, data warehousing and data mining, distributed systems and real-time systems, formal methods, human-computer interfaces, information assurance and security, intelligent and knowledge-based systems, Internet and Web technologies, machine learning, mobile and cloud computing, network security, operating systems, performance modeling and evaluation, programming languages and methodologies, software architecture, software project management, software requirements engineering, software system engineering, verification and validation, VLSI design.
  • A large heterogeneous network of Linux 64-bit, Sun RISC, and Hewlett-Packard RISC servers combined with Linux, SunOS, HPUX, Windows, and MacOS workstations supports the instructional programs. Linux and Windows workstation laboratories support both lower and upper-division instruction. Specialized laboratories support systems, communications and networking, computer security, and computer architecture instruction. A graduate laboratory is designed to provide graduate students with access to a variety of advanced workstations. All students have access to the Internet and every conceivable Web resource.
  • Majors are urged to join the student chapters of the Association for Computing Machinery or the IEEE Computer Society. Students with high scholastic achievement may be invited to join Upsilon Pi Epsilon, the national honor society for Computer Science.
  • The University's proximity to many California State agencies and major computer corporations provides numerous opportunities for part-time student employment.

Bachelor of Science Educational Objectives

Three to five years after graduation, a graduate of the B.S. in computer science should have:

  1. Made contributions to the development, maintenance, and support of real world computing systems.
  2. Taken initiative and assumed responsibilities as an effective member of project teams.
  3. Worked independently and functioned effectively in an environment with incomplete information.
  4. Progressed in the computing field, engaged in professional development, and/or pursued an advanced degree.
  5. Produced quality technical and non-technical documents and presentations for a variety of audiences.
  6. Adhered to the ethical standards of the profession and understood the implications of his/her professional activities.

Career Possibilities

Computer Scientist · Computer Engineer · Software Engineer · Computing Science Educator · Information Technology Specialist · Computer Systems Analyst · Scientific Application Programmer · Computer Operations Manager · Computer Services Coordinator · Database Administrator · Computer Game Developer · Data Communications Manager · Data Processing Manager · Data Processing Application Programmer · Network Administrator · Programmer Analyst · Software Requirements Engineer · Software Architect · Software Quality Assurance Specialist · Software Development Project Manager · Systems Manager · Systems Programmer · Computer Graphics Specialist · Knowledge Engineer · Systems Engineer · Cyber Security Specialist · Information Assurance Specialist · Information Security Officer · Data Mining Analyst · Web/eCommerce Developer · IT Business Analyst · IT Infrastructure Specialist · Technical Control Specialist · Technical Representative

Contact Information

Cui Zhang, Department Chair
Veronica Pruitt, Administrative Support Coordinator
Riverside Hall 3018
(916) 278-6834
www.ecs.csus.edu/csc

Faculty

ARAD, BEHNAM S.

CHANG, WEIDE (WILLIE)

CHENG, YUAN

DAI, JUN

FAROUGHI, NIKROUZ

GHANSAH, ISAAC

GORDON, V. SCOTT

JIN, YING

KROVETZ, TED D.

LU, MEILIU

MUYAN-OZCELIK, PINAR

OUYANG, JINGSONG

SALEM, AHMED M.

SHOBAKI, GHASSAN

SUN, XIAOYAN

WANG, CHUNG-E

ZHANG, CUI

 

Undergraduate Programs

All students are admitted as pre-Computer Science majors. Registration in upper-division courses numbered 133 and above is restricted to Computer Science and Computer Engineering majors. Other students need to obtain approval from the CSC Department Chair. To change to the Computer Science major, students who have completed the following lower division (pre-major) requirements are required to complete and submit a Change of Major form to the Computer Science Department Office along with transcript copies:

CSC 15Programming Concepts and Methodology I3
CSC 20Programming Concepts and Methodology II3
CSC 28Discrete Structures for Computer Science3
CSC 35Introduction to Computer Architecture3
CSC 60Introduction to Systems Programming in UNIX3
MATH 26A/30Calculus I for the Social and Life Sciences3
MATH 26B/31Calculus II for the Social and Life Sciences3

Course Repeat Policy: Please see University Repeat Policy for more information.

Work Experience: Students may receive a limited amount of academic credit for relevant work experience in Computer Science. There are many opportunities for students to work part-time in the federal, state, and local governments. A significant number of positions in private industry are also available in both well-established and new companies in the Sacramento area. Such work experiences often lead to permanent positions upon graduation.

Note: Useful information can also be found in the College of Engineering and Computer Science section.

BS Degree in Computer Science

Units required for Major: 81
Minimum total units required for BS: 120
Grade of "C-" or better required in all courses applied to the Computer Science major.

Note: Students graduating with a Bachelor of Science Computer Science will not be subject to the University’s Foreign Language Graduation Requirement. Students who change major may be subject to the University’s Foreign Language Graduation Requirement.

Required Lower Division Courses (15 Units)
CSC 15Programming Concepts and Methodology I3
CSC 20Programming Concepts and Methodology II3
CSC 28Discrete Structures for Computer Science3
CSC 35Introduction to Computer Architecture3
CSC 60Introduction to Systems Programming in UNIX3
Required Mathematics and Science Courses (24 Units)
MATH 26ACalculus I for the Social and Life Sciences3
or MATH 30 Calculus I
MATH 26BCalculus II for the Social and Life Sciences3
or MATH 31 Calculus II
STAT 50Introduction to Probability and Statistics4
or ENGR 115 Statistics For Engineers
PHYS 5AGeneral Physics: Mechanics, Heat, Sound4
or PHYS 11A General Physics: Mechanics
Select 10 units of the following: 110
Any MATH or STAT course with calculus as a prerequisite
General Chemistry I
General Chemistry for Engineering
Modeling and Experimental Design
Deductive Logic II
General Physics: Light, Electricity and Magnetism, Modern Physics
General Physics: Heat, Light, Sound, Modern Physics
General Physics: Electricity and Magnetism
Introduction to Modern Physics
Scientific Computing: Basic Methods
Scientific Computing: Modeling, Simulation, and Visualization
Required Upper Division Courses (33 Units)
CSC 130Data Structures and Algorithm Analysis3
CSC 131Computer Software Engineering3
CSC 133Object-Oriented Computer Graphics Programming3
CSC 134Database Management Systems3
CSC 135Computing Theory and Programming Languages3
CSC 137Computer Organization3
CSC/CPE 138Computer Networks and Internets3
CSC 139Operating System Principles3
CSC 190Senior Project: Part I2
CSC 191Senior Project-Part II2
PHIL 103Business and Computer Ethics3
Select two units from the following:2
Career Planning
Computer Science Seminar
Fieldwork in Computer Science
Professional Practice
Co-Curricular Activities in Computer Science
Special Problems
Electives (9 Units)
Select 9 units of CSC courses 140 or above excluding the following: 29
Career Planning
Computer Science Seminar
Fieldwork in Computer Science
Professional Practice
Co-Curricular Activities in Computer Science
Special Problems
Total Units81
1

In addition to the math and science courses (minimum 14 units), students must choose elective courses to bring the total number of math and science units to a minimum of 24.

2

In addition to the required lower-division and upper-division Computer Science courses, Computer Science majors must take additional elective courses, totaling at least nine (9) units, from undergraduate Computer Science courses numbered CSC 140 or above (excluding the listed courses).

Note: To satisfy the requirement of CAC, the Computing Accreditation Commission of ABET, which accredits computer science programs, one or more electives must be from MATH, STAT or PHIL (MATH 100 Recommended). Courses may not be selected with significantly overlapping topics. Students who select MATH 26A and MATH 26B for their calculus sequence must take STAT 50 and PHYS 5A. The following are recommended for students considering graduate school or an engineering major:

MATH 30Calculus I4
MATH 31Calculus II4
PHYS 11AGeneral Physics: Mechanics4
PHYS 11CGeneral Physics: Electricity and Magnetism4

The following are recommended for students considering a math or statistics minor:

MATH 30Calculus I4
MATH 31Calculus II4
STAT 50Introduction to Probability and Statistics4

The following are recommended for students considering a scientific computing and simulation certificate and willing to take PHYS 163 as an additional course:

Select one of the following:4
General Physics: Light, Electricity and Magnetism, Modern Physics
General Physics: Heat, Light, Sound, Modern Physics
General Physics: Electricity and Magnetism
PHYS 162Scientific Computing: Basic Methods3

If CSC 148 is chosen as an elective to meet the math and science requirements, it cannot be used for a computer science elective. An undergraduate handbook with further course selection advice is available at the department website.

Course choices should be made with advisor consultation. With advance written approval from their advisor, the course instructor, and the Department Chair, students with a GPA of 3.0 or greater may take graduate courses as electives. In any case students must meet the prerequisite stated in the catalog prior to taking any elective course.

Academic Certificates

In addition to completing the requirements for the Bachelor of Sciences in Computer Science degree program, students enrolled in the major may also complete one of the (optional) 9-12 unit Academic Certificate programs. Each certificate includes 9 required units which can overlap with elective coursework taken to satisfy the major requirements, with some of the certificates requiring 3 additional units (1 additional course) beyond the degree requirements. Students interested in earning a certificate in addition to their degrees should meet with an academic advisor.

Requirements for Certificates

Certain combinations of courses gives students a deeper understanding of specialized areas in Computer Science. Completion of any of the following course lists entitles the student to receive a certificate indicating that they concentrated their elective study in the particular area. The Computer Science Department will try and offer on a regular basis all courses required for each certificate, but course cancellations and scheduling conflicts do sometimes occur causing students difficulty in completing their desired course study. In such situations, students may need to forgo completion of their certificate. Printed certificates must be requested directly from the Computer Science Department office after a student graduates.

Certificate - Cyber Defense and Operations

Total units required for certificate: 12 

The Cyber Defense and Operations certificate includes the same courses as the Information Assurance and Security certificate, but additional requires advanced study in operating systems. An understanding of operating system pragmatics better prepares students for the technical work needed in defending and hardening networked computer systems. Students will not be awarded the Information Assurance and Security certificate if they complete the requirements for the Cyber Defense and Operations certificate.

CSC 152Cryptography3
CSC 153Computer Forensics Principles and Practices3
CSC 154Computer System Attacks and Countermeasures3
CSC/CPE 159Operating System Pragmatics3
Total Units12

Certificate - Game Engineering

Total units required for certificate: 12 

This certificate is intended to give students an opportunity to explore the science and engineering of computer games, and to prepare students for careers in those fields of computing which utilize or are heavily impacted by advances in computer gaming. These include such areas as video and strategy game development, 3-D graphics, modeling and animation and their support tools, intelligent decision making, specialized user interface hardware, machine learning, and working in interdisciplinary teams.

CSC 155Advanced Computer Graphics3
CSC 165Computer Game Architecture and Implementation3
CSC 180Intelligent Systems3
Select one of the following:3
3D Computer Modeling
3D Computer Animation
Operating System Pragmatics
Data Warehousing and Data Mining
Total Units12

Certificate - Information Assurance and Security

Total units required for certificate: 12 

The Information Assurance and Security certificate is designed to help students advance their technical skills to prepare for a leadership role in planning, managing, certifying and accrediting a security and incident response plan for their organization - including methods to combat threats to organization information resources, which in today's world is becoming top priority for many businesses since most information is in electronic form.

CSC 152Cryptography3
CSC 153Computer Forensics Principles and Practices3
CSC 154Computer System Attacks and Countermeasures3
Total Units9

Certificate - Software Engineering

Total units required for certificate: 12 

The Software Engineering certificate is designed to focus on the principles of designing, building, testing and maintaining reliable, efficient, and secure software systems. The certificate is designed to emphasize the knowledge, competencies, and skills needed to produce competent graduates to begin a professional career in the field of software engineering, or pursue graduate programs.

CSC 170Software Requirements and Specification3
CSC 171Software Engineering Project Management3
CSC 179Software Testing and Quality Assurance3
Select one of the following:3
Computer System Attacks and Countermeasures
Advanced Database Management Systems
Database Architecture and Optimization
Data Warehousing and Data Mining
Total Units12

Certificate - Systems Software

Total units required for certificate: 12 

The Systems Software Certificate provides necessary background to participate in the development of low-level software for computer hardware and the software infrastructure needed by application developers. Understanding how such software operates makes students valuable additions to interdisciplinary teams where exploiting features of systems tools is important. The certificate will also prepare students to design, implement, and be effective users of systems tools such as language processors, utilities, and diagnostic tools.

CSC 151Compiler Construction3
CSC/CPE 159Operating System Pragmatics3
Select two of the following:6
Advanced Computer Organization
Modeling and Experimental Design
Computer System Attacks and Countermeasures
Advanced Computer Graphics
Computer Game Architecture and Implementation
Total Units12

Minor - Computer Science

Total units required for Minor: 21
Grade of "C-" or better required in all courses applied to the Computer Science minor.

Admission Requirement

Completion of MATH 29 with a grade of "C-" or better, or passing the ELM at a level qualifying for MATH 30.

Required Courses (12 Units)
CSC 15Programming Concepts and Methodology I3
CSC 20Programming Concepts and Methodology II3
CSC 28Discrete Structures for Computer Science3
CSC 130Data Structures and Algorithm Analysis3
Electives (9 Units)
Select 9 units with faculty approval 19
Total Units21
1

At least six units must be upper division courses, and only Computer Science courses which are part of the major may be applied to this nine-unit requirement.

Minor - Information Security and Computer Forensics

Total units required for Minor: 15
Grade of "C-" or better required in all courses applied to the Computer Science minor.

Required Courses (15 Units)
CSC 1Introduction to Computer Science3
Select one of the following:3
Introduction to Internet Technologies
Self-Paced Introduction to Internet Technologies
Web Development with HTML/XHTML and Tools
Select one of the following:3
Programming Concepts and Methodology I
Visual Programming in BASIC
Introduction to C Programming
CSC 115Internet Security3
CSC 116Cyber Forensics3
Total Units15

Graduate Programs

The Computer Science Department offers Master's Degree programs in Computer Science and Software Engineering, Certificates of Advanced Study for students enrolled in the Computer Science program, and a Master's Degree joint program in Computer Engineering.

The primary goal of each of these programs is to prepare students to serve as effective professional computer specialists in a society which increasingly depends on computer usage and technology.

A secondary goal is to prepare interested students for research, teaching, or further study toward the Ph.D. in Computer Science. The programs also enable individuals with background in other areas to obtain the skills and knowledge necessary to enter and advance in employment in computer-related industries.

The admission requirements for the Master's in Computer Science and the Master's in Software Engineering are identical. Completion of the Master of Science in Computer Science requires advanced coursework in a minimum of three of the following areas: computer architecture/computer engineering, database management systems, information assurance and security, intelligent systems, networks and communications, software engineering, and systems software. Completion of the Master of Science in Software Engineering requires advanced coursework in the software engineering area.

Teaching associateships are occasionally available for qualified graduate students; these students assist in instruction of undergraduate courses, supervision of laboratory work, and aid faculty members in research projects. Interested persons should apply in the Department office.

Due to the large number of graduate students in Computer Science who are employed, most graduate level courses are offered in the late afternoon or evening.

Admission Requirements

Admission as a classified graduate student requires:

  • a baccalaureate degree;
  • a minimum 3.0 GPA in the last 60 units attempted;
  • GRE general test;
  • mathematical preparation including two semesters of calculus and one semester of calculus-based probability and statistics corresponding to Sacramento State courses:
    MATH 30Calculus I4
    MATH 31Calculus II4
    STAT 50Introduction to Probability and Statistics4
  • Computer Science lower-division preparation including programming proficiency, discrete structures, machine organization, and UNIX and PC-based program development environment proficiency corresponding to Sacramento State courses (see the following) and as evidenced by a pass on the graduate student placement test or a baccalaureate degree in Computer Science;
    CSC 15Programming Concepts and Methodology I3
    CSC 20Programming Concepts and Methodology II3
    CSC 28Discrete Structures for Computer Science3
    CSC 35Introduction to Computer Architecture3
    CSC 60Introduction to Systems Programming in UNIX3
  • Computer Science advanced preparation as evidenced by a 3.25 GPA in the following Sacramento State upper division Computer Science courses or their equivalent elsewhere:
    CSC 130Data Structures and Algorithm Analysis3
    CSC 131Computer Software Engineering3
    CSC 132Computing Theory3
    CSC 134Database Management Systems3
    CSC 137Computer Organization3
    CSC/CPE 138Computer Networks and Internets3
    CSC 139Operating System Principles3

Applicants with deficiencies in the admission requirements area are advised to remove any such deficiencies before applying.

Admission Procedures

Applicants must complete a university application and a separate departmental application by the posted application deadline dates for the term applying. For more admissions information and application deadlines, please visit http://www.csus.edu/gradstudies/:

  • an online application for admission;
  • two sets of official transcripts from all colleges and universities attended, other than Sacramento State; and
  • official GRE general test scores.

Advancement to Candidacy

Each student must file an application for Advancement to Candidacy, indicating a proposed program of graduate study. This procedure should begin as soon as the classified graduate student has:

  • removed any deficiencies in admission requirements;
  • completed at least 12 units of graduate level (200 series) Computer Science courses with a minimum 3.0 GPA; and
  • taken the Writing Placement for Graduate Students (WPG) or taken a Graduate Writing Intensive (GWI) course in their discipline within the first two semesters of coursework at California State University, Sacramento or secured approval for a WPG waiver.

Students must have been advanced to candidacy before they can register for Master's thesis or project. Advancement to Candidacy forms are available in the Office of Graduate Studies. The student fills out the form after planning a degree program in consultation with a Computer Science graduate advisor. The completed form must be signed by the Graduate Coordinator or the Department Chair and is then returned to the Office of Graduate Studies for approval.

MS in Computer Science

Units required for MS: 30 units, including at least 21 units of 200-level and 500-level courses
Minimum GPA: 3.0
Minimum grade: C

Note: Only those courses completed within seven years prior to date of graduation will satisfy course requirements. An outline of degree requirements follows:

Required Courses (13 Units)13
CSC 201Programming Language Principles3
CSC 204Data Models for Database Management Systems 13
CSC 205Computer Systems Structure 13
CSC 206Algorithms And Paradigms3
CSC 209Research Methodology1
Breadth Requirement (9 Units)
Select one course from three of the following areas:9
Computer Architecture/Computer Engineering
Microprocessor Systems Architecture
Computer-Aided Systems Design and Verification
Hierarchical Digital Design Methodology
Advanced Computer Architecture
Database Management Systems
Bioinformatics: Data Integration and Algorithms
Database System Design
Information Assurance and Security
Computer Security
Cryptography Theory and Practice
Computer Forensics
Network Security
Intelligent Systems
Knowledge-Based Systems
Artificial Intelligence
Machine Learning
Networks and Communications
Computer Networks
Distributed Systems
Advanced Data Communication Systems
Software Engineering
Software System Engineering
Software Engineering Metrics
Software Requirements Analysis and Design
Advanced Software Engineering Project Management
Software Verification and Validation
Software Architecture
Formal Methods in Secure Software Engineering
Human-Computer Interface Design
System Software
Advanced Operating Systems Principles and Design
Performance Modeling and Evaluation
Computer Security
Principles of Compiler Design
Restricted Electives (3-6 Units)
Select 3-6 units 23 - 6
Culminating Requirement (2-5 Units)
Select one of the following:2 - 5
Master's Thesis 3
Master's Project 3
Total Units30-33
1

Students whose undergraduate preparation has covered a significant amount of the material in CSC 204 or CSC 205 may be given a waiver by the Department from taking one or more of these courses. In this case, for each course waived with department approval, the student must take three additional units of Restricted Electives.

2

Prior to taking an elective course, students must obtain approval from their advisor, and either the Graduate Coordinator or the Department Chair.

Students should choose their electives according to the following guidelines:

  1. One of the following upper division courses: CSC 148, CSC 155, CSC 159/CPE 159, CSC 165, CSC 176, CSC 177 as long as they have not been used towards another degree. (A maximum of 6 undergraduate units may be used in any graduate program.)
  2. Any 200-level CSC courses not already used to satisfy the Breadth Requirement, with the exception of CSC 295 and CSC 299. Students not required to take CSC 204 or CSC 205 must, for each course waived, take an additional three units in this category.
  3. Related 200-level courses from outside the Computer Science Department may only be taken with prior department approval and may not have been used in another program.
3

Students are required to make an oral presentation of their master's project or conduct an oral defense of their master's thesis. The recommended department-level deadline in each semester for submitting an MS project or thesis signed by the committee chair and its members to the Graduate Coordinator's office is 10 weekdays prior to the University deadline.

MS in Software Engineering

Units required for MS: 30 units, including a software engineering project or thesis
Minimum GPA: 3.0
Minimum grade: C

This degree provides the student with the ability to specialize in the application of software engineering principles to the development of large and complex computer systems.

The program's courses are structured to satisfy two groups of students:

  1. those pursuing an MSSE degree and
  2. those interested in individual courses.

Individuals wishing to pursue a degree must satisfy the Computer Science graduate program entrance requirements. Those enrolling in individual courses must have an undergraduate degree in Computer Science (or related field) or a minimum of one-year's work experience involving some aspect of software engineering.

The MS Degree in Software Engineering offers, in addition to a core curriculum, advanced studies in the software engineering area. This program covers the entire software application development process from problem definition through requirements, design, implementation, testing, operation, and maintenance.

Note: Only those courses completed within seven years prior to date of graduation will satisfy course requirements. An outline of degree requirements follows:

Required Software Engineering Courses (21 Units)21
Select seven of the following:21
Software System Engineering
Software Engineering Metrics
Software Requirements Analysis and Design
Advanced Software Engineering Project Management
Software Verification and Validation
Software Architecture
Formal Methods in Secure Software Engineering
Human-Computer Interface Design
Required Research Methodology (1 Unit)
CSC 209Research Methodology1
Restricted Electives (3-6 Units)
Select 3-6 units 13 - 6
Culminating Requirement (2-5 Units)
Select one of the following:2 - 5
Master's Thesis 2
Master's Project 2
Total Units30-33
1

Prior to taking an elective course, students must obtain approval from their advisor, and either the Graduate Coordinator or the Department Chair. Students should choose their electives according to the following guidelines:

  1. One of the following upper-division courses: CSC 148, CSC 155, CSC 159/CPE 159, CSC 165, CSC 176, CSC 177, as long as they have not been used towards another degree. (A maximum of 6 undergraduate units may be used in any graduate program.)
  2. Any 200-level CSC course not already used to satisfy requirement A and B, with the exception of CSC 295 and CSC 299. An additional three units in this category must be taken if a core course is waived.
  3. Related 200-level courses from outside the Computer Science Department may only be taken with prior department approval and may not have been used in another program.
2

Students are required to make an oral presentation of their master's project or conduct an oral defense of their master's thesis. The recommended department-level deadline in each semester for submitting an MS project or thesis signed by the Committee Chair and its members to the Graduate Coordinator’s office is 10 weekdays prior to the University deadline.

Certificates - Advanced Programs

Minimum required GPA for all courses taken in the program: 3.0

Note: The Certificates in Computer Science program are designed to recognize students who have completed the following core graduate courses plus additional advanced coursework in a specialty area.

CSC 201Programming Language Principles3
CSC 204Data Models for Database Management Systems3
CSC 205Computer Systems Structure3
CSC 206Algorithms And Paradigms3

These certificates are available only for MS Computer Science matriculated students.

Certificate in Computer Architecture

Total units required for certificate: 9 

CSC 242Computer-Aided Systems Design and Verification3
CSC/EEE 280Advanced Computer Architecture3
Select one of the following:3
Microprocessor Systems Architecture
Performance Modeling and Evaluation
Distributed Systems
Hierarchical Digital Design Methodology
Special Topics in Computer Science - Software Engineering
Total Units9

Certificate in Computer Engineering

Total units required for certificate: 9 

Select one of the following:3
Microprocessor Systems Architecture
Advanced Computer Architecture
Micro-Computer System Design I
Select one of the following:3
Computer-Aided Systems Design and Verification
Hierarchical Digital Design Methodology
Select one of the following:3
Operating System Pragmatics
Advanced Operating Systems Principles and Design
Total Units9

Certificate in Computer Networks and Communications

Total units required for certificate: 9 

CSC 255Computer Networks3
Select two of the following:6
Network Security
Distributed Systems
Advanced Data Communication Systems
Special Topics in Computer Science - Software Engineering
Total Units9

Certificate in Data Management Systems

Total units required for certificate: 9 

Select three of the following:9
Database System Design
Computer Security
Distributed Systems
Special Topics in Computer Science - Software Engineering
Total Units9

Certificate in Data Mining

Total units required for certificate: 9 

CSC 177Data Warehousing and Data Mining3
CSC 219Machine Learning3
Select one of the following:3
Bioinformatics: Data Integration and Algorithms
Database System Design
Total Units9

Certificate in Information Assurance and Security

Total units required for certificate: 9 

Select three of the following:9
Formal Methods in Secure Software Engineering
Computer Security
Cryptography Theory and Practice
Computer Forensics
Network Security
Total Units9

Certificate in Intelligent Systems

Total units required for certificate: 9 

CSC 215Artificial Intelligence3
Select two of the following:6
Knowledge-Based Systems
Machine Learning
Special Topics in Computer Science - Software Engineering
Total Units9

Certificate in Software Engineering

Total units required for certificate: 9 

Select three of the following:9
Software System Engineering
Software Engineering Metrics
Software Requirements Analysis and Design
Advanced Software Engineering Project Management
Software Verification and Validation
Software Architecture
Formal Methods in Secure Software Engineering
Human-Computer Interface Design
Special Topics in Computer Science - Software Engineering
Total Units9

Certificate in Systems Software

Total units required for certificate: 9 

CSC 239Advanced Operating Systems Principles and Design3
Select at least two of the following:6
Performance Modeling and Evaluation
Computer Security
Principles of Compiler Design
Distributed Systems
Special Topics in Computer Science - Software Engineering
Total Units9

CSC 1.     Introduction to Computer Science. 3 Units

Prerequisite(s): Intermediate algebra.

General Education Area / Graduation Requirement: Further Studies in Area B (B5)


Fundamental concepts of computers, computation and programming; history and principles of computing; problem solving; input, output; data representation, storage, and file organization; computer hardware, networking and data communication; social, economic and ethical implications; computer security and privacy. Students will solve problems using a programming language. Lecture, two hours; technical activity and laboratory, two hours.

CSC 1A.     Introduction to Computer Science for Advanced Students. 3 Units


Same material as covered in CSC 1 but intended for students who already have significant knowledge of the fundamental concepts of computers and/or computer programming. Students must attend the orientation session during the first class meeting. Two placement tests, one on programming and one on concepts, will be scheduled and used to determine student's prior preparation.

Note: May be taken by those wishing to obtain credit by examination. Please refer to examination credit guidelines in the University catalog. Not open to students who have received credit for CSC 1 or MIS 5.

Credit/No Credit

CSC 5.     Personal Computing. 3 Units


Introduction to the role and use of personal computers, emphasizing the use and relevancy of common software for word processing, database, spreadsheet analysis, graphics, and communications. Examination of the personal computing milieu and the applications environment. Lecture two hours, technical activity and laboratory two hours.

CSC 8.     Introduction to Internet Technologies. 3 Units

Prerequisite(s): Basic computer literacy recommended.


Internet applications such as email, instant messaging, file transfer, secure communications, the web, and related tools and protocols. Basics of the web-publishing process and methods used to locate authoritative information on the internet. Webpage design, internet security and emerging technologies on the internet.

CSC 8S.     Self-Paced Introduction to Internet Technologies. 3 Units

Prerequisite(s): Basic computer literacy recommended.


Covers the same material as CSC 8, Introduction to Internet Technologies. Provided by electronic means in addition to meetings for orientation, laboratory demonstrations, and tests. Internet applications such as Email, instant messaging, file transfer, secure communications, the Web, and related tools and protocols. Basics of the Web-publishing process and methods used to locate authoritative information on the Internet. Webpage design, Internet security and emerging/declining technologies on the Internet.

Credit/No Credit

CSC 10.     Introduction to Programming Logic. 3 Units

Prerequisite(s): Math 11 or equivalent

General Education Area / Graduation Requirement: Further Studies in Area B (B5)


Introduction to computer science with an emphasis on programming concepts and methodology. Intended to assist students with little or no programming experience to understand the basic principles of programming logic. Topics include computer hardware and software, problem solving and algorithm development, flow of control, modular design using techniques that can be applied to common programming languages. Lecture two hours, technical activity and laboratory two hours.

CSC 10A.     Accelerated Introduction to Programming Logic. 3 Units


Introduction to computer science with an emphasis on programming concepts, logic, and methodology: computer hardware and software, problem solving and algorithm development, flow of control, and modular design. Accelerated and more in-depth study of programming concepts than CSC 10. Intended for computer science and computer engineering majors who have little or no programming experience. Lecture two house, technical activity and laboratory, two hours. Not open to students who have received credit for CSC 10. Preqrequisite: Math 11

CSC 15.     Programming Concepts and Methodology I. 3 Units

Prerequisite(s): CSC 10, or programming experience in a high-level programming language.


Programming concepts using an object-oriented programming language. Introduction to methodologies for program design, development, testing, and documentation. Topics include program design, algorithm design, number systems, classes and objects, methods (functions), control structures, arrays, and interactive input/output. Lecture two hours, technical activity and laboratory two hours.

CSC 15W.     Programming Methodology I Workshop. 1 Unit

Corequisite(s): CSC 15.


Designed to assist students in developing a more thorough understanding of programming methodology and problem solving techniques. Activity two hours.

Credit/No Credit

CSC 20.     Programming Concepts and Methodology II. 3 Units

Prerequisite(s): CSC 15.


Application of object-oriented techniques for systematic problem analysis and specification, design, coding, testing, and documentation. Semester-long project approach emphasizing larger programs. Managing program complexity using abstraction. Introduction to algorithm analysis and Big-O notation. Advanced language features. Basic sorting and searching algorithms. Recursion. Lecture two hours, technical activity and laboratory two hours.

CSC 21.     First Year Seminar: Becoming an Educated Person. 3 Units

General Education Area / Graduation Requirement: E


Introduction to the nature and possible meanings of higher education, and the functions and resources of the University. Designed to help students develop and exercise fundamental academic success strategies and to improve their basic learning skills. Development of information competence and computer literacy. Students interact with fellow students and the seminar leader to build a community of academic and personal support.

CSC 22.     Visual Programming in BASIC. 3 Units

Prerequisite(s): Intermediate Algebra.


Computer Programming using Visual Basic. Topics include the Visual Basic Integrated Development Environment, visual user interface development, concepts of object-oriented programming, variables, control structures, arrays, functions, subroutines, strings, files, and database access. Applications will be created in areas such as business, games, and multimedia. Lecture two hours, technical activity and laboratory two hours.

CSC 25.     Introduction to C Programming. 3 Units


Topics include: types, operators, control structures, input/output, arithmetic operations, the C library and preprocessor, functions and parameters, arrays, strings, pointers, and structures. Program design and style will be emphasized. Students will use a compiler.

Note: Students with significant programming experience should take CSC 60 rather than CSC 25. Lecture two hours, technical activity and laboratory two hours.

CSC 28.     Discrete Structures for Computer Science. 3 Units

Prerequisite(s): MATH 26A or MATH 29; and CSC 20; CSC 20 may be taken concurrently.


Introduction to the essential discrete structures used in Computer Science, with emphasis on their applications. Topics include: counting methods, elementary formal logic and set theory, recursive programming, digital logic and combinational circuits, real number representation, regular expressions, finite automata.

CSC 35.     Introduction to Computer Architecture. 3 Units

Prerequisite(s): CSC 15.


Internal representation of numeric and non-numeric data, assembly level machine architecture, addressing modes, subroutine linkage, polled input/output, interrupts, high-level language interfacing, macros and pseudo operations. Lecture two hours, technical activity and laboratory two hours.

CSC 60.     Introduction to Systems Programming in UNIX. 3 Units

Prerequisite(s): CSC 20, CSC 35.


Features of the C language commonly used in systems programming, application to systems programming in a UNIX environment. Topics include C preprocessor macros, I/O, bit-manipulation facilities, timesharing system concepts, file permissions, shell script programming, make files and source code control, basic system calls like fork and exec, pointers and dynamic memory allocation, libraries and relocation and linking concepts including assembler handling of symbol tables. Prior knowledge of a C like programming language is presumed.

CSC 80.     Web Development with HTML/XHTML and Tools. 3 Units

Prerequisite(s): CSC 8 or equivalent computer and Internet experience.


Hands-on course covering the processes and guidelines for creating and customizing interactive webpages. Emphasis on use of HTML/XHTML, CSS, and tools to create webpages. HTML/XHTML syntax to create, format, and link documents. Use of tables, graphics, styles, forms, multimedia, and other features in webpages. Effective webpage design and website organization. Lecture two hours and technical activity and laboratory two hours.

CSC 114.     Digital Evidence and Computer Crime. 3 Units

Prerequisite(s): CSC 1 and CSC 8 or CSC 8S or CSC 80; or instructor permission.


Topics include technology and law, computer basics for digital investigations, network basics for digital investigations, investigation of computer crime, and the handling of digital evidence.

CSC 115.     Internet Security. 3 Units

Prerequisite(s): CSC 1 and CSC 8 or CSC 8S or CSC 80; or instructor permission.


Internet security problems and discussion of potential solutions: network vulnerabilities and attacks, secure communication and use of cryptography, Internet security protocols and tools to defend against network attacks, network intrusion detection, and wireless network security. Survey and use of software tools for network security.

CSC 116.     Cyber Forensics. 3 Units

Prerequisite(s): CSC 1 and CSC 8 or CSC 8S or CSC 80; or instructor permission.


Fundamentals of computer forensics and cyber-crime scene analysis including laws, regulations, and international standards; formal methodology for conducting security incident investigations; categories of electronic evidence. Projects involving digital forensic tools.

CSC 120.     Web Server Administration. 3 Units

Prerequisite(s): CSC 80.


Managing and maintaining Web servers. Administering open source and commercial Web servers, Web hosting alternatives, professional standards and practices of website hosting, Web server installation, configuration, management, and security. Selecting and using technologies to support professional quality websites. Lecture two hours; technical activity and laboratory two hours.

CSC 121.     Client-Side Web Programming. 3 Units

Prerequisite(s): CSC 22, CSC 80 or equivalents; OR PCSC/CSC Major, CSC 60, CSC 130.


Client-side Web programming using JavaScript, DHTML, and client-side Web technologies. Event-driven programming, dynamic data types, control structures, and introduction to object-oriented programming and program design. Use of cookies and built-in objects. Validation and processing of forms. Basic features of the Document Object Model.

CSC 122.     Web Database Applications. 3 Units

Prerequisite(s): CSC 10 or CSC 22; and CSC 80 or equivalent.


Fundamentals of building effective database-driven web applications. Particular emphasis on database access via web interfaces. Introduction to database management systems, their structure and usage, SQL, integrating web applications with databases, design and implementation of dynamic web database applications.

CSC 123.     Web Application Development. 3 Units

Prerequisite(s): CSC 22, CSC 121, CSC 122, or equivalent experience; OR PCSC/CSC Major, CSC 60, CSC 134.


Developing multi-tiered enterprise-level Web applications. Standards of Web services and other current Web technologies, including XML, AJAX, and server-side programming such as Java EE, .NET, or PHP. Development of Web applications such as those used for e-commerce, e-business, and content management. Format consists of two 1.5 hour lecture/lab sessions per week.

CSC 126.     3D Computer Modeling. 3 Units

Prerequisite(s): CSC 10 or ART 97 or equivalent.


Techniques and processes to create 3D computer models and environments. Exercises, assignments and projects designed to build skill levels with 3D computer modeling tools. Demonstrations and workshops in the use of 3D computer modeling software. Critiques, discussion and presentations to develop students' conceptual grasp of 3D computer modeling and virtual reality environments. Example applications in art/new media and computer gaming.

Note: May be taken twice for credit. Cross-listed as ART 142.

CSC 127.     3D Computer Animation. 3 Units

Prerequisite(s): ART 142 or CSC 126.


Creative skills and techniques for animating 3D computer-modeled objects/environments. Topics include animation techniques; keyframing and interpolation; deformation and morphing; path control; skeletal animation; model rigging and skinning; forward and inverse kinematics, constraints and IK solvers; particle systems; fluid, cloth, hair, and fur simulation; shape keys; and soft body animation. Emphasis on both skill development and creative application of modeling and animation techniques. Includes demos, in class and homework excercises, and self directed projects. Cross-listed: ART 143.

CSC 130.     Data Structures and Algorithm Analysis. 3 Units

Prerequisite(s): CSC 20, CSC 28; CSC 28 may be taken concurrently.


Specification, implementation, and manipulation of complex data structures: linear/lists, stacks, queues, trees, sets, and graphs. Design and analysis of algorithms. Recursion and stack-based memory management. Advanced searching and sorting. NP-completeness.

CSC 131.     Computer Software Engineering. 3 Units

Prerequisite(s): CSC 130; may be taken concurrently.


Principles of Software Engineering covering the software development life cycle, including software requirements engineering (elicitation, modeling, analysis and specification), software design, software implementation and testing. Main topics include various software development process models, method and techniques for specifying requirements, architectural and detailed design specification, prototyping, top-down and bottom-up software implementation and testing. Topics also include project management, project documentation and the development of communication skills through written documentation and oral presentation.

CSC 132.     Computing Theory. 3 Units

Prerequisite(s): CSC 28, CSC 130; CSC 130 may be taken concurrently.


Introduction to computing theory with examples and applications. Automata and formal languages; language recognition and generation; language hierarchy; deterministic and non-deterministic automata; regular expressions; pushdown automata and context-free grammars; properties of regular and context-free languages; Turing machines; computable and noncomputable functions; decidability.

CSC 133.     Object-Oriented Computer Graphics Programming. 3 Units

Prerequisite(s): CSC 130, CSC 131.


Introduction to computer graphics and advanced topics in object-oriented (OO) programming. The OO paradigm is used throughout, utilizing computer graphics as the vehicle for solidifying basic OO concepts, studying the implementation of event-driven systems, and for developing a thorough understanding of advanced OO concepts such as inheritance and polymorphism. Topics include fundamental concepts of object-oriented programming, software design patterns, graphic devices, line and surface drawing, simple 2D and 3D representation, and use of User Interface components.

CSC 134.     Database Management Systems. 3 Units

Prerequisite(s): CSC 130.


Entity-Relationship (ER) model; relational model; relational database design by ER-to-relational mapping; design of applications using database technology; SQL; schema definition, constraints, and queries; relational algebra; data normalization; access methods such as indexing and hash structures; introduction to transaction processing.

CSC 135.     Computing Theory and Programming Languages. 3 Units

Prerequisite(s): CSC 28, CSC 35, CSC 130.


Introduction to computing theory with examples and applications. Automata and formal languages; regular expressions; deterministic and non-deterministic finite automata; pumping lemma for regular languages; push-down automata and context-free grammars; language recognition; parsing techniques including recursive descent; Turing machines; computable and non-computable functions. Design and implementation of selected features of programming languages. Functional and logic programming paradigms.

CSC 136.     Programming Languages. 3 Units

Prerequisite(s): CSC 35, CSC 132.


Evolution and characteristics of programming languages. Scripting, procedural, object-oriented, functional and logic paradigms. Language specification; interpreters and compilers; virtual machines; parsing techniques. Design and implementation of selected features of programming languages. Programming languages used in the development of intelligent systems, with introduction to Artificial Intelligence. Trends in programming languages.

CSC 137.     Computer Organization. 3 Units

Prerequisite(s): CSC 28, CSC 35, CSC 130


Introduction to computer organization and architecture. Combinational devices, sequential and synchronized circuits, memory organization, CPU architecture and organization, bus structures, input/output, interrupts, DMA, memory hierarchy, introduction to instruction level parallelism, multithreading, and multiprocessing. Exposure to hardware security issues.

CSC 138.     Computer Networks and Internets. 3 Units

Prerequisite(s): CSC 35, CSC 60, CSC 130.


Overview of the fundamentals of computer networks and connections between networks, from the physical layer up through peer-to-peer communications at the application level. Lower layer characteristics including serial vs. parallel, capacity issues, high-speed connections, LAN framing and error handling. LAN vs. WAN characteristics, network architecture and the ISO network model. Internetworking components including LANs, repeaters, routers, bridges, and gateways. Internet addresses, TCP/IP, and the Domain Name System. Common Internet client/server application protocols including SMTP and FTP. Client/Server programming involving sockets. World Wide Web characteristics including CGI and HTTP protocol, Web pages, Web browsers, Web servers, and Applets. Introduction to advanced Web issues such as Web security, search engine operations, and Web database operations. Cross Listed: CPE 138; only one may be counted for credit.

CSC 139.     Operating System Principles. 3 Units

Prerequisite(s): CSC 60, CSC 137; or equivalents.


Contemporary operating system organization and structure. Topics include: process and thread, concurrency, scheduling, interprocess communication and synchronization, deadlock, real and virtual memory management, device management, file systems, network and distributed operating systems, security and protection.

CSC 140.     Advanced Algorithm Design and Analysis. 3 Units

Prerequisite(s): CSC 130.


Algorithm design using dynamic programming, randomization and greedy methods. Analysis using recurrence relations and amortization. String and network-flow algorithms. NP-completeness, reductions, and approximation algorithms. Review of divide-and-conquer design and asymptotic notation.

CSC 142.     Advanced Computer Organization. 3 Units

Prerequisite(s): CSC 137 or CPE 166 and CPE 185.


Design and performance issues of computers. Instruction set architecture, computer arithmetic, processor design, survey of contemporary architectures, interfacing I/O devices, hierarchal memory design and analysis, parallelism and multiprocessing, distributed systems, techniques for enhancing performance, and an introduction to EDA tools for design and verification of computers. Design and simulation of a microcomputer in an HDL.

Note: Open to students with full CSC or CPE major standing only. Cross Listed: CPE 142; only one may be counted for credit.

CSC 148.     Modeling and Experimental Design. 3 Units

Prerequisite(s): MATH 26B or MATH 31, STAT 50 or ENGR 115, and proficiency in a programming language.


Modeling and simulation techniques; Monte Carlo methods; queuing theory; model formulation, data collection and analysis, experimental design; model verification and validation.

CSC 151.     Compiler Construction. 3 Units

Prerequisite(s): CSC 135


Practical approach to compiler design and implementation. Organization of a compiler, algorithms for lexical, syntactic and semantic analysis, recursive descent and/or LALR parsing, organization of symbol tables, error detection and recovery, object code generation. Modular design will be emphasized.

CSC 152.     Cryptography. 3 Units

Prerequisite(s): CSC 60, CSC 130; and STAT 50 or ENGR 115


Introduction to design and analysis of cryptographic systems. Symmetric cryptography: Block ciphers and secure hash functions. Asymmetric cryptography: Key exchange and public-key systems. Authentication and encryption in an adversarial model. Simple cryptanalysis. Protocol design and analysis.

CSC 153.     Computer Forensics Principles and Practices. 3 Units

Prerequisite(s): CSC 138 or CPE 138.


Fundamentals of computer forensics, cyber-crime scene analysis and electronic discovery. Technical and formal methodology for conducting security incident investigations; file systems and storage analysis, data hiding techniques, network forensics; projects involving using, understanding, and designing digital forensics tools; anti-forensics; legal issues and standards.

CSC 154.     Computer System Attacks and Countermeasures. 3 Units

Prerequisite(s): CSC 138 or CPE 138.


Introduction to network and computer security with a focus on how intruders gain access to systems, how they escalate privileges, and what steps can be taken to secure a system against such attacks. Topics include: Perimeter defenses, intrusion detection systems, social engineering, distributed denial of service attacks, buffer overflows, race conditions, trojans, and viruses.

CSC 155.     Advanced Computer Graphics. 3 Units

Prerequisite(s): CSC 133.


Modeling, viewing, and rendering techniques in 3D computer graphics systems. Topics include modeling systems and data structures; polygonal and parametric surface representation; transformations, windowing, clipping and projections in 3D; hidden surface removal algorithms; techniques for realism such as shading, shadows, highlights, and texture; fractals and procedural models; introduction to animation; hardware support for computer graphics; and the application of graphics principles to virtual reality systems and 3D games.

CSC 159.     Operating System Pragmatics. 3 Units

Prerequisite(s): CSC 139.


Application of operating system principles to the design and implementation of a multitasking operating system. Students will write an operating system for a computer platform. Topics include: scheduling of processes, control and allocation of computer resources, and user interfacing. Cross Listed: CPE 159; only one may be counted for credit.

CSC 165.     Computer Game Architecture and Implementation. 3 Units

Prerequisite(s): CSC 130; CSC 133; MATH 26A or MATH 30; PHYS 5A or PHYS 11A.


Architecture and implementation of computer game systems. Topics include game engine architecture; screen management and rendering control; geometric models; algorithms and data structures for spatial partitioning, occlusion, and collision detection; real-time interactive 3D graphics and animation techniques; behavioral control for autonomous characters; simulation of physical phenomena; sound and music in games; optimization techniques; multi-player games and networking; game development tools and environments. Substantial programming and project work.

CSC 170.     Software Requirements and Specification. 3 Units

Prerequisite(s): CSC 131.


Analysis and specification of functional and non-functional requirements for real-time and non-real-time software systems in the context of a software development lifecycle. Determining customer and user software requirements and ensuring that specifications are correct, complete, and testable. Includes modeling techniques, methods for representing real-time requirements, and the use of Computer-Aided Software Engineering (CASE) tools to illustrate analysis concepts.

CSC 171.     Software Engineering Project Management. 3 Units

Prerequisite(s): CSC 131.


Fundamental issues in the management and economics of a software engineering project in the context of the software development lifecycle. Topics include: techniques for project planning (budgeting and scheduling), controlling (including quality assurance and configuration management), organizing, staffing, and directing a software project (leadership and motivation); and contemporary issues in management.

CSC 174.     Advanced Database Management Systems. 3 Units

Prerequisite(s): CSC 131, CSC 134.


Enhanced Entity-Relationship (EER) modeling; relational database design based on EER; SQL views; integrity constraints and triggers; stored procedures and functions; database programming techniques; query processing and optimization; transactions concurrency and recovery techniques; relational decomposition and normalization algorithms; database schema and data security.

CSC 176.     Database Architecture and Optimization. 3 Units

Prerequisite(s): CSC 174.


Advanced object-relational systems, advanced catalog systems, security mechanisms, distributed database processing, advanced schema design-partitioning, introduction to data warehousing and data mining, materialized views, Internet technologies, parallel query processing, system utilities, database tuning, DBA tools and techniques.

CSC 177.     Data Warehousing and Data Mining. 3 Units

Prerequisite(s): CSC 134 and STAT 50 or ENGR 115.


Data warehousing involves data preprocessing, data integration, and providing on-line analytical processing (OLAP) tools for the interactive analysis of multidimensional data, which facilitates effective data mining. Data mining is the automated extraction of hidden predictive information from databases. Data mining applies concepts and techniques from the fields of databases, machine learning, algorithms, information retrieval, and statistics. Topics include: data warehousing, association analysis, classification, clustering, numeric prediction, and selected advanced data mining topics.

CSC 179.     Software Testing and Quality Assurance. 3 Units

Prerequisite(s): CSC 131.


Testing, verification, validation, and control of real-time and non-real-time software systems in the context of a software development lifecycle. Topics include: unit, integration and system testing; verification and validation (V&V), quality assurance, metrics, and configuration management.

CSC 180.     Intelligent Systems. 3 Units

Prerequisite(s): MATH 26B or MATH 31; STAT 50 or ENGR 115; CSC 130 and CSC 135.


Theory and implementation of a variety of techniques used to simulate intelligent behavior. Expert systems, fuzzy logic, neural networks, evolutionary computation, and two-player game-tree search will be covered in depth. Knowledge representation, pattern recognition, hybrid approaches, and handling uncertainty will also be discussed.

CSC 190.     Senior Project: Part I. 2 Units

Prerequisite(s): Senior status, completion of CSC 130, CSC 131 and four additional 3-unit CSC upper-division courses that fulfill the major requirements (excluding CSC 192-195, 198, 199), and (GWAR Certification before Fall 09, or WPJ score of 70+, or at least a C- in ENGL 109M/W).


First of a two-course sequence in which student teams undertake a project to develop and deliver a software product. Approved project sponsors must be from industry, government, a non-profit organization, or other area. Teams apply software engineering principles in the preparation of a software proposal, a project management plan and a software requirements specification. All technical work is published using guidelines modeled after IEEE documentation standards. Oral and written reports are required. Lecture one hour, laboratory three hours.

CSC 191.     Senior Project-Part II. 2 Units

Prerequisite(s): CSC 190.


Continuation of the group project begun in CSC 190. Teams apply software engineering principles to the design, implementation and testing of their software product. All technical work is published using guidelines modeled after IEEE documentation standards along with an appropriate user manual. Oral and written reports are required. Senior project is completed with the successful delivery, installation and demonstration of the software along with all approved documentation. Lecture one hour, laboratory three hours.

CSC 192.     Career Planning. 1 Unit

Prerequisite(s): CSC 130 and three additional upper-division courses that fulfill major requirements with a C- grade or better (excluding CSC 190-195, CSC 198, and CSC 199).


Designed to help students learn more about the labor market and opportunities in the Computer Science field. Students will examine their interests, consider their goals, and learn how to conduct an effective proactive job search. Strategies for long term career growth will be identified.

Credit/No Credit

CSC 194.     Computer Science Seminar. 1 Unit

Prerequisite(s): Upper division or graduate status in CSC.


Series of weekly seminars on Computer Science topics. These topics cover subjects not normally taught in the course of a school year and they range from the very theoretical in Computer Science through applications to presentations by industry on working conditions, real world environment and job opportunities.

Note: May be repeated for credit.

CSC 195.     Fieldwork in Computer Science. 1 - 4 Units

Prerequisite(s): Instructor permission.


Directed observations and work experience in computer science with firms in the industry or public agencies. Supervision is provided by the instructional staff and the cooperating agencies.

Note: Faculty approval required. May be repeated for credit.

Credit/No Credit

CSC 195A.     Professional Practice. 1 - 12 Units

Prerequisite(s): Instructor permission.


Supervised employment in a professional engineering or computer science environment. Placement arranged through the Career Center.

Note: Requires satisfactory completion of the work assignment and a written report.

Credit/No Credit

CSC 195B.     Professional Practice. 1 - 12 Units

Prerequisite(s): Instructor permission.


Supervised employment in a professional engineering or computer science environment. Placement arranged through the Career Center.

Note: Requires satisfactory completion of the work assignment and a written report.

Credit/No Credit

CSC 196U.     Parallel Programming with GPUs. 3 Units

Prerequisite(s): CSC 60, CSC 130, CSC 137; and either MATH 30 or MATH 26A


Parallel programming with emphasis on developing Graphics Processing Unit (GPU) computing applications. GPU architecture and programming model, mapping computations to parallel hardware, parallel computation patterns, parallel programming optimization techniques, application case studies.

CSC 198.     Co-Curricular Activities in Computer Science. 1 - 3 Units


Students will serve in leadership roles in computer science activities, provide tutoring or technical assistance in labs, assist instructors in grading coursework, or assist in other activities related to the subject matter and concerns of the department.

Credit/No Credit

CSC 199.     Special Problems. 1 - 3 Units


Individual projects or directed reading in specified topics in computer science.

Note: Open only to students who appear competent to carry on individual work; approval of faculty supervisor and advisor required. May be repeated for credit.

Credit/No Credit

CSC 201.     Programming Language Principles. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Notations for the specification of programming language syntax and semantics; attribute, translational, operational, axiomatic, algebraic, denotational, and action semantics. Applications of programming language syntax and programming language semantics. Use of meta languages to generate executable language definitions for language implementation, program transformation, program property analysis, and rapid software prototyping. Principles of logic, functional, and object-oriented programming languages.

CSC 204.     Data Models for Database Management Systems. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Database management system (DBMS) architecture; database file organizations and access methods; the relational model and relational algebra; SQL query language; introduction to query optimization; concurrent transaction processing and backup and recovery; applications using embedded SQL, object types, and stored procedures; database analysis and design notations: EER, UML, and XML; web database environments; database security and administration throughout course.

Note: Not intended for students who have completed CSC 174.

CSC 205.     Computer Systems Structure. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Software Engineering or Computer Engineering.


Overview of computer systems organization and design. Concepts of instruction set architecture, interactions of hardware-software interface, principles of performance analysis, processor design, instruction level parallelism, survey of contemporary architectures, hierarchical memory design and analysis, interfacing I/O devices, parallel processing and multiprocessing, and introduction to EDA tools and methodologies for computer systems design and verification.

CSC 206.     Algorithms And Paradigms. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Design and analysis of algorithms. Classical design paradigms including greedy, divide-and-conquer, dynamic programming, and backtracking algorithmic methods. Alternative paradigms of computing including parallel and numerical approaches. Theoretical limits of computation. Selected additional topics such as genetic, approximation, and probabilistic algorithms.

CSC 209.     Research Methodology. 1 Unit

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering, completion of at least 12 units of 200-level courses in Computer Science, and (GWAR Certification before Fall 09, or WPJ score of 70+, or at least a C- in ENGL 109M/W).


Research methodology, problem formulation, and problem solving. Orientation to the requirements for Master's Thesis or Project. Presentations on various research topics.

Credit/No Credit

CSC 212.     Bioinformatics: Data Integration and Algorithms. 3 Units

Prerequisite(s): CSC 130, STAT 50, and graduate status; BIO 10 recommended.


The application of information technology and computer science to biological problems, in particular to biomedical science issues involving genetic sequences. Algorithms and their applications to DNA sequencing and protein database search; tools and techniques for data integration to transform genetic sequencing data into comprehensible information to study biological processes.

CSC 214.     Knowledge-Based Systems. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Historical perspective of knowledge-based systems and their relationship to artificial intelligence. Concepts of knowledge representation and automated reasoning. Survey of expert systems in a variety of applications in engineering and other fields. Implementation of expert systems and expert system shells.

CSC 215.     Artificial Intelligence. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Software Engineering or Computer Engineering.


Nature of intelligence and possibility of its realization on digital computers via algorithmic and heuristic programming methods. Knowledge representation. Search procedures. Problem-solving paradigms and simulation of cognitive processes. Machine learning. Natural language understanding, expert systems, and knowledge engineering. Image understanding. Future of artificial intelligence and limits of machine intelligence.

CSC 219.     Machine Learning. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Software Engineering or Computer Engineering.


Introduction to major paradigms and methods of machine learning. Inductive learning, explanation-based learning, classifier systems and genetic algorithms, analogical reasoning, case-based learning, connectionist learning, data driven approaches to empirical discovery, and basis of learning theory. Focus is on representative systems that have been built.

CSC 230.     Software System Engineering. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering; or Computer Engineering and CSC 131.


Integration of managerial and technical activities in system engineering that control the cost, schedule, and technical achievement of the developing software system. Application of the principles, activities, tasks and procedures of system engineering and software engineering to the development of a software system.

CSC 231.     Software Engineering Metrics. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Software quality and quantity metrics in software engineering. Measurement theory and metrics. Metrics include management metrics, indirect and direct metrics and predictive metrics. Uses of metrics include software cost and schedule estimates, model calibration, and software productivity measurements. Metrics techniques include the Goal-Question-Metric approach, COCOMO, and function point analysis.

CSC 232.     Software Requirements Analysis and Design. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Software engineering requirements including elicitation, analysis, specification, verification and management. Emphasizes IEEE software engineering requirements and standards and the concept of operations (ConOps) document. Techniques include structured analysis, use cases and object-oriented analysis.

CSC 233.     Advanced Software Engineering Project Management. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Advanced methods and procedures for managing a software development project. Includes project planning, scheduling, and cost estimation, project organizational types, staffing and training considerations, leading and motivating computer personnel, and methods for measuring and controlling a project. Emphasizes IEEE software engineering management standards and keys to project success.

CSC 234.     Software Verification and Validation. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering; or Computer Engineering and CSC 131.


Verification and validation (V & V) techniques to identify and resolve software problems and high-risk issues early in the software lifecycle. Application of V & V to all phases of the lifecycle process. Includes planning and reporting on the V & V effort. Topics also include software quality assurance and software testing.

CSC 235.     Software Architecture. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Software architecture styles. Concepts and activities for software architecture design. Notations, models, and specification languages for software architecture design. Engineering discipline and guidance for software architecture design. Techniques, methods, tools for designing, building, analyzing, and evaluating software architecture. Object-oriented approach for software architecture design. Architecture-based software development. Management of software architecture design. Reuse of software architecture design.

CSC 236.     Formal Methods in Secure Software Engineering. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Basic concepts of formal methods in secure software engineering; formal methods based software development models and methodologies; formal methods for software system specification, modeling, analysis, verification, information assurance and security; systems and tools for the application of formal methods in secure software engineering; advances of formal methods in secure software engineering.

CSC 237.     Microprocessor Systems Architecture. 3 Units

Prerequisite(s): CSC 205.


Microprocessor/microcomputer architecture and hardware/software interfacing design. RISC v. CISC architecture in-depth, case studies of several popular commercial advanced 32-bit microprocessors. Microcomputer firmware architecture is discussed and illustrated with detailed examples. Term project in which students specify, design and build the hardware and firmware of a computer system.

CSC 238.     Human-Computer Interface Design. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Issues involved in design of interaction between people and computers. Insight and experience in key issues of HCI design. Emphasis on identifying issues and tradeoffs in interaction design. Development and evaluation of alternative solutions to design problems.

CSC 239.     Advanced Operating Systems Principles and Design. 3 Units

Prerequisite(s): CSC 205.


Advanced concepts of concurrent processes, concurrent programming and operating systems. Virtual memory management systems, deadlock, file systems, operating system performance measurement and evaluation.

CSC 242.     Computer-Aided Systems Design and Verification. 3 Units

Prerequisite(s): CSC 205 or CSC/EEE 273.


Design and verification methodology using hardware description and verification languages (HDVLs). Advances in IC chip design; introduction to HDVLs such as System Verilog; HDVL language basics including data types, arrays, structures, unions, procedural blocks, tasks, functions, and interface concepts; design hierarchy; verification planning and productivity; verification infrastructure; guidelines for efficient verification of large designs; assertion-based verification; comprehensive computer-related design projects.

CSC 244.     Database System Design. 3 Units

Prerequisite(s): CSC 174 or CSC 204.


Topics in the design and implementation of database management systems. Database system concepts and architectures; query compiler, query processing algorithms, logical and physical query plans, query optimization; recovery, concurrency control; transaction management in centralized database management systems and distributed database management systems. Also exploration of current research directions, issues, and results related to databases and data management.

CSC 245.     Performance Modeling and Evaluation. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science or Software Engineering.


Performance and cost measures; software and hardware performance monitors; data reduction and evaluation; analytic and simulation models of hardware and program behavior; performance-cost trade-offs and resource allocation.

CSC 250.     Computer Security. 3 Units

Prerequisite(s): Fully classified graduate standing in Computer Science, Computer Engineering, or Software Engineering.


Principles and technologies behind computer security. Introduction to encryption and decryption; security mechanisms in computer programs, operating systems, databases, and networks; administration of computer security, and legal and ethical issues.

CSC 251.     Principles of Compiler Design. 3 Units

Prerequisite(s): CSC 151 or CSC 201.


Programming language translation, lexical analysis, syntax analysis including LR, LALR, and predictive techniques. Semantic analysis including semantic specification. Code generation and optimization including control and data flow analysis. Storage management. Error detection and recovery.

CSC 252.     Cryptography Theory and Practice. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Computer Engineering, or Software Engineering.


Introduction to design and analysis of cryptographic systems. Symmetric cryptography: block ciphers and secure hash functions. Asymmetric cryptography: key exchange and public-key systems. Authentication and encryption in an adversarial model. Simple cryptanalysis. Protocol design and analysis.

CSC 253.     Computer Forensics. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Computer Engineering, or Software Engineering.


Structured security incident investigations internal and external; emphasis on analysis of electronic evidence and proper audit; utilization of scientific aids in obtaining information from computing devices; legal electronic evidence.

CSC 254.     Network Security. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Computer Engineering, or Software Engineering.


In-depth study of network security problems and discussion of potential solutions. Topics include: network vulnerabilities and attacks, secure communication, Internet security protocols and tools to defend against network attacks, network intrusion detection, and wireless network security. Survey and demonstration of software tools used for network security.

CSC 255.     Computer Networks. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Software Engineering, or a Computer Engineering.


Computer networking fundamentals with emphasis on higher level protocols and functions. Network design considerations, software design and layering concepts, interface design, routing and congestion control algorithms, internetworking, transport protocol design, and end-to-end communication, session and application protocols. Specific examples of commercial and international standards.

CSC 258.     Distributed Systems. 3 Units

Prerequisite(s): CSC 204 and fully classified graduate status in Computer Science, Software Engineering, or Computer Engineering.


Distributed system architectures, distributed object model, component-based design, time and global states, coordination and agreement, distributed transactions and concurrency control, replication, security, distributed multimedia systems, message passing and distributed shared memory, Web services and Service-Oriented Architecture (SOA), Grid computing. Emphasis on scalability, manageability, security, and dependability of distributed systems.

CSC 273.     Hierarchical Digital Design Methodology. 3 Units

Prerequisite(s): CSC 205, CPE 64, or equivalent.


Advanced logic modeling, simulation, and synthesis techniques. Topics include modeling, simulation, and synthesis techniques, using Hardware Description Language (HDL's), Register Transfer Level (RTL) representation, high-level functional partitioning, functional verification and testing, computer-aided logic synthesis, logical verification and testing, timing and delay analysis, automated place and route process, and design with Application Specific Integrated Circuits (ASICs) and programmable logic. Cross Listed: EEE 273; only one may be counted for credit.

CSC 275.     Advanced Data Communication Systems. 3 Units

Prerequisite(s): Fully classified graduate status in Computer Science, Software Engineering, or Computer Engineering.


Fundamental concepts, principles and issues of data communication systems. The ISO/OSI reference model is used as a vehicle for discussion and emphasizes the lower layer of the model. Specific topics include: motivation and objectives, layered architectures, physical layer principles and protocols, data link and medium access control principles and protocols, circuit, packet and cell switching, local area network design principles and performance comparisons, high speed networking, introduction to wide area network architectures. Typical examples and standards are cited for point-to-point, satellite, packet radio and local area networks.

CSC 280.     Advanced Computer Architecture. 3 Units

Prerequisite(s): CSC 205 and fully classified graduate status in Computer Science or Software Engineering.


Introduction to parallel architecture covering computer classification schemes, fine and coarse grain parallelism, processor interconnections, and performance issues of multiprocessor systems. Includes parallel and pipelined instruction execution, structure of multiprocessor systems, memory hierarchy and coherency in shared memory systems, programming issues of multiprocessor systems, arithmetic pipeline design, and design for testability. Cross Listed: EEE 280; only one may be counted for credit.

CSC 288.     Special Topics in Computer Science - Software Engineering. 3 Units


Contemporary topics in computer science will be offered as needed. Topics offered:

CSC 295.     Fieldwork. 1 - 3 Units


Directed observations and work experience in computer science with firms in the industry or public agencies. Supervision is provided by the instructional staff and the cooperating agencies.

Note: Faculty approval required. May be repeated for credit.

Credit/No Credit

CSC 299.     Special Problems. 1 - 3 Units


Any properly qualified student who wishes to pursue a problem of his own choice may do so if the proposed subject is acceptable to the member of the staff with whom he/she works and to his/her advisor.

Note: May be repeated for credit.

Credit/No Credit

CSC 500.     Master's Thesis. 1 - 5 Units

Prerequisite(s): CSC 209; advanced to candidacy.


Completion of a thesis approved for the Master's degree.

Note: May be repeated for credit.

CSC 502.     Master's Project. 1 - 2 Units

Prerequisite(s): CSC 209; advanced to candidacy.


Completion of a project approved for the Master's degree.