Course Descriptions
Classes are offered in the semesters indicated. If not indicated, check the current course offerings.
101 Introduction to Computers and Computing (3) / Fall, Spring
Lecture, 2 hours; laboratory, 2 hours. Topics include computer types, history of computing, computer organizations, survey of computer languages, program development, computer applications, networking, and computers in society. Weekly hands-on experience with personal computers. Not applicable to the CS major. Recommended for all students. Satisfies GE, category B3 (Specific Emphasis in Natural Sciences).
110 Introduction to Unix (1) / Fall, Spring
Laboratory, 3 hours. An introduction to the use of Unix as a programming
environment. Communicating with a Unix host, shells and shell commands,
files and directories, X Window System, jobs and processes, scripting,
programming utilities (compiler, linker, debugger, make, hex dump, etc.).
Prerequisite: GE Math eligibility and previous or concurrent
enrollment in CS 215, or consent of instructor.
115 Programming I (4) / Fall, Spring
Lecture, 3 hours; laboratory, 3 hours. An overview of computer
organization; arithmetic and logical expressions, decision and
iteration, simple I/O; subprograms; principles of good
programming style, readability, documentation, structured programming
concepts; top-down design and refinements; techniques of debugging and
testing. Use of the above concepts will be implemented in a standard
high-level programming language. Satisfies GE, category B3 (Specific
Emphasis in Natural Sciences).
Prerequisite: GE Math eligibility or consent of instructor.
This course is currently taught using C++.
115W Programming I Workshop (1) / Fall, Spring
A workshop designed to be taken with CS 115. Exploration of programming con-
cepts through problem solving in a group setting.
Corequisite: CS 115.
175 Introduction to Computer Graphics (3)
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.
Not applicable to the CS major.
Prerequisite: consent of instructor.
215 Programming II (4)/ Fall, Spring
Lecture, 3 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 115 and previous or concurrent enrollment in CS 110, or consent of instructor.
This course is currently taught using C++.
242 Discrete Structures for Computer Science (4) / Fall, Spring
Lecture, 4 hours. Coverage of fundamental mathematical concepts blended with
their applications in computer science. Topics to include sets, functions and
relations, Boolean algebra, normal forms, Karnaugh maps and other minimization
techniques, predicate logic, formal and informal proof techniques, relational
algebra, basic counting techniques, recurrence relations, introduction to
graph theory with applications to computer science.
Prerequisite: CS 115 and Math 161, or consent of instructor.
252 Introduction to Computer Organization (4) / Fall, Spring
Lecture, 3 hours; laboratory, 3 hours. This course looks at the interface
between computer hardware and software by introducing computer architecture
and low-level programming. Topics to be covered include: data representations,
digital logic, combinational and sequential circuits, computer system
organization from the machine language point of view, and assembly language
implementation of high-level constructs.
Prerequisite: CS 110, and CS 242 or consent of instructor.
285 Selected Topics in Computer Science (1-4)
This lower division course may be repeated with different subjcet
matter. Content will be indicated by the specific topic.
Not applicable to the CS major.
Prerequisite: as indicated in the specific topic
description or consent of instructor.
315 Data Structures (4) / Fall, Spring
Lecture, 3 hours; laboratory, 3 hours.
This course introduces the concept of the organization of data into different structures to support the efficient implementation of computer algorithms. The emphasis of the course is on the internal representation of the elementary and intermediate data structures, their time and space requirements, and their applications. A second component of the course is the study of more advanced features of object oriented programming.
Prerequisite: CS 110, CS 215, and CS 242 or consent of instructor.
This course is currently taught using C++.
340 Computer Security (3)
Lecture, 3 hours; laboratory, 2 hours.
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.
Prerequisite: CS 215 and CS 252, or consent of instructor.
349 Problem Solving in a Team Environment (1)
Laboratory, 2 hours. This course focuses on problem solving and program
development in a team programming environment. Topics include techniques for
problem analysis and algorithm design, rapid implementation and pair program-
ming methods, use of standard container classes and library functions.
Different types of problems will be selected each semester. May be repeated
for credit. A maximum of 3 units can be applied to the Computer Science major.
SSU students taking this course participate in regional and national
programming competitions.
Prerequisite: CS 315 or consent of instructor.
351 Computer Architecture (4) / Fall
Lecture, 4 hours. Instruction set design; stages of instruction execution, data and control path design; CISC, RISC, stack architectures; pipelining; program optimization techniques, memory hierarchy: cache models and design issues, virtual memory and secondary storage; I/O interfacing; advanced topics to include some of the following: parallel architectures, DSP or other special purpose architecture, FPGA, reconfigurable architecture, asynchronous circuit design.
Prerequisite: CS 215 and 252, or consent of instructor.
355 Database Management Systems Design (4) / Spring
Lecture 4 hours. This course focuses on the theoretical as well as the
practical aspects of modern database systems. Topics include the study of
the entity-relationship (E/R) model, relational algebra, data normalization,
XML as a semi-structured data model, data integrity, and database
administration. Current tools and technology are used to create and
manipulate sample databases.
Prerequisite: CS 215 or consent of instructor.
360 Object Oriented Programming (3)
Lecture, 2 hours; laboratory, 3 hours.
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.
Prerequisite: CS 215, or consent of instructor.
This course is currently taught using Java and C++.
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.
Prerequisite: CS 215 and CS 252, or
consent of instructor.
370 Software Design and Development (4) / Spring
Lecture 4 hours. This course covers 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 are sample topics. Software metrics and
tools for component based software development are covered.
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.
Prerequisite: 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.
Prerequisite: upper-division standing with consent
of a CS advisor and consent of instructor.
390 Computer Science Colloquium (1) / Fall, Spring
Series of lectures on current developments in computer science. May be repeated for credit; a maximum of 3 units can be applied to the CS major; students will be required to attend all presentations, keep a journal, and do a research project based on one or more of the 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.
Prerequisite: CS 115 and consent of
instructor.
415 Algorithm Analysis (4) / Spring
Lecture 4 hours. A study of the design and analysis of algorithms with an emphasis on execution and storage efficiency. Topics will include algorithms for searching and sorting, hashing, exploring graphs, integer and polynomial arithmetic. Foundations in recurrence relations, combinatorics, probability, and graph theory as used in algorithm analysis are covered. Standard design techniques such as divide-and-conquer, greedy method, dynamic programming, heuristics and probabilistic algorithms along with NP-completeness and approximation algorithms are included.
Prerequisite: CS 315 or consent of instructor.
450 Operating Systems (4) / Fall
Lecture, 4 hours. Course covers the fundamental concepts of operating system design and implementation. Topics will include: multiprogramming and timesharing systems, concurrent programming, scheduling policies, resource management, security, virtual machine implementations, I/O subsystems and drivers, and systems programming fundamentals.
Prerequisite: CS 252 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 252 and 315, or consent of instructor.
454 Theory of Computation (4) / Fall
Lecture 4 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.
Prerequisite: CS 315 or consent of instructor.
460 Programming Languages (4) / Fall
Lecture, 4 hours.
A survey of the syntactic, semantic and implementation features of
functional, procedural, object-oriented, logic and concurrent
programming languages.
Prerequisite: CS 252 and 315, or consent
of instructor.
465 Data Communications (3)
The ISO reference model, theoretical basis for data communications,
data transmission theory and practice, telephone systems, protocols,
networks, internetworks with examples.
Prerequisite: CS 351, or consent of instructor.
470 Advanced Software Design Project (3) / Spring
Lecture, 3 hours. This course is a project based course designed to provide
a "real world, team oriented" capstone experience for computer science majors.
Coursework will be organized around large programming projects. The content
of the projects may vary depending on the interests of the instructor
and may include industry, government, non-profit organization, or
other affiliations.
Prerequisite: CS 315, CS 370, and senior standing in the major, or
consent of instructor.
480 Artificial Intelligence (3)
A survey of techniques that simulate human intelligence.
Topics may include: pattern recognition, general problem solving,
adversarial game-tree search, decision-making, expert systems,
neural networks, fuzzy logic, and genetic algorithms.
Prerequisite: CS 315 or consent of instructor.
495 Special Studies (1-4)
This course is intended for students who are doing advanced work in an
area of computer science (e.g., a senior project).
Prerequisite: an
upper-division CS course in the area of interest or 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: a 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.







