This lesson is intended to be a smaller scale alternative (2-3 hours) to the original AP computer science labs. In this lesson document, we recommend some open-ended alternatives.
Conduct user-centred research to identify specific functions for a specialized application
Plan and create a calculator that perform specialized operations for an end-user
Test, evaluate, and share the end product
Assessments — Students will…
Apply 2-dimentional arrays, traversal, binary representations of data (images, characters)
Submit a complete, functional program
The duration of this project is at the discretion of the teacher. We recommend 2 hours for class time design and implementation, and 1-2 hours for out of class time to connect with end-user.
Project involves conducting research work (survey or interviews), and communicating with end-user, out of the classroom.
Complexity and Creativity
Students should come up with the idea themselves, based on user-centred research, and ideate a specialized application to address the needs of a specific user group.
Students will follow applied design process to implement the idea. You should talk to your teacher often to ensure that your progress is in-line with expectations.
As with all projects, your program must be well-written, well-documented, and readable. Writing code with good style is always good idea. This will help you debug, pick up where you left off each day, and keep track of progress.
STEP 1 - UNDERSTANDING CONTEXT
Conduct user-centred research to find design opportunities and barriers. Select an end-user for whom you will design and create this program (this can be a friend, classmate, relative, etc). Create interview questions that will allow you to understand the end-user’s interests and likes/dislikes. Here are some possible applications that could potentially use "if" statements and "String" methods: Picture Manipulation
One of the Activiies in the orginal Picture Lab (estimated 1-2 hour time)
Create an image manipuation for a specical purpose
Other Canvas-based Applications, involving ARRAYS, Binary representations of data
Othello or Tic-Tac-Toe with a twist
Maze creation for a nanobug to run through
Hex dump Translator
Flip Book Creator (create series of images where only a few pictures differ) https://en.wikipedia.org/wiki/Flip_book
Snowflakes, or Flower drawing program
Interactive story scene
After you have some initial ideas, interview some potential end-user to clarify your project specifications.
The possibilities are endless.
We live in a world that operates on the written or spoken word. The computer and internet has forced us to digitize the words we use into zero's and one's for transmission purposes. But at a higher level, most people are working with "strings" (a collection of character symbols, making up a word). Sometimes words are easily understood and recognized, sometimes it is not.
Our human brains naturally make decisions and choices. With so many options, and paths, we can ask the computer to help us explore these choices. This is great when it comes to routine, repetitive, or time consuming tasks. Poets, writers, travellers, wanderers, cryptographers, kings and queens have loved playing with words (strings, characters), and creating games (logic, secret messages) since the earliest of times to entertain, inspire, and protect the land.
Let your creative juices flow!
Choose a design opportunity and point of view, make inferences about limitations and boundaries. Take creative risks to indentify gaps to explore, generate a range of possibilities, prioritize ideas for prototyping. Using the responses from your end-user interview, begin to develop a plan for your custom application. Given the duration of the project, you should limit your calculator to do an interesting activity for a specific end-user. At this point you will only be be to implement a text-based user interface (ie, no graphical elements, like buttons or scrollbars). Keep it simple and easy to use.
the types of calculator functions it will do:
what will the user input be?
what output will be?
what user interaction with the program will the user have?
how do you start the activity?
how does the activity end?
Share these ideas with your end user. Record their comments, suggestions and feedback and note any changes that you may make as a result of this interview. Identify any issues or problems that might arise as you begin to program (what areas might require more information or programming solutions? Where can you find this information?)
SUBMIT YOUR INTERVIEW QUESTIONS, RESPONSES AND PROGRAM DESIGN PLAN TO YOUR TEACHER.
Construct prototypes, making changes to code as needed. Program your calculator. Be sure to review course notes and activities to make sure that you effectively implement object oriented programming design for your appliction. When you are ready, create a short test plan and test your program. Include expected output and actual output and include details related to any fixes that needed to be made. A good motto to remember is code a little, test a little Have your end-user try a working version of your program. Note their suggestions, comments and feedback. Indicate any changes that you made to the program, based on the user’s feedback.
SUBMIT THE CURRENT VERSION OF YOUR PROGAM TO YOUR TEACHER, AS WELL AS YOUR TEST PLAN AND FEEDBACK FROM THE END-USER
Gather feedback from users over time to critically evaluate your design and make changes to product design or processes Identify new design issues.
Share your work with other classmates, friends or family. Record any feedback, suggestions and comments and use this information to make the final iteration of your program.
SUBMIT THE FINAL VERSION OF YOUR PROGAM TO YOUR TEACHER, AS WELL AS YOUR FEEDBACK FROM CLASSMATES, FRIENDS OR FAMILY.
Project is appropriately complex and creative
Program is well-documented and shows good style
Final product meets all requirements and goals laid out in checkpoint specifications
Program uses programming concepts effectively, including all required elements with an appropriate level of complexity
Object Oriented Programming concepts are effectively applied with an appropriate level of complexity