Academic Catalog 2023-2024

CSC - Computer Science

CSC 1011  Computer Programming for the Absolute Beginner  (1 Unit)  

A gentle introduction to computer programming/scripting in the Python language for those with no prior programming experience. Topics include the use/purpose of programming in the context of different academic disciplines along with the basics of writing code. Students will learn to write simple programs using input and output, conditional statements, loops, and graphics. This class is for anyone who wants to join the coding conversation or to gain a background for more rigorous programming courses.

Prerequisite(s): MTH 0099  
Students who have credit for CSC 1043 may not take this course.  
CSC 1043  Introduction to Computer Programming  (2 Units)  

Introduces the syntax of a high level programming language with emphasis on the programming environment and the use of the constructs of the language to write simple application programs. Topics include data types, sequential, conditional, and iterative statements, one and multi-dimensional arrays, simple graphical animation, the use of objects, and I/O. Programming assignments get progressively more complex and designed to demonstrate the use of computing in a variety of disciplines including the natural sciences.

Also offered as EGR 1043.  
Prerequisite(s): MTH 1013 or equivalent.  
Corequisite(s): CSC 1043L  
CSC 1043L  Introduction to Computer Programming Lab  (1 Unit)  

A lab course designed for a hands-on exploration of Introductory Computer Programming. Meets two hours per week.

Not repeatable. Letter grade.  
Also offered as EGR 1043L.  
Prerequisite(s): MTH 1013 or equivalent.  
Corequisite(s): CSC 1043  
CSC 1054  Objects and Elementary Data Structures  (3 Units)  

As a continuation of CSC 1043, this course deals with more advanced computing constructs and ideas, reinforced in weekly labs. Topics include object-oriented design, inheritance, polymorphism, exception handling, and recursion, along with more intentional development and debugging strategies. Linked lists are introduced as a viable option for implementing basic ADT's. Students gain experience in the design of graphical user interfaces, event driven programming, and larger programming projects.

Also offered as EGR 1054.  
Prerequisite(s): CSC 1043 or EGR 1043 with a grade of C- or higher.  
Corequisite(s): CSC 1054L  
CSC 1054L  Objects and Elementary Data Structures Lab  (1 Unit)  

A lab course designed for a hands-on exploration of Objects and Elementary Data Structures. Meets two hours per week.

Not repeatable. Letter grade.  
Also offered as EGR 1054L.  
Prerequisite(s): CSC 1043 or EGR 1043 with a grade of C- or higher.  
Corequisite(s): CSC 1054  
CSC 2052  Data Structures in C++  (1 Unit)  

Students transition to the C++ language and are introduced to additional data structures, including queues, stacks, trees, and graphs considering their implementation with both arrays and linked lists. Concepts are reinforced through weekly programming assignments.

Prerequisite(s): CSC 1054 or EGR 1054 with a grade of C- or higher.  
Corequisite(s): CSC 2052L  
CSC 2052 is the first quad of CSC 2054.  
CSC 2052L  Data Structures in C++ Lab  (1 Unit)  

A lab course designed for a hands-on exploration of Data Structures in C++. Meets two hours per week.

Not repeatable. Letter grade.  
Prerequisite(s): CSC 1054 or EGR 1054 with a grade of C- or higher.  
Corequisite(s): CSC 2052  
CSC 2054  Data Structures and Algorithms  (3 Units)  

Standard data structures, including queues, stacks, trees, and graphs, as objects are defined and illustrated with associated dynamic storage management mechanisms. Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include measuring the complexity of recursive and iterative algorithms, algorithmic strategies, the concept of intractability and the theory of NP. Emphasis is placed on non-numerical algorithms such as sorting, searching, graph and network algorithms both sequential and parallel. Concepts are reinforced through weekly programming assignments.

Prerequisite(s): CSC 1054 or EGR 1054 with a grade of C- or higher.  
Corequisite(s): CSC 2054L  
CSC 2054L  Data Structures and Algorithms Lab  (1 Unit)  

A lab course designed for a hands-on exploration of Data Structures and Algorithms. Meets two hours per week.

Not repeatable. Letter grade.  
Prerequisite(s): CSC 1054 or EGR 1054 with a grade of C- or higher.  
Corequisite(s): CSC 2054  
CSC 3003  Python and UNIX  (3 Units)  

A course in Python programming that focuses on applications in data science, data analytics, and computational science. Programming exercises will emphasize data analysis techniques using modern third-party libraries. Students will also be introduced to UNIX based commands and utilities in data management and manipulation.

Also offered as EGR 3003.  
Prerequisite(s): CSC 1043 or EGR 1043 with a grade of C- or higher.  
CSC 3011  Machine Learning and Multivariate Modeling in R  (1 Unit)  

Students will learn the fundamentals of modeling complex multivariate data, using both foundational regression and logistic regression techniques, as well as the basics of supervised and unsupervised machine learning approaches. Additionally, students will learn to assess model fit and how to select appropriate modeling tools to identify relationships in complex data sets. Along with hands on instruction, students will work on real applications from industrial applications in business and science.

Prerequisite(s): CSC 1043 or EGR 1043 with a grade of C- or higher.  
CSC 3012  Operating Systems for Software Engineering Certificate  (2 Units)  

A systems course focusing on structural design and services of operating systems, along with the use of both GUI and command-line interfaces. Special attention is paid to process management and concurrency.

Prerequisite(s): CSC 2052 or CSC 2054  
CSC 3014  Operating Systems  (4 Units)  

A systems course focusing on operating systems, topics include basic operating system design, process management, device management, memory management, and file systems. Students are introduced to the basics of software evolution, reliability, concurrency, security and protection in the context of single-core, multi-core, distributed, and virtual environments. Class members gain experience using both GUI and command-line interfaces. In the course of implementing the CPU scheduling simulation, students understand the importance of thorough system testing and attention to system specs as they try to make parts of their systems work with those designed by their teammates.

