Please enable JavaScript to use CodeHS

IB Computer Science Higher Level (Year One)

Description

In this lesson, students are introduced to CodeHS and how Karel the Dog can be given a set of instructions to perform a simple task.

Objective

Students will be able to:

  • Write their first Karel program by typing out all of the Karel commands with proper syntax

  • Explain how giving commands to a computer is like giving commands to a dog

Description

In this lesson, students learn more about Karel and Karel’s world. Students learn about walls in Karel’s world, the directions Karel can face, and how to identify a location in Karel’s world using streets and avenues. In these exercises, students will begin to see the limitations of Karel’s commands. Students will need to apply Karel’s limited set of commands to new situations. For example, how can we make Karel turn right, even though Karel does not know a turnRight command? wocka wocka

Objective

Students will be able to:

  • Identify the direction that Karel is facing
  • Predict what direction Karel will be facing after executing a series of commands
  • Identify a location in Karel’s world using Street, Avenue terminology
Description

This lesson introduces the run method, which is the place where the program starts running. Students will also learn to write full java programs instead of just writing commands. In the the program below, SquareKarel is the name of the class. When we say extend Karel, it means this is a Karel program like the ones we have already written.

public class SquareKarel extends Karel 
{
    public void run()
    {
        putBall();
        move();
        turnLeft();
   } 
Objective

Students will be able to:

  • Explain the purpose of the Run Method
  • Explain the first thing that happens in your program when you click the Run button.
  • Write a fully-formed Java program by including a class and a run method.
Description

In this lesson, students will learn how they can create their own commands for Karel by calling and defining methods. Methods allow programmers to create and reuse new commands that make code more readable and scalable.

Objective

Students will be able to:

  • Define a method, and successfully implement methods in their code.
  • Teach Karel a new command by creating a turnRight() method
Description

In this lesson, students learn in more detail about methods, and how they can use methods to break down their programs into smaller pieces and make them easier to understand.

Objective

Students will be able to:

  • Create methods to teach Karel new commands
  • Explain the difference between defining and calling a method
  • Utilize these methods to write higher level Karel programs that go beyond the basic toolbox of commands that Karel starts with
Description

In this lesson, students learn about Top Down Design and Decomposition. Top Down Design is the process of breaking down a big problem into smaller parts.

Objective

Students will be able to:

  • Break a large problem down into smaller, simpler problems
  • Write methods that solve the simpler problems, and use them as building blocks to solve the larger problem
  • Compare programs and identify good vs poor decomposition
Description

In this lesson, students learn how to style their programs by including comments. Comments allow students to leave notes on their program that makes it easier for other to read. Comments are written in plain English.
Commenting Your Code Example:

/*
 *  multi-line  comments
 */

// single line comments
Objective

Students will be able to:

  • Explain the preconditions and postconditions of a method
  • Create clear and readable comments in their code that help the reader understand the code
  • Explain the purpose of comments
Description

In this lesson, students will learn about abstraction. Abstraction is the act of managing complexity by dissociating information and details in order to focus on relevant concepts.

Objective

Students will be able to:

  • Understand abstraction as the different levels of detail and complexity
  • Understand the importance of abstracting away complexity to solve problems more efficiently
Description

In this lesson, students are introduced to Super Karel! Since commands like turnRight() and turnAround() are so commonly used, students shouldn’t have to define them in every single program. This is where SuperKarel comes in. SuperKarel is just like Karel, except SuperKarel already knows how to turnRight and turnAround, so students don’t have to define those methods anymore. To use SuperKarel instead of Karel, the class that students write extends SuperKarel instead of Karel:

public class MyProgram extends SuperKarel 
{

}
Objective

Students will be able to:

  • Write programs that use SuperKarel instead of Karel
  • Utilize the new toolbox of commands that SuperKarel provides over Karel
  • Read documentation to understand how to use a library (SuperKarel is an example of this)
Description

In this lesson. students learn how to use for loops in their programs. The for loop allows students to repeat a specific part of code a fixed number of times.

For loops are written like this:

for(int i = 0; i < 4; i++)
{
    // Code to be repeated 4 times
}
Objective

Students will be able to:

  • Create for loops to repeat code a fixed number of times
  • Explain when a for loop should be a used
  • Utilize for loops to write programs that would be difficult / impossible without loops
Description

In this lesson, students are introduced a new type of loop: while loops. While loops allow Karel to repeat code while a certain condition is true. While loops allow students to create general solutions to problems that will work on multiple Karel worlds, rather than just one.

Objective

Students will be able to…

  • Explain the purpose of a while loop
  • Create while loops to repeat code while a condition is true
  • Utilize while loops to solve new types of problems
  • Test their solutions on different Karel worlds
Description

In this lesson, students learn about the conditional statement “if”. Code within an “if statement” will only execute IF the condition is true.

if (frontIsClear()) {
    // Code to be executed only if front is clear
}
Objective

Students will be able to:

