AP Alignment
This section contains details and evidence for how this course is aligned with the AP Computer Science A course and exam.
This section contains details and evidence for how this course is aligned with the AP Computer Science A course and exam.
Reference: AP Course and Exam Description
Students and teachers have access to a college-level computer science textbook in print or electronic format.
The primary teaching resource in this course is Fundamental Computer Programming Concepts, an eTextbook authored by K-State faculty. The textbook consists of lecture material and videos developed and presented by K-State faculty, as well as an annotated bibliography of additional readings and videos from across the internet on each topic. The textbook is used in a college-level course taught at K-State:
The textbook can be found online at:
Students will be directed to additional online resources such as official language documentation and tutorials.
The course provides opportunities to develop student understanding of the required content outlined in each of the units described in the AP Course and Exam Description (CED)
The course consists of multiple modules of content. Each module generally includes three components:
Below is an outline of the modules in this course and their alignment to the units in the AP Course and Exam Description.
Students are introduced to the course and the Java programming language. Students will complete a project that confirms they are able to compile and run Java code, as well as produce text output to the terminal.
Students learn about basic numerical data types (int
and double
) and how to store and retrieve values. Students also learn about the basic mathematical operators in Java and order of operations. Students learn to construct mathematical expressions to compute complex values and then use assignment statements to store them in a variable.
Students are introduced to the boolean
data type and learn about true
and false
values. Students learn the basic Boolean operators and how to construct complex Boolean expressions. Students learn how to use comparators to generate Boolean values from numerical data. Students also learn the basics of Boolean algebra and how to perform basic simplifications of Boolean expressions or determine if two Boolean expressions are equivalent.
if
Statements
Students are introduced to the basic conditional statements in Java, including the if
and if-else
statements. Students learn how to develop programs with more advanced control flow structures, including best practices for nesting and/or chaining conditional statements (else if
statements) to achieve mutual exclusion and make code easily readable and understandable.
Unit 3 - Boolean Expressions and if
Statements
if
Statements and Control Flowif-else
Statementselse if
StatementsStudents are introduced to looping constructs in Java, including the while
and do-while
loops. Students learn how to construct loops that will continue based on a Boolean expression. Students learn the basics of analyzing loops to determine how many times they iterate and to verify that the loop will properly terminate.
Unit 4 - Iteration
while
Loopsfor
loopsStudents are introduced to methods in Java. Students learn to create their own methods, including the use of parameters and return statements. Students learn to call methods by providing arguments and storing the returned results in a variable. Students learn about the importance of creating modular code that is easy to write, understand, test, and debug. Students are also introduced to the concept of developing tests that achieve code coverage across an entire method.
Students are introduced to objects in Java. This module is mostly focused on creating/instantiating objects from existing classes and developing simple classes with a few attributes, methods, and a constructor to add more modularity to their existing programs. Students are introduced to an “Instance and Driver” programming model, similar to the “Model” and “Controller” portions of the MVC design pattern.
Math
ClassStudents are introduced to storing aggregate data using arrays in Java. Students learn how to create arrays, access and store data in individual elements, and iterate through arrays using a for
loop or enhanced for
loop. Students are also introduced to multi-dimensional arrays and methods for iterating in multiple dimensions. Students learn the accumulator pattern as a way to collect data while looping through an array.
for
Loop and ArraysStudents are introduced to the String
data type in Java. Students learn how to read input strings from the terminal and parse them into smaller parts. Students learn how to convert strings to numeric data types. Students learn about various string methods such as comparison, substring, concatenation, searching within strings, and manipulating strings. Students learn how to produce formatted string outputs.
String
Objects: Concatenation, Literals, and MoreString
Methodsif
Statements
String
objects only)Students learn about exceptions and errors in Java. Students are introduced to the try-catch
statement to deal with exceptions as they occur. Students learn about checked and unchecked exceptions and which ones must be handled before compiling code.
Students learn about file systems and how to interact with them in Java. Students learn to open and read text from files as well as write text to file. Students learn how to use the try
with resources statement to ensure files are properly closed even if exceptions occur. Students learn some basic operations to manipulate files in a file system using Java.
java.nio.file
library classes gives ample practice using objects and calling methods)String
Objects: Concatenation, Literals, and More (parsing strings from files)Students learn to develop their own object-oriented classes. Students explore all aspects of class creation, including constructors, attributes, accessor methods, variable scope and access modifiers, and more. Students learn that any class they create is actually a new data type. Students learn how to write their own equals()
method to compare two objects of the same type.
if
Statements
this
KeywordStudents learn about inheritance in object-oriented programming. Students create abstract superclasses and learn to inherit both attributes and methods from the superclass. Students learn how to override methods in a subclass. Students learn how to access members of the superclass using the super
keyword. Students learn about polymorphism and how a subclass can be treated as the same type as any of its superclasses. Students learn about the overall Object
superclass in Java.
super
KeywordObject
SuperclassStudents are introduced to the Model View Controller (MVC) design pattern. Students learn how to use that design pattern to develop programs that follow a standard design structure and are easily understandable by other programmers. Students learn how to follow the concept of “separation of concerns” to divide the presentation logic in the View from the program logic in the Model and then combine the two using a Controller.
(this module serves to reinforce concepts from prior modules but does not introduce any new content from the AP CED)
Students learn about several built-in collection types in Java, such as the List
interface (ArrayList
and LinkedList
), the Map
interface (HashMap
), and creating and using simple tuple classes to allow storing compound data in a collection (Java does not include a tuple as a basic collection but Python does, and many students find this structure useful). Students learn how to store and retrieve data in lists and maps, and how to iterate through each collection. Students learn how to search for data in each collection, and how to sort data in an ordered collection such as a list. Students learn to create their own compareTo()
methods for tuples and other objects.
Integer
and Double
(collections store objects and not primitives)ArrayList
ArrayList
ArrayList
MethodsStudents learn about recursion and how it can be used in place of iteration when developing repeating control flow structures. Students learn how to use recursion to search and sort in collections.
An inverse of the outline above, organized to follow the AP course units, is given below:
if
Statements - Module 3, Module 4, Module 9, Module 12ArrayList
- Module 15The course provides opportunities to develop student understanding of the big ideas, as outlined in the AP Course and Exam Description (CED).
Students will construct several programming projects that focus on modular development. Some examples of current projects focusing on modularity:
Students will construct several programming projects that focus on using variables to store and retrieve data. Some examples of current projects focusing on variables:
ArrayList
and HashMap
to store all the data needed to represent the game, and then construct the board virtually as needed.Students will construct several projects that focus on making decisions and altering control flow. Some examples of projects focusing on control flow:
Students will engage in several interactive discussions in class and using online tools to discuss the impacts of programs developed in this course. In addition, they will be given the opportunity to discuss and ask questions about technology stories in the news and how technology is shaping our modern world (for example, NFTs and cryptocurrency, data breaches, AI generated content, etc.). Students will learn and discuss ways that they can stay informed and consider ways to understand the impact of programs they develop on the larger world.
The course provides opportunities for students to develop the skills related to Computational Thinking Practice 1: Program Design and Algorithm Development, as outlined in the AP Course and Exam Description (CED).
Students will complete more than 10 programming projects of various types. Each project requires students to develop code from scratch to solve the problem or match the given specification. Later programs require students to develop multiple classes and methods to solve the project, and many programs involve development of novel algorithms. In several projects, students will be given either partial starter code or directed to Java libraries to find methods that can be used. (Skill 1.C)
The course provides opportunities for students to develop the skills related to Computational Thinking Practice 2: Code Logic, as outlined in the AP Course and Exam Description (CED).
Students will develop many projects that involve determining and producing the correct output given a set of initial inputs. Examples include using Boolean logic operators, comparators, and math operators to answer questions about input values without any control flow (Skill 2.A) and determining the output produced by small sample code segments (Skill 2.B, 2.C).
The course provides opportunities for students to develop the skills related to Computational Thinking Practice 3: Code Implementation, as outlined in the AP Course and Exam Description (CED).
Students will develop more than 10 programming projects of various types. A major focus of each project is implementing program code to meet a given specification (Skill 3.C). Later projects include using objects (Skill 3.A), developing new classes (Skill 3.B), and working with arrays (Skill 3.D) and 2D arrays (Skill 3.E)
The course provides opportunities for students to develop the skills related to Computational Thinking Practice 4: Code Testing, as outlined in the AP Course and Exam Description (CED).
As part of the development process for many projects, students will be asked to develop their own test cases to ensure that the program is working correctly, and to identify and debug any errors that exist (Skill 4.A, 4.B).
The course provides opportunities for students to develop the skills related to Computational Thinking Practice 5: Documentation, as outlined in the AP Course and Exam Description (CED).
In several modules, students are given code examples and are asked to describe its output and trace the steps it takes (Skill 5.A). Other examples introduce code with known errors that the student must describe and correct (Skill 5.B)
This course provides students with hands-on lab experiences to practice programming through designing and implementing computer-based solutions to problems.
Students will spend at least 20 hours of in-class time working on programming projects throughout the semester. A list of current projects is given below:
int
and double
data types and observe the outputs produced.