Cal Poly's Upper Division C program, often referred to as "Cal Poly C" or simply "C at Cal Poly," is a comprehensive computer science program that empowers students with advanced skills in software engineering and computer systems. Located in San Luis Obispo, California, Cal Poly's program stands out for its hands-on, project-based learning approach, a hallmark of Cal Poly's "learn by doing" philosophy.

The Upper Division C program is designed for students who have completed their lower division requirements in computer science. It delves deeper into computer science principles, preparing students for careers in the tech industry or further studies in graduate school.

Core Curriculum
The core curriculum of Cal Poly's Upper Division C program builds upon the foundations laid in the lower division courses. It consists of four 15-week quarters, each filled with rigorous, cutting-edge courses.

Key subjects covered include operating systems, computer networks, software engineering, computer architecture, and algorithms. These courses equip students with the technical skills required to design, implement, and maintain large, complex software systems.
Software Engineering

Cal Poly's Upper Division C program places heavy emphasis on software engineering principles. Courses like Software Engineering Methodologies and Capstone Software Engineering provide students with practical experience in developing, testing, and managing software projects. These experiences mimic real-world software development processes, preparing graduates for the professional world.
Students work in teams, following Agile and Scrum methodologies to deliver software projects. This collaborative approach fosters communication, teamwork, and leadership skills, rounding out each student's technical expertise with essential soft skills.
Computer Systems

To complement the software engineering focus, the Upper Division C program also delves into computer systems. Courses like Computer Architecture, Operating Systems, and Computer Networks provide students with a deep understanding of how computers and networks function at a low level.
Students gain hands-on experience with assembly language programming, operating system internals, and network protocols. This knowledge enables them to make informed decisions when designing and implementing software systems, addressing performance and efficiency concerns.
Electives and Specializations

In addition to the core curriculum, Cal Poly's Upper Division C program offers a range of electives, allowing students to specialize in areas that interest them. These electives can help students tailor their degree to their career goals or personal interests.
Specialization options include Mobile App Development, Data Science, Computer Graphics, Computer Security, and Human-Computer Interaction, among others. Each specialization offers its own set of courses, providing students with advanced, focused knowledge in that area.




















Mobile App Development
Students interested in mobile app development can take courses focused on Android and iOS app development. These courses teach students the Java, Kotlin, and Swift programming languages, as well as the fundamentals of app design and testing.
Upon completing the specialization, students will have developed multiple mobile apps, ready to be showcased in their portfolios and potentially submitted to the Google Play Store or Apple App Store.
Data Science
For students interested in data-driven decision making, the data science specialization offers courses in machine learning, data mining, and statistics. Students learn to analyze and interpret large datasets, building predictive models and data visualizations.
Cal Poly's data science offerings provide students with hands-on experience using industry-standard tools like Python, R, and TensorFlow. Students also learn about data ethics and responsible data use, rounding out their data science skills.
Graduates of Cal Poly's Upper Division C program leave with more than just a degree; they leave with a portfolio of projects, practical experience, and a deep understanding of computer science principles. This prepares them to be innovative problem solvers in the tech industry, ready to tackle the complex challenges of tomorrow.