  • Use conditions to gather information about Karel’s world (is the front clear, is Karel facing north, etc)
  • Create if statements that only execute code if a certain condition is true
Description

In this lesson, students learn about an additional control structure, if/else statements. If/else statements let students do one thing if a condition is true, and something else otherwise.

if/else statements are written like this:

if(frontIsClear())
 {
      // code to execute if front is clear
 }
 else
 {
      // code to execute otherwise
 }
Objective

Students will be able to:

  • Explain the purpose of an If/Else statement
  • Create If/Else statements to solve new types of problems
  • Identify when an If/Else statement is appropriate to be used
Description

In this lesson, students learn how to combine and incorporate the different control structures they’ve learned to create more complex programs.

Objective

Students will be able to:

  • Identify the different control structures they can use to modify the flow of control through a program
  • Combine control structures to solve complicated problems
  • Choose the proper control structure for a given problem
Description

In this lesson, students get extra practice with control structures. Students will continue to see different ways that the if, if/else, while, and for loops affect their code and what Karel can do.

Objective

Students will be able to:

  • Debug common errors in code
  • Use control structures to create general solutions that work on all Karel worlds
Description

In this lesson, students review how they should indent their code to make it easier to read.

Objective

Students will be able to:

  • Explain why it is important to indent code
  • Identify proper indentation
  • Modify a program to have proper indentation
  • Write programs with proper indentation
Description

We define what “code” is, find examples in the real world, and learn about programming as one specific example of code.

Objective

Students will be able to explain what code is in their own words, and provide examples of code in their lives.

Description

We learn about some of the applications of computer programs.

Objective

Students understand why programming is a useful skill, and can explain ways in which programs are being used today. Students will be able to analyze the positive and negative effects of programs and communicate their findings to their classmates.

Description

In this lesson, students will synthesize all of the skills and concepts learned in the Karel unit to solve increasingly challenging Karel puzzles.

Objective

Students will be able to:

  • Define a problem in their own words and plan out a solution to the problem
  • Break a large problem down into smaller pieces and solve each of the pieces, then use these solutions as building blocks to solve the larger problem
  • Utilize the proper control structures to create general solutions that solve multiple Karel worlds
  • Write clear and readable code using control structures, methods, decomposition, and comments
Description

In this lesson, students complete a summative assessment of the unit’s learning objectives.

Objective

Students will be able to:

  • Prove their knowledge of control structures, functions, decomposition, and comments through a multiple choice quiz
Description

In this lesson, students learn the basics of Design Thinking. Design Thinking is a step by step process that helps developers and entrepreneurs develop their products while considering their end-users and testing out products before releasing them. Students will get an opportunity to practice Design Thinking in all subsequent lessons in this unit.

Objective

Students will be able to:

  • Describe and define the steps of Design Thinking.
  • Implement Design Thinking to create a product.
  • Practice interviewing students and generating ideas through peer feedback.
Description

In this lesson, students learn in more depth about the first principle of Design Thinking: Empathy. Empathy is the ability to understand and share the feelings of another, and is the most important tenet of Design thinking. Students will practice building empathy by interviewing classmates and evaluating the accessibility of existing web pages.

Objective

Students will be able to:

  • Define and use Empathy in creating products
  • Successfully interview peers and users
  • Identify accessibility issues in web design products
Description

In this lesson, students will take the information that they gathered in their interviews with peers to define a specific problem that needs to be solved. Students will create Point of View statements and composite characters to make a profile of the users who are in need of a fix to the problem that students define.

Objective

Students will be able to:

  • Define a problem related to user needs
  • Create a composite character
  • Create and articulate Point of View Statements
Description

In this lesson, students will learn strategies to help them ideate solutions to the problems they have been exploring throughout the Design Thinking module. Students will spend class time brainstorming with classmates, and encouraging one another to come up with out of the box solutions.

Objective

Students will be able to:

  • Ideate solutions to a problem relevant to their lives
  • Articulate the purpose of ideating, and strategies to make the ideation process work
Description

In this lesson, students learn the basics of prototyping. Students will create a prototype based on ideas they came up with for their design project, and present prototypes to classmates for critiquing.

Objective

Students will be able to:

  • Create prototypes
  • Narrow brainstorms to just a few concrete and realistic ideas
Description

In this lesson, students will test one another’s prototypes and provide constructive feedback about its usability and aesthetic appeal. Students will also ask thoughtful questions of the testers to get a better understanding of their experience interacting with the prototype.

Objective

Students will be able to:

  • Provide appropriate feedback after testing prototypes
  • Ask users thoughtful questions about their user experience
  • Articulate how to best test products on users
Description

In this portion of the project, students will come up with a fictitious company and feel the impact of reacting to a security breach without any pre-developed policy in place. Students will then learn about some of the common policies companies put in place and set forth on the task of developing strong policies for their company.

Objective

Students will be able to:

  • Reflect on why policy documentation is important for security
  • Identify examples of policy documentation
Description

In this portion of the project, students will create an abbreviated Incident Response plan. They will respond to a cyber attack using their IR plan and reflect on how they were able to handle this attack as well as how to strengthen their policy.

Objective

Students will be able to:

