Ninja Star Image

Computer Science for High School

Target Audience

  • Teens age 14-17
  1. Anyone can join. There are no pre-requisites to join this class. However, propsective students are advised that this is an intense program which requires participants to complete regular assignments. Only students who are willing to do the work should join.
  2. All participats require a laptop or tablet to participate. Note that Chromebooks cannot be used due to their limited functionality.

Fees

  • $500.00 per students for 28 weeks.
  1. Learn Grow Fly learning is a not-for-profit initaitive. If you want to participate in this program and cost is an issue, please contact us. We want to help.
  2. No refunds will be provided once the program has started. Students must commit to both parts of the program in order to register.

Class Size

  • A maximum of 8 students will be admitted to this class. As of June 11, 2026, 5 spots reamain available.

The Instructor

  • My name is Jean-Marc Choquette and I have been a professional IT instructor for 30+ years. I have provided professional training to a variety of puiblic and private sector employers and I am the founder of SETC Training. I created this course to give teens the opportunity to learn tech skills that will be useful in the real world: whether need to setup a wireless network in their home, secure their online identity, build a website in support of their original business idea or build a software application. Whatever you want ot pursue, this will be one of the most useful learning experiences in terms of preparing yourself for the tech driven world that you are entering. My full profile can be viewed here: View Jean-Marc Choquette's Profile

Class Times

  • Class start and end dates
    1. Part 1: Monday Sept 22, 2025 to Monday Dec 15, 2025
    2. Part 2: Monday Feb 23, 2026 to Monday June 22, 2026
  • Class Hours
    1. Mondays from 12:30 to 13:30: In-Person lesson
    2. Mondays from 13:30 to 14:30: In-Person collaboration and social
    3. Wednesdays from 17:00 to 18:00: Zoom
    4. Thursdays from 17:00 to 18:00: Zoom
  1. No class on Monday October 13, 2025 due to Thanksgiving

Class Location

Location Pin Image
Greenboro Community Center
363 Lorry Greenberg Drive, Bondar Room, Ottawa, Ontario

Description

  • This course provides homeschooled teens age 14-17 with a comprehensive course covering web and software programming. The course covers the entirety of the provincial computer science curriculum curriculum [And much more]. Upon completing this program, participants will have developed and deployed 2 distinct software projects: a commercial web site and an original software application.
  • In part I of the course [Sept 22-Dec 15, 2025: 12 weeks], participants will learn how to create and deploy a commercial web site with the aim of establishing a company’s web presence. Participants will learn about the Apache web server, the MySQL database and the Linux operating system while they create a hosting environment for their web site. Participants will then develop a commercial web site using HTML, JavaScript and the Bootstrap library at a minimum. On the way, they will familiarize themselves with the technology that makes the internet possible: IP addresses, basic networking, transport protocols, etc... They will also be introduced to the practical aspects of securing a web site using defensive security measures: security certificates, firewalls, HTTP verbs, etc.
  • In part 2 of the course [Feb 23, 2026 to June 22, 2026: 16 weeks], participants will learn how develop software using a modern programming language. Part 2 is entirely about programming. In the beginning, students will complete a series of challenges that will allow them to master the basics of programming: data types, conditional statements, repeating structure, functions, etc.. Having mastered the basics, participants will tackle the use of objects and collections to implement more complex structures and algorithms. As they increase their knowledge, capstone projects will be identified and students will start working on these projects individually or in small groups. Participants can choose between a variety of programming languages including Java, Python, C# or C++. Working in groups, participants will develop a unique idea for a software product and will create the first version of that product in class. Part 2 of the course will conclude with the acceptance of the final version of the software project.
  • The best practices of software development using an Agile method and related tools such as Git will be incorporated into the class from the beginning. Though it is optional, students can choose to identify an original idea at the beginning of the program. This would allow them to work on their original idea throughout the course.

Class Objectives

What will your youth gain from participating? They will learn to:
Part 1: The Web Professional
  • Design and implement a computer network
  • Understand how communication on the internet happens
  • Configure betworked computers: Windows and Linux
  • Work efficiently with Files and Directories
  • Analyze how information is exchanged between a client and a web server
  • Install and configure Apache Web Server
  • Design user friendly web pages
  • Write quality web pages using HTTML
  • Add content and structure to web pages using HTTML tags
  • Add images, sounds and videos to web pages
  • Add dynamic elements to web pages using JavaScript
  • Install and configure MySQL database server
  • Deploy a commercial web site to live production environment
