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 115, or consent of instructor.

115 Programming I (4) / Fall, Spring

Lecture, 3 hours; laboratory, 3 hours. An overview of computer organization; arithmetic and logical expressions, decision and iteration, simple I/O; subprograms; principles of good programming style, readability, documentation, structured programming concepts; top-down design and refinements; techniques of debugging and testing. Use of the above concepts will be implemented in a standard high-level programming language. Satisfies GE, category B3 (Specific Emphasis in Natural Sciences).
Prerequisite: GE Math eligibility or consent of instructor. 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 110 and 115, 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 Introductury 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, CS 115, 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 215 or consent of instructor. This course is currently taught using C++.

340 Computer Security (3)

Current methods for increasing security, protecting privacy and guaranteeing degrees of confidentiality of computer records; ensuring computer installation safety; protecting software products; preventing and dealing with crime; value systems, ethics and human factors affecting use and misuse of computers. Discussion of recent technical, legal and sociopolitical issues influencing computer security problems.
Prerequisite: CS 215, 250 and 251, 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, 250 and CS 251, 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 250 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 and MATH 342, 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.