  • Develop an incident response plan
  • Reflect on the strength of policy documentation
Description

Incident response plans are essential to ensure that companies are prepared to effectively respond to any breach in security. In this portion of the project, students will develop a set of policies regarding strong passwords and employee training. They will test their policies against a series of employee negligence scenarios and reflect on what would need to be added to strengthen their policy.

Objective

Students will be able to:

  • Develop a set of policies regarding strong passwords and employee training
  • Reflect on the strength of policy documentation
Description

Data can be one of a company?s most valuable resources, not to mention most regulated. Developing a strong plan for keeping data secure is essential, especially as more and more companies turn to the cloud to keep track of the massive amounts of data that are being collected every day. In this portion of the project, students will review an example privacy policy and then complete their own abbreviated policy. They will test their data policies against a data breach and reflect on what would need to be added to strengthen their policy.

Objective

Students will be able to:

  • Develop a data privacy policy
  • Reflect on the strength of policy documentation
Description

How do computers store and manipulate information? In this lesson, students learn how computers abstract complicated information into manageable chunks that they can then store and manipulate.

Objective

Students will be able to:

  • explore and explain abstraction and the different ways that we can represent digital information.
Description

In this lesson, students will learn what a number system is, the difference between the decimal number system and the binary number system, and how to convert between decimal and binary.

Objective

Students will be able to:

  • Represent numbers in different number systems
  • Understand how to convert between the decimal and binary system
Description

In this lesson, students will learn what a number system is, the difference between the decimal number system and the binary number system, and how to convert between decimal and binary.

Objective

Students will be able to :

  • Understand the binary system
  • Encode various types of information using binary
Description

In this lesson, students will learn about the hexadecimal number system, and how it is useful in storing digital information. They will also learn how to convert numbers from the hexadecimal system to binary and vice versa.

Objective

Students will be able to:

  • Understand how to convert between the hexadecimal and binary system
Description

In this lesson, students will learn how computers break down images into concrete values that can be stored. Students will learn how images are represented digitally using pixels.

Objective

Students will be able to:

  • Understand how images can be encoded as data
Description

In this lesson, students will learn how the RGB encoding scheme allows us to encode colors as numeric data. It defines the amount of red, green and blue light in a pixel.

Objective

Students will be able to:

  • Encode colors
  • Encode color images as data
Description

In this lesson, students will learn how computers shrink digital information, to make storage of pictures, videos, and text more efficient.

Objective

Students will be able to:

  • have a basic understanding of how data can be compressed.
Description

In this lesson, students will what lossy compression is, the benefits and disadvantages of using this kind of compression, and where using lossy compression is appropriate.

Objective

Students will be able to:

  • understand different types of compressions, and the benefits and drawbacks to each.
Description

This lesson is a summative assessment of the unit’s learning objectives.

Objective

Assess student achievement of the learning goals of the unit

Description

In this lesson, students will have a high-level discussion about what the internet is and how the internet works. The topics of anonymity and censorship will also be discussed.

Objective

Students will be able to:

  • Understand what the internet is
  • Understand how the internet works
  • Discuss the issue of anonymity
  • Understand the legal and ethical concerns surrounding internet censorship
Description

In this lesson, students will explore the DNS system and how it maps human readable domain names into actual accessible IP addresses.

Objective

Students will be able to:

  • Understand the DNS system and how it works
  • Recognize the DNS system as an abstraction
Description

In this lesson, students learn about the last piece of the puzzle for how the Internet works: Packets and Protocols. All information sent over the internet is broken down into small groups of bits called packets. The format for creating and reading packets is defined by open protocols so that all devices can read packets from all other devices.

Objective

Students will be able to:

  • Explain the packet process and how protocols (TCP/IP and HTTP) are vital to the exchange of information on the Internet
  • Explain the HyperText Transfer Protocol
Description

In this lesson, students will learn about the many protocols and standards that are used to send and receive information across a network. Students will learn how networks use specific ports and protocols, each with a specific purpose, such as sending and receiving emails. Students will also learn about wireless networking standards and how frequency and channels relate to speed of data transmission.

Objective

Students will be able to:

  • Compare and contrast wireless networking protocols: 802.11.a 802.11b, 802.11g, 802.11n, 802.11ac, 802.11ax
  • Compare and contrast TCP and UDP protocols
  • Explain how networks use ports and protocols, each with a specific purpose. Ports reviewed include 21, 22, 23, 25, 53, 80, 110, 143, and 443
  • Explain how wireless standards use frequencies and channels to transmit data
Description

In this lesson, students will build on their knowledge of networks and consider how to ensure the perimeter of a network is secure. Students will learn about different devices that can be used to secure a company?s intranet from the internet as well as ways to enable remote access to the intranet.

Objective

Students will be able to:

  • Secure a basic wireless network using multiple devices: DMZ, NAT, MAC filtering, firewall
  • Identify different network topologies
  • Explain the difference between the intranet and the internet
  • Explain how VPNs can be used to remotely access a company?s intranet
Description

In this lesson, students will discuss the ways that the protocols that we have discussed can be exploited, and some methods of protection that we have. We learn about the impact of cybercrime and how we can combat cyber attacks with cybersecurity. Cryptography is the cornerstone of secure communication.

Objective

Students will have an understanding of why cybersecurity is necessary, and some practical measures that they can take themselves to improve their security on the internet.

Description

In this lesson, students will build upon their foundational knowledge of networks to learn about advanced network devices. Students will delve into devices that enable communication and data sharing, such as servers and load balancers, as well as devices that increase network security, such as firewalls, IDP, IPD, and UTM. In sum, students will understand how complex networks use a variety of devices, each playing an important role in the functionality and security of the network.

Objective

Students will be able to:

  • Explain the purpose of advanced networking devices: load balancer, IDP/IPD, and UTM appliance
  • Describe the role of a variety of server types: web, file, DNS, printer, mail, and authentication
  • Explain how a network is configured using multiple devices and how each device plays an important role in the functionality and security of the network
Description

In this lesson, students are presented with different ways that the Internet impacts their lives. The Internet affects the way that people communicate (emails, social media, video chat) and collaborate to solve problems. It has revolutionized the way that people can learn and even buy things. Because the Internet is present in almost every facet of people’s lives, there are severe ethical and legal concerns that derive from the Internet.

Objective

Students will be able to:

  • Analyze the different ways that the Internet impacts their lives by learning about how the Internet contributes to collaboration, communication, etc
  • Evaluate whether the Internet has a more positive or negative effect on their community by citing examples from the lesson
  • Explain what the digital divide is and articulate their own opinions related to it
Description

This lesson is a summative assessment of the unit’s learning objectives.

Objective

Assess student achievement of the learning goals of the unit

Description

In this lesson, students will be introduced to and practice using the Java main skeleton that includes the class and main method arguments. They will use the System.out.print and System.out.println commands to print string literals in the editor. This lesson corresponds with AP Computer Science A topic 1.1.

Objective

Students will be able to:

  • call system class methods to generate output to the console
  • recognize the difference between display behavior of System.out.print and System.out.println
  • create string literals
Description

In this lesson, students will learn about variables. Variables allow information to be stored such as numbers, words, or true/false expressions. A variable can be thought of as a box that stores information inside. In Java, variables are composed of three things: a name, type, and value. This lesson corresponds with AP Computer Science A topic 1.2.

Objective

Students will be able to:

  • declare, initialize and assign a value to a variable
  • identify the most appropriate data type category for a particular specification
  • categorize a data type as either primitive or reference
  • declare a final variable
Description

In this lesson, students learn how to use arithmetic expressions in Java. Arithmetic expressions allow the use of mathematical operations within Java. Students will also learn about the modulus operator (%) and how it is evaluated. Such expressions can be used for basic math and even more complex algorithms. This lesson corresponds with AP Computer Science A topic 1.3.

Objective

Students will be able to:

  • evaluate arithmetic expressions in a program code
  • use the modulus operator (%)
Description

In this lesson, students will learn how to use the increment operator (++), the decrement operator (--) and compound assignment operators (+=, ?=, *=, /=, %=). The increment operator (++) and decrement operator (??) are used to add 1 or subtract 1 from the stored value of a variable. The new value is assigned to the variable. This lesson corresponds with AP Computer Science A topic 1.4.

Objective

Students will be able to:

  • Evaluate what is stored in a variable as a result of an expression with an assignment statement
  • Use a compound assignment operators (+=, ?=, *=, /=, %=) in place of the assignment operator
  • Use an increment operator (++) or decrement operator (??) to add 1 or subtract 1 from the stored value of a variable
Description

In this lesson, students will learn how to receive user input with the Scanner class in Java. After creating a new Scanner object, they will learn the commands below that will allow them to take in data from the user.

String name = input.nextLine();
int number = input.nextInt();
double decimal = input.nextDouble();
Objective

Students will be able to:

  • import and initialize a new Scanner to take in user input
  • create variables that take the assigned value of the user input.
  • choose the correct command that will allow the program to receive the input value that corresponds with its desired data type

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU (Var-1) To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values. (LOs 1.A, 1.B)
Description

In this lesson, students will learn how to change the data type of a value through the process of casting. They will also use casting to help round double values to the closest integer value. Students will explore the range of variables allowed in Java and understand integer overflow when a value outside of this range is attempted. This lesson corresponds with AP Computer Science A topic 1.5.

Objective

Students will be able to:

  • Evaluate arithmetic expressions that use casting
  • Understand that integer values in Java are stored using a finite amount (4 bytes) of memory. Therefore, an int value must be in the range from Integer.MIN_VALUE to Integer.MAX_ VALUE inclusive
  • Understand when an expression evaluates to an int value outside of the allowed range, an integer overflow occurs
  • Recognize and use implicit casting
  • Use casting to round to the nearest integer
Description

In this lesson, students will learn about the essential internal components that make up a computer. Component categories include the motherboard (system board), firmware (BIOS), CPU (processor), GPU (graphics processor), storage, cooling, and NIC (network adapter).

Objective

Students will be able to:

  • Explain the purpose of common internal computing components such as motherboards, BIOS, RAM, and more.
Description

In this lesson, students will learn and explain the purposes and use of various peripheral types. They will classify the peripherals as input or output devices and explore different ways of installing them on a laptop or PC.

Objective

Students will be able to:

  • Explain the purposes and uses of various peripheral types
  • Classify common types of input/output device interfaces.
  • Explain how to install common peripheral devices to a laptop/PC
Description

In this lesson, students will learn about different networking devices that allow devices to connect to other devices as well as the Internet. They will also learn different networking connection methods such as using dialup, DSL, coax cables, and fiber optic cables.

Objective

Students will be able to:

  • Compare and contrast common Internet service types
  • Compare and contrast common networking hardware devices
  • Explain basic cable types, features, and their purposes
Description

In this lesson, students will learn about the different storage options including local storage, network storage, and cloud storage.

Objective

Students will be able to:

  • Compare and contrast storage types
  • Examine and discuss the security of cloud storage
  • Select suitable storage devices for given situations
Description

In this lesson, students will learn about the different network types and options that are available. This will include wireless networking standards and protocols.

Objective

Students will be able to:

  • Compare and contrast the different wireless network standards
  • Compare and contrast Internet connection types, network types, and their features
Description

In this lesson, students will learn about the basic functions and types of operating systems. Students will also explore the process for upgrading and installing Windows and Mac operating systems.

Objective

Students will be able to:

  • Explain the purpose of operating systems
  • Identify the main types of operating systems
  • Analyze the upgrade and installation process for operating systems
Description

In this lesson, students learn about the different types of software. Through interactive exercises, students explore how different software can be used in the workplace and our every day lives. Students also learn about single and cross-platform software.

Objective

Students will be able to:

  • Explain the different types of software (productivity, collaboration, business) and the purpose of each.
  • Explain the benefits and challenges of single and cross-platform software.
Description

In this lesson, students will learn about browser security features and ways to configure their browsers to enhance security.

Objective

Students will be able to:

  • Configure their browser to enhance security and privacy
  • Explain how the following features impact their browser security: cache, client-side scripting, browser extensions, private browsing, proxy settings, certificates, and popup blockers
Description

In this lesson, students learn about three methods computers use to process tasks ? sequential, parallel, and distributed computing. Sequential computing executes each step in order one at a time, while parallel and distributed computing process tasks simultaneously on the same or across more than one device, respectively.

Objective

Students will be able to:

  • differentiate between sequential, parallel, and distributed computing
  • explain the benefits and challenges of using parallel and distributed computing
Description

In this lesson, students are introduced to classes and objects. These are the foundations of object oriented programming.
Students will learn about objects that have state and behavior, and classes which are the templates for creating objects. This lesson corresponds with AP Computer Science A topic 2.1.

Objective

Students will be able to:

  • Explain the relationship between a class and an object
  • Create classes with instance variables
Description

In this lesson, students will create and use constructors. The constructor, or signature of a class, allows for the creation of a new object. Students will create objects by calling constructors with parameters. Parameters are values that are passed into a constructor. These are referred to as actual parameters. This lesson corresponds with AP Computer Science A topic 2.2.

Objective

Students will be able to:

  • Create and use constructors
  • Create objects by calling constructors with parameters
Description

In this lesson, students are introduced to method overloading. This is when several different methods are written, each with the same name. As long as each method’s parameter list is different, the same method name can be used multiple times! This lesson corresponds with AP Computer Science A topic 2.2.

Objective

Students will be able to:

  • Explain the purpose of method overloading
  • Create classes that overload methods
  • Explain how null objects do not point to any particular object data
  • Create programs that use other classes as a client to solve a specific problem
Description

In this lesson, students will take a deeper look into creating and calling the methods of a class. Methods are procedures that define and allow for control of the behavior of an object. Once an object is instantiated, the instance variables can be used across the different methods that are created. Students will also learn about procedural abstraction for methods that can be used without knowing all of the underlying details and code. This lesson corresponds with AP Computer Science A topic 2.3.

Objective

Students will be able to:

  • Create and call class methods
  • Call non-static void methods without parameters
Description

In this lesson, students will build on what they have learned and discover how to call a void method with parameters. Just as constructors can have parameter values, methods can have formal parameters that affect the state of the object as well. Methods can also be overloaded just like constructors! This lesson corresponds with AP Computer Science A topic 2.4.

Objective

Students will be able to:

  • Call non-static void methods with parameters
Description

In this lesson, students will learn how to call a non-void method and return a value from a method by using the keyword return. The return keyword returns a variable or value back to the existing program so it can be used further along in the program. This lesson corresponds with AP Computer Science A topic 2.5.

Objective

Students will be able to:

  • Create and call non-void methods with parameters and return values
Description

In this lesson, students will learn about the immutability of Strings as objects. Once a String object is created, it cannot be changed or manipulated. The only way to change a String value is to reassign the variable with a different String value. Students will also practice String concatenation using operators such as + and += and use escape sequences such as \? and \n. This lesson corresponds with AP Computer Science A topic 2.6.

Objective

Students will be able to:

  • Create String objects for a String class
  • Concatenate Strings using operators and escape sequences
Description

In this lesson, students will look at Strings as a sequence of characters and utilize String methods from the java.lang package. Students will learn about packages, libraries and documentation. The following String methods will be examined in this lesson:

name.length() 
name.substring(2, 6)
name.indexOf(?d?)
name.equals(?Karel?)
name.compareTo(?Karel?)

This lesson corresponds with AP Computer Science A topic 2.7.

Objective

Students will be able to:

