How can calculus and linear algebra be useful to a system programmer? [closed]

I found a website saying that calculus and linear algebra are necessary for System Programming.

System Programming, as far as I know, is about osdev, drivers, utilities and so on. I just can’t figure out how calculus and linear algebra can be helpful on that. I know that calculus has several applications in science, but in this particular field of programming I just can’t imagine how calculus can be so important.

The information was on this site:
http://www.wikihow.com/Become-a-Programmer

Edit: Some answers here are explaining about algorithm complexity and optimization. When I made this question I was trying to be more specific about the area of System’s Programming. Algorithm complexity and optimization can be applied to any area of programming not just System’s Programming. That may be why I wasn’t able to came up with such thinking at the time of the question.

15

I would imagine its not very important if you’re writing non GUI utilities on top of a modern operating system without working on its internals. Its probably a different story if you are working on changing a modern operation system or developing a new one.

If you’re working with video hardware or a bare metal windowing system, you’re going to need knowledge of linear algebra to efficiently update graphics. I haven’t looked myself, but I bet you could find examples in the source code for X, KDE and Gnome.

If you’re working with hardware regarding digital signal processing then calculus will be very important. I imagine there are some devices which do their heavy lifting with the system’s CPU instead of a local microprocessor and these often interface to analog electrical systems.

Also calculus plays an important role in performance analysis besides just linear algebra when attempting curve fitting to the data.

2

SomeKittens’ comment is right on the money: You need calculus and linear algebra because those courses change the way that you think and the way that you understand the world. Linear algebra is all about mapping from one domain to another; calculus covers the way functions behave. They’re powerful tools themselves, but the techniques you learn when studying those fields also become part of your mental picture of the world.

You also need those courses because people will expect you to be able to think in those terms. I don’t often see my colleagues taking the derivative of a polynomial on their white boards, but I do often see sketches of functions with the tangent drawn at some interesting point, or the area under the curve shaded. We don’t care enough about the actual values to bother calculating them, but understanding about how the values change is essential, and it’s part of everyday conversations.

Any undergraduate computer science degree will require calculus, linear algebra, statistics, logic, and other math courses not because programmers need to apply the techniques directly on a regular basis (although they might, depending on what they do), but because you need that knowledge to understand the material that comes later.

3

I’ll go ahead and say that I don’t think calculus or linear algebra are likely to be important for systems programming.

I certainly think calculus and linear algebra are worth learning in general — I’m a math guy! And, as other answers point out, there is some indirect relevance, as performance analysis and algorithm design can use advanced math. However, I don’t think systems programming is any more dependent on those kinds of math than most other fields that aren’t generally thought of as mathematical.

3

I suspect it’s true around the edges. System programmers have to be far more concerned about performance and reliability, so algorithm analysis might be important, and calculus is sometimes needed for proofs of Big-Oh analysis. Subjects like queuing theory and discrete optimization (that’s mathematical optimization not code optimization) can a play a role too. However I think those would mostly apply to folks working on the bleeding edge of operating systems and network protocols, not so much the person working on the USB 3.0 driver.

1

Your definition of Systems Programming pretty well aligns with the answer in Wikipedia.

If you think about what it’s providing – ie. a software interface into hardware, then it starts to make sense why calculus and linear algebra are handy skills to have.

Abstracting out that low level interface requires you to understand how the device operates. Electronics devices are still bound by the laws of physics. Calculus and linear algebra provide a means to model the behavior of the device. Modeling the device lets you provide a service into its functionality.

That having been said, those two fields are not the end-all be-all for Systems Programming. I know quite a few EE’s who didn’t do as well with calculus and linear algebra but can still explain what the device is doing fairly succinctly.

3

General web application and/or administrative programming doesn’t involve much application of linear algebra or calculus, but many specialist fields do. If you deal with geometry you’re bound to run into linear algebra. Most physics programming also deals with both algebra and calculus. As well as just about anything having to do with waveform manipulation, such as sound and radio programming.
In general it is more important to understand discrete mathematics which, amongst other things, deals with set theory, graph theory and formal (boolean) logic which is useful in many applications like information management, databases and other places where data and/or logic combine.
In the case of Systems programming I don’t see that many applications.

2

As others have mentioned, any mathematics courses in university can sharpen your problem solving and deductive reasoning skills. These are important to almost anyone.

But sometimes knowing some linear algebra can be helpful, particularly for some pretty good business ideas.

System Programming, as far as I know, is about osdev, drivers, utilities and so on. I just can’t figure out how calculus and linear algebra can be helpful on that.

With calculus it’s pretty easy, as soon as one takes a closer look at the course contents. It is closely related to algorithm complexity, Big-O notation – stuff like that, pretty fundamental in programming.

Equations are what you get when estimating algorithm complexity. Three-level nested loops from 0 to N are N3, two-level nested loops are N2, one is N. Evaluation you get could look like (N3 + 2 * N2 + N) – that’s an equation.

Now, if you want to better understand how quickly execution time will grow when N increases, this is closely related to derivatives / differentiation. Other parts of calculus you may find helpful are limits and asymptotic analysis – these will lead you to understanding Big-O notation, better scoring at programming interviews and possibly, better doing systems programming.

  • You are assigned to design file allocation table, what data structure are you going to use? Assuming that there are many small files which are rarely modified, what would be preferable? Assuming a relatively small amount of large files that are always appended at the end, are you going to use the same structure? How would you decide?

As for Linear Algebra, here programming applications shoot at you from the very first picture.

If you ever will have to deal with raster graphics (eg in video drivers), pictures like above will be coming at you in your worst nightmares.

  • How come that test #12345 shows missing pixel? did I do something wrong implementing Bresenham? could it be just a mistake in test design not properly accounting for rounding errors?

2

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật