Online Master of Science in Computer Science Curriculum

To stay up-to-date in the constantly evolving computer science field, the master’s in computer science online courses at California State University, Chico are focused on key topics like machine learning, software design, AI, and more. For flexibility while you work, you can complete these asynchronous computer science classes online, whenever works best for your schedule.

Prerequisites

Generally, an undergraduate degree in computer science will waive all prerequisites. Any prerequisite can be waived with appropriate academic or professional experience. Chico State will determine if prerequisites have been met.

CINS 370 – Introduction to Databases

This course provides an introduction to the theory and methodology for database design and implementation. Topics may include a survey/lecture component as well as a project component. The survey component covers entity- relationship modeling, relational algebra and calculus theories, data definition and data manipulation languages such as SQL, file structures, transactions, concurrency control, recovery, tuning and optimization, and object-oriented databases. The project entails requirements definition, design, and implementation of a database application.

CSCI 111 – Programming and Algorithms I (taught in C++)

A first-semester programming course, providing an overview of computer systems and an introduction to problem solving and software design using procedural object-oriented programming languages. Coverage includes the software life cycle, as well as algorithms and their role in software design. Students are expected to design, implement, and test a number of programs.

CSCI 211 – Programming and Algorithms II* (taught in C++)

A second semester object-oriented programming course in computer science that emphasizes problem solving. This course continues the study of software specification, design, implementation, and debugging techniques while introducing abstract data types, fundamental data structures and associated algorithms. Coverage includes dynamic memory, file I/O, linked lists, stacks, queues, trees, recursion, and an introduction to the complexity of algorithms. Students are expected to design, implement, test, and analyze a number of programs.

CSCI/MATH 217 – Discrete Mathematics

Offers an intensive introduction to discrete mathematics as used in computer science. Topics include sets, relations, propositional and predicate logic, basic proof methods including mathematical induction, digital logic circuits, complexity of algorithms, elementary combinatorics, and solving linear recurrence relations.

CSCI 311 – Algorithms and Data Structures* (taught in C++)

Offers an intensive introduction to discrete mathematics as used in computer science. Topics include sets, relations, propositional and predicate logic, basic proof methods including mathematical induction, digital logic circuits, complexity of algorithms, elementary combinatorics, and solving linear recurrence relations.

CSCI 430 – Software Engineering

An overview of software engineering principles, practice, and tools. Topics include: agile software engineering methodologies, requirements engineering, test-driven development, software design patterns, MVC architecture, version control, software metrics, and static analysis. Students work in groups to design and implement a semester-long open source software project.

CSCI 440 – Operating Systems

Operating system fundamentals, including history, process and thread management, concurrency with semaphores and monitors, deadlocks, storage management, file systems, I/O, and distributed systems.

*If the applicant has not already completed this course, it must be completed at Chico State.

Core Courses (3 units each)

CINS 670 – Advanced Database Management Systems

This course covers the SQL programming language including data definition language, data manipulation language, and data control language. The course then focuses on a procedural database programming language including control structures, composite data types, explicit cursors, exception handling, and writing embedded SQL applications.

CSCI 511 – Advanced Object-Oriented Programming

Prerequisite: CSCI 311 with a grade of C or higher.

This course is dedicated to the analysis, design, and implementation of programming problems using an object-oriented approach. Modern object-oriented languages are utilized. Topics include inheritance, the underlying implementation of polymorphism, exception handling, extending existing system libraries, and approaching algorithm development from an object-oriented perspective.

CSCI 546 – Network Forensics

Prerequisite: CSCI 446 with a grade of C or higher.

This course covers the most critical skills needed for the increased focus on network communications and artifacts in today's investigative work. It will cover the tools, technology, and processes required to integrate network evidence sources into investigations, with a focus on efficiency and effectiveness.

CSCI 611 – Applied Machine Learning - 3 Units

This course offers a practical exploration into machine learning and cutting-edge topics in neural networks, including modern techniques for deep learning. Students build deep learning models using sophisticated machine learning frameworks and scientific libraries.

CSCI 612 – Applied Computer Vision

Applied computer vision used in automation, robotics, physical security, surveillance, and inspection applications and systems. Topics covered include theory of computer vision and related algorithms for image capture and processing, filtering, thresholds, edge detection, shape analysis, shape detection, salient object detection, pattern matching, digital image enhancement, stereo ranging, and methods of sensor and information fusion. Focus is on real-time continuous image processing from cameras and video. Applications using multi-core and co-processing parallel computing systems are covered as they relate to scaling of computer vision applications.

CSCI 620 – Web Technology

This course examines frameworks, libraries, languages, and tools for the development of full-stack web applications that are progressive, responsive, and secure. Students propose, design, develop, test, and present a nontrivial full-stack web application.

CSCI 630 – Software Design and Maintenance

This course builds upon fundamental software engineering skills with an emphasis on: object-oriented software design patterns, anti-patterns, code review and refactoring, and tools for evaluating code quality. Students practice maintaining software by collaborating on a large-scale open-source project using automated development operation (DevOps) tools. Students will also conduct a study of designing and maintaining complex software.

CSCI 640 – Scalable Software Systems

This course offers a practical exploration of topics in scalable computing. Students gain hands-on experience building things to solve a multitude of topics in scalable computing. Students should learn how to solve computationally complex problems involving big data. Topics include but are not limited to single-node and multi-node parallelism, threading, and coprocessor programming.

CSCI 650 – Algorithms and Computability

This course presents algorithm design techniques (such as divide-and-conquer, greedy algorithms, dynamic programming, and others), mathematical and empirical analysis of algorithms, computability, Rice's theorem, P and NP classes, NP-completeness, and recent advances in algorithms.

CSCI 693 – Research Methods in Computer Science

This course interweaves three distinct themes (investigation, experimentation, and technical writing), that culminate in a comprehensive research project, written report, presentation, and oral defense. First, the students are immersed into the research process within computer science. This includes an understanding of the role, ethics, and responsibility of researchers in computer science. The second focus is on rigorous design of experiments for the purpose of testing research hypotheses, simulations, and models, and interpreting the results of those experiments. Finally, proficiency in communication of scientific ideas and findings will be addressed, from intensive reading, critiques, technical writing and oral presentations.

Admissions Dates and Deadlines

Dec
9
Priority Application Deadline
Spring 2025 Term
Jan
3
Application Deadline
Spring 2025 Term
Jan
21
Next Start
Spring 2025 Term