• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Course on Assembly/Machine Language

Joined
8/15/11
Messages
11
Points
11
I understand that having knowledge of assembly language may help one to write better code, but is it necessary to spend time on such a course for the purpose of MFE programs? Here is the description:

Introductory course on computer architecture, assembly language, and operating systems fundamentals. Number systems, machine language, and assembly language. Procedure calls, stacks, interrupts, and traps. Assemblers, linkers, and loaders. Operating systems concepts: processes and process management, input/output (I/O) programming, memory management, file systems.

As I've already taken two introductory courses on C++, I'm wondering if I should spend time on other CS courses such as Database Systmes (SQL), Algorithms, or Math courses such as Monte Carlo Methods? Any input is welcome :)
 
Generally SQL is more useful in the real world.

Except in the crazy world of algo trading where all the really low level stuff matters.
 
Course on data structure and algorithm is more helpful than assembly to write efficient code.
 
Course on data structure and algorithm is more helpful than assembly to write efficient code.
And course on equities and fixed income products is more helpful than time series and econometrics to be a successful quant or trader.

I mean, how one can substitute another ? :)
 
Course on data structure and algorithm is more helpful than assembly to write efficient code.

But in terms of obtaining a job in the software industry (just trying to hedge my option), is assembly language a requirement? Otherwise, why would it be built into a standard Computer Science curriculum?
 
But in terms of obtaining a job in the software industry (just trying to hedge my option), is assembly language a requirement? Otherwise, why would it be built into a standard Computer Science curriculum?
Being a direct requirement or not in industry does not necessarily have bearing on whether a course should be in a curriculum. If knowing assembly will make you a better coder/debugger in other languages and gives you the necessary understanding of computer architecture, then it certainly should be in a curriculum...
 
If you don't know Assembly, how can you truly understand how programs (C, C++) use memory?
 
Before you learn assembly language programming, you have to first take courses in Microprocessor Architecture and Microprocessor Interfacing and Peripherals. In assembly language programming you are manipulating bytes directly at the register level. It will not make you a better programmer. It is only used in companies like Microsoft to speed up certain sections of the code and in companies like Intel or Motorola.
Just focus on either C++ or Java. That will keep you busy for at least five years.
 
TraderJoe,

I agree with you except on this part:

It is only used in companies like Microsoft to speed up certain sections of the code and in companies like Intel or Motorola.

Assembly language is used by any company that does work at the microprocessor level. Sometimes it has to do with speed and sometimes it does not. I used to work for a power supply manufacturing company for 3 years and I dealt with assembly language at the microcontroller level.
 
I'm wondering if I should spend time on other CS courses such as Database Systmes (SQL), Algorithms, or Math courses such as Monte Carlo Methods? Any input is welcome :)
You can learn the above subjects on your own. There are so many online courses available for free.
But Assembly language is difficult learn. If you are planning to work on software engineer it will be really useful. You will spend lot of time debugging. Knowing assembly helps here. Also understanding languages like Java/C# and how they work (jvm or clr) will be easier if you know something about assembly and computer architecture.
 
my 2 cents: don't learn Assembly Language until you really needed. I doubt you will ever need it. Cross that bridge when you get there.
 
my 2 cents: don't learn Assembly Language until you really needed. I doubt you will ever need it. Cross that bridge when you get there.
no project involves writing code in assembly. but you must know assembly to write better code in non-assembly languages.
 
no project involves writing code in assembly. but you must know assembly to write better code in non-assembly languages.
This is definitely not true because when you write a program in a "non-assembly" language you are at the mercy of the code generated by the compiler or how the code is interpreted (if you are using an interpreter). Knowing assembly won't help you at all.
 
This is definitely not true because when you write a program in a "non-assembly" language you are at the mercy of the code generated by the compiler or how the code is interpreted (if you are using an interpreter). Knowing assembly won't help you at all.
However, knowing assembly will help one understand what is actually going on under the hood, which is useful in certain situations. In my experience, some elusive bugs in C++ code are easier found when stepping through the generated assembly and watching the registers/stack etc. -- maybe that's just me though. Sometimes doing a simple push and pop inside a C++ program is easier than casting (but this violates C++ standard)

Additionally, some arcane tasks in C++, such as creating self-modifying/obfuscated/encrypted code (which is prevalent these days to inhibit reverse engineering) would be almost impossible without knowledge of assembly. And on the flip side, hard to do any reverse engineering without knowledge of assembly :cautious:
 
However, knowing assembly will help one understand what is actually going on under the hood, which is useful in certain situations.

It will give you an idea but again, you can only guess what the compiler is doing for you and sometimes your guess might be completely wrong.

In my experience, some elusive bugs in C++ code are easier found when stepping through the generated assembly and watching the registers/stack etc. -- maybe that's just me though. Sometimes doing a simple push and pop inside a C++ program is easier than casting (but this violates C++ standard)

If you need to step through the assembly code of your C++ program, you have bigger issues. Unless your code calls libraries that you didn't write, you shouldn't need to step through the assembly of your OWN code.

Additionally, some arcane tasks in C++, such as creating self-modifying/obfuscated/encrypted code (which is prevalent these days to inhibit reverse engineering) would be almost impossible without knowledge of assembly.

Are we talking about finance here?
 
If you need to step through the assembly code of your C++ program, you have bigger issues. Unless your code calls libraries that you didn't write, you shouldn't need to step through the assembly of your OWN code.
You are right. For most conventional coding issues there should not be a need. I have encountered situations where perusing the assembly made debugging easier (may have been with C code though, not C++) -- I wish I had an anecdotal example offhand to debate upon, but I do not -- which demonstrates how rare a situation it really is.

Are we talking about finance here?
Not really, unless financial institutions have implemented such measures to protect their proprietary executable code from their own employees, which I doubt. It is possible (I would hope) that commercial financial software vendors do implement such measures. If not, maybe they should... Also, I would think that for HFT, assembly/architecture would be very useful to know.

I just feel the need to justify all those wasted hours as a kid learning Assembly :notworthy:

And I definitely agree with this statement:
Course on data structure and algorithm is more helpful than assembly to write efficient code.
 
Back
Top