UTeach CS A Course Overview
In this rigorous, year-long course, students deep-dive into programming concepts while collaborating to solve a series of project-based 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 course 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.
Unit 1: Introductions Are In Order (Avatar Creator 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 Python with Turtle, a language used 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 using Java. Students also explore the Big Ideas of Modularity, Control, and the Impact of Computing.
Unit 2: Primitive Control (Resource Finder Project)
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.
Unit 3: Strings and Iteration (Language Interpreter Project)
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.
Unit 4: Objects, Classes, and Methods (Disease Diagnoser Project)
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.
Unit 5: Arrays, ArrayLists, and 2D Arrays (Air Quality Analyzer Project)
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.
Unit 6: Inheritance (Hospital Locator Project)
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.
Unit 7: Searching, Sorting, and Recursion (Data Decoder Project)
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.