Live data from Hacker News

Ask HN: What is the most challenging programming course you have taken?

news.ycombinator.com

71–80 of 83 posts

Re: Ask HN: What is the most challenging programming course you have taken?

#71
[CS 402 - Operating Systems][1] at USC during my Master's. I really wanted to develop a mini kernel which I couldn't do in my Bachelor's. This course blew every other thing I ever did out of the water. Was a big reality check too. Fortunately, I had good people around me (thanks Prof. Bill!) who made it easier to squeeze the most out of it. Till this day, it is hardest stuff I have done. Only [MIT's 6.824 Distributed Systems][2] course came close which I couldn't finish as I was going at it all alone (to satiate my Distributed Systems curiosity) and hit a wall. I really hope to get around finishing it someday as it, I believe, will take me to the next level just like CS 402 did.

[1]: https://merlot.usc.edu/cs402-s23/ [2]: https://pdos.csail.mit.edu/6.824/

Re: Ask HN: What is the most challenging programming course you have taken?

#72
Operating Systems back in uni (UNSW). Hack your own mutex in two weeks, then hack virtual memory in two weeks, then hack a file system in two weeks. Of course we have other classes with their own assignments too, so you'd have to get all this done within a day.

What's great about it vs other courses is you had to understand an extremely complex thing and learn to modify it, instead of building something from scratch. In the real world, many things are not documented or misdocumented, so it's a vital skill to be able to understand how something works from the code.

Re: Ask HN: What is the most challenging programming course you have taken?

#73
Well, it depends on what you consider challenging:

Most work in terms of hours spent: compilers (you had to write one from scratch)

Hardest due to inherent difficulty of the material: theory of computation. Turing Machines and the Halting Problem and such weren't too bad (well, duh) but some of the more advanced stuff was pretty challenging, at least to me.

Hardest due to the material being a collection of bizarre recipes and jumping all over the mathematical map: tie between an undergrad numerical methods course and a graduate modeling and simulations course. It wasn't conceptually difficult to write the code, but understanding exactly why it worked was a different story. I've never been good at memorizing stuff unless I understand how it works (advanced statistics suffers from a similar glut of "magic recipes", in my experience).

Edit: the compilers class was the one that's proven to be the most useful over the rest of my life. I've written specialized parsers and so on a bunch of times.

I've never used the stuff from theory of computation again, nor can I imagine that anyone would who wasn't a researcher in that area.

I could see numerical methods being useful if I did a lot of down and dirty work with the physical world, but I mostly haven't done that..

Re: Ask HN: What is the most challenging programming course you have taken?

#74

A Masters’-level security course at UT Austin. The first assignment was “implement AES and RSA from scratch, without Bignum, and on RISC-V in an emulator.” Just… why. Spoiler, I did not succeed at that, but neither did most of the class.

We did something similar back in the day, some 20 years ago, in an introductory course, although obviously not in RISC-V assembly.

It honestly strikes me as too trivial an exercise for masters-level.

Re: Ask HN: What is the most challenging programming course you have taken?

