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!
Computer Programming 12 - Course Syllabus 2025
Please submit course assignment 'one drive' links' into your spreadsheet in the correct 'drop box'
Drop Box - Programming 12 - Block 1 (spreadsheet only)
If you can't make up links for the spreadsheet, then create a folder with your full name on it and drag and drop all your files into this ONE folder 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 # 4 -Introduction to Object Oriented Java Book II
Java Textbook # 2 - Please download
Object Oriented Java Textbook 2 - download the PDF off this link!
OOP's data files for exercises (please download this as well!)
In this final Java course segment, we will be learning about Object Oriented Java OOP's. This is what Java is known for.
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?
summary of some of the key concepts of OOP's (Object Oriented Programming)
OOPs with coding examples
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 out of FIFTEEN 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.
First, ensure you have the JDK installed on your system. You can download it from the official Oracle website.
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:
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);
}
}
}
Save your file with a .java extension. For example, save it as Main.java.
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
Use the javac command in windows powershell to compile your Java file. This will generate a .class file:
javac Main.java
Use the java command to run your compiled Java program:
java Main
Great reference guides
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).
Create ONE app project - might be considered Proficient (high 'B' or low 'A' range) - however, that depends on the COMPLEXITY of the project. One sophisticated app with many features MIGHT be better than two mediocre quality apps...
sorry not an exact science :(
Generally creating TWO or more app projects - would likely be considered to be 'Extending' (high 'A')
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
Here are some Java based programs that you can make with OOPs (and other Java based skills)
Create a billing system (with click interface!)
A snake game in Java / Alternate instruction set (the other one seems 'buggy')
A collection of interesting Java based coding projects
Make a Java based guessing game (sorry I know we've 'been there done that') but take a look! /
If these don't work then try these links
Option # 3 - Game of "Flappy 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 :) )
Option # 4 - (Advanced) Build a Game of Chess
(*) Note: requires new learning such as how to use "Java Swing - and create a GUI" interface
We are now coming to the of this unit. Below are a list of complex Java Projects. See if you can successfully use these 'source files' and figure out how to use the IDE to get two of these projects to successfully build. If you managed to do this then congrats you fully understand how to access Java source code files and know which ones to use to get the program to execute! If you accomplish this (pat yourself on the back).
Congrats! if you can build this - once done - try a few enhancements to earn your 'gold star'. :)
Here are some examples of 'enhancements' in this context:
BEGINNER-FRIENDLY ENHANCEMENTS
You will need to search out your own guides to support you on this. Here is one for a 'timer countdown' feature:
These improve the core gameplay without major complexity.
When a player clicks a piece, highlight all valid squares it can move to.
2. Move History
Keep a list (and show it on screen) of all moves in standard chess notation:
e4, Nf3, Bb5, etc.
Let players revert a move.
Great practice for using stacks or storing game states.
Ensure the game correctly detects:
Check
Checkmate
Stalemate
These make the chess game feel polished.
Add a countdown timer for each player:
Blitz (5 mins)
Rapid (15 mins)
Custom times
Serialize the board to:
JSON
A text file
Your own custom format
And load it back later.
Play sounds for:
Move
Capture
Check
Use simple .wav files in Java.
Let players switch between:
Light/dark board colors
2D vs. stylized icons
Piece sets
Resources
Module # 3 Java - Advancing your coding 'Superpowers'
We are moving back to Java to complete this very important programming journey. The skills covered in the next TWO modules offer you a vast array of coding and computational skills which are transferrable to any technical language.
Why is Java such an important coding language to learn...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 Code (second half of book one) Or Apache Netbeans
Step by step intro for Apache Netbeans (refresher)
(*) 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.
# 25 Repeating yourself with the while loop
# 26 A number Guessing game
# 27 Infinite Loops
# 29 Do-While Loops (*) More challenging (More background info on Do-While loops - )
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:
# 30 Adding values one at a time
# 33 Calling a Function
# 34 Calling Functions to draw a flag (*) note - if you can, draw any flag you wish for this exercise
# 35 Displaying Dice with Functions
# 36 - Returning a value from a Function (*) More challenging
# 44 Counting with a For Loop
# 47 - Generating and Filtering Values
# 48 - Arrays - Many values in a single Variable
# 49 - Arrays continued
Part II - Create a 'novel' Java App - what can you make?
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!
15 Top Java Projects to make (with source code)
(*) 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
Due: Friday, October 31st, 2025
Time for some gaming fun! In the next course segment, you will have a chance to remake some 'classic' games from the past and program them into something fresh, new and exciting. For the sake of simplicity you may use your CODEPEN account for the development aspect. You may, of course, also use platforms such a Visual Studio but that isn't required for these. Just be sure to save your changes as you proceed!
Software download link
VISUAL STUDIO COMMUNITY (you can see an outline here!)
Other JavaScript Development Links
How to use Visual Studio for JavaScript development work
JavaScript explained (a great feature summary!)
(Complete 3 out of 4) - Proficient (Complete 4 out of 4 Extending)
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 OR you may use CODEPEN and build it out that way.
Please be sure to improve the game in the following ways
Change the ball speed / size of paddle / number of bricks / game and brick colours
Part II
Make a guessing game based on the GitHub version
In this next segment you are tasked, as a developer of taking this tired gaming 'classic' and remaking it into something fresh, new and exciting. Your "NEW" game should still involve the same 'behaviour' which involves 'guessing at something but it might not be 'guessing a correct number' but might be guessing some other answer. For example, in the CODE PEN link below, you can find one such game that uses 'on event click buttons' to help find a lost cat. Each time you select a square it offers a clue, such as 'getting colder' or 'getting warmer'. I am not suggesting this is an outstanding game but it takes the guessing concept and uses it in a new and innovative way.
Good luck and happy guessing! :)
Make a guessing game using JavaScript Complete reimagination (similar 'behaviour' - different structure)
Original Guessing Game Examples!
Part III
Create a Puzzle Slider Game
In the third of our series of games in JavaScript you will be tasked with creating a 'Puzzle Slider Game'.
Please start with this basic version: Example of a Number puzzle slider game OR this one
Add THREE (Proficient) of the following features to your Puzzle Slider Game. Good luck! (EXTENDING - add all of them)
- you can make a version where you complete a picture
Timer
Description Add a timer to track how long it takes to solve the puzzle.
Implementation: Use JavaScript's `setInterval()` function to update the timer every second.
Move Counter
Description: Keep track of the number of moves made by the player.
Implementation: Increment a counter variable each time a tile is moved and display the count on the screen.
Undo Button
Description: Allow the player to undo their last move.
Implementation: Maintain a history of moves and restore the previous state when the undo button is clicked.
Difficulty Levels
Description: Offer different difficulty levels (e.g., 3x3, 4x4, 5x5 grids).
Implementation: Adjust the grid size based on the selected difficulty level.
Winning Animation
Description: Display a congratulatory animation or message when the puzzle is solved correctly.
Implementation: Check if the tiles are in the correct order and trigger the animation.
High Scores
Description: Maintain a leaderboard with the best times and lowest move counts.
Implementation: Use `localStorage` to store and retrieve high scores.
Sound Effects and Music
-Description: Add sound effects for tile movements and background music for a more immersive experience.
Implementation: Use the HTML5 `<audio>` element and JavaScript to play sounds.
Hints
Description: Provide hints to help players who are stuck.
Implementation: Highlight the next possible move or show the correct position of a tile.
Customizable Themes
Description: Allow players to choose different themes or styles for the puzzle tiles.
Implementation: Use CSS classes to apply different styles and let players select their preferred theme.
Resources
A version (no code) with a picture to solve
Here is the 'secret' way to WIN at a slider puzzle!
Part IV - Minesweeper! (more difficult)
In this final JavaScript game activity you are tasked with creating and improving a classic game of MINESWEEPER. The basic game structure is written for you. Have fun and watch out for those mines!
Your Challenge (do as many as you have time for)
Improve this code further to:
Calculate and display a score in real time (number of cells that have been visited).
Allow the user to add a cross or flag to a cell (by right clicking?) to indicate the position of a mine.
Allow the user to choose a difficulty level or change some settings (e.g. Number of mines, size of the grid).
Add a timer to the game.
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: Monday September 8th
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: September 26th (Friday) 2025
Sequential Code Academy lessons (free lesson segments - see below)
Introduction / conditionals / functions / arrays / loops / iterators / 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: October 7th (Tuesday)
Use Code Pen for these project 'reinvents'. Be sure you sign up for an account so that you can save the changes you make!
Resource Guides
reference - W 3 JavaScript - reference guide to functionality and features.
(*) 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 Analogue Clock Due:
Analogue clock (# 3 Spreadsheet)
(*) 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 A 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. 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!
Project TWO -Reinvent a Digital Clock- Edit HTML / CSS / JavaScript together
(# 4 - Spreadsheet) Due:
Use this dreadful looking clock and add TEN dynamic changes to the the clock's design, functionality and behaviour. This might include ONE HTML change / TWO 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)
Here is a great guide that builds out a game of Hangman - clear instructions (you can use this if you prefer!)
Experiment and make min 10 changes (we are flexible on how many of each one
(Proficient) Example changes - to the canvas / colour scheme / 'look and feel'
(Proficient) Example changes to the way the game is played (behaviour Javascript) - ie when you button click with the correct letter another event is triggered (eg. fireworks goes off...)
(Extending) Example project 'innovations'- Can you make the classic word game 'Hangman' 'new in some way (eg. the letters are already in the blanks but in a scrambled sequence - maybe you have to move the letters around to make the correct answer
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!