Computer Science (COMPSCI)

Courses

COMPSCI 162   COMPUTER APPLICATIONS (GM)   3 Units

A thorough introduction to using computers covering word processing, spreadsheets, data storage and retrieval, computer graphics and applications, uses of computers, e-mail and the Internet, hardware, history, and problems arising from the use of computers.
COREQ: MATH 141 OR MATH 140 OR WAIVER

COMPSCI 170   INTRODUCTION TO PYTHON PROGRAMMING (GM)   3 Units

An introduction to computational thinking and computer programming using the Python language, with applications in science, business, education, and other areas. Students will develop structured programs based on simple algorithms that involve input, output, mathematical operations, decisions, and loops. No previous programming experience is needed.
PREREQ: MATH 141 OR WAIVER OF MATH 141

COMPSCI 171   INTRODUCTION TO PROGRAMMING (GM)   3 Units

An introduction to computer programming and its applications to science, business and education. Opportunity for extensive experience in designing and writing structured programs in the Visual Basic language.
PREREQ: MATH 141 OR WAIVER OF MATH 141

COMPSCI 172   INTRODUCTION TO JAVA (GM)   3 Units

This course will give students the essentials of object-oriented programming in Java. Students will learn to formulate algorithms, to solve problems and to implement those solutions with a Java program that employs objects and classes. The student will be introduced to object-oriented design, applications and applets, class construction, methods and message passing arrays, string processing, file processing, and some event-handling and Graphical Use Interface programming. This course is designed for students with some prior programming experience.
PREREQ: MATH 152 WITH A GRADE OF C OR BETTER, OR MATH 143 WITH A GRADE OF C OR BETTER, OR CALCULUS PLACEMENT, OR CONSENT OF INSTRUCTOR

COMPSCI 174   INTRODUCTION TO C++ (GM)   3 Units

This course teaches basic programming skills using the structured high-level language C++. Topics include basic input and output, declaration and use of variables, use of control statements, implementation of functions usig value and reference parameters, arrays, and structures. Students will write moderately complex applications using C++.
PREREQ: MATH 152 WITH A GRADE OF C OR BETTER, OR MATH 143 WITH A GRADE OF C OR BETTER, OR CALCULUS PLACEMENT, OR CONSENT OF INSTRUCTOR

COMPSCI 180   DATA SCIENCE FOR EVERYONE (GM)   3 Units

An introduction to data science and its implementation using the R language, with applications in natural and social science, public health and welfare, and other areas. Students will explore methods of data analysis and visualization and cultivate marketaable data-literacy skills. No prior knowledge of statistics or programming is needed.
PREREQ: MATH 141 OR WAIVER OF MATH 141

COMPSCI 181   INTRODUCTION TO DATABASE AND THE WEB (GM)   3 Units

This course provides the student with a comprehensive working knowledge of a modern database package including the creation of a database, construction of a wide range of queries, use of forms, and report writing features. The course also gives an introduction to the creation of World Wide Web pages using the Extended Hypertext Markup Language (XHTML).
PREREQ: MATH 141 OR WAIVER OF MATH 141

COMPSCI 215   DISCRETE STRUCTURES   3 Units

The course offers a formal approach to the logic of Computer Science, including set theory, methods of proof, discrete probability, sequences, recurrence relations, introduction to graphs, and algorithmic analysis. It also introduces finite state machines, Turing machines, and formal languages and grammars.
PREREQ: MATH 152 OR MATH 243 OR MATH 250

COMPSCI 220   INTERMEDIATE JAVA   3 Units

This course teaches more advanced topics in object-oriented program design and the Java programming language. Coverage includes multi-dimensional arrays, methods, error handling, strings, regular expressions, encapsulation, inheritance, polymorphism, generic types, program debugging and testing, database and file processing, event-handling, and graphical user interfaces. Unreq: MCS 220 and COMPSCI 222
PREREQ: COMPSCI 172 OR (COMPSCI 174 AND CONSENT OF INSTRUCTOR)
CROSS-LISTED: MCS 220 AND COMPSCI 220

