Computer Science (CPSC)

CPSC 101  Essentials of Computer Science  (3 Units)  
Explore major topics in Computer Science - computing systems, data representation, hardware, programming topics, and important applications such as networks, robotics, databases, and gaming. (Formerly 3460:101)
  
CPSC 125  Descriptive Computer Science  (2 Units)  
Computer literacy: terminology; methods, media for data representation, storage; elements of a computing system; data organization. (Formerly 3460:125)
  
CPSC 126  Introduction to Visual Basic Programming  (3 Units)  
Windows GUI and Microsoft's Visual BASIC programming environment. Design of user interfaces, event-driven programming, basic control structures, simple variables, arrays, and sequential files. (Formerly 3460:126)
  
CPSC 200  Programming for Data Science  (4 Units)  

Prerequisite: MATH 143 or MATH 144 or MATH 145 or higher math with a grade of C- or better or placement in higher math. Introductory programming for data-intensive applications including data collection, pre-processing/cleansing, analysis, and visualization, using libraries for processing of large data sets. Designed as a first programming course for non-majors in the sciences (Formerly 3460:200)

  
CPSC 209  Computer Science I  (4 Units)  

Prerequisite: MATH 143 or MATH 144 or MATH 145 or MATH 149 or MATH 154 with a grade of C- or better or equivalent, or placement in higher math. Introduction to problem-solving methods and algorithms. Programming in a high-level language including how to design, code, debug and document programs with good programming style. (Formerly 3460:209)

  
CPSC 210  Computer Science II  (4 Units)  
Prerequisites: CPSC 209 and MATH 208 with a grade of C- or better. Dynamic memory allocation methods, elementary data structures, internal representations, and associated algorithms. Topics include lists, stacks, queues, trees, and sorting methods. (Formerly 3460:210)
  
CPSC 289  Selected Topics in Computer Science  (1-3 Units)  
Prerequisite: Permission. Selected topics of interest in computer science. (Formerly 3460:289)
  
CPSC 306  Assembly and System Programming  (4 Units)  
Prerequisite: Completion of CPSC 210 or equivalent with a grade of C- or better. Basic computer organization, digital logic, and data representation. Programming in assembly and C languages on a typical digital computer. (Formerly 3460:306)
  
CPSC 307  Internet Systems Programming  (3 Units)  
Prerequisite: Completion of CPSC 210 or equivalent with a grade of C- or better. Overview of current programming languages, tool and scripting technologies for the Internet and World Wide Web. (Formerly 3460:307)
  
CPSC 316  Data Structures  (3 Units)  
Prerequisites: CPSC 210 and [MATH 221 or MATH 210] with grades of C- or better. A continuation of topics in CPSC 210. Topics include: graphs and graph algorithms, external sorting, hashing, advanced tree and file structures. (Formerly 3460:316)
  
CPSC 389  Intermediate Topics in Computer Science  (1-3 Units)  
Prerequisite: Permission of instructor. Selected topics of interest in computer science at an intermediate level. (Formerly 3460:389)
  
CPSC 395  Internship in Computer Science  (1-12 Units)  
Prerequisites: Completion of CPSC 209 and CPSC 210 with grades of C- or better, and permission of a faculty supervisor. Placement in industry for experience related to computer science. (May be repeated to a maximum of 12 credit hours. No more than three credits may be applied towards a computer science major.) (Formerly 3460:395)
  
CPSC 406  Introduction to C & UNIX  (3 Units)  
Prerequisite: Programming experience. Syntax of C with flow structures, pointers, and command line concepts. For UNIX, shell scripts, UNIX file structure, system calls and interprocess communication protocols. (Not an approved mathematics and computer science major, minor, or certificate elective.) (Formerly 3460:406)
  
CPSC 408  Windows Programming  (3 Units)  
Prerequisites: Completion of CPSC 210 or CPSC 406 with a grade of C- or better or permission. Windows operating systems, integrated development environment, event-driven programming, graphical user interface design, object libraries, component object model, object linking, embedding, client-server objects. (Formerly 3460:408)
  
