"The students are eager to see each unit project. The projects not only pique the students' interests, but give them a reason to master each lesson as it is presented. I'm glad you continued that practice with the CS A materials."
—Wendy G., CS A and CS Principles Teacher
In this rigorous, project-based curriculum, students deep-dive into programming concepts while collaborating to solve a series of socially relevant challenges.
Each unit introduces a unique, real-world problem following an overarching course narrative as students “travel the globe” in search of a missing scientist.
This curriculum immerses students in Java programming topics (e.g. abstraction, algorithms, data structures, object-oriented programming) and prepares students for advanced college coursework and potential career pathways in computer science.
Included With Your Course License
- Comprehensive teacher materials
- Complete student-facing curriculum
- Unlimited teacher support
- Codio platform access, with student accounts
We're endorsed by the College Board
UTeach CS A fully aligns with both the spirit and letter of the College Board’s AP® Computer Science A Framework.
CS A Unit Descriptions
- Unit 1: Introductions Are In Order (Avatar Creator Project)
- Unit 2: Primitive Control (Resource Finder Project)
- Unit 3: Strings and Iteration (Language Interpreter Project)
- Unit 4: Objects, Classes, and Methods (Disease Diagnoser Project)
- Unit 5: Arrays, ArrayLists, and 2D Arrays (Air Quality Analyzer Project)
- Unit 6: Inheritance (Hospital Locator Project)
- Unit 7: Searching, Sorting, and Recursion (Data Decoder Project)
In Unit 1, students create unique avatars using programming algorithms to represent themselves as members of a technical team supporting the characters in the course narrative.
Students are gently introduced to text-based programming using Java with basic commands to draw graphics.
Throughout the unit, students master basic coding tools and concepts, such as algorithms and abstraction, which can be easily applied in later units. Students also explore the Big Ideas of Modularity, Control, and the Impact of Computing.
*An alternate version of this unit is available using Python with Turtle, for students who have previous coding experience with Python.
In Unit 2, students jump into programming in Java by creating a program to identify an ideal area of land in Antarctica where it would be safe to build a new research station.
Throughout the unit, students study primitive data types in Java, mathematical expressions and operators, boolean expressions, conditionals, using objects, and calling methods.
After learning about some of the basics of object-oriented programming and Java syntax, students use their newly acquired skills to create a program to read and analyze data from different rock samples. Students must reformat the data into a more readable format and then analyze the density values to identify a safe location for the new research station.
In Unit 3, students create a language interpreter program that collects a speech sample of an unknown indigenous language in South America, then uses iteration and String class methods to translate the new language into English.
Students explore a wide variety of string manipulation algorithms, as well as their myriad applications in programming. Students apply their knowledge of the String class and its associated methods to find patterns in the original string and translate those to a new string.
This unit also introduces iteration and the Java control structures that allow for the use of repetition in programs. Manipulating strings is a very common task in programming, so students explore many string manipulation algorithms.
In Unit 4, students design a program using classes and methods in order to diagnose different diseases based on patient symptoms in a clinic in Africa.
Students dig deeper into object-oriented programming as they explore all the components of a class, including private instance variables, constructors, accessor methods, mutator methods, and helper methods.
Students examine private versus public access to data and methods, as well as the different categories of methods, including static/non-static and void/non-void. By the end of the unit, students create a complete class and instantiate objects of that class to determine if symptoms match a specific disease.
In Unit 5, students develop data structures and algorithms to analyze real-world pollution data from cities in Asia.
Students learn how to use three different data structures: one-dimensional static arrays, one-dimensional dynamic arrays through the use of the ArrayList class, and two-dimensional arrays. Students master methods for creating, accessing, and traversing each data structure. After applying algorithms to process and analyze the data, students compare the use of the different data structures and determine the scalability of their programs for larger data sets.
In Unit 6, students rebuild a compromised database of hospitals in Australia by designing a superclass and related subclasses, populating the database, and then searching the database for a specific entry.
Since class interaction is a fundamental concept of object-oriented programming, students take a comprehensive look at relationships between classes in Java, specifically inheritance and composition.
Throughout the unit, students explore topics such as superclasses and subclasses, constructors of subclasses, overriding methods, composition, the Object class, and polymorphism.
By the end of the unit, students discover how building a new class from an existing class or using features of one class in another class leads to reliability, which is the main goal of object-oriented programming.
In Unit 7, students apply searching and sorting algorithms to analyze global ice sheet data for a climate change presentation to the World Meteorological Organization in Europe.
Students store the provided ice thickness values in a one-dimensional array, execute linear searches for particular values, and implement selection and insertion sorts. Students make predictions about the efficiency of their sorting algorithms, test their predictions against a larger database, and optimize their algorithms for greater efficiency.
Students also learn the concept of recursion and how to implement a recursive sort.