Developing Personalized, Expandable Learning Modules for CS1 Programming

Lead

Abdallah Mohamed, Instructor, Computer Science, Irving K. Barber School of Arts & Sciences (UBC Okanagan)

Collaborators

  • Yves Lucet, Professor, Computer Science, Irving K. Barber School of Arts & Sciences (UBC Okanagan)
  • Jake Bobowski, Senior Instructor, Physics, Irving K. Barber School of Arts & Sciences (UBC Okanagan)
  • Isaac Li, Assistant Professor, Chemistry, Irving K. Barber School of Arts & Sciences (UBC Okanagan)
  • Dean Richert, Instructor, School of Engineering, Faculty of Applied Science (UBC Okanagan)

Summary

Computer programming is a crucial, cross-disciplinary skill that has become important to audiences beyond merely computer scientists. Records from the past few years at UBCO show that students from BSc, BA, BASc, BFA, BHK, BMgt, BMS, BSN, MA, and MEng were registered in one or more first-year programming courses. Further, several researchers seek to learn the fundamentals of computer-programming to help them implement their research ideas and algorithms. Such mix of students have different abilities and needs.

This project aims to create a learning hub that has seven modules to cover the fundamentals of computer programming with two key innovations:

  1. Personalized Learning: Learners will have the flexibility to customize the learning modules to meet their needs. For each module, learners can choose: (a) depth of learning material (Basics or Advanced), (b) programming language (Java or Python), (c) application domain for coding examples and exercises (math, computer science, physics, or biochemistry), and (d) website language (English, or French).
  2. Modules Expansion and Reusability: Instructors can expand existing modules by adding more options under the four customization attributes listed above. For example, instructors can add C++ option under the “programming language” attribute, then they only need to modify the parts in the modules that are related to the new customization option, e.g. append C++ code that would replace Java or Python code if C++ is chosen under the programming language attribute.