COMPSCI 222   INTERMEDIATE C++   3 Units

This course will cover more advanced issues of C++, including memory management, pointers and user-defined data types. Topics will include reading and writing files, dynamic arrays, implementation of the principles of object oriented design including encapsulation, and inheritance, planning and testing. Students will write complex applications using C++.
PREREQ: COMPSCI 174 OR (COMPSCI 172 AND CONSENT OF INSTRUCTOR)

COMPSCI 223   DATA STRUCTURES   3 Units

This course covers issues of data structures, professional software development methodologies including software patterns and advanced object oriented techniques. Topics include lists, queues, stacks and trees. Complex data structure and object-oriented design technique, including inheritance and polymorphism, are applied to develop and large projects. UNREQ: MCS 231, COMPSCI 231, COMPSCI 223
PREREQ: COMPSCI 222 OR MCS 220
UNREQ: MCS 231, COMPSCI 231, COMPSCI

COMPSCI 231   CONCEPTS DATA STRUCTURES   3 Units

This course is an introduction to data structures, using the Java programming language. It covers static and dynamic implementations of data structures including lists, stacks, queues and trees. It emphasizes object-oriented design and programming methodology, including inheritance and polymorphism, and applies these in the development of large programming projects. UNREQ: MCS 231, COMPSCI 231, COMPSCI 223
PREREQ: COMPSCI 220 OR COMPSCI 222 AND A COMBINED CUMULATIVE GPA OF 2.50
UNREQ: MCS 231, COMPSCI 231, COMPSCI

COMPSCI 271   ASSEMBLY PROGRAMMING   3 Units

This course covers the use of an assembly language based on the RISC processor architecture including writing, linking, and executing a program. Also covered are number systems, instructions for arithmetic and logical operations, memory access, loops, declaring variables, interrupts, machine language, segments, stacks, procedure writing, and file handling.
PREREQ: COMPSCI 172 OR COMPSCI 174

COMPSCI 320   CONCEPTS OF PROGRAMMING LANGUAGES   3 Units

An exploration of the core concepts upon which all programming languages are built. Students will apply these concepts to write programs in several specialized programming languages, including functional and logic programming languages. Emphasis is placed upon evaluating the strengths and weaknesses of particular languages for various tasks.
PREREQ: COMPSCI 223 AND (COMPSCI 215 OR MATH 280)

COMPSCI 322   COMPUTER LANGUAGES AND COMPILERS   3 Units

This course is an introduction to the theory of computer languages and the construction of assemblers and compilers. Students will write a small assembler and a small compiler and will compare features of many computer languages.
PREREQ: COMPSCI 271 AND EITHER COMPSCI 223 OR MCS 231

COMPSCI 332   INTRODUCTION TO ARTIFICIAL INTELLIGENCE   3 Units

This course introduces basic artificial intelligence principles including simple representation schemes, problem solving paradigms, constraint propagation, search strategies and learning approaches. Knowledge representation, natural language processing, gaming, machine learning and user modeling will be explored. Students should have written moderately complex computer programs in a high level language.
PREREQ: COMPSCI 222 OR MCS 220

COMPSCI 347   SCIENTIFIC COMPUTING   3 Units

This course provides the applied scientist with the basic tools needed to perform computing within a scientific context. The computational aspects focus on two major areas: (1) the development and implementation of numerical algorithms in computer programs, and (2) the analysis and visualization of complex data sets. Numerical methods covered include finding roots of nonlinear equations, solving linear systems, the eigenvalue problem, numerical integration, the initial value problem, and data fitting. The high-level computer packages used are Mathematic and Matlab.
PREREQ: MATH 253 WITH A C OR BETTER OR CONSENT OF INSTRUCTOR

COMPSCI 366   DATABASE MANAGEMENT SYSTEMS   3 Units

This course offers an introduction to the design and programming of databases and the implementation of database management systems from a computer science perspective. Contents include the relational model; SQL; database application development; and concepts and algorithms for building database management systems.
PREREQ: COMPSCI 223 OR CONSENT OF INSTRUCTOR

