The Mess of Tech Education

It’s one of the greatest gaps that exist.

Sahil Kapur
6 min readFeb 19, 2019

I told myself I would sleep by 1 AM, get up early tomorrow, work out, get a good start to my day…

… but then this happened. I wasn’t planning to write this article for another few weeks but I guess here we go.

Ready for an angry 2:00 AM rant about the issue? Let’s dive in.

02/19/2019–12:50 AM

I had spent a long (and unproductive) brainstorming session trying to navigate around some of the obstacles of my latest venture, Voler. I kept asking myself about the problems I saw on a daily basis, incorporating my own college experiences to search for a solution.

I thought about the issues students face: we’re broke, we’re overwhelmed with work, we want to have fun and party, and as a whole we’re pretty lonely.

Yet after 1.5 hours of thinking, writing, and pacing aggressively, I realized the odd looks I was getting from the janitor at 12:50 AM was a sign to get going. Disappointed with my lack of productivity, I packed my bags to start the haul back to my dorm.

1:00 AM

“Hey — you’re in CS, right?” my friend from across the hall asks as we get in the elevator.

“Well, technically I’m in CompE, but yeah what’s up?”

“How do you learn to code? I just don’t get it.”

Oh boy. Flashbacks from me struggling in sophomore year computer science run through my head; household arguments of my dad trying to explain to me what a class is; receiving a barely passing grade in my first computer science course —

I really wish I had an answer. Almost three years later, after countless advanced projects, coursework, and joking about how ridiculous college computer science courses are, I still don’t know how I learned to code. But I remember the horrible feeling of not getting it.

That’s the worst feeling. Staring at lines of gibberish, without a clue of what it does or how to replicate it, and being expected to recite it beautifully for the exam in twelve hours.

1:15 AM

After rambling a bit about how I feel CS courses don’t address student issues, I started thinking a bit more critically about “how to learn code.”

I would like to present the coding hierarchy. This is how I believe coding should be introduced. I’ll break each one up.

How I believe coding should be taught

The Problem Solving Mindset

The number one skill a computer scientist has is the problem solving mindset. This allows him or her to analyzing problems from multiple perspectives, consider alternatives, and choose the best approach to solving the given issue.

When students say “they don’t know where to start” on a problem, it usually stems from an unclear problem-solving mindset.

One could argue that the problem-solving mindset can only be mastered through experience — and to some extent I agree — but by focusing on this skill first, educators can build students’ confidence and strengths when approaching any programming challenge.

2. Putting ideas into code

This is the ability to take the plan you’ve generated from step 1 and applying it with a programming mindset. This usually entails a pseudo-code (language agnostic) approach for how computer science fundamentals can be applied to a problem. Nothing fancy here: once students learn the basic programming structures (data types, loops, arrays, etc.) this is easy. AGAIN: this is all theory-based, meaning as long as students can grasp the fundamental idea of what these topics are, there’s still no issue.

3. Syntax

This is my least favorite section, but it’s needed. Syntax is knowing all the weird ways that the language you’re programming wants you to write your code. There’s no shortcut to mastering this; a lot of it is grunt memorization and practice.

Java vs. Python Source: https://www.reddit.com/r/ProgrammerHumor/comments/66jj7f/java_vs_python/

I could rant on about why Python is better for learning computer science (short version: VERY LITTLE SYNTAX TO LEARN), but it seems most established institutions prefer Java or C. Again — there are pros and cons to both, and any online search will explain why.

That was my opinion on how coding should be approached. But here’s what I’ve seen in 2 different intro CS classes:

The focus ends up falling heavily on bearing through syntax, and the general approach is “if you do it enough (and study enough), you’ll figure it out as you go.”

Now I’ll take a step back. There is some validity in this system. Typically, institutions over-enroll programs such as computer science, and address this by making introductory classes extremely hard so students drop out (to give them credit, it works).

Additionally, this system aims to cultivate a culture of hard work in their students. If you could survive the intro class, it means you’re ready for the difficult degree of computer science. Additionally, it encourages students to visit professors and TA’s more, and to foster relationships that teach students it’s okay to be lost.

Except that doesn’t happen.

What really ends up happening is two things:

  1. The students who are well experienced in coding will fly through the course with no issues.
  2. The students who are not will result to cheating, copying code, or straight up accepting failure.

The result of this is the intense lack of diversity in CS schools. Those who have entered with experience — typically from affluent backgrounds and excellent schools — will excel and move up the ladder. Those who lack those resources are forced to switch away.

It’s a bit of an over-generalization, but the premise is true. This has longer-reaching economic effects as well — which I will probably discuss in a future article.

1:20 AM

While the other student and I are deep in discussion, another student comes out of his dorm.

“Are you guys talking about CS 159? That homework was impossible . . . I’m so lost.”

How We Can Address The Issue

First off — if you are a student currently struggling in a computer science course, reach out. Don’t wallow in your puddle of tears. I highly recommend starting by taking random coding problems you find on the internet and attempting them. Get a friend to join you, sit down, and hack out the solution. The best way to learn computer science is to code! Other than that, I really think SI/office hours are good. A lot of the people who run these sessions are previous students who struggled through the course and understand why it’s difficult (though there are some horrible TA’s. I don’t understand why they are so cocky). If nothing else, just reach out to me! I’ll try my best to help you guys out (or connect you with a decent TA).

If you’re a parent who wants to get their child into CS early, start by teaching them computer science is fun! The best coders are those who love what they do, and they find that by genuinely enjoying their work. Start off light — take a language like Python — and have them solve fun problems!

If you’re another concerned soul (or curious) on how to fix the issue, I think it stems from the middle/upper school system. Students are often taught formulas and repeated procedures as the solution to their work, but that doesn’t apply in computer science. The biggest issue to address is the problem-solving mindset, and I think there should be an increased focus on developing this.

Now, I know that sounds cliche, but I think an easy way to start developing this early is fun and easy CS courses that are mandatory in middle school. Get students coding early — get them having fun. The rest will follow.

Well, I just hit the 2:30 AM mark, so I’ll probably let this article rest for now. I’m sure it’s riddled with grammatical errors and typos, but I wanted to simply send this message out there for now. Hopefully I’ll get some time to refine tomorrow.

--

--

Sahil Kapur

I’m a junior in CS at Purdue! I love chatting with new people, so let’s talk. Hit up my twitter @sahil_sk11. www.sahilkapur.com