CPSC 411  Human-Computer Interaction  (3 Units)  
Prerequisite: CPSC 316. This course introduces the basic concepts and technologies of Human-Computer Interaction (HCI). Students will learn how to design and implement systems for human to interact with computers. Topics include: Categories of HCI, CLI, GUI, NUI, Design, Implementation and Evaluation of HCI, HCI Devices, Virtual Device Drive, HCI Toolkits, HCI Standards, Categories of Interactive Tasks, EDP and Multi-Threading in HCI, VR/AR/MR/XR in HCI, APP HCI, 3D Printing. (Formerly 3460:411)
  
CPSC 415  Big Data Programming  (3 Units)  
Prerequisite: CPSC 210 with a grade of C- or higher. Fundamentals of big data programming and computing platforms. Wrangling, modeling, visualizing, and analyzing data; computing platforms for data mining and deep learning. (Formerly 3460:415)
  
CPSC 418  Introduction to Discrete Structures  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better or permission. Introduction to a number of structures in algebra of particular use to student in computer science. Topics include algorithms and flow chart language, graphs and digraphs, trees, lattices codes. (Formerly 3460:418)
  
CPSC 421  Object-Oriented Programming  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better. Object-oriented design, analysis, and programming using different development models. Comparison with other programming paradigms. (Formerly 3460:421)
  
CPSC 426  Operating Systems  (3 Units)  
Prerequisites: Completion of CPSC 316 and CPEN 320 or equivalents with grades of C- or better. Introduction to aspects of all modern operating systems: types; storage management; process and resource control; interacting process synchronization. (Formerly 3460:426)
  
CPSC 428  UNIX System Programming  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better and knowledge of C. An overview of the UNIX operating system. Shell programming. Process management, processor management, storage management, scheduling algorithms, resource protection, and system programming. (Formerly 3460:428)
  
CPSC 430  Theory of Programming Languages  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better. Advanced concepts underlying programming languages and their applications, formal definitions of programming languages, Backus Normal Form, semantics. Alternative programming paradigms including functional programming. (Formerly 3460:430)
  
CPSC 435  Algorithms  (3 Units)  
Prerequisite: Completion of CPSC 316 with a grade of C- or better. Design and analysis of efficient algorithms for random access machines; derivation of pattern classification algorithms. (Formerly 3460:435)
  
CPSC 436  Applied Machine Learning  (3 Units)  
Prerequisite: CPSC 210 with a grade of C- or higher. Machine learning studies algorithms and models that enable computers to complete task without explicit instructions. These algorithms rely on rules, associations, and patterns presented in large data sets gathered or generated through self-learning. This course will introduce students the fundamentals of machine learning, and concepts of deep learning. Topics include machine learning concepts, tasks, and workflow; supervised learning methods for classification and prediction; unsupervised learning methods for pattern recognition; concepts of advanced supervised learning methods including deep learning algorithms such as neural networks and convolutional neural networks. The main focus of the course is the application of industry-leading machine learning algorithms and the enabling techniques that make the implementation of the algorithms practical. (Formerly 3460:436)
  
CPSC 438  Interactive Game & Game Engine Design  (3 Units)  
Prerequisite: CPSC 316. This course will introduce the basic concepts and techniques of game and game engine design. Students will learn how to design and implement interactive computer games and game engines. Topics include: Interactive Animation, Game Engines, EDP in Game Development, Procedural Animation and Physics Engine, Decision Making and AI Games, Surface & Volume Representation, VR, AR, MR, APP Games, Game Engine Development, and Voxel-Engine. (Formerly 3460:438)
  
CPSC 440  Compiler Design  (3 Units)  
Prerequisites: Completion of CPSC 210 and (CPEN 320 or CPSC 306), with a grade of C- or better. Techniques used in constructing compilers, including lexical and syntactic analysis, parsing techniques, object code generation and optimization. Course requires a compiler implementation project. (Formerly 3460:440)
  
CPSC 445  Introduction to Bioinformatics  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better or permission. Introduce major themes in bioinformatics. Topics include concepts of molecular genetics, biological databases, database searching, sequence alignments, phylogenetic trees, structure prediction, and microarray data analysis. (Formerly 3460:445)
  
CPSC 453  Computer Security  (3 Units)  
Prerequisites: Completion of CPSC 210 with a grade of C- or better. Principles of computer security -- cryptography, authentications, secure network protocols, intrusion detection and countermeasures. (Formerly 3460:453)
  