Part 2: The Software Professional
  • Use agile methods and tools to support code development
  • Use variables and arithmetic to perform calculations
  • Use variables and conditional statements to manage data and control flow
  • Use variables and repeating statements to implemnent tasks
  • Work with text data [Strings] in their code
  • Create functions to optimize code and reduce code duplication
  • Use objects and classes to implement real world functionality
  • Implement constructors and destructors/finalizers to manage object lifetime
  • Implement collection classes and enumertors to manage object collections
  • Use inheritance and polymophism to implement smart code
  • Create supporting databases to store persistent data
  • Implement code to read and write data to the database
  • Implement graphical elements in code
  • Deploy code to a production environment

The Details

Part I: The Web Professional
1: Network Basics
  • About Binary Numbers
  • Basic IP Addressing
  • The Default Gateway
  • Routers and Switches
  • How Computers Communicate
2: Internet Basics
  • More on IP Addresses
  • Exploring URLs
  • The Web Server
  • Client – Web Server Traffic
  • The Role of DNS
3: Configuring Computers
  • About Network Configuration
  • Configuring Windows
  • Linux Basic Commands
  • Configuring Linux
  • Firewalls, Antivirus and VPN
4: Files and Directories
  • Files and Directories
  • Working with Files
  • Working with Directories
  • Linux Accounts
  • Installing Software
5: Digging Deeper: The Internet
  • More on Files and Directories
  • Transport Protocols: TCP vs UDP
  • Web Traffic: HTTP and HTTPS
  • More on Working with Linux
  • The Structure of a Web Site
6: Installing Apache
  • Overview of Apache Web Server
  • Installing Apache Web Server
  • Configuring the httpd Service
  • Creating a Virtual Directory
  • Creating your First Web Page
7: HTML Basics
  • The HTML Page
  • HTML Page Structure
  • Inserting Text
  • Images, Audio and Video
  • CSS Formatting
8: HTML Structure
  • About HTML Structure & CSS
  • Headers, Content and Footers
  • Creating Columns
  • Classes and IDs
  • Creating Nav Elements
9: HTML Towards Production
  • About the Bootstrap Library
  • Working with Images
  • Working with Links
  • Adding Animation
  • CSS Variables
10: Introducing JavaScript
  • Declaring JavaScript Variables
  • Writing Conditional Statements
  • Writing Repeating Structures
  • Creating Functions
  • Manipulating HTML Elements
11: Installing MySQL
  • Overview of Databases
  • Installing MySQL
  • Creating Tables
  • Creating Table Relationships
  • Getting Data with JavaScript
12: Capstone Project
  • Final Touches on Project Web Site
Part II: The Software Professional
Introduction and Project Identification
  • 1: Agile Development
  • The Sprint
  • Developing Requirements
  • Using Source Code Control
  • The Software Development Lifecycle
2: Variables and Arithmetic
  • Exploring Data Types
  • Declaring Variables
  • Variable Scope
  • Arithmetic Operators
  • Running a Program
3: Conditional Logic
  • More on Variables
  • Logical Operators
  • The if statement
  • Using switch Statements
  • Logic and Program Flow
4: Repeating Logic
  • Using the for Loop
  • Using the while Loop
  • Working with Arrays
  • Setting and Getting Array Items
  • Using the for each Loop
5: Working with Strings
  • Object Properties and Methods
  • Create a String Variable
  • Working with String Properties
  • Working with String Methods
  • Integrating Strings with Other Concepts
6: Creating Functions
  • The Need for Functions
  • About Function Inputs and Outputs
  • Creating a Function with no Parameters
  • Creating a Function with Parameters
  • Function Signature and Overloading
7: Using Classes
  • What is a Class?
  • About Class Properties
  • About Class Methods
  • Creating an Object
  • Using an Object
8: Class Creation and Destruction
  • About Objects and Classes
  • About Class Constructors
  • About Class Destructors
  • Creating an Object
  • Using an Object
9: Collections
  • The Need for Collections
  • Collections versus Dictionaries
  • Using Built-in Classes
  • Creating your own Collection
  • Using Collections in Code
10: Inheritance
  • The Need for Inheritance
  • Creating a Base Class
  • Creating a Sub-Class
  • About Method/Property Inheritance
  • Creating a Sub-Class Instance
11: Polymorphism
  • The Need for Polymorphism
  • Overriding Functions
  • Making a Polymorphic Call
  • Polymorphism Scenarios
  • Other Considerations
12: The Database – Part I
  • Installing a Database
  • About Database Tables
  • Creating the Database Schema
  • Inserting Data
  • Selecting Data
13: The Database – Part II
  • About Connecting to a Database
  • Creating the Connection Class
  • Connecting to the Database
  • Selecting Data
  • Presenting Data
14: The Database – Part III
  • About Data Modification
  • Inserting New Data
  • Modifying Existing Data
  • Deleting Data
  • Implementing Transactions
15: Working with Graphics
  • About the Canvas
  • Loading Images Assets
  • Loading Animations
  • Playing Video
  • Using Resources
16: Development & Delivery
  • Delivery of Capstone Software