May 15, 2024  
2019-2020 General Catalog 
    
2019-2020 General Catalog [ARCHIVED CATALOG]

Course Descriptions


 

Computer Science

  
  • CS 101 - Introduction to Computers and Computing


    Unit(s): 3 Lecture: 2 hours Laboratory: 2 hours
    This course is an introduction to the concepts, techniques, uses, applications, and terminology of computers, computing, and networking. Emphasis is on the possibilities and limitations of computers and computing in a wide range of personal, commercial, and organizational activities. Topics include computer types, history of computing, computer organization and operation, computer languages, program development, computer applications (word processing, database, graphics, spreadsheets, etc.), basic networking, and computers in society. Weekly hands-on experience with a variety of operating systems, applications, and computer programming. Satisfies GE Area B3. Not applicable to the CS major. Recommended for all students.

    Grading: OPT
  
  • CS 115 - Programming I


    Unit(s): 4 Lecture: 3 hours Laboratory: 3 hours
    This course gives 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 Area B3.

    Grading: OPT
    Prerequisite(s): GE math and English eligibility, or consent of instructor.
  
  • CS 115W - Programming I Workshop


    Unit(s): 1
    A workshop designed to be taken with CS 115. Exploration of programming concepts through problem solving in a group setting.

    Grading: CNC
    Co-requisite(s): CS 115.
  
  • CS 210 - Introduction to Unix


    Unit(s): 1 Laboratory: 3 hours
    This course is an introduction to the use of Linux/Unix as a programming environment. Communicating with a Linux host, shells and shell commands, files and directories, Gnome desktop, jobs and processes, scripting, programming utilities (compiler, linker, debugger, make, hex dump, etc.).

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 115 and previous or concurrent enrollment in CS 215, or consent of instructor.
  
  • CS 215 - Programming II


    Unit(s): 4 Lecture: 3 hours Laboratory: 3 hours
    This course is the sequel to CS 115. Topics include: 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, and error handling techniques.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 115 and previous or concurrent enrollment in CS 210, or consent of instructor.
  
  • CS 242 - Discrete Structures for Computer Science


    Unit(s): 4 Lecture: 4 hours
    This course covers fundamental mathematical concepts blended with their applications in Computer Science. Topics include: sets, functions and relations, Boolean algebra, normal forms., Karnaugh map and other minimization techniques, predicate logic, formal and informal proof techniques, relational algebra, basic counting techniques, recurrence relations, and an introduction to graph theory.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 115 and MATH 161, or consent of instructor.
  
  • CS 252 - Introduction to Computer Organization


    Unit(s): 4 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.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 and CS 242, or consent of instructor.
  
  • CS 285 - Selected Topics in Computer Science


    Unit(s): 1-4
    This lower-division Course may be repeated with different subject matter. Content will be indicated by the specific topic.

    Grading: OPT
    Prerequisite(s): as indicated in the specific topic description or consent of instructor.
  
  • CS 315 - Data Structures


    Unit(s): 4 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.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 210, CS 215, and CS 242, or consent of instructor.
  
  • CS 330 - Introduction to Game Programming


    Unit(s): 3 Lecture: 2 hours Laboratory: 2 hours
    This course is an introduction to the theory and practice of video game design and programming. Video games combine, in real-time, concepts in computer graphics, human-computer interaction, networking, artificial intelligence, computer aided instruction, computer architecture, and databases. This course introduces students to a variety of game engines and frameworks and explores artificially intelligent agents. Students will work as part of a team to create a complete description document for a computer game and implement a prototype of the game.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315 or instructor consent.
  
  • CS 340 - Computer Security and Malware


    Unit(s): 3 Lecture: 2 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, with an emphasis on malware.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 and CS 252, or consent of instructor.
  
  • CS 349 - Problem Solving in a Team Environment


    Unit(s): 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 programming methods, use of standard container classes and library functions. Different types of problems will be selected each semester. Students taking this course participate in regional and national programming competitions. May be repeated for credit. A maximum of 3 units can be applied to the Computer Science major.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315 or consent of instructor. SSU
  
  • CS 351 - Computer Architecture


    Unit(s): 4 Lecture: 4 hours
    This course is the sequel to CS 252 and includes the following topics: instruction set design; stages of instruction execution: data, and control path design; 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, and asynchronous circuit design.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 and CS 252, or consent of instructor.
  
  • CS 355 - Database Management Systems Design


    Unit(s): 4 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 technologies are used to create and manipulate sample databases.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 or consent of instructor.
  
  • CS 360 - Object-Oriented Programming


    Unit(s): 3 Lecture: 2 hours Laboratory: 3 hours
    Principles of object-oriented programming, including encapsulation, inheritance, polymorphism, and design patterns. 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.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315, or consent of instructor.
  
  • CS 365 - Computer Networking and the Internet


    Unit(s): 3 Lecture: 2 hours Laboratory: 3 hours
    This course introduces the theory and practice of computer networking, with coverage of key theories in data communication and how these theories relate to current practices and will drive future practices. Network hardware implementations of local area networks, wide area networks, telephone networks, and wireless networks are investigated. Network software implementations of switches and routers, peer-to-peer networking, and hosted applications are investigated with exercises in writing and debugging network protocols in the laboratory.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 and CS 252, or consent of instructor.
  
  • CS 370 - Software Design and Development


    Unit(s): 4 Lecture: 4 hours
    Techniques of software design and development. Software lifecycle, requirements, formal specification, metrics, design, functional and structural testing, rapid prototyping, complexity, version control, and team management. Software metrics, tools for component-based software development. Team-based, agile, and scrum methodologies emphasized.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 or consent of instructor.
  
  • CS 375 - Computer Graphics


    Unit(s): 3 Lecture: 2 hours Laboratory: 2 hours
    An introduction to computer graphics. Survey of the fundamental algorithms and methodologies, including, but not limited to, polygon fill, line-drawing, antialiasing, geometric transformations, viewing and clipping, spline representation, occlusion and visible surface detection, illumination, texturing, color models, rendering, shaders, animation, and emerging techniques.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 215 and MATH 161, or consent of instructor.
  
  • CS 380 - ETS Major Field Test


    Unit(s): 1
    The focus of this course is preparation for the Major Field Test in Computer Science. Students will review material in the basic knowledge areas of computer science including: discrete structures, programming, algorithms and complexity, systems, software engineering, and information management. The course will culminate with students taking the Major Field Test in Computer Science administered through Educational Testing Services. This course is intended for students whom have completed the majority of required coursework in the CS major and are within one semester of graduation.

    Grading: CNC
  
  • CS 385 - Selected Topics in Computer Science


    Unit(s): 1-4
    This Course may be repeated with different subject matter for credit in the CS major.

    Grading: OPT
    Prerequisite(s): upper-division standing with consent of a CS advisor and consent of instructor.
  
  • CS 386 - Selected Topics in CS with Lab


    Unit(s): 3 Lecture: 2 hours Laboratory: 3 hours
    This Course may be repeated with different subject matter for credit in the CS major.

    Grading: GRD
    Prerequisite(s): upper-division standing with consent of a CS advisor and consent of instructor.
  
  • CS 390 - Computer Science Colloquium


    Unit(s): 1
    Series of lectures on current developments in computer science. May be repeated for credit; a maximum of 3 units can be applied to the CS major; students will be required to attend all presentations, take notes, and research each of these presentations. Contact the department for specific information.

    Grading: CNC
  
  • CS 415 - Algorithm Analysis


    Unit(s): 4 Lecture: 4 hours
    This course provides a systematic approach to the design and analysis of algorithms with an emphasis on efficiency. Topics include algorithms for searching and sorting, hashing, exploring graphs, and 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.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315, or consent of instructor.
  
  • CS 425 - Parallel Computing


    Unit(s): 3 Lecture: 3 hours
    Overview of parallel patterns, programming models, and hardware. Topics include parallel performance analysis; types of parallelism; parallel decomposition of tasks; shared vs. distributed memory; synchronization; hands-on experience with multiple parallel programming models; and architectural support for parallelism.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 252 and CS 315, or consent of instructor.
  
  • CS 450 - Operating Systems


    Unit(s): 4 Lecture: 4 hours
    This course covers the fundamental concepts of operating system design and implementation; the study of problems, goals, and methods of concurrent programming; and the fundamentals of systems programming. Topics include resource-management, process and thread scheduling algorithms, inter-process communication, I/O subsystems and device-drivers, memory management including virtual memory, segmentation, and page-replacement policies. These topics will be covered in theory and in practice through the study of the source-code of a working operating system.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 252 and CS 315, or consent of instructor.
  
  • CS 452 - Compiler Design and Construction


    Unit(s): 3 Lecture: 2 hours Laboratory: 2 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.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315 and CS 252, or consent of instructor.
  
  • CS 454 - Theory of Computation


    Unit(s): 4 Lecture: 4 hours
    Overview of various kinds of computability, unsolvability, and decidability. The P versus NP problem. Abstract mathematical models of computing devices and language specification systems with focus on regular and context-free languages. Classification of computer-solvable problems.

    Grading: GRD
    Prerequisite(s): Grade of Cor better in CS 315, or consent of instructor.
  
  • CS 460 - Programming Languages


    Unit(s): 4 Lecture: 4 hours
    This course provides a survey of the syntactic, semantic, and implementation features of functional, procedural, object-oriented, logic, and concurrent programming languages.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 252 and CS 315, or consent of instructor.
  
  • CS 465 - Data Communications


    Unit(s): 3 Lecture: 2 hours Laboratory: 3 hours
    The ISO reference model, theoretical basis for data communications, data transmission theory and practice, telephone systems, protocols, networks, internetworks, with examples.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 365, or consent of instructor.
  
  • CS 470 - Advanced Software Design Project


    Unit(s): 3 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, nonprofit organization, or other affiliations.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315, CS 370, and senior-standing in the major; or consent of instructor.
  
  • CS 480 - Artificial Intelligence


    Unit(s): 3 Lecture: 3 hours
    This course is 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.

    Grading: GRD
    Prerequisite(s): Grade of C- or better in CS 315 or consent of instructor.
  
  • CS 495 - Special Studies


    Unit(s): 1-4
    This course is intended for students who are doing advanced work in an area of computer science (e.g., a senior project). May be repeated for credit.

    Grading: OPT
    Prerequisite(s): an upper-division CS course in the area of interest and consent of instructor.
  
  • CS 496 - Senior Research Project


    Unit(s): 3
    Students, under the direction of one or more faculty members, undertake a substantial research project that is based on multiple upper-division CS courses. The result of the research is presented by the students in one of the Colloquium (CS 390) meetings. Senior-standing and approved contract are required.

    Grading: GRD
  
  • CS 497 - Internship


    Unit(s): 1-3
    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. Course may be repeated for credit.

    Grading: CNC
    Prerequisite(s): student must be within 30 units of completion of the CS major.