CPSC 455  Data Communication & Computer Networks  (3 Units)  
Prerequisites: Completion of CPSC 210 with a grade of C- or better. ISO-OSI, TCP/IP, SNA data switching, protocols, flow and error control, routing, topology, Network trends, network taxonomies, and socket-based programming. (Formerly 3460:455)
  
CPSC 457  Computer Graphics  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better. Topics in vector and raster graphics, interactive graphics languages, scan conversion, clipping, geometric transformation, projection, shading, animation and virtual reality. (Formerly 3460:457)
  
CPSC 460  Artificial Intelligence & Heuristic Programming  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better. Study of various programs which have displayed some intelligent behavior. Exploration of level at which computers can display intelligence. (Formerly 3460:460)
  
CPSC 463  Pervasive Computing  (3 Units)  
Prerequisites: Completion of CPSC 210 with a grade of C- or better. Computing from a wireless perspective. Topics include protocols, algorithms, security and sensor networks. (Formerly 3460:463)
  
CPSC 465  Computer Architecture  (3 Units)  
Prerequisite: Completion of CPSC 210 and (CPEN 320 or CPSC 306), with a grade of C- or better. An introduction to the hardware organization of the computer at the register, processor and systems level. In-depth study of the architecture of a particular computer system family. (Formerly 3460:465)
  
CPSC 468  Mobile Robotics  (3 Units)  
Prerequisites: Completion of CPSC 210 with a grade of C- or better. Introduction to history, hardware and software components, and design of autonomous mobile robots. Multiple projects involving both physical robots and software emulation. (Formerly 3460:468)
  
CPSC 475  Database Management  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better. Fundamentals of database organization, data manipulations and representation, data integrity, privacy. (Formerly 3460:475)
  
CPSC 476  Introduction to NoSQL Data Management  (3 Units)  
Prerequisite: CPSC 210. The widespread emergence of big data storage needs has driven the development and adoption of a new class of non-relational databases commonly referred to as NoSQL databases. This course will explore the origins of NoSQL databases and the characteristics that distinguish them from traditional relational database management systems. Core concepts of NoSQL databases will be presented, followed by an exploration of how different database technologies implement these core concepts. We will take a closer look at 1-2 databases from each of the four main NoSQL data models (key-value, column family, document, and graph), highlighting the business needs that drive the development and use of each database. Finally, we will present criteria that decision makers should consider when choosing between relational and non-relational databases and techniques for selecting the NoSQL database that best addresses specific use cases. (Formerly 3460:476)
  
CPSC 477  Introduction to Parallel Processing  (3 Units)  
Prerequisites: Completion of CPSC 316 with a grade of C- or better and knowledge of C. Commercial processors: past and present. Parallel languages, models of parallel computation, parallel algorithm design and performance evaluation. Parallel paradigms with relation to real world applications. (Formerly 3460:477)
  
CPSC 480  Software Engineering  (3 Units)  
Prerequisite: Completion of CPSC 210 with a grade of C- or better. Introduction to formal software specification and validation. Introduction of methodologies and tools of design, development and validation, and maintenance. (Formerly 3460:480)
  
CPSC 489  Topics in Computer Science  (1-3 Units)  
Prerequisite: Permission of instructor. Selected topics in computer science at an advanced level. (Formerly 3460:489)
  
CPSC 490  Senior Seminar in Computer Science  (3 Units)  
Prerequisites: Must have completed at least 30 hours of CPSC courses. Corequisites: CPSC 435 and [CPSC 426 or CPEN 325]. Professional software development, surviving 'Mission Impossible' projects, computer ethics, intellectual property rights (patents and copyrights), and other current topics. (Formerly 3460:490)
Gen Ed: Capstone  
CPSC 497  Individual Study in Computer Science  (1-3 Units)  
(May be repeated. Can apply to degree, minor or certificate only with department approval.) Prerequisite: Permission. Directed studies designed as introduction to research problems under guidance of designated faculty member. (Formerly 3460:497)
  
CPSC 498  Senior Honors Project: Computer Science  (1-3 Units)  
Prerequisites: CPSC 497 and Senior student in Honors Program. Directed study for senior student in the Honors Program who has completed CPSC 497. An introduction to research problems in the computer science under the guidance of selected faculty. (Formerly 3460:498)