Welcome to the Course Programming 11
Instructor: T Linburg
Email contact info: telinburg@sd43.bc.ca
In this class we will be learning a range of programming languages, make computer games and create your own programs using the skills you learn in the class. In addition, we will be honing our technical problem solving skills and delving into various fields of computer and data science. The intention of this course is to provide a well rounded introduction to programming and the various topics that surround this. We will work mainly on our own but there will be many opportunities for both collaboration and connection with peers. Great programmers are as comfortable working and managing a team as they are as sole practitioners. It is key that you learn while having fun at the same time!
Drop Box - Programming 11 - Block 3 (spreadsheet only)
Drop Box - Programming 11 - 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)
Instructions:
Download an excel version
Rename the file "Last Name / First Name" - Course - Block
Drop this spreadsheet into the hand in box and then add in One Drive Share links as you complete course assignments.
It is YOUR responsibility to keep this spreadsheet updated as you complete assignments
1. Open your computer and open an internet explorer (Google Chrome, FireFox, Microsoft Edge, Opera etc)
2. Type into the Uniform Resource Locator the website address: https://myeducation.gov.bc.ca/aspen/logon.do
3. On the page, log into your myed bc account using the account and password the school proved you. If you have forgotten your password, go to the school office to obtain a password recovery.
4. When you log onto your myed bc page, you will be able to locate your report card via a PDF file named Learning Update on the bottom right of your page.
5. Click on the top most file to get your latest report card. (If your computer is slow, it might take up to 10 seconds to download the file, so don’t panic and close the window)
6. Go to your downloads folder, (Ctrl + J on chrome) and click on the PDF file you just downloaded to view your report card.
Module # 7 - Introduction to Python - An 'Interpreted' Language
Due: Last day of the course
We will be following a familiar pathway to learning Python, However, you will be happy to note that we only be completing SOME initial practice exercises as you already are familiar with many general programming concepts. Are unit will consist of initial practice, then some game making and then some related project work. Good luck and have fun!
Python IDLE utility links
Please use this link for downloads (should that be necessary)
Multi - threading explained (can speed up program run time)
(Here is a decent set of install instructions )
(*) Note: Python IDLE 3.9 is already installed in the lab.
Part I - Introduction to Python - An interpretive language
Introduction (read / reflect / respond)
What are the key differences between a compiled language (Java) and an 'interpreted' language (Python) ?
Read this article Differences between compiler and interpreter / Another good link! / Python "The good, the bad the ugly"
How does a Python IDLE work? Here is a comprehensive introduction / why is Python still so popular? / second link
Python IDLE install site - You might need to install a legacy version of Python (version 2) to run some of the game instructions. We'll see as we progress through the unit.
Please make a table or chart that clearly explains the following:
What makes Python (an interpretive language) different than a compiled language like Java? Explain the key differences in bullet form
Why is Python still so popular despite being so slow during runtime? Explain?
Part II - Practice Module
As with any new language, we will need to do some practice to learn the conventions of the Python language. However, we'll be doing less than with JAVA as you already have a solid background on programming fundamentals and typical coding structures.
Coding practice (Python)
Learn Python 3 the Hard way (textbook PDF - different author same title) (If you have practiced Python previously then choose a DIFFERENT 14 exercises to complete.
Download PDF textbook from the above one drive link.
Write your Python code using the Python IDLE 3.9 located in the program menu ( open Python 3.9 folder and look for the IDLE)
Please complete the following exercises: (or choose your own collection as long as it adds up to 14 in total!)
Exercises 1 - 7 (covers many familiar activities) - (NO study drills)
Exercises 10 - 17 Python essentials continued...(study drills at least one) Note: exercise 13 MUST have THREE arguments and no more
If you're having trouble with exercise 13 from the lessons - here is a great discussion of unpacking variables!
(Hint:) - in the Python Shell - select RUN from the top menu bar and then select 'run...customize" (or Shift F5) and then name the three variables (note: NOT four) any name you wish... so for example type in: first second third (then run) and then it will execute and ask you to describe the fourth variable!
Or you can use Window's powershell the accomplish the same thing but you will need to use a few powershell keystrokes to get there...eg "cd" (change directory) to get to the location of the file you wish to execute...) see blue screenshot at the bottom of this unit for an example! :)
You will start to see many similarities between Python and JAVA. However, Python is known for being an easier and more intuitive coding language. Due to time constraints we are only going to complete a smaller collection of practice exercises but you are encouraged to use this textbook as a reference guide.
Part III - Games and So Much More!
Game 1 - Rock, paper scissors...(make at least four modifications to the game's behaviour and design)
In this first project, you will work with Python scripts in a very structured format to make a simple game. Once you have typed in the game code (don't copy and paste please) you will then be tasked to make structural improvements to the quality of the game play. What improvements to its design is up to you, however, you are expected to add in a developer comment into the top of the game code explicitly explaining HOW you changed and improved this classic game. Good luck and happy gaming!
Instruction set(s) - you choose which one to follow:
You will need to import modules for this game and others. Using prebuilt libraries allows you to build out programming capacity with only some basic skills. Read this link that outlines "importing" in Python
Some to modify the above game: add in more game objects such as a hammer or a butterfly.../ best 'two out of three / change how you 'win'...
PY Charm - Download and install link (sould be installed already)
How to get Py Charm to work on Py Game (short video)
Once installed - please 'link up the libraries ' Install instructions for py game
IF THE ABOVE INSTRUCTION SET(S) DON'T WORK THEN TRY THE 'STEP BY STEP' AT THE BOTTOM OF THIS SECTION!
Game 2
Racing Car game
make a car racing game (turtle library download and install - video installation guide / Here is a basic list of Terminal shell command prompts
Game 3
Classic game of 'snake' in Python (only do if you can get the "Platform Game to run!)
Classic game of 'snake' in Python / Here is a set of instructions that has a greater 'diversity' of snake game styles
Part IV - Choice Project to complete (choose THREE in total from one or both of the links below)
There are 81 in total. The following projects are essentially laid out for you but they offer specific ways to change or enhance the work.
Python Project link Database # 1
OR
Mad Libs / Guess the Number Game (computer) / Guess the Number Game (user) / Hangman / Countdown Timer / Password Generator / QR code encoder / decoder / Tic-Tac-Toe / Tic-Tac-Toe AI / Binary Search / Minesweeper / Sudoku Solver / Photo manipulation in Python / Markov Chain Text Composer / Pong * / Connect Four * / Tetris / Online Multiplayer Game / Web Scraping Program / Bulk file renamer / Weather Program / Code a Discord Bot with Python - Host for Free in the Cloud / Space invaders game
(*) Note: the *'d project activities are quite time consuming and on the difficult side...so be cautioned before you begin!
Game Intro. and installs... Use the built in Arcade libraries inside Python 3.12.3 to create a collection of arcade games
In order to be able to develop games in Python 3 you will need to conduct a few installs. Some of these might have already been done for you but it would probably be best for you to conduct these installs anyway. (You might need my admin password - if not already installed)
PyCharm (by Jet Brains): Python Development platform
An excellent primer to working with Python Arcade (reference only)
Install Arcade libraries INSIDE PyCharm and a Virtual Environment to run graphic based Python games please follow the following link.
Install the Arcade and game related libraries inside of the Python IDLE (please do this or check if it has been done)
Suplemental instruction set:
Installing PyCharm, a popular Python IDE, and Pygame, a set of Python modules for writing games, involves a few steps. Here's a general guide:
1. **Install Python**: Before installing PyCharm and Pygame, ensure that you have Python installed on your system. You can download and install Python from the official Python website: https://www.python.org/downloads/ Also make sure that that python is added to the PATH and that pip is properly installed.
2. **Install PyCharm**:
- Go to the JetBrains website: https://www.jetbrains.com/pycharm/download/
- Download the version of PyCharm (Community or Professional) that is compatible with your operating system.
- Follow the installation instructions provided by JetBrains for your operating system.
3. **Create a New Project in PyCharm**:
- Open PyCharm.
- Create a new project by selecting "File" > "New Project".
- Choose the location and interpreter (the Python installation) for your project.
4. **Install Pygame**:
- Once you have your project set up in PyCharm, you need to install Pygame. You can do this using pip, Python's package manager.
- Open PyCharm's terminal (Four lines on top left > View > Tool Windows > Terminal). Or press Alt + F12
- Type the following command and press Enter to install Pygame:
pip install pygame
5. **Verify Pygame Installation**:
- After installation, you can verify that Pygame is correctly installed by importing it into a Python file and running a simple test:
```python
import pygame
- If there are no errors, Pygame is installed successfully.
6. **Start Developing**:
- Now you're ready to start developing games with Pygame in PyCharm! You can create Python scripts, import Pygame modules, and build your games within your PyCharm project.
That's it! You've installed PyCharm and Pygame, and you're all set to develop games using Python. If you encounter any issues during the installation process, feel free to ask for further assistance!
Introduction to Game Development
An excellent discussion of game development procedures in Python AND the power of adding in calls to object oriented features
A few arcade style Python game examples (for reference ONLY)
Module # 6 - Java Introduction continued...
Module # 6 due - Wednesday May 22nd
Java App presentation dates will be May 22nd, 23rd, 24th (Wednesday to Friday )
Please sign up and add your 'share drive' link to spreadsheet!
Part I "Learning by 'making' and doing..." NOTE: DO NOT COPY AND PASTE EXERCISES - YOU WILL LEARN NOTHING!
Please submit the edited drills only (with the study drill info on it) - each should be on its own separate file
Please complete these exercises and complete ONE study drill for the *'d exercises
# 11 Variables Modification Shortcuts
# 12 Boolean Expressions
# 13 Comparing strings (*)
# 14 Compound Boolean Expressions (*)
# 15 Making decisions with If Statements (*) A GREAT summary of the various type of IF statements
# 16 More If Statements
# 17 Otherwise (If Statements with Else) (*)
# 18 If Statements with Strings (*)
# 22 Making Decisions with a Big Switch (*) (Here is a sample study drill to assist you - reference only)
# 24 Choosing numbers randomly (*)
# 28 - Using loops for error checking - this important exercise prevents your programs from crashing
Part II - A second app of your own incorporating some of these new skills including both 'If and If else" statements
Here is a sample - using 'if' statements for series of questions / some other examples of uses if if then else statements (perhaps this might fit somewhere into your app development?
Criteria (Note: you could use this for your presentation as well :) )
This project is intended to be a 'summative' and should highlight many of the skills you've learned throughout the unit. Specifically, you are tasked with creating a useful app (as defined by an end user group). What exactly is "useful" is really up to you. You could create a short story with if or if else decision trees (Story telling - entertainment) / you could create a health app with a series of questions (Health app l) / you could create a game with a series of riddles or construct an ascii treasure map (think gasoline receipt exercise two) for a person to solve (entertainment) ...the list is endless.
Here are a couple sample projects:
A Health App / Adventure App / rock paper scissors
Try to incorporate a loop to prevent crashing. All about loops - read on!
Module # 5 - Introduction to Java - Java in-depth intro...
Part I - Key definitions in JAVA - What is Java?
Module # 5 - Due: Tuesday May 14th
Please take a look at the video link below and report out on some of the key terms in Java programming. Many of these concepts generalize to all programming languages. For example, encapsulation (data security) is an essential feature of any app, no matter which language it might be written in.
Key Java Terms mentioned in the ("Java - How it works") video (note: there may be details on here that may be too advanced for some, so focus mainly completing and locating the definitions) but the video is, in my view, excellent at elaborating on Java concepts! Here is a nice summary that I thought explained much of this well! :)
You may use any platform of your choice: a Prezi -/ PowerPoint MS Word OR even Visme - you choose the platform you like the most. Feel free to add in images or other enhancements to make your presentation more effective.
What is Java? Introduction video
Assembly language - Key Terms mentioned in the video
Machine code
Java Compiler
Abstraction
Encapsulation
What is OOP’s (Object oriented programming)
Bytecode
Java Virtual Machine
Object files
Inheritance
Class files
RAM
Execution engine
Polymorphism
O.S. Calls
Strings
Part II - Introduction to Java - Learn how to use a Java compiler for Java based scripts (Do not Submit - intro only)
"Hello World" - Learn how to use the NETBEANS Apache - Download link for NetBeans Apache 19
Note: you may use Microsoft Visual studio...once the software has been installed....use "netbeans" in class!
In this basic text based program, you are going to practice opening up and running a Java compiler Net-beans. Please note how you access the compiler and how you 'run' the program after you've typed in the script.
The Textbook uses this compiler...so you may use Netbeans OR Visual Studio - be sure you have the correct extensions!
Part III - How to set up a Project / Main class / File - for Java programming work
Please create your first program that will output 'Hello World' . Follow the tutorial below to learn how to set up folders and a main class!
Introduction
What is a 'main class' and how does it work
Create a basic text based Java App - Hello World (remember how to set up classes etc).
Hello world (more up to date instructions) for Netbeans Apache 19.0
Hello World - Instruction Set for Visual Studio / Second Instruction set (starts with installation of the JDK and the extension pack)
An excellent introduction to Java - 'learn to code in 15 minutes' - outlines many concepts in our Java unit....'coding with John'....(although we're not coding in Eclipse)
Part IV - Writing Java programs (Download textbook from the Link below!) - Note: exercises start on page 17!
Now that you have completed this, you will turn to creating a portfolio of introductory text based executable programs using the same input format as the first demo (Hello world).
PDF attachment "Learn Java the Hard Way.pdf" (Our unit TEXTBOOK - download a copy from the share link)
A) Please complete the first TEN programs from this textbook. Please write the programs using the Net-beans IDE (as you did in Part I with the 'Hello World' activity).
B) Please do ALL the study drills for the (*'d) exercises at the end of each lesson.
Intro to Java exercises ( from "Learn Java the Hardway" ) - PDF textbook - see bottom attachment section to download it. We will be using this resource for the unit.
NOTE: Please DO NOT COPY AND PASTE ANY EXERCISES
Please submit the edited drills only (with the study drill info on it) - each should be on its own separate file.
(*) - symbol - means do the study drill(s) for this exercise
# 1 An Important message
# 2 More Printing
# 3 Printing Choices (*)
# 4 Escape Sequences and Comments (*) - ONLY the first study drill NOT the second!
# 5 Saving Information in Variables (*)
# 6 Mathematical Operations (*)
# 7 Getting Input from a Human (*)
# 8 Storing the Human's Responses (*)
# 9 Calculations with User Input (*)
#10 Variables Only (*)
Part V - Create your FIRST Java application
Make your own ORIGINAL java app based on at least FIVE of the previous exercises, the more quirky and original the better.
Funny jokes ? a BMI calculator? Creative writing? the possibilities are endless, even with this basic set of skills. Good luck and have fun!
Resources
A complete list of all Java 'operators' - helpful list /
Module # 4 - Create a Modern Web Site Major Development Project - Due: Friday April 12th
You will now have the opportunity to create and write an entire web site from the ground up. We move from skill practice to skill implementation. Happy coding and have fun! :) (project development time - approx. 3 weeks.
Remember that being an IT developer requires not only good coding ability but also great time management skills and a sense of curiosity. After all, you will spend most of your time on what DOES NOT work rather than what DOES work.
Please read this link FIRST before you begin. It offers some useful tips on how to manage a large project while also focusing on what matters most. Good luck and happy coding...
Part I - Building your Web Site
Part II - Hosting your Web Site
When your web site project is complete, host your project and submit the working URL to the project spreadsheet!
Block 3 - Please hand-in your HOSTED WEB Site URL HERE!
Block 4 - Please hand-in your HOSTED WEB site URL HERE
Steps to get your web site project live!
Go to this Free hosting service site and sign up for an account. Be sure to load ALL your files to the public folder and be sure your home page is called index.html!
(FTP) file transfer / hosting your web site files (to the public folder) - Here is a video that explains the process
Other "free" hosting sites are located on this link. However, I have not tested any of these other than "000WEBHOST".
(*) Note: Do not provide any 'real' personal information. If you need to use an email account I would suggest creating a "dummy account" for this purpose as I'm sure you don't want any spam mail!
free web hosting link (Other hosting sites!)
Module # 3 - Web Design - aesthetic features / end user features (# 4) February 21st (Wednesday) - Thursday...we'll share with our classmates!
Please meet up with your groups. After you hear the two other talks, please open this review link and write a review of their talk(s) and a SELF reflection ...so a total of THREE responses (one form only) submitted!
Groups - Block 4
Deihim / Matthew / Manuel
Brayden / Ishaan / Kelvin
Harold / Tristan / Matthew
Charlie / David / Johanathan
Jenifer / Minyu / Ian
Brendan / Hassan /
Sam Brownsey (away) (*Armin - no talk)
Groups - Block 3
Zain / MIles / Anthony
Louis / Russell / Felix
Henry / Jacob / Popo
Lena / Yan / Christian
Kai / Kian - Ali / Deric
Tyson / Yifan / Keon / Kiarash
Explained absence: Ronan Dickson
Exploring the best in Web Site Design
Now that we have developed some understanding of web site structure and the underlying HTML and CSS coding that creates web content, we will now turn our attention to another key aspect; design. What makes web site design stand out? How does design and site content interact in order to improve the end user experience?
What makes web site design memorable and engaging to your audience (read / respond section)
PowerPoint - "show and tell"
You will now be using our good friend PowerPoint to showcase the top 5 websites that you can find. Please consider your choices based on both a technical and design perspective. (*)Note: DO NOT USE ANY OF THE SITES LISTED BELOW AS YOUR 'TOP 5'. Please search on-line for your own inspiration!
PLEASE FOCUS ON DESIGN QUALITY NOT JUST ITS UTILITY. In other words, you tube and google are very useful but they don't indcate cutting edge design.
For each of the five finalists...
Please right click on the mouse and select "view source code" to look at how the web site was constructed. Based on your basic knowledge, offer one key insight into the coding structure (page structure, specific code function, key site feature - if possible use the "snag it tool" to screenshot the relevant section of code.
On each of the 5 slides include the following:
A heading
the URL of the web site (be sure it connects)
several clearly written bullets explaining why this site is so great (please be specific and clear and refer to the design articles if possible) - vague descriptions like..."the site is colourful" is not a helpful description.
ONE aspect of how this site is coded. For example, there is a parallax scrolling feature added to the site as inline style tag
Here are a few fascinating sites that do indeed stretch the imagination. However, these are intended for illustrative purposes only. In many cases, these sites often raise the question...is more better?
Sites for Reference ONLY - do NOT usse any of these in YOUR presentation! :)
FeedMusic web site / The Bear and his Scar / On the grid / Lordz Make Me Pulse (story telling) / Mr. Doob / The boat story / Google Quick draw / Edsey Art / Change Gout / Noni / Gimez / Edita's casting / Four Seasons Hydra / Braverinwilt
Related Resources
Websites with dynamic colour schemes / CSS Zen Garden
Great Example of Parallax scrolling features / Your scroll wheel can take you on quite an adventure !
Module # 2 Introduction to HTML and CSS coding structures (coding practice structures) Due: February 16th (Friday)
Part One - Structured HTML and CSS practice with Code Academy (# 3 )
In order to give us all a common foundational structure with HTML and CSS, we will be completing a series of practice modules using
Sign up for an account and then begin to work on the following:
introductory modules of HTML 5 - complete all the "free" sections
introductory chapters of CSS3 (Cascade Style sheets) 1 - 4 ONLY, the rest is NOT required.
When you have completed a section please "Print Screen" and then CTRL V in MS word (or use the snipping tool). At the end of the modules, submit a WORD document with the screen shots as proof that you have completed all the sections. Please include your individual account info.
Part Two - W3 for schools familiarizing yourself with a 'definitive' web design resource (do not submit - for information only)
Please do the following TWO exercises from this resource (W3schools - an essential resource you that will be VERY helpful when we code our web sites!)
Extra Resources and Help Guides
Module # 1 Introduction to Computer Science and hardware and networks Due: February 16th, 2024
(# 1 spreadsheet)
Assignment # 1
To get the correct URL to display on your spreadsheet follow this Link:
Pictochart share a presentation
How does a computer actually work; as programmers we should know? Make an Infographic (read / synthesize / report)
Please read this introduction which is a comprehensive look at how computers work!
Sign up for an account here:
Infographic Maker site (account sign up required) - be sure to set your permissions to 'public view' :)
I would strongly suggest....reading articles, reflecting and then writing your brief remarks from your mind and then fact checking after.
(This will help you to connect with the information and share it in a way that you understand it)
Instructions:
Please summarize the following links in an infographic format. Note that we are trying to provide a mere "snapshot" of how a computer works from both the hardware and software side of things.
Discuss these four topics (starting links - find additional yourself)- No direct copying - you must cite all links you referenced in a links page at the end of your assignment
What is hardware and what is software? How does a software program work? execute and initialize)
Binary code system (how are characters translated into numerical code and how the binary system works) How Binary and Math relate (extra explanation for the Math types :) ) another link that discusses digital to binary - Binary is based on 'on and off' - which is base two - Two great videos that explain binary computing - binary # 1 , binary # 2
The different levels and types of programming languages / another fascinating look at programming languages and structures
Our goal is always to take the complex and make it simple and easily understood
Clear, crisp and accurate!
Criteria
Provide us with a clear summary of the concepts mentioned above. You are strongly suggested to express your own ideas on the topics (even if they are not as well written as you'd like) as copy and paste = no learning. As well, please include a few diagrams or images that would enhance your presentation.
Resource section
How a computer works / Binary Code
Video Links
How a CPU is created - incredible!
How a transistor works - the foundation of modern tech
Assignment # 2 Introduction to Internet and the World Wide Web Due: Friday Feb 16th, 2024
Part A - The history of the Web (read / reflect / write a full page - no less - include two illustrative graphics) - no need to CITE your resources. Please create this reflection on a word processor (ie MS Word) NOT an infographic maker.
Instructions (# 2 spreadsheet)
Please write a response to the following question?
How are the world wide web and the internet related and how does information from your web browser or your phone travel from one place to another? What else must be in place for the Internet to work from end to end (In other words, describe the hardware involved)?
The history of the web / How data moves across the internet (info graphic) / How do data packets work? /
An excellent "deep dive" into how the internet works (infographic included - excellent resource!)
Watch this video on the history of the Internet - BBC clip (4 min 44 seconds)
look at what drives the internet today (5 min 27 sec) - a Google data centre The backbone of the modern internet! - Wow!
How the internet works today fiber optics (43 min) - the incredible networked world
A "log" of the first Internet message ever - it was actually written as "lo"...before the system crashed!
Now We have 'Starlink' Internet Network adding connectivity to rural locations. This is the next 'internet connectivity' revolution!
How Starlink works! (video) / Backgrounder to the Starlink Network