Curriculum
The content, lessons, activities, and labs offered here are organized around our Lighthouse Curriculum. A lighthouse leads the way and we offer this curriculum as a way to lead learning introductory computer science and Java. We recognize that there are many ways to approach teaching and learning programming and in this case Java. We are not professing this is the best way, just A way. Providing a curriculum allows us to organize supporting material around a structure.
Computer Programming Skills
The following skills should be integrated throughout the curriculum:
Skill Group |
Skill |
S1: Design |
S1.A Explain the impact of an application considering both the benefits as well as any potential harmful effects. |
S1.B Explain the impact design has on security. |
S1.C Explain the impact design has on data storage. |
S2: Documentation |
S2.A Identify different types of comments. |
S2.B Write and interpret comments to understand the function of code segments. |
S3: Version Control |
S3.A Explain best practices to maintain version control. |
S4: Artificial Intelligence |
S4.A Explain best practices for using generative artificial intelligence when creating programs. |
Course 1: Programming in Java
This proposed sequence represents the necessary components found in any introductory programming course regardless of programming language. It has been written broadly to allow the flexibility of existing curriculums or textbooks to fit into this structure. Of course, there are many ways to approach the topic of introductory programming successful and we encourage you to use your professional judgement, experience, and knowledge of your students when determining the true path and sequence of your course.
Because this curriculum is meant to be implemented in Java, there are object-oriented programming as well as data-oriented programming elements included. Data-oriented programming provides ways to treat data as data, ensuring that immutable data is kept secure.
Unit 1.1: Working with Data
Topic |
Learning Objective |
1.1.A Algorithmic Thinking |
1.1.A.1 Represent patterns and routines using everyday language. |
1.1.A.2 Recognize when the algorithmic components of sequencing, selection, and iteration are being used in patterns and routines. |
1.1.B Variables and Data Types |
1.1.B.1 Determine the type of data that is being stored. |
1.1.B.2 Distinguish between primitive data types and non-primitive data types (objects), including String .
|
1.1.B.3 Distinguish between mutable and immutable data types. |
1.1.B.4 Identify variable names for data that are descriptive, meaningful, and conform to the rules of the language. |
1.1.B.5 Declare and create variables of specific types. |
1.1.B.6 Assign values to variables. |
1.1.B.7 Use var to create variables of inferred types.
|
1.1.B.8 Create new data types for immutable data using records.
|
1.1.B.9 Create instances of records.
|
1.1.C Expressions, Output, and Input |
1.1.C.1 Write and interpret arithmetic expressions that use variables and constants.
|
1.1.C.2 Assign expressions to variables using assignment and compound assignment operators. |
1.1.C.3 Use casting in expressions when necessary to obtain the correct type. |
1.1.C.4 Describe conditions and consequences for when the value of a variable goes out of range. |
1.1.C.5 Write and interpret output statements. |
1.1.C.6 Write and interpret input statements for values being provided from an external source. |
1.1.C.7 Explore visual means for input and output. |
1.1.D Creating Objects & Calling Methods |
1.1.D.1 Identify methods that are provided for a record. |
1.1.D.2 Write and interpret calls to methods of a record. |
1.1.D.3 Read and understand an API. |
1.1.D.4 Write and interpret calls to static methods, such as those in the Math class. |
1.1.D.5 Create instances of classes. |
1.1.D.6 Write and interpret calls to methods of a class.
|
Unit 1.2: Algorithms
Topic |
Learning Objective |
1.2.A Boolean Expressions |
1.2.A.1 Write and interpret Boolean expressions that use variables, constants, relational operators, and logic operators. |
1.2.A.2 Write and interpret compound Boolean expressions. |
1.2.B Selection Statements |
1.2.B.1 Write and interpret one-way selection, two-way selection, nested, and multi-way selection statements. |
1.2.B.2 Determine equivalent Boolean expressions. |
1.2.B.3 Write and interpret two-way selection statements using the ternary conditional operator.
|
1.2.B.4 Write and interpret switch statements and expressions.
|
1.2.B.5 Write and interpret statements that incorporate patterns, such as unnamed patterns, record patterns, pattern matching with instanceof, and pattern matching with switch.
|
1.2.C Iteration Statements |
1.2.C.1 Write and interpret iteration statements using while , do-while , and for loop structures. |
1.2.C.2 Write and interpret nested iteration statements. |
1.2.D Recursion |
1.2.D.1 Identify the base case and recursive call of a recursive method. |
1.2.D.2 Write recursive methods. |
1.2.D.3 Trace recursive calls to determine the result of calling a recursive method. |
Unit 1.3: Creating Classes and Objects
Topic |
Learning Objective |
1.3.A Creating Classes |
1.3.A.1 Identify class data and behaviors. |
1.3.A.2 Write and interpret code to create a class with instance variables, constructors, and methods.
|
1.3.B Implementing Interfaces |
1.3.B.1 Explain the difference between a class and an interface. |
1.3.B.2 Write code to implement an interface. |
1.3.B.3 Write and interpret code to create objects of a class that implements an interface. |
1.3.C Lambda |
1.3.C.1 Explain the conditions required to use lambda notation.
|
1.3.C.2 Write code using a lambda expression to implement a method of an interface. |
1.3.C.3 Write and interpret code to call a lambda expression. |
Unit 1.4: Lists
Topic |
Learning Objective |
1.4.A Collections and Lists |
1.4.A.1 Declare and create Collections , such as List and ArrayList objects.
|
1.4.A.2 Write code to manipulate data in an Collections .
|
1.4.B Streams |
1.4.B.1 Process data with Stream API. |
1.4.B.2 Implement map-filter-reduce algorithms on data. |
1.4.C File Reading and Exception Handling |
1.4.C.1 Read input from a spreadsheet file, such as a csv file, and store appropriately. |
1.4.C.2 Write statements to handle the throwing of exceptions. |
1.4.C.3 Process data from a file using Stream interfaces. |
1.4.D Searching and Sorting |
1.4.D.1 Explain the difference between linear and binary search algorithms. |
1.4.D.2 Identify different sorting algorithms. |
1.4.D.3 Write calls to methods to sort data in a list. |