Got a friend asking me for help with their final C programming exams which they failed 8 times (yes, 8 🤷).

The situation is bad, seeing him execute source.c without compiling it made me feel things. 🥲

I’m not proficient in C myself but thanks to Go I got the essential quickly…

Does anyone have any ideas for some small projects to build in C that looks interesting to make?

⤋ Read More

@justamoment@twtxt.net Oh good lord 😳 Learning C is actually quite simple, but doing anything remotely useful and interesting in such a low-level language in IMO insane. It’s basically the equivalent (it actually is) Assembly. – That being said, I would recommend writing a few CLI tools, filters, processors, whatever. I wouldn’t attempt anything more complex/elaborate than this given that he/she/her/them/whatever are struggling with even basic compilation 😅 – Also ditch C, learn Go. There is no job out there (besides low-level embedded programming) that requires you to be proficient at C, even in the embedded field you can write Go and compile with the Tiny Go compiler which supports a growing number of micro processors and controllers 👌

⤋ Read More

@prologic@twtxt.net I know, he even dropped python in class because there was “too much” he said. 😓

The only real case I could think is something like a game or something but it’s still a mess not being experience myself I don’t want to bother too much.

I ever thought of using wasm to make something in a web page but I might give his teachers an heart attack. 😎

Still he needs C to pass the exam for now.

Just to note, the exam is like this:

  • Load a text file
  • Read the numbers in it
  • Print the highest number

That’s what that university asks to graduate as a tech engineer. 🥲

No wonder he said he made an app in python and the source was made of only print() calls. 🤣

⤋ Read More

@prologic@twtxt.net I’m not sure myself, we just started talking about it for a single day but I didn’t see any of his actual reasoning and coding yet.

I personally learn by doing: make something you want and learn how on the run, that was my idea for him too.

I also asked him what would be interesting to make for him personally and then start from there.

⤋ Read More

@justamoment@twtxt.net hmmm… I learned C for microcontrollers (I loved it coming from assembler) something like 20 years ago.
But currently, I don’t feel incentivized to do something interesting for PCs, and for microcontrollers they went to MicroPython and some others. I agree with @prologic@twtxt.net says that is too low-level.

What I can suggest is reading Head First C, which has been to me a good starting point for new languages. I think they could take a look to pass the exam
https://www.oreilly.com/library/view/head-first-c/9781449335649/

I know a lot of tech engineers don’t want to create stuff by programming, but more to give maintenance to current systems, and that’s OK

Although I tell my students “at least try to pass this requisite”, it’s gonna help to understand how programmers think.

⤋ Read More

@eaplmx@twtxt.net Thanks for the tip!

He’s already working in a software company as a tester (but can’t access any code).

And reached out to me for help to become better at something he’s bad at, so the excitement and an helping hand should push him to have proper interest on coding in general, as I said he’s now stuck in C but I hope he’ll get to a point where what language he knows at the time won’t stop him to learn something easier and more versatile.

⤋ Read More

An update on the situation, got him to answer a little quiz on basic knowledge of programming as an assessment and the results were….. catastrophic. 🫣

I think we’re going to learn programming from the zero.

When I think back to the exams, now that I’ve seen his skills, could it be that the university lowered their expectations about their students because of their nonexistent interest?

As I said, he seems interested because he saw a software being built at his company, the time prior to that might have been just wasted time of doing nothing…

⤋ Read More

@justamoment@twtxt.net as an university professor, I’ve found that classrooms are the worst place to learn to code, program or dev.

There is not enough time to personalize teaching, from the current knowledge every student has, up to the semester goals (usually standardized). People is stressed on learning a lot in a few months, throwing up everything into the exam, so usually that isn’t meaningful and internalized learning which programing requires in the long term.

What has worked for me was to record short videos with step by step explanations, so the students can watch and rewind at their pace, and then we have office hours to explain anything the student didn’t get.

Something like:

  1. Watch how I do it
  2. Try to repeat that
  3. Try to do something different alone
  4. You are by yourself now!

⤋ Read More

I’ve also found that, at least here, Computer Science or (Management of) Information Tecnologies are not related to creating or architecturing software, but on understanding and maintaining current ones.

Which is not that bad, you cannot create something if you don’t know previous solutions or implementations… 🤔
Again, there is simply not enough time in 3-5 years of intense education to learn to ‘program’

⤋ Read More

@eaplmx@twtxt.net Your approach is really smart on the time constraint.

It might be hard to follow without the essentials, at that university they never ever worked with a project with more than one file, even if someone is interested it’s hard to work on something that reflect a realistic case in those circumstances.

They’re probably on their own I think, hope I can help him to get better at it.

⤋ Read More

@lyse@lyse.isobeef.org Getting help from someone you work with is great, it’s like working with colleagues.

I personally learned my first programming language (Python), on my own with some random video tutorial, by following them, repeating, analysing the results and breaking apart all I just made to see what worked and what didn’t.

I still use this approach up until now, with my little journey in Go for example. 😎✌️

⤋ Read More

@justamoment@twtxt.net yeah, the compromise between the essentials, or the foundation to build knowledge on top of it, is tricky.

And I also agree on teaching to do something realistic.
Currently I’m designing a course from scratch for C# and I’m constantly saying “don’t validate this yet”, don’t preoptimize this now… We’ve known for years all that real software needs, but at the same time we have to ‘lower’ the implementation to the current level.

⤋ Read More

It reminds me when I was learning piano. Yeah, I wanted to play the classics or the modern tunes, bu instead as my fingers where pathetic I had to practice with boring and monotone scores to build dexterity for my hands.

I think that’s something similar with programming, language learning and such. And again, college gives no time for that.
More anecdotal evidence: I was 3 months in German at college, at the 1st semester, really stressful due to the scholarship. I learned nothing.

⤋ Read More

@eaplmx@twtxt.net When I started learning to play the guitar at school I got so hooked I ended up being able to play flamenco songs in around a month since starting, meanwhile all my classmates couldn’t do even the basics chords, I guess my best ability is to learn and experiment in a obsessive matter by myself until I get it right.

But I need to avoid at all cost to push this approach onto others as often they can’t keep up with my pacing.

As a solution I found that drawing is the best way to explain things to me, since i get slowed down by my hands focusing on the current sketches and it also help them understand what’s happening in code or other structures visually.

⤋ Read More

Participate

Login to join in on this yarn.