Lesson 0.3: Programming Languages

Learning Objectives

Students will be able to…

  • Complete small coding tasks (Hour of Code).

  • Explain why computer programs are written in specialized languages.

Materials/Preparation

  • 0.3 Slide Deck

  • Classroom computers with access to the internet.

  • IMPORTANT: At least a few days prior to class, ensure that the classroom computers can load the website for both activities. If not, work with school IT to solve the problem.

    • If you are not able to load Snap! on your classroom computers, you will not be able to proceed with the course. Test this well ahead of time and make sure your school’s IT staff knows what the requirements are and can help achieve them.

  • Work through at least one of the coding activities on your own so you are familiar with the activities and can provide assistance as needed:

  • Part 3 of the LightBot activity calls itself “Loops” but is really using recursion (specifically tail-recursion). The exercises are still valuable, but be prepared to potentially discuss, or at least point out, the distinction so students are not confused when they encounter normal loops later.

  • Unit 0 Tips

  • Video Resource: https://www.youtube.com/watch?v=6qF3HmRzg8o

    • Video Quiz: See Additional Curriculum Materials accessed from the TEALS Dashboard.

Pacing Guide

Duration

Description

5 minutes

Welcome, attendance, bell work, announcements

5 minutes

Introductory discussion

35 minutes

Coding activities

10 minutes

Debrief and wrap-up

Instructor’s Notes

1. Introductory discussion

  • Introduce students to the concept of a Computer program: a sequence of instructions or steps, written in a language that can be understood by a computer, that will be used by the computer to complete a task or solve a problem.

  • Ask for any programming languages students are familiar with (even just names).

  • Draw distinctions between proper programming languages and other types of languages (such as markup languages e.g. HTML).

  • Lead the group to develop expectations about what aspects of programming might be most challenging and what skills might be most useful to be successful.

  • Sample guiding questions:

    • What are the steps required to write a computer program?

      • This is essentially developing an algorithm for writing a program!.

    • What knowledge might make writing a program easier?

    • What might you need to do when writing a computer program that you have never or rarely done before?

    • What parts of programming are most intimidating or scary?

    • What are you good at that might help you be a better programmer?

2. Activity

  • Students should work through one of the Hour of Code activities of your choice.

  • Choose one activity as the requirement, and leave another for those who finish quickly.

  • Allow students to struggle with the activities if needed, stressing the importance of patience and persistence in programming.

  • Have students submit the certificate of completion of their hour of code to the instructor.

  • Remote Guidance: The certificates can be submitted digitally upon completion.

3. Debrief

  • Guide students in a discussion about the activities. Some sample guiding questions:

    • What was most challenging?

    • Put special emphasis on the iterative nature of programming, and the need to occasionally throw out a partial solution and start over.

    • What was different about solving these problems than solving other problems encountered in school?

    • Why can instructions not be given in simple English? Why must we be limited to certain operations from which we must build up solutions?

    • If students seem interested, this can be an opportunity for a brief conversation about the difference between high-level programming languages and machine languages (assembly code).

BJC Lecture Suggestions

OOP Ex: Sketch Pad Dr. Ivan Sutherland “Father of Computer Graphics 15:45-22:10

Background Information for Instructors

BJC Video Suggestion: BJC Lecture 5: Programming Paradigms

  • Dilemma of Being a Cyborg 0:00-2:30

  • Programming Paradigms 2:30-3:50

  • Snap! BYOB (Hybrid) 3:55-4:45

  • Functional Programming (Cascading Values) 4:50-5:35

  • Imperative/Sequential 5:41-8:35

  • Object Oriented Programming (OOP Basic Explanation) 8:40-15:45

  • OOP Ex: Sketch Pad Dr. Ivan Sutherland “Father of Computer Graphics *Good for Classroom Instruction 15:45-22:10

  • OOP in BYOB (Demo of Functions in BYOB) 22:35-29:20

  • Declarative Programming 29-22-31:20

  • Declarative Programming Examples in BYOB 31:25-35:20

  • Review of Paradigms 35:25-end

Accommodations/Differentiation

  • Avoid telling students directly how to solve problems in the activities, and instead encourage them to try many approaches and build on partial solutions.

  • This will get them accustomed to the iterative nature (and natural frustrations) of programming.

  • If students appear to be frustrated enough to not be enjoying the activity, provide a step in the right direction and remind them that programmers rarely create a correct program on the first try.

  • Students who appear frustrated to the point of disengaging can be allowed to skip certain steps or work with a partner, but should NOT be able to opt out of the entire activity.

  • If there is only enough time for one activity, choose based on the following guidance:

  • LightBot is more challenging, but not substantially so, and is more game-like, which often leads to greater engagement. LightBot is recommended if students seem capable of handling the challenge.

  • The Snap! activity is simpler, and most of the material is covered in the first few lessons of Unit 1, so it can be skipped without losing any experience. However, in a suspected high-needs classroom, the easier goals and extra time with Snap! may be beneficial.

  • It is unlikely that students will finish both activities in one class period. On the rare occasion some do, encourage them to explore Snap! on their own or to try the full version of LightBot 2.0

Forum discussion

Lesson 0.3 Programming Languages (TEALS Discourse account required).