Computer Science

CS 150. Information Acquisition Using the Internet — (3 units)
Prerequisite: None.
This course examines the history of and how the Internet has evolved in a relatively very short time from a tiny experimental internal network into a vast sophisticated and global system of networks that will probably never stop growing, and has had a significant influence on world society. We will learn about its origin, structure, security issues, and some of the many unique and related diverse technologies that now exist because of this expansive and complex network. Students will study how the Internet has evolved during the last twenty-five years and learn about the many interesting ways we have become dependent and rely on it daily in order to communicate, carry out transactions, exchange information, and efficiently accomplish many important personal and business oriented tasks.

CS 200. Fundamental Concepts of Information and Computer Technology — (3 units)
Prerequisite: None.
This course is an introduction to the fundamentals of computers and a study of their basic logical function as it applies to technical systems. A short history of early computers and the researchers who were responsible for them is presented, including various types of codes that are all based on the binary and other modern numbering systems. The materials will introduce the student to various computer concepts and circuits, the central processing unit (CPU), and memory units. The student is introduced to logic gates, Boolean theory, and other numbering systems including binary, quaternary, octal, and hexadecimal. The CPU is further examined to illustrate the use of registers, program counter, and stack pointer. Assembly language programming is introduced and shows the relationship between it and machine code.

CS 201. Introduction to Algorithms and Programming — (3 units: 2 guided instruction/1 lab)
Prerequisite: CS 200 Fundamental Concepts of Information and Computer Technology or consent of professor.
Introduction to the discipline of computer science using a high level language. Provides an overview to the programming process and program design techniques. Topics include algorithm development, control structures, procedures, and elementary data structures. Methodologies for program design, development, style, testing and documentation are also included.

CS 202B. Programming in Visual Basic — (3 units)
Prerequisite: CS 201 Introduction to Algorithms and Programming.
Syntax, control and data structures of the Visual Basic language are covered. Features such as arrays, functions, and loops are presented throughout various programming assignments. Graphics, error handling, debugging and sequential file handling will also be convered.

CS 202C. Computer Programming in C — (3 units)
Prerequisite: CS 201 Introduction to Algorithms and Programming.
Syntax, control and data structures of the C language are covered. Critical features of the language including arrays, functions, pointers, structures and files are presented throughout various programming assignments.

CS 202J. Introduction to HTML and Java — (3 units)
Prerequisites: Since this is an introductory course in HTML and Java, there are very few formal prerequisites. It is beneficial for the student to have had some basic experience in programming languages and in using the Internet before taking this course, but everything needed is provided here for pure beginners as well. 
This course serves as a general introduction to Web page design using HTML and Java at a high level. Topics discussed include the purposes and capabilities of HTML and Java (their similarities and differences), fundamental text, image, and table formatting commands, web page linking, and inclusion of Java to achieve interactive Web pages. The student should be able to gain a high-level understanding of the main capabilities of HTML and Java, although only a subset of the available commands are emphasized and examined in this introductory-level course. 

CS 203. Data Structures and Analysis of Algorithms — (3 units)
Prerequisites: CS 201 Introduction to Algorithms and Programming, BSCI 101 Calculus I, BSCI 113 Discrete Mathematics.
Suggested Skills: C++, Mathematical Summation and Basic functions.
You will learn a number of different data structures such as: lists, stacks, queues, and trees. Along with data structures, you will also study a wide range of programming techniques to solve larger and more complex problems.

CS 204. Introduction to Computer Architecture — (3 units)
Prerequisite: CS 200 Fundamental Concepts of Information and Computer Technology or demonstration of mastery of material.

In addition, experience with computers is required, and knowledge of how to perform the following tasks:

  • Navigate around Windows 98/2000/XP, i.e. use scroll bars, resize and position windows.
  • Download and install programs and other applications or compressed files.
  • Use of Microsoft Word, PowerPoint Presentations, and Adobe Acrobat reader.
  • Basic use of and familiarity with PC user hardware and software features.
  • Functional knowledge of e-mail, Web browsing and conducting an Internet search.

