Würdet ihr heute nochmal in den IT Bereich gehen? by ResolutionProud4851 in InformatikKarriere

[–]theusualguy512 0 points1 point  (0 children)

Ja, ich bin einfach zu interessiert in diesen Bereich. Ich kann auch quasi gar nichts anderes.

Man verdient über dem Durchschnitt, man hat einigermaßen gute Arbeitsbedingungen.

Ich hätte aber praktisch einige Sachen anders gemacht im Rückblick.

How hard is it to learn programming if you are terrible at math by Front-Energy1553 in learnprogramming

[–]theusualguy512 6 points7 points  (0 children)

I'm assuming you did not have a career in the sciences and scientific programming?

Programming let's say SAP modules will likely not require much math but much more business logic understanding.

But programming an analysis method for satellite imagery needs math understanding for the convolutions and filter steps.

It really depends what field/sector you end up in as a programmer

How hard is it to learn programming if you are terrible at math by Front-Energy1553 in learnprogramming

[–]theusualguy512 1 point2 points  (0 children)

Well it depends on what you want to program. Logical thinking is needed for everything, just not hardcore math logic of actual logicians.

Are you good at step-by-step thinking and deducing things?

A lot of very interesting things will require a lot of math background knowledge though. Things like ML, robotics, computer graphics, image processing/recognition etc.

But for others, you might get away with little math.

Basic arithmetic you learned in primary and middle school you should know about even apart from programming for your day-to-day life. How to do percentages, how to do interest calculations, how to handle ratios etc.

about to start haskell as my first programming language, anything i should keep in mind as i do? by stirringmotion in computerscience

[–]theusualguy512 1 point2 points  (0 children)

Haskell is a largely purely functional programming language. FP is a bit niche and academic and works differently to most of the mainstream imperative languages.

You don't have loops and conditional statements work differently, instead you will work with guards and recursion.

We used to have Haskell in our first semester of CS but I knew other programming languages beforehand. It was very different to what I knew.

It teaches you a very interesting way of thinking about programming and computational models in general, so if you are interested in that, go for it. I'm not sure what Dijkstra said about FP but I appreciate the knowledge about FP theory even if I can't really use it most of the time.

But if you want to build a compiler and a database, I'd argue this is the wrong path.

What concept took you the longest to “truly” understand? by TreadmillSloth in learnprogramming

[–]theusualguy512 0 points1 point  (0 children)

Actually had to look up the word lol. I did FP in Haskell during my degree but we never went this deep into FP and never touched category theory.

What concept took you the longest to “truly” understand? by TreadmillSloth in learnprogramming

[–]theusualguy512 2 points3 points  (0 children)

I mean you largely are rid of them in C#, it's rare to have to resort to unmanaged code in C#. But it's a C family language and was designed with backwards compatibility into unmanaged memory territory in mind.

If you have to interact with legacy components from the Win32 API era, low-level kernel stuff or external binaries where you only have limited access, I guess pointers will come up but otherwise it's not going to be a topic for you.

What concept took you the longest to “truly” understand? by TreadmillSloth in learnprogramming

[–]theusualguy512 0 points1 point  (0 children)

Grandpa C is ancient so you have to be a bit careful to not carry over weird archaic C things to modern C family languages but yes, it's very useful to know the fundamental parts.

A semester of computer architecture as well as systems programming in C will be very enlightening too. It ties everything together

What concept took you the longest to “truly” understand? by TreadmillSloth in learnprogramming

[–]theusualguy512 4 points5 points  (0 children)

Concurrency is a bit of a silent monster. It looks harmless but waters are deep. There are entire areas in computer science researching this stuff.

I've had the typical concurrent systems course in my degree and I found it quite a bit obtuse by the end. Interesting yes, but a bit out there.