  • Call String methods for a String class
  • Explain the importance of APIs, documentation and packages in Java

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Var-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values. (LO’s 1.E, 1.D)
  • EU Mod-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence. (LO’s 1.G, 1.F, 1.C)
Description

In this lesson, students will learn how to convert primitive types to object types using a wrapper class. They will learn how Java automatically converts types using autoboxing and unboxing. This lesson corresponds with AP Computer Science A topic 2.8.

Objective

Students will be able to:

  • Create Integer and Double objects for wrapper classes
  • Call Integer and Double methods for wrapper classes
Description

In this lesson, students will learn about static methods. Static methods are methods that can be called without creating an object. More specifically, students will discover and practice using static methods in the Java Math class. The following Math class methods will be examined in this lesson:

Math.abs(x)
Math.pow(base, exponent)
Math.sqrt(x)
Math.random()
Math.round()
Math.cos()
Math.sin()
Math.PI

This lesson corresponds with AP Computer Science A topic 2.9.

Objective

Students will be able to:

  • Call static methods
  • Evaluate expressions that use the Math class methods
Description

In this lesson, students will learn about Boolean expressions and relational operators. Relational Operators are constructs in programming that allow for the comparison of the values of two expressions. This lesson corresponds with AP Computer Science A topic 3.1.

Objective

Students will be able to:

  • Evaluate Boolean expressions that use relational operators in program code
Description

In this lesson, students will learn about control structures and if statements. If statements are used in programming when there are a set of statements that should be executed only when certain conditions are met. This lesson corresponds with AP Computer Science A topic 3.2.

Objective

Students will be able to:

  • Represent branching logical processes by using flowcharts
  • Use if statements
Description

In this lesson, students will expand their knowledge of control structures and learn about if/else statements. This lesson corresponds with AP Computer Science A topic 3.3.

Objective

Students will be able to:

  • Use if/else statements
Description

In this lesson, students will take control structures a step further and learn how to implement a statement with an else if condition. This lesson corresponds with AP Computer Science A topic 3.4.

Objective

Students will be able to:

  • Use an else if statement

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Con-1 The way variables and operators are sequenced and combined in an expression determines the computed result. (LO’s 1.E)
  • EU Con-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. (LO’s 2.A)
Description

In this lesson, students will determine the truth value of compound Boolean expressions. They will also examine short circuit evaluation and nested if statements. This lesson corresponds with AP Computer Science A topic 3.5.

Objective

Students will be able to:

  • Evaluate compound Boolean expressions in program code
Description

In this lesson, students will examine De Morgan?s laws and determine when compound Boolean expressions are equivalent. They will use truth tables to display equivalent Boolean expressions. This lesson corresponds with AP Computer Science A topic 3.6.

Objective

Students will be able to:

  • Compare and contrast equivalent Boolean expressions
  • Apply De Morgan?s Laws to Boolean expressions
Description

In this lesson, students will learn the different ways of comparing objects and how it is different than comparing primitive types. With objects, because the variable is pointing to a location, the use of == is not possible, as the memory address is being compared between objects, not the actual values. Students will discover and use the .equals method. This lesson corresponds with AP Computer Science A topic 3.7.

Objective

Students will be able to:

  • Compare object references using Boolean expressions in program code
Description

In this lesson, students will learn how and when to use a while loop. Repetitive code can be avoided by using a while loop. While loops are used to repeat a set of statements until a condition is met. This lesson corresponds with AP Computer Science A topic 4.1.

Objective

Students will be able to:

  • Represent iterative processes using a while loop
  • Execute a return or break statement inside an iteration statement to halt the loop and exit the method or constructor
  • Develop an algorithm
  • Identify if an integer is or is not evenly divisible by another integer
  • Determine a minimum or maximum value
  • Compute a sum, average, or mode
Description

In this lesson. students learn how to use for loops in their programs. The for loop allows students to repeat a specific part of code a fixed number of times.

For loops are written like this:

for(int i = 0; i < 4; i++)
{
    // Code to be repeated 4 times
}

This lesson corresponds with AP Computer Science A topic 4.2.

Objective

Students will be able to:

  • Represent iterative processes using a for loop
Description

In this lesson, students will learn how to develop algorithms using Strings. Students will traverse Strings using a for loop and the print.length() command.

for(int i = 0; i < string.length(); i++)
{
    String character = string.substring(i, i+1);
}

This lesson corresponds with AP Computer Science A topic 4.3.

Objective

Students will be able to:

  • Develop an algorithm using Strings
  • Find if one or more substrings has a particular property
  • Determine the number of substrings that meet specific criteria
  • Create a new string with the characters reversed
Description

In this lesson, students will learn about nested loops. Nested loops are when loops are placed inside other loops to create more complex programs. When a loop is nested inside another loop, the inner loop must complete all its iterations before the outer loop can continue. This lesson corresponds with AP Computer Science A topic 4.4.

Objective

Students will be able to:

  • Represent nested iterative processes

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Con-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. (LO’s 2.C, 2.D, 2.E, 2.F, 2.G)
Description

In this lesson, students will examine the concept of informal code analysis. This includes an algorithm?s correctness, efficiency and the ability to be understood. This lesson corresponds with AP Computer Science A topic 4.5.

Objective

Students will be able to:

  • Compute statement execution counts of iterative statements
  • Compute informal run-time comparison of iterative statements
Description

In this lesson, students will explore and learn the anatomy of classes. They will take a deeper dive into what the access specifier does, and how it can be used within programs to make data public or private. Students will learn about encapsulation and the responsibility programmers have to choose whether data should be accessible, modifiable, both or neither. This lesson corresponds with AP Computer Science A topic 5.1.

Objective

Students will be able to:

  • Designate access and visibility constraints to classes, data, constructors, and methods
  • Designate private visibility of instance variables to encapsulate the attributes of an object
Description

In this lesson, students will expand their knowledge of constructors. They will create constructors that take objects as a formal parameter. This lesson corresponds with AP Computer Science A topic 5.2.

Objective

Students will be able to:

  • Define instance variables for the attributes to be initialized through the constructors of a class
Description

In this lesson, students will learn how to document their programs using comments. Comments are important to programming because they allow others to easily interpret and use the program code correctly. They can also be used as a debugging tool. This lesson corresponds with AP Computer Science A topic 5.3.

Objective

Students will be able to:

  • Describe the functionality and use of program code through comments
Description

In this lesson, students will examine accessor methods in more detail. This lesson corresponds with AP Computer Science A topic 5.4.

Objective

Students will be able to:

  • Define behaviors of an object through non-void methods without parameters written in a class
Description

In this lesson, students will examine mutator methods in more detail. Mutator methods are often void methods used to change the value of instance and static variables. This lesson corresponds with AP Computer Science A topic 5.5.

Objective

Students will be able to:

  • Define behaviors of an object through void methods with or without parameters written in a class
Description

In this lesson, students will examine writing classes in more detail. It is a good programming practice to avoid altering objects within methods unless the method specifically calls for alterations to the object. Accessor and getter methods make obvious changes to objects, but most methods should not attempt to make changes unless it?s explicitly necessary. This lesson corresponds with AP Computer Science A topic 5.6.

Objective

Students will be able to:

  • Discuss changes to both primitive and reference formal parameters in methods
Description

In this lesson, students will take a deeper look at static variables and methods. Static variables belong to the class, and all objects of a class share a single static variable. This lesson corresponds with AP Computer Science A topic 5.7.

Objective

Students will be able to:

  • Define behaviors of a class through static methods
  • Define the static variables that belong to the class.

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Mod-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept. (LO’s 2.A, 2.B, 2.C, 2.D, 2.E, 2.F, 2.G)

  • EU Mod-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses. (LO’s 3.A)

Description

In this lesson, students will learn about scope and access. The placement of a variable within a program affects the scope of the variable, meaning where it can be used and accessed in a program. Students will learn how to avoid scope and access errors by using method decomposition. This lesson corresponds with AP Computer Science A topic 5.8.

Objective

Students will be able to:

  • Explain where variables can be used in the program code
Description

In this lesson, students will learn how the this keyword can be used in programs. The keyword this is a reference to the current object whose methods and constructors are being called. This lesson corresponds with AP Computer Science A topic 5.9.

Objective

Students will be able to:

  • Evaluate object reference expressions that use the keyword this
Description

In this lesson, students will explore several areas related to the ethical and societal implications of computing systems. This includes the professional computing code of ethics, system reliability, legal issues and intellectual property concerns, and bias in computing. This lesson corresponds with AP Computer Science A topic 5.10.

Objective

Students will be able to:

  • Explain the ethical and social implications of computing systems
Description

In this lesson, students will learn about and create arrays. The use of array objects allows multiple related items to be represented using a single variable. This lesson corresponds with AP Computer Science A topic 6.1.

Objective

Students will be able to:

  • Represent collections of related primitive or object reference data using one-dimensional (1D) array objects
Description

In this lesson, students will learn how to traverse arrays. Iteration statements can be used to access all the elements in an array. This is called traversing the array. This lesson corresponds with AP Computer Science A topic 6.2.

Objective

Students will be able to:

  • Traverse the elements in a 1D array
Description

In this lesson, students will take a look at enhanced loops. An enhanced for loop is an alternate method to traverse an array instead of using for or while loops. This lesson corresponds with AP Computer Science A topic 6.3.

Objective

Students will be able to:

  • Traverse the elements in a 1D array object using an enhanced for loop
Description

In this lesson, students will learn how arrays are used to develop algorithms. They will examine common techniques used in array analysis. This lesson corresponds with AP Computer Science A topic 6.4.

Objective

Students will be able to:

  • Recognize and identify common algorithms that utilize array traversals

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Con-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. (LO’s 2.I)