This course serves as a general introduction to computer organization at the systems architectural level. Topics include data representation, processor and data storage technology, systems integration, I/O theory, application development, operating systems, networking, and system administration. The curriculum will emphasize and examine these along with other topics and is intended to provide an understanding of the major components of a computer system for implementation, maintenance and management objectives. This course also discusses the tradeoffs that are associated with implementing and using various design and planning techniques while at the same time meeting typical industry price/performance and many other constraints.

CS 205. Computer Systems and Interfaces — (3 units)
Prerequisite: CS 204 Introduction to Computer Architecture.
Extension of basic digital computer topics to a more advanced level. Topics include advanced addressability, virtual memory, cache memory, multiprocessor. Multicache architectures, device management, loaders and linkers, input/output control and techniques for interrupt handling are also included.

CS 208. File and Database Systems — (3 units)
Prerequisites: CS 204 Introduction to Computer Architecture, CS 205 Computer Systems and Interfaces. Students must have Microsoft Access 2000 or Microsoft Access XP version and know how to create PowerPoint slides.
An introduction to file systems with an emphasis on organization techniques including sequential, indexed, indexed sequential, direct, inverted and tree structures. An overview of basic database models, including the relational data model. Database topics include data definition languages, data manipulation languages and normalization techniques.

CS 209. Principles of Programming Languages — (3 units)
Prerequisite: CS 203 Data Structures and Analysis of Algorithms.
Survey of major developments in programming languages. Introduction to contemporary programming paradigms and their related languages, including procedural, functional, logic, and object-oriented languages (C++). The mechanisms for sequence control, data structure implementation and run-time storage management within each type of language are discussed.

CS 302. Programming in Java — (3 units)
Prerequisite: CS 202J Introduction to HTML and Java or equivalent
This language-intensive course builds upon the introductory course to cover the most advanced language features and concepts. The conceptually broad and demanding–but essential–concept of concurrent programming is covered in depth, allowing use within the graphical programming course to develop responsive graphical user interfaces (a primary use of concurrency within Java). Other intricate topics that are vital for industrial-quality code production are also covered. These topics include cloning, inner classes, and using non-Java code from within Java applications to access platform-specific facilities. The course concludes with an examination of how best to express common Design Patterns in Java in order to use the language to produce designs that make use of the design expertise formerly available only to a select few design “gurus”.

CS 305. Computer Organization & Assembly Language — (3 units)
Prerequisite: CS 202C Computer Programming in C.
Assembly language of the 80x86 and the Pentium CISC microprocessors. Number systems and number representations. 80x86 architecture and addressing modes. 80x86 instruction set: data transfer, program control, logic, strings, fixed-point binary arithmetic, procedures, and macros. Segments. Registers. Subroutines. Instruction execution timing. Decimal arithmetic. Floating-point arithmetic. 80x87 math coprocessor. Write assembly language programs on an Intel-based Windows PC.

CS 306. Introduction to Software Engineering — (3 units)
Prerequisites: CS 203 Data Structures and Analysis of Algorithms, CS 205 Computer Systems and Interfaces
It is expected that the student will have experience, either professionally or through coursework, in the programming of computer programs. This implies expertise in using the computer as well as in one or more computer programming languages such as Visual Basic, COBOL, JavaScript, Java or C/C++. Student is also expected to be proficient in utilizing the Internet to perform research.

Software Engineering is the art and science of building a computer system. Computer systems are collections of computer programs - all having a common theme. Creation of systems is a stepped procedure utilizing a series of procedures and technologies via the SDLC (Systems Development Life Cycle). The student will learn all components of the SDLC including:

  1. How to determine feasibility of a proposed computer system
  2. How to analyze a system's requirements
  3. How to develop a complete technical specification
  4. Translating the specification to program code
  5. Managing the development process
  6. System testing
  7. Implementing the system
  8. Maintaining the system

