CS471: Computer Science Pedagogy - What is Computer Science and Why CS Education?

Activity Goals

The goals of this activity are:
  1. To motivate the science of teaching and learning of Computer Science

The Activity

Directions

Consider the activity models and answer the questions provided. First reflect on these questions on your own briefly, before discussing and comparing your thoughts with your group. Appoint one member of your group to discuss your findings with the class, and the rest of the group should help that member prepare their response. Answer each question individually from the activity, and compare with your group to prepare for our whole-class discussion. After class, think about the questions in the reflective prompt and respond to those individually in your notebook. Report out on areas of disagreement or items for which you and your group identified alternative approaches. Write down and report out questions you encountered along the way for group discussion.

Guiding Questions

  • What might an example classroom activity look like for each of the "Seven Big Ideas?"
  • Describe the first time you encountered each of the Threshold Concept examples given below.

Model 1: Pixel Pandemonium - Representing Images and Colors on a Computer

Visit the Pixel Pandemonium page and follow the instructions on the page to create an image.

Questions

  1. How are colors represented by a computer?
  2. How do computers make smooth images on the screen?
  3. What are some ways you could send the same information but by transmitting fewer numbers? In other words, how might this data be compressed?
  4. What blocks represent "good" compression, and which ones yield poor compression results?
  5. Why might the run-length compression technique suggested on the instructions page be a good approach for compressing images on a screen?

Model 2: Data Encoding

Consider answering questions using only a flashlight or by using your voice to make single-note sounds. Ask and answer a question of your partner.

Questions

  1. Describe your encoding strategy.
  2. How much data did it take to provide your answer? How about the question?

Model 3: Learning with code.org Widgets

Visit the code.org Widgets page and choose one widget to experiment with and present to the class as a mini-lesson.

Introduction to Computer Science and the Importance of CS Education

Computer Science (CS) is a rapidly growing and increasingly influential discipline that plays a vital role in various sectors including technology, science, business, and education. As technology continues to evolve, the demand for CS professionals is on the rise. Thus, it is essential to understand the fundamentals of Computer Science and the significance of CS education.

We will delve into the key concepts of Computer Science and explore why CS education is crucial for students. We will draw upon the following references to provide an in-depth analysis of the topic:

  1. CSTA Standards for CS Teachers by CSTA
  2. Seven Big Ideas of Computer Science from the AP CS Principles Curriculum Framework
  3. CS Principles with code.org by code.org

Understanding Computer Science

Computer Science is a multidisciplinary field that encompasses the study of computation and its applications. It involves the design and development of algorithms, programming languages, software systems, and hardware components.

The CSTA Standards for CS Teachers outline the core knowledge and skills that Computer Science educators should possess. These standards cover various domains, including computational thinking, collaboration, computing practice and programming, and, the impacts of technology. By adhering to these standards, CS educators can effectively teach the subject and instill a deep understanding in their students.

The Seven Big Ideas of Computer Science

The AP CS Principles Curriculum Framework presents the “Seven Big Ideas” that form the foundation of Computer Science concepts. These Big Ideas help students grasp the fundamental principles of the field. They are as follows:

  1. Creativity allows individuals to apply their imagination, skills, and knowledge to create innovative solutions using technology. It encourages students to think critically and develop unique approaches to problem-solving.

    Example: In Python, students can showcase their creativity by creating interactive games or designing unique visualizations using libraries like Pygame or Matplotlib.

  2. Abstraction involves simplifying complex systems by focusing on essential details while hiding unnecessary complexity. Abstraction allows students to understand the structure and behavior of a system without getting overwhelmed by its intricacies.

    Example: Encapsulating complex functions or algorithms into reusable functions or objects in Python promotes abstraction, allowing students to comprehend and manipulate code more effectively.

  3. Data and Information represent the foundation of modern computing. Understanding how data is collected, processed, and stored is vital in problem-solving and decision-making processes.

    Example: Manipulating data using Python libraries like Pandas allows students to analyze and extract valuable insights from large datasets in various real-world scenarios.

  4. Algorithms are step-by-step procedures used to solve problems with a finite number of operations. Students learn the importance of developing efficient algorithms to optimize processes and find optimal solutions.

    Example: Implementing sorting algorithms such as Merge Sort or Quick Sort in Python helps students understand the efficiency and trade-offs involved in different algorithmic approaches.

  5. Programming empowers individuals to translate ideas into instructions that can be executed by a computer. Programming skills enable students to design and develop software applications and systems.

    Example: Writing Python programs to perform tasks such as automating repetitive processes or developing web applications helps students apply their programming knowledge in practical ways.

  6. The Internet represents a vast interconnected network of computers and devices that enables communication, collaboration, and the exchange of information on a global scale. Understanding internet protocols and security is crucial in the digital age.

    Example: Creating networked applications or understanding web development concepts in Python allows students to learn about internet protocols and gain first-hand experience with internet-based technologies.

  7. Global Impact explores the ethical, social, and economic implications of technology on individuals, communities, and global society. Students learn to critically analyze the impacts of technology and make informed decisions.

    Example: Discussing real-world challenges like privacy concerns, data breaches, or the influence of social media platforms helps students understand the ethical and societal implications of technology.

