Computer science and mathematics are challenging disciplines that require a robust yet pliable knowledge base over a broad range of topics. They demand extreme precision and clarity, as even the slightest oversight, misinterpretation, or miscalculation can cause significant deviations from the target result. To conquer these challenges and earn roles as professionals, aspiring students must learn creative problem solving, critical analysis, algorithmic thinking, discipline, communication, and a persevering attitude. Therefore, any such education program demands a balanced, carefully-planned pedagogy to encourage, facilitate, and assess such development.

In my experience, most of the Course Learning Outcomes (CLO) for computer science and mathematics courses are roughly the same. For instance, while teaching ‘Intermediate Algebra’, ‘College Algebra’, and ‘Introduction to Computer Science’ in Java at the undergraduate university level, I discovered that although the content of these courses varies greatly, the underlying principles forming the foundation of the CLOs are invariant; that is, upon completion of any such computer science or mathematics course, a successful student will be able to:
  • Apply and create strategies to derive, design, and/or implement working solutions to problems.
  • Evaluate a given strategy or solution in order to explain (in English) why it is appropriate and how it addresses the problem with algorithmic, mathematical, and/or logical reasoning.

I’ve come to view the CLOs as prime examples of “solid factors” that are crucial for planning and executing lessons. From my days as a student, I know full-well that learning computer science and mathematics (although very exciting at times) can be rough and exhaustive; mastering a new problem solving strategy is a challenge in itself, and requires a good deal of time and energy. Thus, as an instructor whose duty is to guide each class through a similar sequence of difficult topics, I continually challenge students with assignments, activities, and assessments that are in direct alignment with one or more of the CLOs. The CLOs exemplify “the big picture” to “stay on target” when planning and executing lessons within a cohesive learning scaffold. Moreover, I work to train my students to see the CLOs just as I do: I make conscious efforts to explain how the topics and strategies are connected, and why they’re appropriate (or inappropriate) for a given context.

Each class period is a mixture of live demonstrations and activities (primarily team based). The demonstrations are interactive, guiding students to discover new concepts and strategies for solving problems. I favor demonstrations of problem solving because my students can directly participate and experience a complete thought process that leads to a solution---from start to finish. Creating a working solution to a complex problem---whether it’s a computer program or an algebraic construction---requires numerous steps to reach a solution. Each step is an opportunity for students to question and think. Therefore, I find that it’s immensely beneficial to execute the demonstrations in terms of the key principles of the scientific method; students repeat the following “think-pair-share” procedure, from start to finish, until a working solution to a given problem is achieved:

  • Ask: Prompt students with a question or problem. (ex. What is the next step?)
  • Think and Hypothesize: Give students an individual-based silent period (ex. 20 seconds) to think for themselves to form their own hypothesis or prediction.
  • Pair and Discuss: Give students a team-based discussion period to consider various possible hypotheses or predictions with their neighbors or team.
  • Share and Predict: Ask for volunteers or randomly call on teams to obtain a set of hypotheses or predictions.
  • Experiment and Observe: Implement the hypothesis to obtain immediate feedback and see if the results match the students’ predictions.
  • Conclusion: Summarize the results and briefly explain why the solution is appropriate and how it addresses the problem.

I’ve discovered that conducting live demonstrations in this fashion tends to yield an exciting interactive learning environment, which is inclusive because all students have the opportunity to participate both individually and in teams. I continually remind my students that there is no single way to think when programming a computer or solving a math problem. If time permits, we experiment with several approaches to solving the problem, where many unexpected things happen so there are always plenty of laughs. It’s a blast!

When we’re not doing live demonstrations, students are typically doing team activities: they team up to attack challenging problems based on the demonstrated topics. This gives them the opportunity to experiment with those strategies in a low-stakes environment with their peers. In computer science, teams work to design algorithms, evaluate fragments of code, explain (in English) why a given strategy is appropriate and how it might be useful in their careers. In algebra, teams are engaged in roughly the same process with different topics: for example, teams use calculators to analyze data with regressions, sketch graphs of equations, explain why a given strategy is appropriate, and give examples of “real world” applications. While the teams are hard at work, I have the freedom to roam the classroom to directly observe, assess, and interact with each individual student on a personal level.

Most team activities are done on paper handouts and occasionally teams will present their work on the whiteboard for peer review. I continually encourage students to form hypotheses, make predictions, and discuss alternative viewpoints among their teams. I also remind them that making mistakes is an essential part of the learning process, and that these ungraded activities are an excellent place to learn from those mistakes. At the end of class, I’ll usually give my students solutions to the in-class activities so they can receive additional feedback and learn from any mistakes. I’ve discovered that these activities are useful not only for collecting attendance and conducting informal assessments, but also for promoting a consistent work routine paired with an inclusive learning environment that can make problem solving fun. Such exercises are designed to prepare them for graded out-of-class assignments and in-class assessments.

Students are graded with assessments (formative and summative) that are based on topics and problem solving strategies that they’ve already seen in class. In computer science, the graded student assessments typically consist of individual-based programming projects, in-class quizzes (both individual-based and team-based), and a final exam. In algebra, the graded student assessments typically consist of weekly assignments (using the Aleks program), two “midterm” exams, and a final exam. Since these graded assessments are always challenging, I make sure they scaffold and are in solid alignment with the CLOs.

My experience and exploration as both a student and instructor have convinced me that although learning and teaching disciplines such as computer science and mathematics can indeed be challenging, pedagogical strategies that facilitate a productive, captivating, and inclusive learning environment for all students do exist and can help mitigate some of these challenges. Thus far, I’ve discovered that my implementation of the said strategies tends to yield a beneficial, authentic, and rewarding educational experience. I’m excited to continue improving education for students in computer science and mathematics.