2025 ASEE Annual Conference & Exposition

Teaching Python to Secondary Students: A Backward Design Process

Presented at Computers in Education Division (COED) Track 3.B

Informal workshops and educational events are often restricted in the number of contact hours or opportunities for extensive in-depth coverage of foundational material. This is not an issue when educators are building on existing skill sets or covering a limited scope of material, but it is a challenge that needs to be addressed when teaching students a skill like programming - a broad topic which students might not have previously been taught. Project based learning is an effective pedagogical tool for teaching computer science, and the end product or goal is often a solution to a particular coding problem or a software application that performs a given task. However, students must be provided with some degree of foundational knowledge in order for this approach to be utilized. The content and extent of this knowledge is dependent on the focus and difficulty of the project, and can be particularly difficult to establish when working with students without prior programming experience. Furthermore, when teaching high-level general programming languages, the expansive suite of built-in tools coupled with additional third-party packages or libraries present a dense landscape of topics from which to develop curricular materials. To meet these challenges, we developed an approach to teaching Python programming to secondary students with no prior programming experience in a week-long summer camp. The method we used employs project based learning and highly curated foundational lessons. This approach begins with the identification of an appropriate capstone project that falls within the theme of the camp (e.g. coding, cybersecurity, data science) and that can be completed by students with minimal instruction from camp staff. These projects should also be able to incorporate more advanced programming techniques than those that are covered during the camp to keep students with previous coding experience or those with natural aptitudes for programming engaged. For example, the capstone project for one cybersecurity-themed camp required students to develop a simple application that could accept user input (a password) and then assess the quality or strength of that password and provide the user with feedback. In its simplest implementation, this application requires a basic understanding of the following concepts: 1) the basic elements of Python code (data types, variables, operators), 2) programming syntax, 3) built-in functions and methods, 4) acquiring user input, and 5) flow control (e.g., for loops, conditional statements). Many topics covered in traditional introductory programming courses are not required for students to be able to complete the capstone project; concepts like data structures, indexing, and user-created functions can be utilized in the project, but are presented as bonus material for advanced students. The limited instructional time afforded during these week-long camps necessitates that instructional material be restricted to what we consider the essential “building blocks” required for students to successfully produce the final product. This stream-lined curriculum enhanced with optional bonus material ensures that both novice and experienced students remain engaged and are equipped with the tools necessary to challenge their skills while they build their own applications. In this paper we detail the process to design Python learning objectives for capstone projects, in which we start with the end product in mind, determine the Python programming elements needed, and work backwards to ascertain the order in which the elements should be taught. We also discuss the optional topics embedded in the Python Colab notebook for advanced students - topics designed to give the advanced students more options in designing their product.

Authors
  1. Richard Lawrence Texas A&M University
  2. Dhruva Chakravorty Texas A&M University
Download paper (1.28 MB)

Are you a researcher? Would you like to cite this paper? Visit the ASEE document repository at peer.asee.org for more tools and easy citations.