COMPSCI 381   JAVASCRIPT AND DHTML   3 Units

JavaScript is a computer language for adding flexibility and functionality to web pages. A powerful language in its own right, it also has the capability to interact with HTML forms, browsers, Java applets, and other objects found on a web page. Students in this course will gain a thorough understanding of JavaScript, and learn to harness it abilitities to manage windows, forms, events, cookies, etc.
PREREQ: COMPSCI 172 OR COMPSCI 174 OR EQUIVALENT PREPARATION AND CONSENT OF INSTRUCTOR

COMPSCI 382   SERVER-SIDE SCRIPTING   3 Units

Server-side scripting is key to processing web forms, as well as for automating a wide range of server tasks. This course will provide a thorough introduction to the Server-side scripting languages. Students will learn to create a data-driven web application that uses Structured Query Language (SQL) to access and update the information in a database.
PREREQ: COMPSCI 172 OR COMPSCI 174 OR EQUIVALENT PREPARATION AND CONSENT OF INSTRUCTOR

COMPSCI 412   COMPUTER ORGANIZATION AND SYSTEM PROGRAMMING   3 Units

Introduction to organization of modern digital computers - understanding the various components of a computer and their interrelationships. Study of systems programming in C/Linux.
PREREQ: COMPSCI 271 OR CONSENT

COMPSCI 424   OPERATING SYSTEMS   3 Units

This course covers problems encountered by computer operating systems including resource management, memory management, virtual memory, concurrent programming, and distributed systems. Algorithms are presented for deadlock, memory paging, job scheduling, memory allocation, and performance measurement. Operating systems such as WINDOWS, DOS, UNIX, VMS, and MVS are discussed.
PREREQ: COMPSCI 271 AND EITHER COMPSCI 223 OR MCS 231 OR CONSENT OF INSTRUCTOR

COMPSCI 433   THEORY OF ALGORITHMS   3 Units

This course is a survey of algorithms needed for searching, sorting, pattern matching, analyzing graphs, and a variety of other problems of discrete mathematics. Analysis of algorithm efficiency and space/time tradeoffs are discussed.
PREREQ: COMPSCI 223 AND (COMPSCI 215 OR MATH 280)

COMPSCI 434   THEORY OF COMPUTATION   3 Units

This course is an introduction to the theory of computation. It discusses finite automata and Turing machines as models of computation. It includes discussions of regular sets, recursive and partially recursive functions, context free grammars, the halting problem, undecidable problems, complexity, and Np-completeness.
PREREQ: MATH 280 OR COMPSCI 215

COMPSCI 448   BIOINFORMATICS   3 Units

Bioinformatics is an introduction to computer applications and algorithms currently used in the analysis of biological data, especially genomic and sequence data. The course entails lectures, discussions, readings and hands-on experience with bioinformatic software. Through exercises and individual research projects students acquire a working knowledge of contemporary computational methods and software.
CROSS-LISTED: BIOLOGY 448 AND COMPSCI 448

COMPSCI 451   TOPICS IN APPLIED COMPUTING   3 Units

This course covers Modern Applied computing which includes programming on new platforms such as mobile devices, network security, wireless networks, data mining and recommender systems, user modeling, human computer interactions. Students will discuss papers or books related to the chosen topic, design and/or develop an application related to the topic.
PREREQ: COMPSCI 271 AND EITHER MCS 231 OR COMPSCI 223

COMPSCI 460   COMPUTER NETWORKING   3 Units

This course introduces the principles, applications, protocols, and architectures of data networks. It places an equal emphasis on practical experience as well as theoretical foundations. There will be abundant network programming and lab activities around application layer, transportation layer, and routing.
PREREQ: COMPSCI 223 AND COMPSCI 271 OR CONSENT OF INSTRUCTOR

COMPSCI 461   MOBILE COMPUTING ARCHITECTURE   3 Units

