08 Design: Coding
Are you ready to make an app? Or perhaps your own video game? Then this is the unit for you!
Statement of inquiry:
Software development is a creative process used to create functional apps with marketable value.
Function, markets & trends
Personal & cultural expression
Why learn programming?
The need for an understanding of how computers function to be a highly valuable member of today’s society is only going to further increase! We have made our lives so dependant on computers, you owe it to yourself to know what’s going on - where the risks are. Programming develops great thinking skills that will be invaluable whether you choose to code or not… GROW YOUR BRAIN! Also... It’s just great nerdy fun!!!
Learning a programming environment
Your programming options
A few thoughts to help you select which to try:
|Most beginner friendly||Who's up for a challenge?|
|Drag and drop block style programming||Text based programming language|
|Suitable for simple 2D graphical games such as breakout, mario platformer, snake, tic-tac-toe, infinite runner||Depending on how far you go, either simple text games, or graphical games are do-able.|
|You would have to solve how to create the entire project||I provide template code for several graphical games so you wouldn't have to figure it all out on your own.|
|Final product runs in web browser on Windows or Mac computers||Final product runs on Windows or Mac computers|
|Try out scratch by making a simple Pong game (17mins)||Try out Python by making a simple guessing game (6mins)|
Once you've informed the teacher of your decision, you can start working through the learning activities for your choice of programming environment.
| Work through the following tutorial guide. Make sure to complete the homework/exercises in the book and fill out the "What you've learnt" box after each section. You will have to submit the exercises to show you have done them.
I will provide printed copies of the book for students opting for Scratch, but are the digital copies as a backup.
Visit my Python learning resources page and either:
- Complete the turtle lessons if you are looking for "easier" Python (note: this will severly restrict what you will be able to create for the final product, though you are still learning "real" Python).
- Complete the "Learn Python" section of lessons, either by watching and following along with the videos, or by studying and completing the exercises in my Book of Python.
Criterion A: Investigation
Task A1: Explain the problem
What apps do you use? Most apps can be grouped into one of four categories: gaming, social, media, or general. Some apps blur the boundaries such as YouTube could be considered a media app because of the video and music content, where as it could also be considered social because of the comments and chat capabilities.
Spend a few minutes brainstorming all the different apps you use and can think of, and what purposes they solve. What do successful apps have in common?
Consider the key question: What market opportunities exist for new apps?
Some other questions that may help you in coming up with an answer to the key question are:
• What does it mean for something to be "marketable?"
• What does it mean for something to have niche market appeal vs broad market appeal?
• How is the idea of "viability" related to being "marketable"?
• How do the circumstances of the producer affect the viability of a product? (for instance, compare the contrasting requirements of a part time developer who writes apps as a hobby / in their spare time, against that of a large software business? )
• What benefits and disadvantages exist for targeting a broad market vs a niche market? (think about the differing levels of competition vs the size of the different markets)
• What problems are still yet to be solved by an app?
• What are some marketable opportunities you see in the broad market place?
• What are some marketable opportunities you see in a niche market place? (what is the niche?)
Spend a few minutes researching into these issues and be able to explain your thoughts.
Complete section A1 of your Design Journal. Be sure to write complete paragraphs for each question and include your reference website addresses.
Task A2: Plan your research
You are going to research into at least 3 different existing apps and their marketability.
Do some preliminary research to decide which apps you are going to study, then brain storm questions you want to answer about each one.
Remember: Variety in the types of apps you study is important. You may only study one "mass market / broad appeal / zero cost / funded through advertising" app; no more than one "social media" app; no more than one "game" app.
We will brain storm in class different questions that might be relevant for certain apps. The following are also some suggestions to help you get started:
• What does the app "do"?
• How was the app made? What programming language? What technology do I need to run it? What technology was used to create it?
• How does the app look? How do I interact with the app? Is it visually appealing? Is it engaging? Does the app use audio features? Does the app use motion sensitive features?
• If it is a game, what are the main "characters" of the app? What personality and story has been given to them? Why has the developer made these decisions?
• Who is the target market for the app? Why was this market targeted?
• What is the feasibility of the app? How long would it take to build this kind of app? How much would it cost to build this kind of app?
Complete section A2 of your Design Journal. To adequately address strand A2 you should:
- Identify research questions for further investigation. (Don't create questions based on things you already know the answers to!)
- Prioritise your research questions using some form of scale to indicate those that are crucially important compared to those that are optional/nice-to-have in order to solve your problem.
- Justify each of your research questions by providing a rational for it's inclusion and the level of priority you assigned.
Task A3: Analyse existing products
For each app you identified in A2, conduct the research you planned.
Begin with the question you gave priority 1, move on to the question you gave priority 2 etc. Keep researching until you have used up the allotted class time. Ensure you include the reference information. Be sure to include pictures / diagrams / links to videos as well.
Some videos I think are really interesting and would make great research for your Criterion A:
- Juice it or lose it - a talk by Martin Jonasson & Petri Purho
- How the inventor of Mario designs a game
To adequately address strand A3 you should:
- Ideally investigate at least 3 existing products for inspiration
- Identify and discuss the strengths of each product
- Identify and discuss the weaknesses of each product
- Identify and discuss what ideas you can take from each product.
- Include referencing/bibliography for your research
Task A4: Design brief
Now that you have completed your research, part A4 is about you summarising what you have learnt and offering an analysis of the information.
To adequately address strand A4 you should:
- Summarise the problem you are solving from A1 (only a couple of lines).
- Summarise what you learnt from your research in A3
- Based on what you have learnt, what guidance/advice would you recommend to any one else attempting to solve the problem you will seek to solve.
Complete the section A4 in your Design Journal.
Criterion B: Develop ideas
Before we proceed any further with our unit, it's important to discuss a couple of issues regarding project choice and teams.
Choosing a project
You may either:
- Design & build the project you described in Criterion A;
- (Python students) Use one of the sample projects as a starter and extend from that;
- Design & build something new
The point: you do not have to do what you wrote about in Crit A!
You may either do a solo project or team up in pairs.
- If you work in pairs, you will be assessed accordingly (it's not a case of pair up and do half the work).
- If both you and your proposed partner got at least 6 for the semester 1 projects, you can choose your own team and project.
- If you got less than 6 for semester 1, I must approve you being in a team and your project idea. The aim of this is to ensure you choose a project and team situation that is best suited to you getting at least a 6 this time.
Task B1: Design specification
The design specification is where you generate a list of project success criteria that you will use to judge how successful you have been with the project. Each success criterion should be as specific and measurable as possible. Remember, you will use your success criteria when you complete your project evaluation and reflection, so the more measurable you can make them the better.
To assist you in brainstorming your success criteria, you should use the following categories as headings, and then create criteria for each category.
- Functionality: What will your program do? How will it behave? Under what conditions?
- Aesthetics: What will it look like? Sound like? Will there be any movement/animation/colour?
- Technology: What will the client require to run it?
- Feasibility: What time constraints, resource constraints, knowledge constraints do you face?
To adequately address strand B1 you should:
- Be as specific as possible
- Use technical language where possible
- Provide a rationale/reasoning to justify the inclusion of each success criteria (ideally refer to what you learnt through the programming lessons and your criterion A research)
Task B2: Design ideas
Create detailed, annotated storyboard design drawings showing possible ideas for your app. You drawings should be able to be fully understood by others. (the idea being that someone else could build the app that's in your head based off your drawings).
You are NOT being assessed on your artistic drawing capabilities but your work IS expected to be neat and have all possible care taken in its presentation. (for instance if a line is supposed to be straight then use a ruler!)
You should create at least 2 to 3 different app ideas. Each idea should consist of at two drawings showing different parts of the app (eg: different screens of an app or different levels of a game)
Each drawing should contain a number of annotations to indicate the function of the various parts of the app. Your annotation should also include the reason for that item. Each idea should contain annotations for each of the success criteria categories:
• Technical requirements
• Characters (if relevant)
• Target market
If you need blank templates for your Criterion B design sketches, you can use this Criterion B Prototype Sketches Template. Please use these as the basis of your storyboards.
Task B3: Design selection
How well do each of your proposed designs satisfy your success criteria from B1?
To adequately address strand B3 you should:
- Compare each of your B2 proposals against each of your B1 success criteria.
- With the comparison in mind, which of the proposals best solves the problem and why? Are there any changes you will make to this design to further improve it?
- Reference your various elements of your B1 success criteria in your justification.
Task B4: Final design in detaill
Create a final design that draws on all your thoughts from the previous strands. You should provide enough information that another person could make one identical to the idea in your head. (Alternatively: You could create a screencast video that discusses your design mockups provided you cover all of the points below)
Rather than just being a storyboard of screenshots, this strand will also require you to articulate the logic of how your program will function.
To adequately address strand B4 you should:
- Label your design diagrams with information pertaining to size, shape, position, color, font, animation/action/behaviour.
- Identify the tools you will require to create the proposal (software, hardware) and techniques you will use
- Detail how your product will function. This can either be a flow chart, pseudo code, or a set of bullet points that describes the behaviour of your product at each point. Provide enough detail to fully explain how your product will behave/function.
As a guide, some examples for the bullet points describing product behaviour could be:
- The player starts with 10 health (or 3 lives, or 0 points, or….)
- When the up arrow is pressed: Player will jump for a few moments and gradually descent to land on a platform
- When the bullet hits the player: The player loses 5 health (or 1 life, or the game ends...)
- When the player touches a treasure chest: The player gains 50 points (or 10 health, or the game moves to the next level) etc
- When the colour sensor sees blue: The left wheel will turn at maximum speed, the right wheel will stop.
Criterion C: Create the solution
Task C1: Planning
Complete section C1 in your Design Journal. To adequately address strand C1 you should:
- Identify the core tasks required to create the solution
- Identify the critical path.
- Show how you intend to use all available classtime for Criterion C in a meaningful manner, plus any additional out-of-class time you may anticipate requiring.
- Use technical language where possible to describe the task
- Identify resources required for each task (hardware, software, software libraries, manuals)
- Identify how much time does each step genuinely require?
- If you are completing this project in pairs or a group, indicate who will be responsible for each task.
Task C2 & C3: Demonstrate technical skill & create your solution
Time to make your program!
- Aim to stick to the schedule you created for yourself in C1.
- Start by building your program to resemble your designs from B4 but remember you may alter this design if you realise changes are required along the way.
You will be assigned a lesson for demonstrating your completed product.
In judging the level of technical skills demonstrated for C2, the following factors are considered:
- Size/scope of project (relative to the time allotted)
- Complexity of project and the skills demonstrated
- Variety/range of skills demonstrated.
- Degree of assistance/independence shown
Strand C2 supplemental for Scratch students: Remember the aim is to not just create a Scratch project but to show case your understanding of computer programming skills and methods. To that end the following would be advantagous to demonstrate:
- Use of variables (minimum of 3 should be used)
- Use of functions (defining your own blocks)
- Having only one "when green flag clicked" block per sprite, and that most of your code runs through that one set of blocks. (If you are using multiple than it is an indication that your programming skills aren't as strong as those who can make it work with only one per sprite)
The judging the solution produced for C3, following factors are considered:
- Completeness of project
- Functionality of project
- Errors encountered
- Each success criteria (from B1) is individually and explicitly demonstrated
Task C4: Justify changes
Complete section C4 in your Design Journal.
Criterion D: Evaluation
The Criterion D deliverable should take the form of a narrated screen-cast video.
Your video needs to include the following:
- Task D1: Write a script or outline for your video before recording it.
- Task D2: Demonstrate the achievement of each of your success criteria identified in task B1
- Task D3: Discuss what changes you would make to your product if given more time. This could either be to better address success criteria not fully completed, or to add enhancements to your product
- Task D4: Within the video, identify who your client (or target audience) for the project was, and discuss whether you have achieved the original objective identified back in task A1. How has completed product impacted on your client (or target audience). Perhaps a brief on camera interview with your client (or a couple of representatives of the target audience).
In order to address this criterion thoroughly, I anticipate most videos to be around 4 or 5 minnutes.