Course Descriptions

Course Catalog for COMPUTER SCIENCE
CPSC 110
Visual Computing
With the recent advancement of information technology, the amounts of data produced by various digital devices and computing systems are staggering. This course focuses on the fundamental visualization techniques which are essential to gain meaningful insights into these massive datasets by presenting the underlying structure of the data in understandable, visual forms. Topics will include the human visual system, color theory, information coding, data representation, and interactive visualization techniques and software. Students will also explore application areas including health care, national security, space exploration, bioinformatics, aircraft design, market analysis, education, social networks, weather, and everyday life.
1.00 units, Lecture
CPSC 110
Computing with Mobile Phones
App Inventor for Android is a new open source programming language for Android smart phones. App Inventor is a visual language that enables novice programmers to create powerful mobile applications that interact with the web and with other phones. In this course, students will learn how to access the world of mobile services and applications as creators, not just consumers. They will learn to create entertaining and socially useful apps that can be shared with friends and family. In addition to learning to program and how to become better problem solvers, students will also explore the exciting world of computer science from the perspective of mobile computing and its increasingly important effect on society.
1.00 units, Lecture
CPSC 115
Introduction to Computing
A fundamental treatment of computer science topics featuring the study of the high-level programming language Python. Topics discussed will include computer architecture, programming languages, and ethical issues involved in computer use. Problem-solving techniques involved in writing programs will be studied, proper style and documentation will be required, and object-oriented program design will be introduced. A required weekly lab will involve an intensive study of programming techniques in Python.
Prerequisite: C- or better in Computer Science 110 or mathematics skills appropriate for enrolling in a calculus class.
1.25 units, Lecture
CPSC 203
Mathematical Foundations of Computing
An introduction to the principles of logic and discrete mathematics required in the study of computer science. Topics covered may include: propositional and predicate logic and their relationship to general proof techniques used in computing and correctness proofs of programs; mathematical induction applied to recursion and recurrence relations; set theory with an emphasis on infinite sets used in computing; counting principles useful in analyzing graphs and trees; relations and functions and their relationship to databases and functional programming languages. Computer programs will be used to explore concepts examined in the course.
Prerequisite: C- or better in Computer Science 110, or mathematics skills appropriate for enrolling in a calculus class.
1.00 units, Lecture
CPSC 215
Data Structures and Algorithms
A study of data structures and algorithms using a high-level programming language. The basic data structures (lists, stacks, queues, trees, and files) and basic algorithms (searching, sorting, and file management) will be introduced and implemented. Data and procedural abstraction, software design principles, and the analysis of the complexity of algorithms will be discussed. Details related to programming will be covered in a required weekly lab.
Prerequisite: C- or better in Computer Science 115L.
1.25 units, Lecture
CPSC 219
Theory of Computation
A selection of topics intended to serve as an introduction to formal languages and automata theory. The topics will be chosen from among finite state machines, pushdown automata, Turing machines, the Chomsky language hierarchy and related questions of computability.
Prerequisite: C- or better in Computer Science 115L and Computer Science 203
1.00 units, Lecture
CPSC 225
Event Driven Programming
Event driven programming is a paradigm in which the control flow of a program is driven by external events, which can range from user interaction via a mouse click to clock signals generated from within a computer system. This course will explore a variety of platforms for and applications of event driven programming.
Prerequisite: C- or better in Computer Science 115L.
1.00 units, Lecture
CPSC 275
Introduction to Computer Systems
This course introduces the fundamental organization and structure of modern computer systems from the perspective of a programmer. Students will become more effective programmers as they learn how computer systems compile, link, and execute programs, store information, and communicate. Topics covered will include data representations, computer arithmetic, low-level representations of programs, processor organization, the memory hierarchy and management, processes, and system-level I/O. A required weekly lab will involve a series of programming exercises related to these topics.
Prerequisite: B- or better in Computer Science 115 or a C- or better in Computer Science 215L.
1.25 units, Lecture
CPSC 304
Computer Graphics
An introduction to geometric and computer graphics principles needed for developing software with graphical output. General principles of designing and testing of software systems with reusable components will be emphasized. Geometry and computer graphics topics covered will include coordinate systems, geometric transformations, windowing, curves, fractals, polyhedra, hidden lines, surfaces, color, and shading. Graphical programs that model phenomena from the natural sciences or aid the visualizing of conceptual models in computer science and mathematics will be used for examples and assignments.
Prerequisite: C- or better in Mathematics 132 and Computer Science 215L.
1.00 units, Lecture
CPSC 315
Systems Software
A study of the organization and implementation of computer operating systems. Topics include operating systems organization, file systems, memory and process management, resource allocation, recovery procedures, multiprogramming, and distributed processing. The Unix operating system will be used and emphasis will be placed on how various system functions have been implemented in the Unix environment.
Prerequisite: C- or better in Computer Science 215L, 275L and 203 (or concurrent enrollment in CPSC 203)
1.00 units, Lecture
CPSC 316
Foundations of Programming Languages
A study of the organization, specification, and behavior of programming languages. The course will focus on five different programming language paradigms: imperative, object-oriented, functional, logic, and concurrent. Programming assignments using example languages from each of these paradigms will be required. Emphasis will be placed on learning C++, PROLOG, and LISP in a Unix environment. Other topics covered include language syntax, control structures, objects, and functions.
Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203).
1.00 units, Lecture
CPSC 320
Analysis of Algorithms
A continuation of the study begun in Computer Science 215 of the complexity of algorithms used in computing. The notions of P, NP, and NP-complete problems and of non-computability will be covered. The algorithms studied will include examples involving sorting, graphs, geometry, and combinatorics. Theoretical aspects of algorithms will be studied as well as practical aspects useful in writing programs.
Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203).
1.00 units, Lecture
CPSC 333
Computer Networks
An introduction to the principles and practices of local area and wide area networking. Topics include the study of the layers of computer networking, network configurations, protocols, security, and reliability. Issues related to implementing networking configurations will be studied.
Prerequisite: C- or better in Computer Science 215L, 275L and 203 (or concurrent enrollment in CPSC 203)
1.00 units, Lecture
CPSC 340
Principles of Software Engineering
The study of issues involved in developing large-scale software systems. Topics covered include software life cycle, system design and specification, advanced programming concepts, and techniques for software testing, debugging, and maintenance. The issues studied will be applied to team projects.
Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203).
1.00 units, Lecture
CPSC 352
Artificial Intelligence
A study of basic principles and research methods in artificial intelligence. The course exposes students to selected topics in the field including pattern recognition, problem solving, theorem proving, knowledge representation, and natural language understanding by computers. The course will draw on recent advances made by cognitive scientists in each of these applications. Students are expected to study the theoretical background of an application. They will also complete several programming and simulation assignments during the semester.
Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203).
1.00 units, Lecture
CPSC 375
High-Performance Computing
This course will introduce various programming models and techniques for multiprocessors. Students will design, implement, and evaluate parallel algorithms for solving complex problems that demand high computational speed. Topics covered include parallel machine architecture, analysis of parallel algorithms, load balancing, and various parallel algorithms including sorting, searching, linear systems, and image processing.
Prerequisite: C- or better in Computer Science 215L, Computer Science 275L, and Mathematics 131.
1.00 units, Lecture
CPSC 385
Computer Security
Introduction to computer security, the practice of protecting information and computer systems from unauthorized actions. Topics covered in the course include information and computer security principles; basic adversarial models and threats; applied cryptography; network, software, operating system, and web security; real-world security protocols; policy, administration and auditing; and legal and ethical issues. Topics on privacy, anonymity, surveillance and a variety of modern, widely available tools for secure communication will also be discussed.
Prerequisite: C- or better in Computer Science 203, 215L and 275L
1.00 units, Lecture
CPSC 399
Independent Study
Independent work to develop maturity and initiative in the solution of a problem in the area of the student's special interests. This course may require concurrent registration in Computer Science 403 or 404. Submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for enrollment.
0.50 units min / 1.00 units max, Independent Study
CPSC 403
Computer Science Seminar
Students engaged in research (Computer Science 419) or independent study (Computer Science 399) and senior exercise students will meet with computer science faculty for oral presentations and critical discussions of journal papers, research plans, and research progress. Seniors using this course to satisfy the senior exercise requirement will be expected to complete a research or design project and make a formal presentation on its results to the seminar. The project may be an extension or revision of a project conducted in one of their other major courses.
0.50 units, Seminar
CPSC 404
Computer Science Seminar
Students engaged in research (Computer Science 419) or independent study (Computer Science 399) and senior exercise students will meet with computer science faculty for oral presentations and critical discussions of journal papers, research plans, and research progress. Seniors using this course to satisfy the senior exercise requirement will be expected to complete a research or design project and make a formal presentation on its results to the seminar. The project may be an extension or revision of a project conducted in one of their other major courses.
0.50 units, Seminar
CPSC 415
Special Topics: Mobile Computing
A survey of the concepts and practices involved in the emerging field of mobile computing, with a focus on the Android and iOS operating systems. Topics include event-driven programming, the client-server model, location awareness (GPS), service management, and mobile security. The course will also address some of the broader impacts of mobile computing on privacy, health, and the economy. The course will be project based and students will build several mobiles apps for the Android platform.
Prerequisite: C- or better in Computer Science 215.
1.00 units, Lecture
CPSC 466
Teaching Assistantship
Submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for enrollment.
0.50 units min / 1.00 units max, Independent Study
CPSC 490
Research Assistantship
No Course Description Available.
0.50 units min / 1.00 units max, Independent Study
CPSC 498
Senior Project Part 1
This course is comprised of a research or implementation project and a final written report. This course is required for all senior computer science majors. Students must locate a project advisor and must submit a preliminary proposal to the project adviser by the last day of classes in the spring semester of the junior year. In addition to the proposal, submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for each semester of this year-long project. The course credits are considered pending in the first semester and will be awarded upon completion of the second semester.
1.00 units, Independent Study
CPSC 499
Senior Project Part 2
This course is comprised of a research or implementation project and a final written report. This course is required for all senior computer science majors. Students must locate a project adviser and must submit a preliminary proposal to the project adviser by the last day of classes in the spring semester of the junior year. In addition to the proposal, submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for each semester of this year-long project. The course credits are considered pending in the first semester and will be awarded upon completion of the second semester.
1.00 units, Independent Study