In addition, the student will learn about the concepts of productivity and quality and measuring the process of software engineering.

CS 307. Introduction to Operating Systems — (3 units: 2 guided instruction/1 lab)
Prerequisites: CS 202C Computer Programming in C, CS 205 Computer Systems and Interfaces.
An overview of operating systems including their history and evolution. Examination of typical problems associated with implementing such systems. Topics include multitasking, interrupts, concurrency, deadlock, and scheduling.

CS 310. Network Principles — (3 units)
Prerequisite: CS 307 Introduction to Operating Systems
Students should have a basic knowledge of computer systems, communication protocols and internet researching skills.

An introduction to the study of computer networks. Current methods and practices in the use of networks are examined. Other topics include physical and architectural elements, information layers, and network tools. Various architectures are compared and contrasted.

This course also examines a variety of network technologies and concepts, including: analog and digital telephony, voice digitization, digital transmission, multiplexing, switching, modulation techniques, synchronization control, network management, fiber-optic systems, mobile systems, ATM, digital subscriber access and traffic analysis.

The focus in this course will be on understanding the underlying concepts and requirements relevant to these technologies, as well as implementation issues and practices.

CS 330 Information Security (3 units)
Prerequisites: Student should have completed the Basic Sciences courses (BSCI 101-Calculus I; BSCI 102- Calculus II; BSCI 103- Calculus III;  BSCI 104-Ordinary Differential Equations; BSCI 105-Probability and Statistics; BSCI 113-Discrete Mathematics; CS 202C-Computer Programming in C; CS 204-Introduction to Computer Architecture; CS 310- Network Principles or permission of your professor.
A study of the practical approach to information security by focusing on real-world examples. While not sidestepping the theory, the emphasis is on developing the skills and knowledge that security and information technology students and professionals need to face their security challenges.

  • Cryptography:classic cryptosystems, symmetric key cryptography, public keycryptography, hash functions, random numbers, information hiding, andcryptanalysis
  • Access control:authentication and authorization, password-based security, ACLs andcapabilities, multilevel and multilateral security, covert channels andinference control, BLP and Biba's models, firewalls, and intrusiondetection systems
  • Protocols: simpleauthentication protocols, session keys, perfect forward secrecy,timestamps, SSL, IPSec, Kerberos, and GSM
  • Software: flaws andmalware, buffer overflows, viruses and worms, software reverseengineering, digital rights management, secure software development, andoperating systems security

CS 411. Artificial Intelligence — (3 units)
Prerequisite: CS 203 Data Structures and Analysis of Algorithms.
This course presents an introduction to the application of intelligent systems to practical problems. The intelligent systems considered in this course are expert systems, fuzzy systems, neural networks, evolutionary computation, hybrid algorithms, and data mining.

CS 412. The UNIX Environment for Programmers — (3 units: 2 guided instruction/1 lab)
Prerequisite: CS 307 Introduction to Operating Systems.
This course provides a technical overview of the UNIX operating system, providing hands-on experience with commands and files. Students will explore the basic structure, functions, and tools of the UNIX operating system. Topics include basic UNIX commands, files and directories, text editing, electronic mail, pipes and filters, shell environments, scripting and programming in the UNIX environment.

CS 413. Programming Languages and Software Methodology (3 units: 2 guided instruction/1 lab)
Prerequisite: CS 306 Introduction to Software Engineering.
This course introduces various fundamental concepts that are generic to essentially all
programming languages. Topics include variables, expressions, statements, data types, scope, procedures, exception handling, and concurrency. This course also discusses the various tradeoffs associated with implementing and using these constructs in a language along with an in-depth analysis of the proper methodology by which they should be employed. Laboratory exercises enable you to explore these concepts and methodologies using a language you are familiar with.

CS 414. Principles of Operating Systems — (3 units)
Prerequisites: CS 307 Introduction to Operating Systems, CS 412 The Unix Environment for Programmers.
An in-depth study of operating system principles, their descriptions, behavior, problems, and design. Concurrent processes, mutual exclusion, cooperation, deadlocks, resource allocation, storage management and protection are covered. Detailed study of specific systems.

CS 415. Object-Oriented Programming Concepts — (3 units)
Prerequisites: CS 202C Computer Programming in C, CS 209 Principles of Programming Languages
Although not a prerequisite for this course, having taken CS 202J Introduction to HTML and Java will be helpful and advantageous.

This course covers principles of object-oriented design and programming. Topics include the role of objects, classes, methods, message passing, encapsulation, polymorphism, inheritance, and instantiation. Topics are illustrated using an object-oriented language such as Java, C++ or Smalltalk/V.

CS 416. Graphics and Computers — (3 units)
Prerequisites: CS 306 Introduction to Software Engineering , BSCI 104 Ordinary Differential Equations.
Fundamental concepts of computer graphics. Graphic devices; graphics languages; interactive systems. Applications to science, engineering and business.

CS 417. The Windows Environment (3 units)
Prerequisites: CS 201 Introduction to Algorithms and Programming, CS 203 Data Structures and Analysis of Algorithms, CS 209 Principles of Programming Languages.
An overview of historical and current windowing environments and applications will be presented. An in-depth study of one such environment will include design and implementation of a software application to run in the selected environment.

CS 418. Graphical User Interfaces Concepts — (3 units)
Prerequisite: CS 201 Introduction to Algorithms and Programming.
System Requirements:
Windows 2000 Professional; Windows 2000 Server;Windows XP Home Edition; Windows XP Professional; Windows server 2003 or later.

This course explores the character and features of the event driven Visual Basic programming language to create sophisticated Visual Basic-based windows applications to solve problems. This course covers user interface management systems, database, and Internet programming.

CS 419. Advanced GUI (Graphical User Interfaces) Concepts — (3 units)
Prerequisite: CS 418 Graphical User Interfaces Concepts.
This is an extension of CS 418, Graphical User Interfaces, and examines advanced concepts such as on-line Help, Object Linking and Embedding (OLE), Open Data Base Connectivity (ODBC), Dynamic Link Libraries (DLL), Setup Wizard, client/server databases (SQL), custom controls, mixed-language
programming, overlay structures, database programming, presentation graphics, math packages, and other concepts associated with the graphical design of user interfaces and event-driven programming. This is a
project-driven course requiring student access to current popular programming software.

CS 499. Capstone Project — (3 units)
Prerequisites: Completion of core courses or equivalent and approval of faculty advisor.
Independent design project in which the student selects a topic and with the approval of his/her faculty advisor, implements it by design, assembly, testing, and evaluation. Faculty Advisor approval is essential to the project conclusion.

CS 501. Theory of Computation — (3 units)
Prerequisites: Completion of all college-level mathematics, including discrete mathematics, Graduate Standing.
You will study formal models of computation, including finite automata, and Turing Machines; and the concepts of context-free, context-sensitive, and unrestricted grammars; and Church’s thesis and other models. You will also understand the equivalence between the models and grammars.

CS 502. Advanced Operating Systems — — (3 units)
Prerequisites: CS 414 Principles of Operating Systems or equivalent, Graduate Standing.
An in-depth study of state of the art operating systems, their descriptions, behavior, problems and design.

CS 503. Algorithms, Concurrency and Computational Limits — (3 units)
Prerequisites: Graduate Standing, CS 203 Data Structures and Analysis of Algorithms or equivalent, BSCI 105 Probability and Statistics, CS 501 Theory of Computation.
You will study Sequential Algorithms and Parallel Algorithms in dealing with some important mathematical problems; the related complexity of computation and dataprocessing; and Distributed Computing Systems.

CS 504. Communications and Networking — (3 units)
Prerequisites: Graduate Standing, CS 200 Fundamental Concepts of Information & Computer Technology.
This course introduces students to Communication and Computer Network administration. It presents an overview of
networking basics, directory structure, the file system, and drive mapping. Students will learn to establish network connections, recognize and locate directory services components, create user objects, and use utilities to manage files, directories, and volumes.

CS 505. Advanced Software Methodology — (3 units)
Prerequisites: Graduate Standing, CS 413 Programming Languages and Software Methodology or equivalent.
An examination of the critical problems underlying the specification, design, development and evaluation of large software systems.

CS 506. Advanced Computer Architecture — (3 units)
Prerequisite: CS 504 Communications and Networking.
Analysis and evaluation of individual computers, networks of computers and the programs which support their operation. Emphasis on the comparison of various architectures, their benefits and drawbacks.

CS 507. Computer System Security — (3 units)
Prerequisite: CS 506 Advanced Computer Architecture.
This course provides an overview of issues in security of organizational information systems. Without their information technologies, many present-day organizations would fail within days. Even a few hours of partial loss is extremely expensive. Disruption of computer-based information systems costs business enterprises millions of dollars each year. Information systems security ostensibly regards hazards intentionally posed by disgruntled workers, juvenile vandals, or industrial spies. In practice, however, security management considers both intentional and accidental hazards because they are equally mitigated by the same protective measures.

The course will survey issues of hazard including errors, acts-of-nature, assault, falsification, malicious code (viruses and worms), cracking (hacking), fraud, espionage and vandalism. Also surveyed will be issues of safeguard such as access control, encryption, virus protection, and backup recovery; and issues of risk management such as risk analysis, safeguard design, password management and disaster recovery planning. The course will consider selected technologies more closely such as encryption, operating systems security, and telecommunications network security. Related topical issues of particular interest will include the special responsibility of computer professionals regarding the privacy of personal information and the growing abuse of communications networks (“phreaking”).

CS 508. Distributed and Real-Time Systems — (3 units)
Prerequisite: CS 506 Advanced Computer Architecture.
A study of the architectures and operating systems capable of supporting distributed computing. An examination of the issues involved in the design and subsequent implementation of such systems. Applications of this architecture in real-time system design and maintenance.

CS 509. System Performance Analysis — (3 units)
Prerequisite: CS 506 Advanced Computer Architecture.
An introduction to the techniques used to evaluate a hardware system. Techniques used to evaluate computer hardware architecture, vector and multiprocessor architectural design, mass storage device characteristics, memory hierarchy design and interconnection devices are presented.

CS 510. Advanced Network Topology — (3 units)
Prerequisites: CS 502 Advanced Operating Systems, CS 504 Communications and Networking.
This course provides an overview of issues in advanced network topology. Design and analysis of high-speed networks and their protocols. Topics include: multimedia services integrating voice, data, image and video signals, various switching techniques including synchronous transfer modes. ATM network traffic control, ATM experimental networks, high speed LANs/MANs and internetworking with high speed networks.

CS 511. Distributed and Parallel Programming Constructs — (3 units)
Prerequisite: CS 504 Communications and Networking.
This course introduces you to Multithreading techniques. It deals primarily with Programming Architecture. It presents an overview of Symmetric processing, NUMA System and the different subsystems that come into play in programming on local and virtual machines. You will learn to “navigate” through the Clusters, to follow the traffic in Networking Programming, to work with parallel application, and distinguish the steps and processes of the Router.

CS 512. Software Performance Evaluation — (3 units)
Prerequisite: CS 505 Advanced Software Methodology.
Introduction to the techniques which predict and verify the quality of performance of a hardware/software system. Examination of the measures of software performance such as execution time, utilization of resources, and cost-to-performance ratios. Presentation of approaches to building models to capture their performance features of a real system.