which computing modules to take in undergraduate?

Joined
3/29/14
Messages
6
Points
13
Because I am not majoring in computer science, I want to know what types of computing modules are most relevant and useful? Or is basic programming knowledge more than sufficient?

I could also take a minor in comp science, which would requires me to take two modules from database systems, software engineering, computer networks and operating systems together with basic programming module and data structures and algorithms. Which two should i pick?
 
A Computer Organization/Systems course -- covering topics along the ones in the following books -- would be a good tool to have in your toolbelt:
- Bryant & O'Hallaron (2010) "Computer Systems - A Programmer's Perspective", 2nd Edition
- Patterson & Hennessy (2013) "Computer Organization and Design - The Hardware-Software Interface", Fifth Edition

Too many beginning programmers can completely unnecessarily get stuck on topics (like I/O & memory costs, indirection (e.g., pointers), performance (e.g., cache), floating-point arithmetic, etc.) that seem "mysterious" and "complex" only when treated as black boxes.

Granted, making the best use of caches (and memory hierarchy in general -- only becoming more relevant with the increasing processor-memory gap and developments like GPGPU) will always involve some difficulty -- but after a course like this you'll be equipped to at least be able to do some initial explorations & experiments on your own (and understand the results from your profiler software, like cache misses) -- and won't have to rely on blind faith. Also, you'll see things like pointers for what they truly are (i.e., trivial) ;-)
 
Database Sytems - Absolutely Essential
Programming Languages (Java / C++) - TWO courses are Absolutely Essential
Data Structures and Algorithms - Absolutely Essential
Software Engineering - Highly Recommended
Computer Networks - Optional (Low Priority)
Operating Systems - Optional (Low Priority)
 
Too many beginning programmers can completely unnecessarily get stuck on topics (like I/O & memory costs, indirection (e.g., pointers), performance (e.g., cache), floating-point arithmetic, etc.) that seem "mysterious" and "complex" only when treated as black boxes.

Granted, making the best use of caches (and memory hierarchy in general -- only becoming more relevant with the increasing processor-memory gap and developments like GPGPU) will always involve some difficulty -- but after a course like this you'll be equipped to at least be able to do some initial explorations & experiments on your own (and understand the results from your profiler software, like cache misses) -- and won't have to rely on blind faith. Also, you'll see things like pointers for what they truly are (i.e., trivial) ;-)

So from a quant perspective, are standard introductory classes in C++ irrelevant? Do they focus too much on the topics you speak about? More specifically, what do you recommend an absolute beginner focus on, learning a language? Is a systems oriented approach necessary for quant work and development?

I realize that scientific programming is awful and geared towards churning out a solution in spaghetti code format, without thought going to reusability of the code, usability by other people, etc... is your post geared towards that?

Database Sytems - Absolutely Essential
Programming Languages (Java / C++) - TWO courses are Absolutely Essential
Data Structures and Algorithms - Absolutely Essential
Software Engineering - Highly Recommended
Computer Networks - Optional (Low Priority)
Operating Systems - Optional (Low Priority)

What does a typical "Database Systems" class focus on, and why is it absolutely essential? For a quant trainee, is "Software Engineering" important, unless you're actually creating code from scratch?
 
Learning a first language is absolutely essential... This is your first step at using a computer for other purposes than Facebook.
 
Database Sytems - Absolutely Essential
Programming Languages (Java / C++) - TWO courses are Absolutely Essential
Data Structures and Algorithms - Absolutely Essential
Software Engineering - Highly Recommended
Computer Networks - Optional (Low Priority)
Operating Systems - Optional (Low Priority)
would python and java be sufficient?
 
C++ is king because by learning it, you will understand deeper concepts and have it easier later on when learning a new language.
Who do you think you are, giving fatherly advice to ppl.

"C++ is king...", aero-malik already said that. They were his words, not yours. You stole his words and made them yours. You pathetic little moron!
 
Back
Top Bottom