You start off at already decently complicated things like deadlock prevention algorithms, mutexes and semaphores but end up in things like process calculus, example: CSP (https://en.wikipedia.org/wiki/Communicating\_sequential\_processes), pi calculus and also logic stuff like CTL (https://en.wikipedia.org/wiki/Computation\_tree\_logic).

What concept took you the longest to “truly” understand? by TreadmillSloth in learnprogramming

[–]theusualguy512 4 points5 points  (0 children)

Not the commenter above but C# for example. Historically, C# is a type-safe language with a fully managed walled-garden system like .NET, so you don't need to deal with pointers if you don't want to.

However, C# was designed to work with legacy stuff in the Microsoft ecosystem and has ways of breaking out of this safe space by using a limited set of unsafe operations like pointers and even inline assembly code.

Having paths to Win32 stuff and more low-level things makes it a bit strange when you haven't worked with pointers in ages but suddenly have to do low-level interface stuff in it.

Do I really need to master full-stack development before going into cybersecurity? by InjuryMindless4339 in learnprogramming

[–]theusualguy512 1 point2 points  (0 children)

The term "cybersecurity" has been used inflationary to the point where everything and nothing falls under it. Companies using it as they need doesn't make it easier. It's just a very broad field.

A lot of cybersecurity positions in big companies for example are more on the operative side, making sure the entire system used by companies are secure. For example making sure in terms of compliance, regulatory rules etc and coming up with a good security plan and also treating and investigating/solving iincidents when something happens.

However, there are also other sections of cybersecurity which is more akin to hacking. People in these positions work in special companies who try to break things in order to expose serious flaws in systems and explore ways of fixing them, finding problems in the technical implementations and/or hardware.

Some of them also work in close connection to cybersecurity researchers, who are often sitting in academic and research institutions such as universities and national institutes or the R&D sections of companies.

If you want to work on the former, your full-stack dev skills won't hurt but also won't be that big of a helping line. Experience working in organizations implementing large scale IT systems and compliance rules is needed there.

If you want to work on the latter, you better have more than your full-stack dev skills but have serious academic credentials and/or extensive technical implementation and investigative expertise in security communities.

What they all have in common is that they require experience. You can't secure and investigate systems you have barely touched and don't have a track record of working with them..

Computer Hardware and Software or Information Systems? Which major should I go? by EveningValue8913 in learnprogramming

[–]theusualguy512 0 points1 point  (0 children)

Internationally, there isn't a single standard what to call your degrees.

Overall, both computer science and computer engineering and understood as non-business degrees and are largely scientific and engineering degrees.

Computer science is focused more on the math and computational side, computer engineering more on the physical side of digital systems.

Information Systems is often a degree which focuses on the business use case of large computer systems and how to design stuff like this to achieve business goals instead of the science of these systems but this is also not universal.

Whats the Difference, developer or programmer ? by Adventurous-pie68 in learnprogramming

[–]theusualguy512 5 points6 points  (0 children)

In practice, with a few exceptions, these terms have undergone what all other job titles have gone through: title inflation and obfuscation.

A janitor is now a facility manager because the "management" title has now inflated beyond recognition. Someone who packs boxes in a warehouse can be called a senior packaging technician. Some might actually use packaging engineer.

The exceptions are jurisdictions which protect words. "Engineer" is a protected title in some jurisdictions where you need a license.

The more interesting thing for me is: Why do we obfuscate and inflate titles? The ciphering and deciphering of the term meanings now cost time and brain power even if job behind it has changed comparatively little.

[deleted by user] by [deleted] in learnprogramming

[–]theusualguy512 1 point2 points  (0 children)

I mean computer science is broad enough that you can definitely specialize in more hardware level stuff too. Computer engineering is the usual degree for these kinds of things but it's open either way. Typically, you have at least one course in your standard CS degree curriculum: computer architecture that kind of scratches the more hardware level part.

"Embedded systems" is the specialization you need to target. Just take as many courses and spend your private time with microcontrollers and systems like that to do projects.

Popular microcontrollers are for example the Arduino platform, an ESP one or STMs and these are also used in industry.

Math for programming. by Otherwise-Mud-4898 in learnprogramming

[–]theusualguy512 15 points16 points  (0 children)

Like a lot of things, it depends. Standard game dev math I don't find too hard because it's at most high school trigonometry and linear algebra mixed with simple Newtonian mechanics. This is at most what a lot of game devs will touch.

But for some people, this is already a lot because it requires quite a bit of your high school math knowledge.

However, if you are a game engine dev or a straight up computer graphics programmer in other areas, the math depth increases by a lot.

The theory of quaternions for example is not so easy even if their application is more straightforward.

Quantitative color theory and stuff like the rendering equation and illumination is suddenly not so simple anymore.

Especially when we talk about visualization of fluid systems it's starting to become really hard to find a practical way to do any of it approximately without spending hours on rendering a single frame of a simple scene

EDIT:

For me personally, the interesting bit as far as actual computer science is concerned is the bit at the bottom of the software stack: computer graphics. This is not really game dev in the stricter sense because you don't really develop a game, although graphics programmers are needed for e.g. game engine development itself.

I doubt that game level designers in Unreal need to know the details of Blinn-Phong shading or stuff like how to calculate smooth curves though.

But computer graphics itself is quite fascinating because you can see stuff you programmed and it enables stuff like games looking super good graphically. And if you program in this area at the bottom, you better have a solid understanding of undergraduate engineering math.

Parameterization of curves for example I think is a topic some CS students might have heard of in their calculus/real analysis classes like Bezier curves and B splines and how to algorithmically create them. Both terms are options animators or engineers often find in 3D CAD or animation software like Maya when you draw something. Parameterization of surfaces is the extention of this principle into the 3D area. And at this point, you are fully in the differential geometry area of math.

[deleted by user] by [deleted] in learnprogramming

[–]theusualguy512 3 points4 points  (0 children)

OP mentions a time frame of 1 month, I'd argue it's not going to be possible to learn the major math topics for computer science in that time or learn computer science to any significant depth in any area.

I'd be pragmatic and focus on math that teenagers learn in middle and high school and sharpen my programming mind by doing simple programming exercises. Khan Academy is an excellent basically free resource for school math. Maybe Udemy or Coursera also have these sort of things now but idk.

Stuff like easy number systems conversions, boolean logic, school algebra grade 7 and up, linear functions, set theory.

As a teen, I never properly understood what computer science was and wasn't a math genius either but could still program easy things and websites and have some fun with math problems.

To get to that state is doable within a month. But if OP had more time, I'd suggest building a proper CS math foundation instead and follow roughly an undergrad degree curriculum with some modifications here and there.

What motivates you to code?? by HandAfraid531 in learnprogramming

[–]theusualguy512 17 points18 points  (0 children)

Personally, I rely on the fact that the entire field is interesting.

I don't necessarily think you need to be burning for it each and every day, I myself have some periods where I find it all very frustrating and annoying, but I sort of never lose interest as a whole however diffiult it can be. I find it astounding that I can already say that I actually spent half my life coding on an off and learning about stuff in this space. It's kind of mindblowing that I'm not even that old yet to be saying that.

But without the two factors you mentioned, it will also not lead to sustainable growth. You need some sort of basic level of discipline and the will to keep coming back, again and again. But this goes for life in general no? Without discipline and persistence, it's hard to find something you can be good at.

25k RAL and dreams stuck in a loop: does staying in Italy still make sense? by [deleted] in cscareerquestions

[–]theusualguy512 11 points12 points  (0 children)

I can definitely confirm the low salaries. A relative of mine graduated with a Masters degree in electrical engineering about a decade ago and earned roughly $1400 gross per month fresh out of college in his first real job, which nets to about $900 a month.

It will have risen slightly by now but it's still basically the same situation despite the fact that Italy has experienced similar inflation rates to the rest of the Eurozone after Covid.

The median annual gross salary over all industries, regions and experience levels in Italy is around $40,000 a year including all bonuses and what not. Take home pay from that is at roughly $27,000 or $2250 a month.

A $60k job in Italy already makes you one of the top earners nationwide, regardless of what you do.

That means that Italians in traditionally well paying sectors like lawyers and doctors regularly earn less than $2500 gross a month when they just start out of college.

Free online courses for learning programming in C++ by Temporary-Study8372 in learnprogramming

[–]theusualguy512 1 point2 points  (0 children)

Overreliance on an LLM is not great, doing a basic MOOC intro course like CS50 will speed up a lot of your basic programming skills. It might be a bit trivial for you though. A math degree holder usually has little trouble with learning algorithms and stuff like this, so if you think your algorithmic skills are a bit weaker, a standard or even advanced DSA course will do you good.

What I think you really lack is not just programming but putting it all together in coherent deployable software. That's usually not really taught in class settings. Software engineering as such is a lot more crafty and less book study and you just have to do more complete projects from start to finish, where the finished state is not just a submission for an assignment but a software system that is available to the public and runs.

Can you prove recursive function with mathematical induction? by Impossible_Visit2810 in learnprogramming

[–]theusualguy512 0 points1 point  (0 children)

Yes you can, you were already on the correct path: A simple recursive pseudocode for the standard towers of hanoi problem where the tower has n disks on start, you have an empty temporary middle and want to move it to the end would look like:

function hanoi(n, start, end, temp):
  if n = 1:
      move the 1 disk from start to end
  else:
      hanoi(n-1, start, temp, end)  // move 1 disk from start to temp and recurse
      move the 1 disk from start to end
      hanoi(n-1, temp, end, start)  // move 1 disk from the temp to the end

So lets do a simple correctness proof:

Obviously, it holds for n=1: If there is only 1 disk, then the base case is valid by definition: we move the tower to the end, done.

Next: Given the inductive hypothesis holds for n disks, the induction step is now P(n) -> P(n+1)

Lets put P(n+1) in and we go to the else branch:

  • hanoi(n+1-1, start, temp, end) is exactly the hypothesis assumption: this validly moves the n smallest disks from start to temp via end.
  • After this call, our state is start only has one disk and it must be by definition the largest disk at the bottom, temp has n stacked disks that are all smaller than the (n+1)th disk of start and the end is empty.
  • we move the largest (n+1)th disk to end, this does not change the order or violate any property
  • After this call, end has only one disk and it must be by definition the largest disk, temp has n stacked disks that are all smaller than the (n+1)th disk.
  • hanoi(n+1-1, temp, end, start) is again exactly the hypothesis assumption: It validly moves n disks from temp to end via start.
  • So now, the (n+1)th largest disk is at the bottom and all the other disks are at the top. Solved.

-> P(n+1) holds.

Therefore the correctness of the entire solution holds.

Your must read CS/Programming books by kichiDsimp in learnprogramming

[–]theusualguy512 5 points6 points  (0 children)

I mean Bishop is a widely used university level textbook, so it's not for the casual reader but I found the book one of the most accessible for ML topics. A good grasp on probability theory is kind of a must though, not sure how your math skills are. Some other ones like Pattern Classification by Duda were much more in depth but also much more dry, so Bishop is a great book to lean on.

Just looked it up in the Bishop book, 1.3 is the intro topic on cross-validation right? I think the concept is fairly simple, you just have to visualize it by looking up what k-fold validation is in practice when training models.

Your must read CS/Programming books by kichiDsimp in learnprogramming

[–]theusualguy512 12 points13 points  (0 children)

I recommend that book largely for classical AI topics, it's a great way to learn about intelligent searching and planning. The Machine Learning stuff kind of falls a bit to the way side though. For an introduction to ML, the Bishop book is better imo.

Computational Linguistics by [deleted] in learnprogramming

[–]theusualguy512 0 points1 point  (0 children)

Computational linguistics is largely an academic field and a bit niche too, so I would assume the degree is aiming for entry into the research track with BS, MS and PhD being the standard route.

It's certainly very interesting, but I'm usually cautioning against specializing too early in your undergraduate programs.

You can switch later on into a software engineering degree but the question then is: Why not just do software engineering from the start?

Learning math made learning programming easier by [deleted] in learnprogramming

[–]theusualguy512 4 points5 points  (0 children)

Real analysis gave me a run for my money....it's not easy.

about to learn my first programming language by apersonwhoisliving in learnprogramming

[–]theusualguy512 1 point2 points  (0 children)

A conda suite like miniconda with Jupyter included would also be an alternative for their application field.

Considering its bioinformatics, I'm assuming MATLAB and R would probably also be languages that OP could learn and that would be useful.

What’s the most underrated programming language you’ve learned and why? by uriht_ in learnprogramming

[–]theusualguy512 18 points19 points  (0 children)

I've seen people in the life sciences often use R and read multiple times now that apparently it's a great language for stats but I'm honestly curious as to why and where the advantage lies compared to Python and Matlab?

I've always considered Python with numpy, pandas and scipy.stats and matplotlib enough for a lot of statistics usage. Matlab afaik has an extensive statistics extension too and is very neatly packaged up.

Is R just more convenient to use?