#75
Programming wise, we had a class where we had to write some image filters in pure x86_64 assembly using SIMD, it was quite hard to wrap your head around the model of vectorized operations, and more so to debug your code either with GDB or visually (sometimes you messed up slightly and the whole image was borked, sometimes the image looked perfect but it was slightly off-by-one and the tests wouldn't pass). This was just 1 of 3 projects, there was also one where you had to build a small 32 bits kernel though I had less of a bad time with that one (guess we got lucky writing the code, because debugging the GDT, etc. if you mess up a single value can be a PITA sometimes).

Moreover in the same class we also had exams, in one exercise you had to write more SIMD code in x86_64 (over images, strings of utf-8 characters, etc.) this was all in paper and no reference was allowed except the Intel Manuals; that was just one exercise there were more in systems programming, etc.

I also had a bad time with Prolog and Haskell in a Paradigms class though those exercises were a bit more bite-sized and streamlined.

Non-programming wise, I'm having the hardest time right now with a Numerical Methods class which involves a lot of proof-based linear algebra, induction over matrices, etc. I also had a bad time with a Logic and Computability class.

Re: Ask HN: What is the most challenging programming course you have taken?

#76
post #54

Earlier quoted context omitted.

I have some project ideas but they are too complex for me. I have domain knowledge but my programming skills are lacking + lots of ambiguity/confusion/uncertainty/fuziness while implementing. I haven't delved into low level programming much but I will give it a shot. I do mostly scripting and automation - I want to improve my programming skills to the next level.

What 'type' of project ideas are this? don't need to share the idea, but in general: webapp,networkapp, desktopapp, does it have a GUI, is it a CLI tool, etc. These different types will likely have very different learning paths and things for you to explore that will get you to a practical skill level in the areas you want quicker than going the assembly -> c -> c++ -> script engines route for example. This last one…

I want to build a desktop gui app. Similar projects have 10000+ loc. It's math heavy and sometimes too complex for me while implementing. I haven't used chatgpt much because I wanted to improve my programming skills.

Re: Ask HN: What is the most challenging programming course you have taken?

#77
post #54

Earlier quoted context omitted.

What 'type' of project ideas are this? don't need to share the idea, but in general: webapp,networkapp, desktopapp, does it have a GUI, is it a CLI tool, etc. These different types will likely have very different learning paths and things for you to explore that will get you to a practical skill level in the areas you want quicker than going the assembly -> c -> c++ -> script engines route for example. This last one…

I want to build a desktop gui app. Similar projects have 10000+ loc. It's math heavy and sometimes too complex for me while implementing. I haven't used chatgpt much because I wanted to improve my programming skills.

chatGPT is a bit like google or stackoverflow etc, but maybe more directed. Don't use it's code as it's nonsensical mostly, but it can definitely summarize well what directions to take.

Other then that, if it's math-heavy/complex, maybe start with parts. try to identify what you want to be libraries and core logic etc.

you could start by making a math library in C, maybe with some bindings to a higher lvl language you want to write the GUI code in. It will be quite a project in itself already, and once done, you have part of your goal completed.

Selecting, testing and experimenting with GUI code is also tricky. There's tons of different libraries out there. You can use existing, or even write openGL/Vulkan code and write your own. If cross-platformness is important, maybe look at things like .net maui etc. as it has that feature as a core feature.

Also, before writing anything, look into how to structure such large projects. Structuring your project will help in many ways, including deciding how to break up the project, where to start potentially etc. etc.

There's many ways that lead to rome, but most will be 'chunk it up untill the size of steps is so small you feel confident you can take a step, then take it'.

Re: Ask HN: What is the most challenging programming course you have taken?

#78
post #74

A Masters’-level security course at UT Austin. The first assignment was “implement AES and RSA from scratch, without Bignum, and on RISC-V in an emulator.” Just… why. Spoiler, I did not succeed at that, but neither did most of the class.

We did something similar back in the day, some 20 years ago, in an introductory course, although obviously not in RISC-V assembly. It honestly strikes me as too trivial an exercise for masters-level.

The separate architecture put it over the edge for me, personally. I’m barely competent at C (especially back then) and may have been able to just manage had it been on native arch.

It did force me to get decent with bitshifts, which is always a useful skill. I found this [0] article about doing so with the 68000, and adapted it.

[0]: https://web.archive.org/web/20210225221011/https://www.atari...

Re: Ask HN: What is the most challenging programming course you have taken?

#79
post #75

Programming wise, we had a class where we had to write some image filters in pure x86_64 assembly using SIMD, it was quite hard to wrap your head around the model of vectorized operations, and more so to debug your code either with GDB or visually (sometimes you messed up slightly and the whole image was borked, sometimes the image looked perfect but it was slightly off-by-one and the tests wouldn't pass). This was j…

The SIMD and kernel ones sound promising. Does the course have a website? Thanks.

Re: Ask HN: What is the most challenging programming course you have taken?

#80
post #74

Earlier quoted context omitted.

We did something similar back in the day, some 20 years ago, in an introductory course, although obviously not in RISC-V assembly. It honestly strikes me as too trivial an exercise for masters-level.

The separate architecture put it over the edge for me, personally. I’m barely competent at C (especially back then) and may have been able to just manage had it been on native arch. It did force me to get decent with bitshifts, which is always a useful skill. I found this [0] article about doing so with the 68000, and adapted it. [0]: https://web.archive.org/web/20210225221011/https://www.atari...

The "in this arbitrary programming language we've never used before" was a common occurrence. At some point, we were given a PDF manual of some MIPS clone as well as a simulator.

In University, you were supposed to just pick these skills up all by yourself.

Post reply on HN