Click on any of the course titles below (in bold text) for a full course description, including units and prerequisites.
Harnessing the Organizing Power of Knowledge (CS 101)
This course investigates the most fundamental knowledge at the basis of all computing and modern computer technology, and how it is connected to principles of the Science of Creative Intelligence and Vedic Science. We will look at the structure of computing itself, of computer science, and of the wide range of computing applications that are primary to all areas of professions and life today. (4 units)
Capturing Nature’s Cosmic Computing (CS 200)
This course presents an overview of the major applications of computers with emphasis on practical computer programming skills. Laboratory computer programming problems illustrate the wide range of scientific and business applications. Topics include formulation of algorithms, flow-charting, numerical methods, simulation, searching and sorting, and an introduction to data structures. (4 units)
The Language of Computing — Expressing the Intelligence that Guides Computation (CS 201)
This first upper-division course in computer science presents the basic principles of computer programming, with emphasis on developing practical programming skills through laboratory assignments. Topics include formulation of algorithms, top-down design, basic control structures, data types, functions, and subroutines. (4 units) Prerequisite: MATH 162
Greater Knowledge and Expression in Programming Languages (CS 203)
Students use a substantial laboratory programming project as a vehicle for completing the basic knowledge of programming and developing good programming practices. Topics include structured data types, recursion, pointers, and issues of program design, structure, and correctness. (4 units) Prerequisite: CS 201
Fundamental Structures of Information at the Basis of All Computation (CS 220)
Students use computer programming laboratory problems to apply the principles of data structure organization in a practical environment and develop advanced programming skills. The organizing power of knowledge is found to be the source of order in computer data structures. Topics include abstract data types, internal representation of data, stacks, queues, linked lists, sparse arrays, hash coding, searching and sorting algorithms, dynamic storage allocation, and computing time of programs. (4 units) Prerequisite: CS 203
Information Structures to Represent Larger Systems (CS 222)
Students continue the study of high-level data organization techniques. Topics include representations and algorithms for trees and graphs; file organization techniques; sequential, direct and indexed files; B-trees; and inverted and multi-list files. (4 units) Prerequisite: CS 220
The Physiology at the Basis of All Computers — The Logical and Physical Structures of Digital Computation (CS 262)
This course presents the internal structure of a computer, an introduction to assembly language, and the design of digital logic circuits and their use in structuring the various functional components of a computer, such as the memory and central processing unit. Topics include machine organization, machine language, assembly language, logic gates, flip-flops, decoders, multiplexers, registers, combinatorial logic, and sequential circuits. (4 units)
Models and Mathematics of the Structures of Natural Law at the Basis of Computation (CS 272)
Discrete mathematics is becoming increasingly important because of its wide applicability in computer science, as well as in management and the other sciences. Two key processes in discrete mathematics studied in this course are algorithmic problem solving and recursion. Topics include: logic and sets, graph theory, and difference equations. (Same as MATH 272) (4 units) Prerequisite: MATH 162
(CS 299)
In this course students gain practical experience in the teaching methods of computer science by serving as full-time teaching assistants in a basic undergraduate course. Assistants conduct laboratory sessions with small groups of students, grade laboratory exams and exercises, and assist students individually. (2 units) Prerequisite: consent of the Department faculty
Connecting Hardware and Software — The Most Fundamental Level of Software in the Operating System (CS 310)
Students learn the systems programs that link the outer activity of high-level programming languages with the internal activity of the computer hardware. Knowledge of this deeper level of systems programs gives a greater range of possibilities to the programmer. Students learn system software such as compilers, linkers, loaders, and debuggers, and the structure and functions of an operating system including device management, process management, system calls, and memory management. (4 units) Prerequisite: CS 222
Applying Knowledge of Software Systems for Greater Skill in Action (CS 335)
In these courses, students participate in a comprehensive system development project to apply and integrate the concepts of software design and implementation. Topics include methods and tools for large system development including analysis, design, testing, and documentation. Students work in teams to develop a substantial programming project. (4 units each) Prerequisite: CS 222
Practical Experience in Applying the Knowledge of Computer Science to Create Software Systems (CS 336)
In these courses, students participate in a comprehensive system development project to apply and integrate the concepts of software design and implementation. Topics include methods and tools for large system development including analysis, design, testing, and documentation. Students work in teams to develop a substantial programming project. (4 units each) Prerequisite: CS 335
The Abstractions at the Basis of Programming Languages — Gaining Mastery over All Programming Languages (CS 350)
This course involves substantial programming exercises that give students practical experience with several different programming language paradigms. Topics include syntax and semantics of programming languages; data types and structures; control flow including blocks, subroutines, and recursion; implementation methods for semantic features; and comparison of several programming languages. (4 units) Prerequisite: CS 222
The Physiology of Computing Systems — The Physical Structures Reflecting the Underlying Computational Processes (CS 362)
This course investigates the levels and components of computer hardware as they contribute to the functioning of the computer. Topics include RTL systems and notations, bus structures, arithmetic logic units, execution and control design, micro-program control, input-output interface, hardware-software interactions, and microprocessors. Students study the integration of these system components in a sample uni-processor system and through case studies of actual machines. (4 units) Prerequisite: CS 262
Modern Programming Methods and Systems — Capture the Fundamental Principles of Knowledge for Greater Success in all Areas (CS 390)
This course presents the fundamental principles of object-oriented programming. Students will learn how to write reusable and better-maintained software, and integrate this knowledge with laboratory assignments and projects. Topics include: Fundamental principles and models of object-oriented programming, UML class diagrams and design principles that promote reusability and maintainability of software. Also studied are stacks, queues, linked lists, and trees, using the Java programming language. This course cannot be taken for graduate credit, but can replace CS 401: Modern Programming Practices. (2 units). Please note that either CS 401 or CS 390 (not both) may be used toward graduation requirements.
Knowledge and Experience for Maximum Growth (CS 398)
This course offers practical, professional experience in computer programming. Students apply classroom knowledge to an industrial or University project. During the internship, students submit detailed reports of all of their computer programming activities. (2 units) Prerequisite: consent of the Department faculty and the Academic Standards Committee
Current Concepts and Best Practices in Software Development Knowledge is the Basis of Action (CS 401)
This course presents the fundamental principles of object-oriented programming. Students will learn how to write reusable and better-maintained software, and integrate this knowledge with laboratory assignments and projects. Topics include: fundamental principles and models of object-oriented programming, UML class diagrams and design principles that promote reusability and maintainability of software. (2 units)
Software Models and Methods to Represent the Dynamics of Natural Law (CS 410)
This course studies models to enable a computer to simulate and predict the behavior of systems. Topics include discrete and continuous models, queuing models, process and event simulations, computer system models, and simulation languages and systems. (4 units) Prerequisites: CS 222 and MATH 351
Methods to Map Nature’s Infinite precision into Finite Computing Systems (CS 420)
Scientific and engineering computer application requires advanced numerical techniques of manipulating and solving complex systems of equations with great efficiency and minimum error. Topics include numerical solution of linear equations, curve fitting, interpolation and polynomial equations, numerical integration and differentiation, solution of nonlinear equations, and error analysis. (4 units) Prerequisites: CS 222, MATH 283, and MATH 286
Capturing the Organizing Power of Information in Structured Models, Representations, and Query Languages (CS 422)
Database management systems organize and retrieve information, allowing the user to access the desired information easily and efficiently. Topics in this course include relational, hierarchical, and network data models; query languages; relational calculus, data normalization, and schemas; file organization techniques; data security and integrity; and study of a specific commercial database management system. (4 units) Prerequisite: CS 222
Knowledge Is the Basis of Action — Principles and Processes for Developing Large-Scale Software Systems (CS 425)
This course introduces the major principles used in the development of software. General principles and methods are identified, and their application is located in various phases and models of software engineering. The focus is on understanding the organizing power inherent in the underlying concepts, principles, and processes, rather than any particular developmental method or model. Topics include: the nature and qualities of software; types and qualities of specifications; objectives of design; verification approaches; production process models; and classification of supporting tools and environments. (4 units) Prerequisite: CS 222
The Dynamics of Intelligence — The Relationship of Structure and Dynamics as the Basis for Efficient and Practical Software Development (CS 435)
This course presents methods for analyzing the efficiency of algorithms as well as a variety of known efficient algorithms. Topics include graph algorithms, combinatorial algorithms, searching and sorting, numerical and arithmetic algorithms, recurrence relations, computing time and space complexity of algorithms, and NP-complete problems. (4 units) Prerequisites: CS 222 and CS 272
Connecting Name and Form — The Source of All Programming Languages in Grammar and Semantics (CS 440)
Students learn the successive stages and detailed mechanics by which high-level programming languages are translated into machine language by a compiler. Topics include language and grammar specification, compiler structure, compiler generation tools, lexical analysis, parsing, syntax analysis, semantic analysis, intermediate language, code generation and optimization, storage management and linkages, user interface, and a large programming project implementing part of a compiler. (4 units) Prerequisite: CS 310
Connecting the Parts and Whole — Frictionless Flow of Information (CS 450)
Computers are connected with high-speed communication lines in local area or wide area networks, for the purpose of sharing databases and distributing workloads to increase efficiency and improve service. Topics include sampling and information theory, error detecting and correction codes, network architecture, communication protocols and models, protocol analysis, hardware components, logical and physical topology, message routing and switching, flow control, local area networks, and data security. (4 units) Prerequisites: CS 310 and MATH 351
Advanced Principles of Natural Law in Software Systems (CS 455)
This course will cover the most current emerging methods, principles, and practices in software technologies and systems. The topics will vary, based on current technologies and instructor choices. (2 or 4 units)
Software Models and Methods to Represent the Mathematical Precision of Natural Law (CS 460)
This course presents methods and principles for the application of computing systems to scientific and engineering problems. Areas studied in this course are numerical methods, scientific computation, and applications. Specific topics covered are computational efficiency, accuracy and precision, root finding, Taylor series and function evaluation, interpolation and approximation, finite difference calculus, curve fitting, and numerical integration. (4 units) Prerequisites: CS 222, MATH 283, and MATH 286
The Most Fundamental Level of Software — Organizing Hardware Resources into Coherent Virtual Systems (CS 465)
An operating system controls the central resources of the computer system and allocates them to individual users. Course topics include sequential and concurrent processes, mutual exclusion, resource sharing, process cooperation, deadlock, resource allocation, processor scheduling, memory management, segmentation and paging algorithms, timesharing systems, scheduling algorithms, and resource protection. (4 units) Prerequisite: CS 310
Knowledge is the Basis of Thinking, Action, and Achievement — Creating Intelligent Software Systems (CS 470)
The field of artificial intelligence attempts to create computer programs that reflect the values of human intelligence. Course topics include state-space representations, tree and graph searches, predicate calculus and deduction, heuristics, learning and problem solving, natural language processing, expert systems, and programming languages for artificial intelligence. (4 units) Prerequisite: CS 350
How to Represent and Graphically Express the Dynamic Intelligence Captured in Software Systems (CS 475)
One of the fastest growing areas of computer technology, computer graphics is used extensively to present the vast amount of information resulting from a computing process. This course studies data representation, display devices and graphics hardware, display lists, device independence, two-dimensional and three-dimensional graphics, display of curves and surfaces, hidden line and hidden surface removal, shading and rotation techniques, graphics languages, and introduction to image processing. (2–4 units) Prerequisite: CS 222
Visual Expression of Total Knowledge (CS 476)
The course will introduce the students to the basic concepts and operations in digital image processing, and will be accompanied by lab/programming work, including team projects solving practical image processing problems that have been addressed by the imaging industry. Depth of coverage depends on the course length and students' background in mathematics and in programming. The course develops the mathematical-visual intelligence. The course covers image acquisition and representation, intensity transformation, spatial linear and non-linear filtering (image enhancement), Fourier transform and frequency domain representation (either on the conceptual level or the mathematical level as well, depends on students’ background), frequency domain filtering (depth depends on background and course length), Edge detection, segmentation, morphological image processing, color image processing. If time permits, topics such as Hough transform, Radon transform and tomography, fundamentals of image and video compression, object recognition, some concepts in computer graphics will also be presented. (2-4 units)
The Abstract Basis of All Possibilities in Computation (CS 485)
Formal abstract models of computation study the fundamental limitations and capabilities of computers. This course presents a hierarchy of increasingly sophisticated abstract machines in relation to their increasing ability to recognize more general classes of formal languages. Topics include formal grammar, finite-state machines, equivalence of finite-state machines, right-linear and left-linear grammar, context-free languages, Turing machines, unsolvable problems, and recursive functions. (4 units) Prerequisite: CS 272
This course will investigate the uses of XML in distributed computation. First an understanding of the W3C specifications for XML, XML Schema, XPath, XML namespaces, XSLT and XQuery will be acquired. Then three important applications of XML in distributed computing will be investigated: syndication, web services and Ajax. Finally, advanced issues such as encrypted XML and binary XML will be considered. There will be daily labs using .NET 2.0
Advanced Topics in Nature’s Computing Processes (CS 490)
This course provides topical knowledge relevant to professional applications of computing. Topics will vary each time it is offered. Topics may include: object-oriented programming, object-oriented analysis and design, client/server models and distributed systems, real-time programming, real-time systems, software quality assurance and measurement, applied AI and expert systems, and database management tools. (1 unit —
may be repeated)
Faculty Directed Study of Specialized Topics (CS 499)
(Variable units) Prerequisite: consent of the Department faculty