This course discusses fundamentals of wireless communication and mobile computing, and emphasizes the analysis and design of network architectures in support of mobility related services. It involves intensive critical thinking practices, programming, and hands-on experiments.
PREREQ: COMPSCI 223 AND COMPSCI 271 OR CONSENT OF INSTRUCTOR

COMPSCI 462   NETWORK SECURITY   3 Units

This course covers the basic and fundamental cryptographic alogorithms and security protocols for computer networks. Network vulnerabilities, attacks on Internet, network monitoring, security al the link, network and transport layers are also covered in the course.
PREREQ: COMPSCI 223 AND COMPSCI 271 OR CONSENT OF INSTRUCTOR

COMPSCI 476   SOFTWARE ENGINEERING   3 Units

This course introduces concepts and techniques relevant to the production of large software systems. Students are taught a programming method based on the recognition and description of useful abstractions. Topics include: modularity; specification; data abstraction; object modeling; design patterns; and testing.
PREREQ: MCS 231 OR COMPSCI 223 OR CONSENT OF INSTRUCTOR

COMPSCI 481   WEB SERVER AND UNIX ADMINISTRATION   3 Units

This course is intended to introduce students to Web Server software and UNIX and UNIX-like operating systems from the perspective of the System Administratior. Linux, the fastest growing operating system, will be studied in detail, together with the Apache web server. Web server configuration will be studied, including optimization, security issues and vertual server administration. Additional topics will include shell programming, system monitoring, file systems and the X Windows GUI. This course will focus on common system administration duties on the Linux platform. Students will acquire competency in using shell programming skills to automate the maintenance of server activity. Emphasis will be placed on using Linux as an Internet server.
PREREQ: COMPSCI 172 OR COMPSCI 174 OR EQUIVALENT PREPARATION AND CONSENT OF INSTRUCTOR

COMPSCI 482   ADVANCED WEB APPLICATION DEVELOPMENT   3 Units

This course will introduce students to popular technologies utilized in building database-driven Web applications. These include scripting languages (PHP, Ruby, JSP, NET), Web application frameworks, Web application design patterns, Web services, databases, and security.
PREREQ: COMPSCI 381 AND COMPSCI 382 OR EQUIVALENT PREPARATION OR CONSENT OF INSTRUCTOR

COMPSCI 485   PROJECT   Repeatable   1-3 Units

This course provides students with the opportunity to participate on a student project team under the management of a faculty member and industry practitioners. The project will be sponsored by a partnering business firm and may involve a wide array of technologies, functional areas and geographically dispersed teammates. This course will only be offered when projects are available. Students will be carefully chosen through an interview process. The number of credits will be determined by the complexity of the project and the level of student involvement.
PREREQ: COMPSCI 223 AND CONSENT OF DEPARTMENT

COMPSCI 490   WORKSHOP   Repeatable   1-3 Units

Variable topics. Group activity oriented presentations emphasizing "hands on" and participatory instructional techniques. Repeatable. Instructor Consent required.

COMPSCI 493   INTERNSHIP IN COMPUTER SCIENCE   Repeatable   1-12 Units

S/NC grade basis only.

COMPSCI 494   SEMINAR   2 Units

Variable topics. Group activity. An advanced course of study in a defined subject matter area emphasizing a small group in intense study with a faculty member.

COMPSCI 496   SPECIAL STUDIES   Repeatable   1-3 Units

Variable topics. Group activity. Not offered regularly in the curriculum but offered on topics selected on the basis of timeliness, need, and interest, and generally in the format of regularly scheduled Catalog offerings. Repeatable. Instructor Consent required.

COMPSCI 497   EXCHANGE STUDY   Repeatable   1-12 Units

Variable topics.

COMPSCI 498   INDEPENDENT STUDY IN COMPUTER SCIENCE   Repeatable   1-3 Units

Study of a selected topic or topics under the direction of a faculty member. Repeatable. Department Consent required.

COMPSCI 498R   INDEPENDENT STUDY - UNDERGRADUATE RESEARCH   Repeatable   1-3 Units

Study of a selected topic or topics under the direction of a faculty member. Repeatable. Department Consent required.