Discover real skills for the world right now. Over 14 NEW courses are here at Juni.

Introduce them to college-level programming courses with an emphasis on the technical aspect of computer science (the skills sought after in technical interviews!). This course focuses on software development, program design, model creation, documentation, and debugging.

First class free!

$62.50/ class

Billed Monthly

Total Billing $250

- Format
- Private 1:1
- Age
- Ages 14-18
- Duration
- Duration 6-8 months
- Class size
- Personalized 1:1 Instruction

Get hand-matched with an instructor that meets your child’s schedule and learning style. To begin, click the button below and select 3 potential timeslots during the week that work for your family and share some details about your learner. We’ll match you and set up your first class!

- Completion of Java Level 2 (or evidence of mastery of key concepts from Java Level 2)
- Familiarity with exponetial and logarithmic functions is recommended

Instructors will assign students roughly 60 minutes of project related homework at the end of each session. Homework is designed to complement the class experience and ensure the student continues to gain practical experience outside of the session.

#### Recursion-1: I know what a recursive function is and its two key components

#### Recursion-2: I can write a basic recursive function in Java

#### Recursion-3: I can write more complex recursive functions involving multiple self calls in Java

#### Recursion-4: I can predict the outcome of a recursive function

#### Time-1: I know what Big-O analysis is

#### Time-2: I am able to identify the time complexity of a function

#### Time-3: I understand the difference between the best-case and worst-case scenario of an algorithm

#### Time-4: I am able to identify the time complexity of an algorithm with loops

#### Time-5: I am able to identify the time complexity of a recursive function

#### Linear-1: I understand and can explain the process by which the linear search algorithm searches for a piece of data

#### Linear-2: I can implement a Linear Search algorithm in Java

#### Linear-3: I know the time complexity of Linear Search

#### Binary-1: I understand and can explain the process by which the Binary Search algorithm searches for a piece of data

#### Binary-2: I can implement a Binary Search algorithm in Java

#### Binary-3: I know the time complexity of Binary Search

#### Selection-1: I understand and can explain the process by which the Selection Sort algorithm sorts data

#### Selection-2: I can implement a Selection Sort method in Java

#### Selection-3: I know the time complexity of Selection Sort

#### Selection-4: I know the difference between in-place and out-of-place algorithms

#### Insertion-1: I understand and can explain the process by which the Insertion Sort algorithm sorts data

#### Insertion-2: I can implement an Insertion Sort method in Java

#### Insertion-3: I know the time complexity of Insertion Sort

#### Insertion-4: I can explain the key differences between insertion and selection sort

#### Bubble-1: I understand and can explain the process by which the Bubble Sort algorithm sorts data

#### Bubble-2: I can implement a Bubble Sort method in Java

#### Bubble-3: I know the time complexity of Bubble Sort and how it’s performance compares to other sorting algorithms

#### Merge-1: I understand and can explain the process by which the Merge Sort algorithm sorts data

#### Merge-2: I can implement a Merge Sort method in Java

#### Merge-3: I know the time complexity of Merge Sort and how it’s performance compares to other sorting algorithms

#### Sustainable-1: I know what a nested class is

#### Sustainable-2: I know the difference between an inner class and a static nested class

#### Sustainable-3: I can write a simple nested class in Java

#### Sustainable-4: I understand what generics are and when to use them

#### Sustainable-5: I can write a generic class in Java

#### Sustainable-6: I know what exceptions are and why they’re useful

#### Sustainable-7: I understand the basic format of a “throw” statement in Java

#### Sustainable-8: I understand the basic format of a try-catch block in Java

#### Sustainable-9: I can handle exceptions in meaningful ways

#### LinkedList-1: I know what a linked list is

#### LinkedList-2: I can implement the inner node class for a singly linked list in Java

#### LinkedList-3: I can implement the basic functionality of a linked list in Java

#### LinkedList-4: I know what a doubly-linked list is

#### LinkedList-5: I can implement the inner node class for a doubly linked list in Java

#### LinkedList-6: I can implement the basic functionality of a doubly linked list in Java

#### Stacks-1: I know what a stack is

#### Stacks-2: I know how to push to a stack in Java

#### Stacks-3: I know how to pop from a stack in Java

#### Stacks-4: I know which data structures in Java can be used to implement a stack

#### Stacks-5: I know when it is appropriate to use a stack to solve a problem

#### Queue-1: I know what a queue is

#### Queue-2: I know how to enqueue to a queue in Java

#### Queue-3: I know how to dequeue from a queue in Java

#### Queue-4: I know which data structures can be used to implement a queue in Java

#### Queue-5: I know what a priority queue is and how it differs from a regular queue

#### Queue-6: I can add to a Java PriorityQueue

#### Queue-7: I can remove from a Java PriorityQueue

#### Queue-8: I can identify when it would be useful to use a queue or priority queue

#### Map-1: I know what a map is and that it consists of key-value pairs

#### Map-2: I can add key-value pairs to a Map in Java

#### Map-3: I can iterate through a Map in Java

#### Map-4: I can retrieve a value in a Map using a key in Java

#### Map-5: I can check whether a key is in a Map in Java

#### Map-6: I know that keys must be unique, but values can have any value and be of any type

#### Map-7: I can identify when it would be useful to use a map

#### BST-1: I know what a Binary Seach Tree (BTS) is and how it works

#### BST-2: I understand the basic terminology used to describe BSTs

#### BST-3: I know the difference between pre-order, in-order, and post-order depth first search

#### BST-4: I can insert a new node to a BST in Java

#### BST-5: I can delete a node with 0-1 children in Java

#### BST-6: I can delete a node with 2 children in Java

#### BST-7 I can identify when it’s useful to use a BST

#### HashTables-1: I know what a hash table is and how it works

#### HashTables-2: I can write a simple hash function in Java

#### HashTables-3: I understand what a load factor is and when it’s appropriate to rehash a hashtable

#### HashTables-4: I understand the difference between separate chaining and open addressing in the context of collisions

#### HashTables-5: I can identify when it’s useful to use a hash table

#### Graph-1: I know what a graph is

#### Graph-2: I understand the basic terminology used to describe graphs

#### Graph-3: I know how to represent a graph as an adjacency list

#### Graph-4: I know how to represent a graph as an adjacency matrix

#### Graph-5: I can reason about when it’s best to use an adjacency list vs an adjacency matrix

#### Graph-6: I understand what Dijkstra’s algorithm is used for and how it works

#### Graph-7: I can identify when it’s useful to use a graph

#### I use spacing and logical variable names to improve my code's readability

#### I regularly comment my code to improve my code's readability

#### I appropriately and frequently test my code

#### I can independently debug my code

#### I can independently determine which classes and objects best meet the goals of a project

#### Joyful Collaboration

- I practice listening to my instructor and sharing my ideas to co-create understanding.
- I attempt tasks independently and ask my instructor questions when I need help.

#### Unlimited Curiosity

- I take ownership of my learning by asking meaningful questions both when I need clarification and when I want to know more about a topic.

#### Nimble Determination

- I practice resilience when I am frustrated that I have not yet achieved mastery of a new concept or skill; instead of complaining about challenges, I try new approaches and creative solutions.

#### Invest in Excellence

- I arrive to class on time and prepared to learn, with my computer set up with a strong internet connection.
- I complete my homework on time, and if I cannot complete my homework due to other obligations, I honestly communicate the reasons for late homework to my instructor.
- I do my best to stay present and on task for the whole session. I support my focus by putting away any distracting technology and setting notifications on my device to “do not disturb” mode.

Our instructors are subject matter experts from top US universities. Instructors are highly-vetted and background checked prior to joining and undergo extensive training before ever teaching on our platform.

Upon signing up, parents are asked a series of questions that allow us to match your child with an optimal instructor based on their unique needs and interests. Factors that are considered in our matching process include Learning Style, Personality, Personal Experience, and Academic & Career Aspiration.

Puja D

I really like bringing a strong energy to my classes, and sharing excitement with my students about learning new topics.

**4.9 out of 5**

My 3 sons ages, 10 1/2, 9 and 7 started using Juni in early June 2020 and absolutely love it. The instructors are college age kids and they relate to my boys very well. My oldest is doing both the coding and math tracks and I feel like he will be way ahead of his 5th grade class come the fall. Once the other two are old enough I will certainly be enrolling them in math as well.

Juni has been amazing for my daughter. She is a reluctant learner when it comes to Computer Languages, but the Juni instructors have been engaging to her at a level where she feels comfortable with them and they manner in which they present the curriculum. They understood my ask that I Wanted her to start liking computer languages, and they are presenting the information in a way that is fun and relatable. I am very happy with my Juni experience and my daughter's journey with Juni so far!

I have two boys taking classes and the Juni takes the time to match the right instructor for my children. They are patient and very consistent in their teaching. The boys are thoroughly enjoying their class and love accomplishing and learning new things!