Computer Programming 12 - Fall / Winter 2024

Welcome to Computer Programming 12 

This fast paced course has been designed to build off of the structure introduced in Programming 11. We will revisit familiar units of study but with an entire new level of depth. For example, in Programming 11, we studied HTML and CSS; in Programming 12 we delve into JavaScript (the behaviour side of web development). Everything in this course is unique but relates to a larger whole. We endevour to keep the units covered in the course practical with the goal of giving you the skills to bring your own creative ideas to life. Practicing, building, reverse engineering, iterations and add on's are all strategies we deploy to help you innovate. Although there is some theory in this course, the guiding principles are practical and useful. I do hope that you enjoy this course and that you have a lot of fun along the way! 

Drop Box - Programming 12 - Block 3 (spreadsheet only) 

Drop Box - Programming 12 - Block 4 (spreadsheet only)

Create a one Drive share link - create an 'on line' spreadsheet for sharing course assignments 

Create and Share links in ONE drive - A 'how to' guide

Example - T Linburg - (using Google Sheets - but you could use your Microsoft version of Excel) 

T Linburg - grade and assessment link spreadsheet (adjust the share permissions to allow Mr. Linburg to edit) 

Module # 5 - Independent pathways - Choose one area of Interest! 

If nothing 'grabs you' then you are invited to write me a learning proposal for review and approval. (For example, perhaps you might want to complete some more advanced Python project work instead of these options - look on-line for something of interest - then: write an outline / a rationale for this / and the proposed links and scope of work

Option # 1      Introduction To Arduino

What is an Arduino you ask?  Please read this link for a great description of this multipurpose technology! 

A - Arduino starter kits  

Please complete the following introductory projects using the Introductory Arduino kits

To sign up for an account please go here 

Arduino sign up (You will need an account to be able to create and save scripts using the browser based IDE software) 

B - The Keyestudio "super learning kit" 

See the project list to choose from (we'll try to complete 5-7) - We'll spend approximately a week on these. 

1.Hello World / 2.LED Blinking / 3.PWM / 4.Traffic Light / 5.LED Chase Effect / 6.Button-controlled LED / 7.Active Buzzer / 8.Passive Buzzer / 9.RGB LED / 10.Photo Resistor  / 11.Flame Sensor / 12.LM35 Temperature Sensor / 13.Tilt Switch / 14.IR Remote Control

15.Analog Value Reading / 16.74HC595 / 17.1-digit LED Segment Display / 18.4-digit LED Segment Display / 19.8*8 LED Matrix / 20.1602 LCD / 21.9g Servo Control / 22.Stepper Motor / 23.PIR Motion Sensor / 24.Analog Gas Sensor / 25.ADXL345 Three Axis Acceleration Module / 26.HC-SR04 Ultrasonic Sensor / 27.Joystick Module / 28.5V Relay Module  / 29.DS3231 Clock Module

30.DHT11 Temperature and Humidity Sensor  / 31.Soil Humidity Sensor // 32.RC522 RFID Module

Introduction to working with Programmable circuit boards (Arduino Kits) 

In this next course segment, you will be asked to work on creating a few apps using the Arduino starter kits. 

What is an Arduino you ask?  Please read this link for a great description of this multipurpose technology! 

Please complete the following introductory projects using the Arduino kits

To sign up for an account please go here 

Arduino sign up (You will need an account to be able to create and save scripts using the browser based IDE software) 

Option # 2      Learn the essentials of C++

Introduction to C++  The "original object orientated" language!

 A great language to know for Engineering and related fields!

All we will have time for in this segment is a brief introduction to the coding fundamentals of C++. We will work off a browser based IDE and compiler for this introduction. 

"This powerful language incorporates features of object-oriented paradigm mixed with the features of C programming language."

Here is a brief history of C++ 

Instructions 

Please take some time to pick and choose some of the lessons from this on line resource. In the section below, I have made some specific suggestions about what you might practice, however I will leave this choice up to you. The problem, going forward, might not be that C++ is particularly hard but perhaps remembering WHICH naming conventions are used for which language! 

Introduction to C ++   approach # 1

My suggestion is to pick and choose a collection of lessons. You should know, for example, how a C++ program is set up, and what are the essential attributes of any C++ project. You also should be versed in functions, classes and variables. Hopefully you will start to see that C++ is just another coding language that has many things in common with other languages such as Java and Python. 

The image below shows the format for entering code into the C++ coding terminal shell. Click on the icon on the far right of the screen. 

Introduction - approach # 2 

Here is another good resource link to help you get started working your skills with this important programming language. 

Part II - Coding project choices using C++ 

Choice A

Please use the following link as a project resource for this segment. You are to download a zip file to use for each of the projects you pursue. Some of the projects to choose from include: 

A casino number game / hangman / snakes and ladders / tic tac toe / banking system project / supermarket billing project...

You can use Visual Studio (with extensions) for most of these C++ projects. Good luck and have fun! 

Choice B

Game making using C++  

Instructions 

Please access the games and the related C++ code. 

Reference guides for C++ 

On-line reference guide - number one (on-line) - click the category for more specific information 

Option # 3    Introduction to SQL  Back end data base storing and retrieving information 

SQL is a standard language for storing, manipulating and retrieving data in databases.

Tutorial link Code Academy (work through a collection of practice exercises) - Don't feel any expectation to do them all, pick and choose. You will essentially use this site as a project resource. Now look through the PDF text that gives you a collection of puzzles to solve, while learning SQL at the same time! :) 

A great place to locate 'free' databases from which to conduct database queries.

Exercises and activities related to SQL 

Block 3 - Advanced Java App development class presentation link 

Block 4 - Advanced Java App Development - class presentation link 


Module # 4 -Introduction to Object Oriented Java Book II 

Java Textbook # 2 - Please download  

In this final Java course segment, we will be learning about Object Oriented Java OOP's. This is what Java is known for. 

Please be sure you have the CORRECT JDK for this segment. Please go to the following site (you'll need an account) and install from here (bottom of the page)

          x86 Installer           139.66 MB                     jdk-8u391-windows-i586.exe

A list of the steps

https://www.oracle.com/ca-en/java/technologies/downloads/#jdk23-windows 

download: https://download.oracle.com/java/23/latest/jdk-23_windows-x64_bin.exe 

After installing, open a windows PowerShell and type: javac -version  

You should get: javac 23 

Means you have successfully installed the JDK.  

In the PowerShell, type: ls (“L” as in “list”) this command lists all the folders in current directory.  

When you first open the PowerShell, your prompt is: 

PS C:\Users\your id > 


Type: cd Documents 

cd means “change directory”. Whatever comes after cd, it will move the directory to that file. (Ex, “cd Documents” will lead you to Documents directory.) 

You should see: PS C:\Users\your id\Documents> 

Type ls again to see if there are any other contents of your Document's directory. (you should not see any output, since the folder is currently empty) 

(mkdir means make directory)  

This will create a new folder in the current location.  

Locate yourself to javahard2 folder by typing: “cd javahard”, then type ls and it should not list anything since the directory is empty.  

Part I - Introduction (reading / note taking)

Please read through the following links to help you get started! You are asked to make a short summary of key concepts listed below (part A and part B) 

(One page in total from the following links - 'mix and match' - You decide what is important) 

Section A - OOP's - what is it? 

Key OOP's concepts / Another good guide / Opps explained W3 schools

Here are two graphics that outline general Object Oriented Java principles within the context of a soccer game.

Section B - How is OOP's different 

Why OOP's - how is it different or better than using traditional programming? 

Part II - OPP's Related practice lessons (see attachment section for data files and Java web sites)

Here is the link for the first collection of exercises - the first TWELVE lessons can be found on this link! 

Same lessons as the PDF textbook...perhaps this format is easier access (up to you). - the last FIVE exercises will require the textbook! 

You will complete ONE through to 15 from this textbook! 

Technical specifics of creating OOP's applications

1) We do NOT USE AN IDE like Netbeans for Object oriented lessons we use notepad and terminal shell.

The textbook suggests that they need to be all written in the terminal shell environment but I think an easier approach might be to write your apps in notepad and then just run them in the terminal shell environment. 

1. Install the Java Development Kit (JDK)

First, ensure you have the JDK installed on your system. You can download it from the official Oracle website.

2. Set Up Your Environment

Make sure your environment variables are set correctly. For example, on Windows, you need to set the JAVA_HOME variable and update the PATH variable to include the JDK bin directory.

You can use Notepad to write object-oriented Java applications that utilize standard libraries. Here's a step-by-step guide to help you get started:

1. Write Your Java Code in Notepad

Open Notepad and write your Java code. For example, you can create a simple class that uses standard libraries:

import java.util.ArrayList;


public class Main {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();

        list.add("Hello");

        list.add("World");

        for (String item : list) {

            System.out.println(item);

        }

    }

}

2. Save Your File

Save your file with a .java extension. For example, save it as Main.java.

3. Open the Terminal

Navigate to the directory where your Java file is saved. You can use the cd command to change directories. For example:

cd path/to/your/java/files

4. Compile Your Java Code

Use the javac command in windows powershell to compile your Java file. This will generate a .class file:

javac Main.java

5. Run Your Java Program

Use the java command to run your compiled Java program:

java Main


Great reference guides

OOPs explained with great examples!

Part III - Make your own app (either OPP's based or based on other Java skills) 

In the next segment you will harness your newfound skills with OOP's to either create an original application or complete a pre existing project (with your own modifications).

Option 1 - Create your own based on the lessons covered so far (concepts based on lessons 1-15)

In the first option, you could create a calculator that uses the square root function mentioned in one of the lessons. However, our skills are still fairly limited so you could also rewrite an EXISTING exercise with different functions from both book ONE and book TWO. I know this is rather general but it follows a similar theme of reinvention as described in other previous lessons.

Option # 2 - Make a game and / or a specific application using one of the links below as a guide.

If these don't work then try these links

Option # 3 - Game of "Floppy Bird"

A fun game to make for your Java based skills! / Link to a student made game collection (examples - can't speak to ALL their quality however :) ) 

Module # 3    Java - Advancing your coding 'Superpowers' 

We are moving back to Java to complete our important programming journey. The skills covered in the next TWO modules will give you a vast array of coding skills that are transferrable to any language. Why is Java such an important coding language to learn...please read on! Read this link for more info! 

Click on this one drive link and download the textbook resource

How to use Visual studio for Java

Part I  Write output programs in Visual Studio (second half of book one)

(*) Please complete ONE study drill at the end of each of these exercises.- only submit the exercise AFTER you have done the study drill (in other words the MODIFIED one) - add a developer comment to make sure I know WHICH study drill you completed.



The Key difference between While Loops and Do...While loops is...


The do...while loop is similar to while loop. However, the body of do...while loop is executed once before the test expression is checked. 

This is as opposed to the 'While loop" which... 

Java while loop is used to run a specific code until a certain condition is met. The syntax of the while loop is: 



Part II - Making a Diverse range of Apps with Java 

We will now pause and try to find practical uses and application for the Java related skills that we have learned so far. What sort of things can we make with our new found skill set. Take a look at some of these links. Hopefully you might find ONE project you have an interest in making. If not, then you could search for one to your liking. These links have a diverse range of options. Have fun and happy coding!

(*) Some of the above links aren't tutorials per se but rather guides or examples of what your project might look like

Module # 2 - Using JavaScript to make your own games  

We are now moving on from 'studying' other peoples exceptional coding projects and transitioning to our role as developers. You will use this guide to help you write your own game of 'Hangman'. You are, of course, encouraged to personalize it and change its look and design AFTER you have finished the basic constructions steps. Happy coding! :) At the end of this, we will submit these to peer assessment and get a chance to try everyone else's creations! 

Part I 

Game of 'Breakout' - Destroy the bricks 

 Take a look at this link! Please feel free to adopt it for your own purposes. You might want to build this game on Visual Studio (Community edition - free) download! (Try to personalize with FIVE changes or modifications. 

Part II 

Make a guessing game based on the GitHub version - FIVE modifications min.   

MODULE # 1  - Introduction to JavaScript     

Part ONE and TWO 

JavaScript - one of the world's most popular computer language   

Unit Description

We will be starting this unit by completing some structured introductory tutorials to help you learn the language structures; then we will give you actual working JavaScript made by developers for you to break, modify and then improve. 

Finally, we will invent our own apps based upon the skills of other developers. 

History of JavaScript - an interesting read! 

JavaScript intro 1  / JavaScript intro 2

Section # 1 - JavaScript 'sandbox' 

(# 1 - Spreadsheet) Due:

W 3 Schools Introduction to Java script structures 

In our very first introduction we will be using the W 3 for schools site to learn more about the history of JavaScript and to learn how its constructed. Please load the web site and do one or two 'try this' for each segment. Please try to 'break the code' and change it up anyway you see fit....and see what happens? Be sure to read through each of the segments but the threshold for completing exercises here is not very high. Think of this as an 'interactive' intro. 

Please share your insights from THREE of the exercises (you should include some specific script reference). (half a page or more) (Please try to look through 12 sections) 

Section # 2    JavaScript Practice - Code Academy (# 2 - Spreadsheet)

Due: 

Sequential Code Academy lessons (free lesson segments - see below) 

 Introduction /  conditionals /  functions /  arrays /  loops /  classes  / objects

Please complete this introductory work on JavaScript:   Code Academy site. Please be sure you have completed the lessons as described above. PLEASE complete all the "free" segments. ITERATORS IS NO LONGER REQUIRED FOR CODE ACADEMY. You will submit a screen shot of your 'progress' and your account name put on a word document!

Section # 3   JavaScript "Reinvents"   Utilize existing JavaScript projects to improve their function and design Due:

Please put your final renditions into Visual Studio (add the JavaScript extension) Please add a developer comment outlining the specific changes you made to the clock. 

In this segment of JavaScript, we'll be working with CODE PEN and other resources to experiment with novel and creative uses for JavaScript. 

Resource Guides 

(*) Note: please write a specific developer comment in the 'redo' explaining what you actually did to improve the function and design!

Project ONE - Reinvent -JavaScript Clock Due: 

(# 3 Spreadsheet) - Analogue clock (one), Digital Clock (one)  

(*) Note: One option is to set up your own Code Pen Account and put your edited projects right on that hosted platform and then send me the link to your finished "reinvent". There are other methods we could discuss in class. 

(*) Note: you may want to move your clock code over to either Visual Studio OR Code Pen if you have your own account. If you just edit it off of the W3 school's site there is NO save as function!

Edit in W 3 Schools - 

A JavaScript clock - Please make all your changes right on the W 3 browser. Try to make a minimum of FIVE changes to its look / function / and design. 

Take a look at these 'far out examples' - that you could use for your inspiration and edits! Go crazy and have fun (look below at the video for links to the ACTUAL coding samples!) - Have fun! 

Here is another cool clock example!

 (NOTE: we might use a different platform for this project - stay tuned) 

Additional activity resources

Project TWO -Reinvent - Edit HTML / CSS / JavaScript together (# 4 - Spreadsheet) Due: 

Take this dreadful looking clock and related message boxes and make TEN dynamic changes to the look and behaviour. This could include ONE HTML change / ONE CSS change / and SEVEN JavaScript modifications (i.e. modify a function or change an array)   

Project THREE - Reinvent - Modify the Code Pen version of the game hangman - (# 5 - Spreadsheet)

Experiment and make 10 to 15 changes

A JavaScript game of hangman - Experiment with this JavaScript version of Hangman. Use the reference guides provided. Try to read through the ENTIRE JavaScript, experimenting and changing it as you go. You are only using this for practice, so break it in all ways that you can think of. All your changes will show in the display at the bottom of the page.

Here is a useful 'textbook' help guide that helps walk you through the code for this game!