  • EU Var-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value. (LO’s 2.A, 2.B, 2.C)

Description

In this lesson, students will learn about and use ArrayLists. ArrayLists are similar to arrays, except that they are a mutable list of object references. ArrayLists provide a convenient way to create adjustable arrays. This lesson corresponds with AP Computer Science A topic 7.1.

Objective

Students will be able to:

  • Represent collections of related object reference data using ArrayList objects
Description

In this lesson, students will learn and use methods that allow the state of ArrayLists to be altered. These methods are as follows:

  • boolean add(E obj)
  • void add(int index, E obj)
  • E get(int index)
  • int size()
  • E set(int index, E obj)
  • E remove(int index)

This lesson corresponds with AP Computer Science A topic 7.2.

Objective

Students will be able to:

  • Use methods associated with ArrayLists
Description

In this lesson, students will learn how to traverse ArrayLists. For ArrayLists, instead of using .length and brackets ([]) to access the elements in a list, size() and get() will be used. This lesson corresponds with AP Computer Science A topic 7.3.

Objective

Students will be able to:

  • Traverse ArraysLists using a for or while loop
  • Access elements in an ArrayList using iteration statements
  • Remove elements in an ArrayList
Description

In this lesson, students will develop algorithms using ArrayLists. They will examine standard algorithms for removing and inserting elements while traversing an ArrayList. This lesson corresponds with AP Computer Science A topic 7.4.

Objective

Students will be able to:

  • Identify standard ArrayLists algorithms such as inserting and deleting elements
  • Modify standard ArrayLists algorithms
  • Develop an ArrayLists algorithm
Description

In this lesson, students will explore and analyze a linear search. Linear Search is an algorithm that searches data sets in a sequential order, checking each value from the 0th index to the end of the data set to see what index a specific element can be located at. This lesson corresponds with AP Computer Science A topic 7.5.

Objective

Students will be able to:

  • Apply linear search algorithms to search for specific information in array or ArrayList objects
Description

In this lesson, students will students will explore and analyze Selection Sort and Insertion Sort. Selection Sort swaps the minimum value left in an array with the current array index. Insertion Sort shifts the already sorted section of an array to place the current array value in the correct index. This lesson corresponds with AP Computer Science A topic 7.6.

Objective

Students will be able to:

  • Apply selection sort and insertion sort algorithms to sort the elements of array or ArrayList objects
  • Compute statement execution counts and informal run-time comparison of sorting algorithms

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Con-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. (LO’s 2.J, 2.K, 2.L, 2.M)

  • EU Var-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value. (LO’s 2.D, 2.E)

Description

In this lesson, students will discuss the ethical issues around how and why data is collected. They will look at the risks to personal privacy when working on computer systems and the internet and discuss how computer programs can have beneficial and/or harmful impacts on personal security. Lastly, the importance that programmers have in terms of safeguarding personal privacy will be considered and emphasized. This lesson corresponds with AP Computer Science A topic 7.7.

Objective

Students will be able to:

  • Explain the risks to privacy from collecting and storing personal data on computer systems
  • Explain the role that programmers have considering safeguarding personal privacy
  • Explain the beneficial and harmful impacts that computer use and the creation of programs have on personal security
Description

In this lesson, students will explore and use 2D arrays. A 2D array is an array that stores arrays! This lesson corresponds with AP Computer Science A topic 8.1.

Objective

Students will be able to:

  • Represent collections of related primitive or object reference data using two-dimensional (2D) array objects
Description

In this lesson, students will extend their learning on 2D arrays by traversing through them. When attempting to access all elements in a 2D array, we can do so in two different ways. Row-major order traverses the 2D array by accessing each value in a row before moving to the next row and column-major order traverses each column down all rows before moving to the next column. This lesson corresponds with AP Computer Science A topic 8.2.

Objective

Students will be able to:

  • Traverse 2D arrays using nested for loops
  • Traverse 2D arrays using nested enhanced for loops

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Con-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. (LO’s 2.N)

  • EU Var-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value. (LO’s 2.F, 2.G)

Description

In this lesson, students will learn about recursion and recursive methods. A recursive method is a method that calls itself. Recursive methods contain at least one base case, which halts the recursion, and at least one recursive call. This lesson corresponds with AP Computer Science A topic 10.1.

Objective

Students will be able to:

  • Determine the result of executing recursive methods

Enduring Understandings

This lesson builds toward the following Enduring Understandings (EUs) and Learning Objectives (LOs). Students should understand that?

  • EU Con-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. (LO’s 2.O)
Description

In this lesson, students will examine and apply recursive searching such as the binary search. The binary search algorithm starts at the middle of a sorted array or ArrayList and eliminates half of the array or ArrayList in each iteration until the desired value is found or all elements have been eliminated. This lesson corresponds with AP Computer Science A topic 10.2.

Objective

Students will be able to:

  • Apply recursive search algorithms to information in String, 1D array, or ArrayList objects
Description

In this lesson, students will use recursive methods to sort an array called Merge Sort. Merge sort is a recursive sorting algorithm that can be used to sort elements in an array or ArrayList. This lesson corresponds with AP Computer Science A topic 10.3.

Objective

Students will be able to:

  • Apply recursive algorithms to sort elements of an array or ArrayList objects