Learn Coding

In a Nutshell

A highly adaptable online platform for learning programming at various competency levels.

Parallel courseware, designed based on four customization dimensions, offer numerous courseware possibilities to meet the diverse student needs. These courseware versions were meticulously aligned to ensure a consistent material structure while dynamically switching between the various versions, allowing students to compare-and-contrast the material.

The parallel versions of the learning material allow students to switch the content between programming language while viewing a lesson, e.g. from Java to Python, and instantly see the differences and similarities between the languages. The platform's coding quizzes also have parallel versions which can be solved and auto-graded in any of the languages. The aim is not to teach multiple programming languages at once, but rather to give access and exposure to other languages while learning a specific language.

Other features include Code Visualizers and Sandboxes, allowing students to execute and visually trace the code, step-by-step, and watch its impact on the memory, and Digital Badges, which are awarded to students upon completing each lesson as proof of their understanding and claimed skills.

The target audience is anyone from any discipline who seeks to learn programming fundamentals relevant to their disciplines; this includes undergraduates and researchers at or outside UBC-O.

This system has been used in some of the largest computer science courses (8 sections), and it has been adopted by the Faculty of Applied Science at our campus.

The system can be accessed at https://learncoding.ok.ubc.ca

A bit More details

The goal of this project is to develop inclusive, adaptable learning material that can be customized on-the-fly to meet the needs of various instructors and a broader student community while maintaining similar learning outcomes. To achieve this, the learning material will consist of several parallel versions, allowing learners to personalize their experience through four customization dimensions: Programming Language (Java, Python, or C++), Application Domain for coding exercises (Math, Physics or Statistics), Instructional Language (English or French), and Depth (introductory or advanced).

To illustrate, let's focus on two customization dimensions as an example: 1) Programming Language, with support for Java and Python, and 2) Instructional Language, with support for English and French. Within our newly developed learning material, each block of content, such as a paragraph or an exercise, will be available in up to four parallel versions: (Java in English), (Java in French), (Python in English), and (Python in French). Learners will have the ability to instantly switch between these versions using an intuitive user interface, allowing them to compare and contrast the different versions, such as identifying differences and similarities between Java and Python, or simply select the version that aligns best with their preferences.

Poster and Study Results

Poster Image

Benefits

Adaptive, inclusive courseware can enhance quality, lower costs, and improve accessibility in higher education. Using technology to personalize the learning material creates a learner-centered environment that caters to a wider range of students, improving their success and motivation, especially when incorporating gamification techniques such as badges.

Compare-and-Contrast allows students to get deeper insights by instantly switching between different customization options and observing changes in content.

Students can transfer the skills acquired in one language, e.g., Java, to other languages by reusing the same material. Studies have shown that reactivating previously learned information during new learning helps to build a consistent knowledge base in students' brains and enhances subsequent memory. This can be especially useful for students who need to use other languages in other COSC courses or transfer between Engineering and Science. (e.g., students who learn Java in COSC111/121 then take COSC 301 (Python) or COSC 344,407,444 (C/C++), or Engineering students who learn C++ in APSC177 then transfer to Science or take COSC 121/301 after APSC177).

Seeing how programming concepts are supported in different languages may help students focus on language semantics rather than syntax. This can help prevent new students from perceiving the focus to be on learning the syntax rather than the application of the language (which has been an issue indicated in several studies).

Courseware-expandability can reduce cost and effort of creating content for courses that involve coding. Instead of creating from scratch, instructors can adapt existing modules to meet their needs, freeing up time to other course activities and leading to higher-quality courses.

Proposed courseware can also be used in research labs. Coding skills are required in many research projects, even those not related to computer science. Team leaders can adapt the modules to meet their research needs, then have their teams complete the modules and earn relevant badges to confirm their skills.


* Home