Also offered as EGR 3014.  
Prerequisite(s): CSC 2052 with a grade of C- or higher or CSC 2054 with a grade of C- or higher.  
CSC 3021  Computational Tools  (1 Unit)  

A brief introduction to a variety of computing tools for students already competent in computer programming. Students will gain experience in using Excel with VBA, Visual Basic, Microsoft Access, HTML and JavaScript. The goal of this course is to help expand student awareness of available computing tools and the strengths and weaknesses of each.

Prerequisite(s): CSC 3003 or consent of instructor.  
CSC 3021 is the first quad of CSC 3022.  
CSC 3022  Data Management for Data Analytics  (2 Units)  

An introduction to data management in the context of scientific and business applications. Students will explore the data storage and manipulation requirements for these areas and learn to choose the correct data management tool for a given situation. Students will learn to design, create, and query relational databases using a Database Management System and SQL query language.

Prerequisite(s): CSC 3003 or consent of instructor.  
CSC 3023  Software Engineering  (3 Units)  

This course offers an in-depth treatment of the software development process. Software analysis and design study emphasizes an object-oriented approach that is introduced and contrasted with traditional design methodologies. CASE tools are used during the design process.

Corequisite(s): CSC 2054  
CSC 3031  Data Visualization and Communication with R  (1 Unit)  

Students will learn to create effective static and dynamic graphics for representing complex data sets. Students will learn to apply the principles of effective storytelling with data, and best practices in data design and communication.

Also offered as EGR 3023.  
Prerequisite(s): CSC 1043 or EGR 1043 with a grade of C- or higher.  
CSC 3054  Design and Analysis of Algorithms  (4 Units)  

Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include measuring the complexity of recursive and iterative algorithms, algorithmic strategies, the concept of intractability and the theory of NP. Emphasis is placed on non-numerical algorithms such as sorting, searching, and graph and network algorithms both sequential and parallel.

Prerequisite(s): CSC 2054 and MTH 3043  
CSC 3094  Programming Languages  (4 Units)  

This course in programming languages covers language design issues and language translators. Laboratories give students a practical understanding of programming language concepts as well as give experience in programming using several programming languages.

Prerequisite(s): CSC 2054 and MTH 3043  
CSC 3102  Security+ Exam Preparation  (1-2 Units)  

This is an independent study course designed for students who wish to prepare for the CompTIA's Security+ certification exam. The course is intended for students who have already completed at least one course in computer security.

Prerequisite(s): Consent of instructor.  
CSC 3112  Network+ Exam Preparation  (1-2 Units)  

This is an independent study course designed for students who wish to prepare for the CompTIA's Network+ certification exam. The course is intended for students who have already completed at least one course in computer networking.

Prerequisite(s): Consent of instructor.  
CSC 4012  Topics in Computer Science  (2 Units)  

Study of an area of computer science not otherwise included in the curriculum. Topics are determined by the needs and interest of the students and faculty involved.

May be repeated up to a total of six (6) units.  
Prerequisite(s): CSC 2054, MTH 1031 and MTH 1044 or MTH 1064 and consent of instructor.  
CSC 4054  Computer Architecture and Assembly Language  (4 Units)  

This course covers the fundamentals of current pipelined computer designs. Experience with assembly language programming and digital logic and circuit design will be used to motivate the need for certain facets of the more general instruction set architecture. Throughout the course, performance issues, hardware constraints, and memory hierarchy will be shown to inform processor design. Additional topics include integer and floating point arithmetic, I/O and considerations surrounding multi-core architectures.

Also offered as EGR 4054.  
Prerequisite(s): CSC 1054 or EGR 1054 with a grade of C- or higher and Junior or Senior standing.  
CSC 4081  Senior Seminar in Computer Science  (1 Unit)  

This one-unit capstone course is a seminar in which students give lectures on topics of general interest in computer science. Issues related to vocation and calling are also discussed.

Credit/No Credit.  
Prerequisite(s): One of CSC 4102, CSC 4133, HON 4098, ISS 4072, ISS 4102, ISS 4133, MTH 4102, or MTH 4133 and Senior standing (or Junior standing if a December graduate).  
CSC 4091  Independent Studies in Computer Science  (1-4 Units)  

Study of a selected problem or topic under the direction of an instructor. The instructor and student propose the course of study.

May be repeated for a total of six (6) units.  
Prerequisite(s): Consent of instructor and approval by the department chair is required.  
CSC 4093  Software Project  (3 Units)  

This course presents the student with a strong experience in software engineering. Students, working in teams, investigate, design, implement and present to their classmates a significant software project. The project should solve a significant, complex and generalizable problem, dealing with constraints and trade-offs in the solution. The course includes study of project management concerns such as planning, scheduling, and assessing progress.

Prerequisite(s): CSC 3023 and Junior or Senior standing.  
CSC 4102  Independent Research in Computer Science I  (2 Units)  

Independent research conducted under the guidance of a faculty mentor. The instructor and student propose the research topic.

Credit/No Credit.  
Prerequisite(s): Approval of the department chair, consent of instructor, and Junior standing.  
CSC 4121  Independent Research in Computer Science II  (1 Unit)  

The continuation of independent research conducted under the guidance of a faculty mentor. The instructor and student propose the research topic.

Credit/No Credit.  
Prerequisite(s): Approval of the department chair, CSC 4102, and consent of instructor.  
CSC 4133  Service Learning in Computer Science  (3 Units)  

Students working in teams design and implement a project using a broad spectrum of computer science knowledge to meet the needs of a community organization or the university.

Prerequisite(s): Consent of instructor and Junior standing.