Unit 2. Developing Programming Tools
Revision Date: Jun 11, 2020 (Version 3.0)Summary
Students will be introduced to programming for the first time. They will learn about computer science, computing for good, some of the potential outcomes of programming, and the definition of abstraction. Students will also be learning about program design.
Students must understand that stereotypes of computer programmers are not accurate and that 'coding' is something everyone can learn to do. Computing can be a creative expression and used for good.
Possible misunderstandings: The term NGO is used in the article Programming for Good: The Story of Code for India, without explicitly defining it as Non-Governmental Organization.
Abstraction is a tricky idea. Python allows us to describe what we want to do such as "print" and "input" because it provides the details that explain to the computer how to accomplish the task of taking many keypresses followed by a press of the Enter key to allow the computer to store the information we entered, and also knows how to take information stored in the computer's memory and cause it to appear as a series of recognizable dots on the screen using print. Computer programs use input, output, processing, and memory.
The design topics taught in the 2020-2021 session introduce both user interaction and user experience design.
Outcomes
Student computer usage for this lesson is: required
TEACHERS need to have the class and user accounts set up in Runestone to track student progress.
For the Students:
Note: If computer is not being used, students will need their own copies of the articles
[use the Presentation on Programming Python in Runestone]
Journal Entry: What are some ways that writing programs is a creative endeavor? [ slide 2]
Share answers with your elbow partner. Then share answers with the class.
Open Discussion: What are some ways you know that computing has been used for “good?” [ slide 3 ]
Go to Programming for Good: The Story of Code for India
http://www.attendly.com/programming-for-good-the-story-of-code-for-india/
Read articles or selected text in pairs, with alternating pairs each reading one article. Pairs of pairs get together to share what they read and what they got out of the article.
In pairs, answer the following questions:
Check for Understanding: Teams should share their answers to their instructor.
Have students sketch the computer hardware architecture diagram in Python for Everybody Chapter See https://books.trinket.io/pfe/01-intro.html#computer-hardware-architecture.
Explain that computer processes guide the flow of information that is input, processed, stored or output. The processor (CPU) uses short term memory for doing calculations and temporary storage and long term memory if needed. Have students sketch the computer components diagram above. Explain to students that they will learn to program to develop software using each of these components.
The program output is usually based on both input values and values already in memory. Watch the following video to see how this occurs.
Watch the video on how programs use input, processing, memory, and output to run programs. https://www.youtube.com/watch?v=BSTrWhAGta8
Read Computer Hardware architecture by Dr. Severance.
https://books.trinket.io/pfe/01-intro.html#computer-hardware-architecture
.
Have students go to the article Seven things you should know if you’re starting out programming at
http://www.theguardian.com/info/developer-blog/2011/oct/07/programming-developer-journalist
Pre-reading activities:
In pairs or groups of three, assign each group to read and summarize one of the seven programming principles in the article.
Check for Understanding: Each person should write a 140 character tweet on their topic, next class the group should share their findings with the class.
Getting Started (5 min)
Journal
Say: Online tools support collaboration by allowing programmers to share and provide feedback on ideas and document. Often this collaboration takes place online. What are some online tools you think programmers might use to collaborate?
Student share responses. Be sure that receiving feedback from both developers and users is discussed.
Guided Activities (40 min) Use the Program Design presentation in the Lesson 1 Resource folder.
Say: Success and failure are both about meeting criteria. To know if our efforts are a success, we need to know what the requirements are. So the first step of the design process is investigating the program requirements. In the development process, the design phase outlines how to accomplish a given program specification. Software developers typically organize the overall program into a collection of individual components or modules. Collectively, the component or modules meet the program's requirements.
Highlight: The users are important!
Highlight: Innovation is enhanced by group collaboration!
Jigsaw: In groups of four, read and discuss the four techniques for identifying requirements as listed by Hans Jonasson.
For each of the four techniques, use the Design Techniques table to list the techniques purpose, its advantages, and its limitations
Technique |
Purpose |
Advantage |
Disadvantage |
Say: User interaction design, at its heart, is all about satisfying the end-user’s needs and wants. The design may include brainstorming, storyboarding or even used interaction design as is this activity.
As a class, watch this short UI/UX Design Process video to see how many of the following design strategies are illustrated.
Investigate user interface design (UI) https://www.usability.gov/what-and-why/user-interface-design.html
Investigate user experience design (UX). User Interaction Foundation
On the board, have students list possible ways that an investigation can be performed and keep going until all of the following methods have been uncovered:
The rest of this unit will address techniques used in the development phase of a program.
Development is both iterative - with multiple rounds of testing and improvement - and incremental with development occurring in small testable steps.
Development then should include documentation throughout its development and support program testing throughout to meet the overall design requirements. Documention is important whether working individually or collaboratively. Documentaion includes comments stored within programs where supported by the programming language (not all languages support comments) and outside the program (such as in web pages).
True/False. For each of the following statements, work with an elbow partner to determine if the statements are true or false.
For the false statements, modify the statements so they are meaningful and true.
Program documentation describes the function and development of program segments.
Comments written in a program are read by the computer before the program can execute.
Program documentation is best done after the program is written and tested.
For efficiency reasons, program documentation should only be written when working in a collaborative program development environment.
If a programming environment does not support comments then none should be used.
Program documentation comments should be as terse as possible since they are internal notes to the developers.
Bookmark or store your these true statements for future reference.
Design requires a lot of effort throughout the programming project.
Write a short paragraph explaining to a new project manager the benefits of investing this time in the design process.
Questions in the AP Classroom Question Bank may be used for summative purposes.
Sixty of the 80 questions are restricted to teacher access. The remaining 20 questions are from public resources.
Questions are identified by their initial phrases.
A program is expressed in a programming language.
The diagram below shows a circuit composed of two
Oral reading strategies such as "popcorn reading" where students take turns reading a paragraph and then pass the reading off to another student in the class, or other reading strategies such as students reading together quietly in pairs, can be used for longer texts.
Longer readings can be broken up by sections or paragraphs to speed the lesson up or keep students engaged.
Activity 1 could be assigned as homework from the day before as a step into this lesson to allow more time in class for the other readings:
Additional activity: Ask students to read the Preface (pages iii-iv) and Chapter 1 introduction and section 1.1 (pages 1-2) of Python for Everybody and answer these questions:
Students will use several different strategies for reading and writing responses based on their readings.
Classroom discussions and student responses (written and oral) will allow instructors to check for understanding.
Summative assessment will be included in Part 2 on the use of the PyCharm IDE.
Student handout filled in
Tweet from optional homework assignment
Progress recorded in Runestone for the General Introduction