Threshold Concepts

A threshold concept can be seen as a ‘gateway’ or ‘portal’ that leads to a previously inaccessible, and initially perhaps ‘troublesome’, way of thinking about something. It represents a transformed way of understanding, or interpreting, something without which the learner cannot progress. These concepts tend to solidify understanding across domains (Davies 2006), and can separate the way a novice might think of a problem space versus an expert (Roundtree 2009). In the context of computer science education, here are several examples of threshold concepts:

  1. Abstraction: This is one of the first and most important concepts to grasp in computer science. It involves understanding how to separate the important details about a problem or a system from the unimportant ones. It also includes the ability to create and use models to solve problems. It’s what allows programmers to build complex systems by layering simpler subsystems.

  2. Algorithmic Thinking: Understanding that most computer tasks can be broken down into a series of simple steps (an algorithm) is a core concept. Grasping the idea of creating, understanding, and optimizing these algorithms is a key threshold. Another key threshold is the idea of storing values in variables, and updating them sequentially or iteratively.

  3. Recursion: A concept that’s often difficult for newcomers to grasp, recursion is the idea that a function can call itself in its own definition. While this can be a challenging idea to fully understand, it’s crucial for many algorithms and data structures.

  4. Object-Oriented Programming (OOP): This paradigm organizes data into objects and functionality into methods, providing a way to structure code that’s easy to maintain and understand. It’s a crucial step in moving from basic procedural programming to a more sophisticated and powerful programming methodology.

  5. Concurrency and Parallelism: These concepts involve understanding how tasks can be done simultaneously, either virtually (concurrency) or physically (parallelism), and the challenges associated with coordinating these tasks (like race conditions and deadlocks).

  6. Data Structures: Understanding basic data structures like arrays, linked lists, trees, and hash tables, how they are implemented, and when it’s appropriate to use each one is an important threshold in computer science.

  7. Computational Complexity (Big O notation): It’s not enough to write a program that solves a problem. Computer scientists need to understand the computational cost associated with different algorithms and how to reason about this cost in terms of time and space complexity. This understanding is crucial for writing efficient code.

  8. Networking: The concept that computers can communicate with each other, and how this communication is made possible, from basic protocols to the high-level design of the internet.

  9. Information Security: Understanding the importance of protecting information and the techniques used to achieve this (like encryption, hashing, and public-key cryptography) is a fundamental part of modern computer science.

  10. Machine Learning/AI Concepts: While it might not be at the core of an introductory CS course, understanding the basic concepts behind machine learning and AI (like how a model can be trained to predict outcomes based on input data) is becoming increasingly important.

The Importance of CS Education

CS education is instrumental in preparing students for the rapidly evolving technological landscape. It equips them with the foundational knowledge, skills, and mindset necessary to navigate digital environments and succeed in various professions.

According to a study by Guzdial and Ericson (2018), CS education can lead to improved problem-solving skills, enhanced computational thinking abilities, and increased creativity. It prepares students to tackle complex challenges by teaching them systematic problem-solving approaches and fostering computational thinking skills.

Additionally, CS education promotes equity and diversity in the field. It encourages inclusivity and provides opportunities for students from diverse backgrounds to engage with technology and explore career paths in CS.

Furthermore, the College Board’s data indicates that students who take college-level CS courses are more likely to pursue CS-related majors or careers. Increased exposure to CS education inspires students to pursue higher education and enables them to compete in a technology-driven job market.

In conclusion, Computer Science is a dynamic field that influences various aspects of our lives. CS education is crucial in preparing students with the necessary skills and knowledge to adapt to the ever-changing technological landscape. Understanding the fundamental concepts of CS, such as computational thinking, programming, and the societal impact of technology, empowers students to become active participants in the digital age.

References:

Submission

I encourage you to submit your answers to the questions (and ask your own questions!) using the Class Activity Questions discussion board. You may also respond to questions or comments made by others, or ask follow-up questions there. Answer any reflective prompt questions in the Reflective Journal section of your OneNote Classroom personal section. You can find the link to the class notebook on the syllabus.