Back to Career

Programming Fundamentals Professor

Andrés Bello Catholic University

September 2023 - February 2024 Part-Time

I was responsible of equipping students with the foundational knowledge and skills necessary for success in software development and computer science.

My Experience as a Programming Fundamentals Professor at Andrés Bello Catholic University

In late 2023, I started teaching Programming Fundamentals at Andrés Bello Catholic University. This seemed simple at first. Students had never written code before. They needed to learn the basics: variables, loops, functions. How hard could that be?

But as I taught the first lessons, I saw a real problem. New programmers struggle not with hard concepts, they struggle with the language. When I taught them syntax (the exact rules of writing code), their minds filled up. They thought: “Do I write var or let? Do I use for or foreach? What is a semicolon?”

These small questions blocked them from learning the real ideas how to think like a programmer. They were learning the language instead of learning to program.

How to break this cycle?

I had one goal: help students learn to think in code before they learned to write in code.

The course needed to:

  1. Start with ideas, not syntax: Teach what a loop does before teaching how to write a loop
  2. Build confidence: Make it simple enough that students felt smart, not stupid
  3. Prepare for real languages: After pseudo-code, students could jump to Python, JavaScript, or Java
  4. Use tools that let students focus: A good editor should not distract them with error messages

I had five months to teach students everything they needed: data types, operators, control structures (sequences, decisions, loops), functions, and structured data like arrays and objects.

Tools Existed, But They Did Not Fit

When I searched for solutions, I found existing pseudo-code languages like PSeInt. They worked, but they had problems:

Problem 1: The Syntax Was Inconsistent Different pseudo-code languages used different syntax. Students learned PSeInt in my class but faced a completely different syntax in their other classes. This created confusion.

Problem 2: The Tools Were Limited Existing editors were old, clunky, and limited to Windows. My students had different computers,some used Macs, some used Windows, some had old laptops. I needed something that worked everywhere.

Problem 3: Converting Ideas to Real Code Was Hard When students wanted to switch from pseudo-code to real programming languages, they had to start from zero. There was no bridge between what they learned and what they would use in jobs.

Creating My Own Solution

Instead of using an existing language, I built a new one designed specifically for teaching.

Building the Language: StepCode

I created a pseudo-code language called StepCode with three goals:

Goal 1: Simple, Consistent Syntax StepCode used keywords that were simple and consistent.

Goal 2: Built With Compiler Techniques To make StepCode work, I used my expertise in compilers and parsers (the technology that translates code into instructions a computer understands). This meant:

  • StepCode code was reliable and correct
  • It could convert pseudo-code to real programming languages
  • It worked on any operating system, even on phones.

Goal 3: Real-time Feedback StepCode could run code and show results immediately. Students typed code and saw what happened, no waiting, no confusion.

If you want to learn more about StepCode, you can visit the Blog Post about StepCode.

Building the Editor

Next, I created a web-based code editor for StepCode. I called it StepCode Editor.

This editor was built on Code Mirror. It meant:

  • Students could use it on any device: laptops, tablets, even Chromebooks.
  • The editor was familiar, it looked like real programming editors.
  • The editor worked on Windows, Mac, Linux, Android, iOS, etc.

The editor had special features for beginners:

  • Syntax highlighting: Different colors for different types of code
  • Code completion: Suggestions as they typed
  • Real-time error checking: Mistakes appeared immediately
  • Run button: One click to see results

Try it by yourself:

Proceso HelloWorld
    Escribir "Hello World";
FinProceso

How I Used StepCode to Teach

With StepCode ready, I built my teaching strategy in three stages:

Stage 1: Understand the Ideas

First, I taught students what programming is without coding. I used:

  • Variables and data types : What are numbers, text, and true/false values?
  • Operators: How do we change and compare data?
  • Expressions: How do simple operations combine?

Example: I asked students, “If I have a box labeled money with 100 dollars, and I take out 20 dollars, what is in the box?” This was a variable. Same idea, different words.

Stage 2: Control the Program Flow

Next, I taught students how to make decisions:

  • Sequential structures: One line after another
  • Selective structures: if this happens, do this; if that happens, do that
  • Iterative structures: repeat this 10 times or repeat while something is true

In StepCode, students wrote their first real programs:

Proceso CheckEvenOdd
    Definir number Como Entero;
    Escribir "Enter a number:";
    Leer number;
    Si number mod 2 = 0 Entonces
        Escribir ConvertirACadena(number) + " is even";
    Sino
        Escribir ConvertirACadena(number) + " is odd";
    FinSi
FinProceso

This was simple. No confusing syntax. Just clear logic.

Stage 3: Build Real Programs

Finally, students used functions, arrays, and objects to build real applications:

  • Video game mechanics: Keep score, check if player won, handle multiple enemies
  • Accounting systems: Calculate totals, track expenses, generate reports
  • Management systems: Store employee information, calculate salaries, organize data

Students completed projects like:

  • A guessing game that generated a random number and checked guesses
  • A grade calculator that stored student names and scores
  • An inventory system that managed products and quantities
  • A simple animation that used loops to create movement
  • A virtual piano that played notes based on user input

Teaching Methods

I did not just code and explain. I used modern teaching tools:

Pair Programming with LiveShare Students worked in pairs using VS Code’s LiveShare extension. One student wrote code while the other watched and helped find mistakes. This forced communication and collaboration.

GitHub for Version Control Students used GitHub to save their work and learn teamwork. They could see their progress over time and work with classmates on projects.

Real-Time Coding Exercises During class, I wrote problems on the board. Students solved them in StepCode and showed results instantly. We discussed different solutions together.

The Results

The numbers proved the approach worked:

5.0 out of 5 Stars: Students gave excellent feedback, they understood the material clearly and felt confident writing code.

100% of Students Completed Projects: Every student finished the final projects, from the guessing game to the inventory system.

Skills Transfer: When students moved to real programming languages after this course, teachers noticed they already understood how to think like programmers. They learned Python syntax quickly because they had learned the ideas first.

Proof of Learning: Students could not just pass a test, they could actually write programs. They built games, calculators, and tools that worked.

Tools That Lasted: StepCode was so useful that other teachers at the university asked to use it in their classes. It became a standard tool for teaching programming fundamentals.

Why This Mattered

This was not just teaching programming. This was creating a bridge from confusion to confidence. When students left this course, they understood:

  • How to think step-by-step (the real skill)
  • How to write code in pseudo-code (without distraction)
  • How to use tools that professional programmers use (GitHub, pair programming)
  • That they could learn real programming languages (because they had learned the ideas first)

The best part? Students who took this course and later took advanced classes performed better. Why? Because they had strong fundamentals. They understood the ideas. The syntax was just details.

You can explore the tools I built for this course:

StepCode Online Editor

StepCode Online Editor

An online code editor for StepCode, a pseudo-code language for teaching programming fundamentals.

stepcode.online
StepCode

StepCode

StepCode is a simple pseudo-code language designed for teaching programming fundamentals.

github.com
StepCode | Editor

StepCode | Editor

A web-based code editor for the StepCode pseudo-code language.

storage.rolandoandrade.me