Tag Info

Hot answers tagged

32

Run your tests in a virtual machine with limited memory and only one core. The old machines people still may have now are mostly Pentium 4 era things. That's not that unrealistic - I'm using one myself right now. Single core performance on many current PCs normally isn't that much better, and can be worse. RAM performance is more important than CPU ...


23

Algorithms are a very central part of any kind of computation or computer program. In fact, computer programs are only a bunch of algorithms slapped together with some fancy structured data. That's it. Algorithms + Data Structures = Programs. A computer program consists of logical rules which it follows. Such rules are structured as algorithms. Rules alone ...


17

I just sent my development manager an email the other day where I timed how long it took me to restart my computer, as well as things like opening Visual Studio, compiling, etc. Then I multiplied this by an estimate of how many times per day I do these things, then by the # of working days per year, then by our number of developers, and then finally by our ...


16

If you are looking for a good, theoretical base of knowledge, check out the MIT Open CourseWare site. The site has a great collection of content, including videos, of computer science / engineering classes. I would start with the great "Structure and Interpretation of Computer Prorgams", and alo check out the "Intro to Algorithms" class. ...


13

imagine you have a drum. If you beat it 10 times a second that would give you the transmission rate. You can hear it from a hundred meters away in about a second (speed of sound) which is the propogation speed. Edit: 10 times a second being 10 bits of information send. You can beat faster, increasing the transmission rate, but you can't increase the speed ...


13

They are not awesome. It's just an ordinary tool we use in development like any other tools. Its sole purpose is to provide an answer to a specific problem, avoiding reinventing the wheel again and again, i.e. wasting your time. Examples: If you need to sort a list, you would use an existent algorithm, instead of wasting your time inventing your own. ...


11

The way to spot significant algorithm inefficiency is to profile you code. The way to catch memory overuse is to first understand how much memory your target uses have, and then design accordingly, and regularly test in that environment. If you are writing threaded code, testing on multiple machines with differing CPU speeds will help highlight specific ...


9

Install Virtual PC, create a hardware profile, create a virtual machine and start playing :)


9

What do you mean "not awesome"? How did your first sorting function look like? Did it take N log(N) time to sort the array? Or was it a variation of insertion/selection/bubble sort? Would Internet search engines be possible without algorithms? Would people use Google as often as they do if it took as little as 2 minutes to search through 20 billion of ...


8

Firstly, bit manipulation arises naturally in one small branch of discrete mathematics and algorithms: finite sets. When the size of the set is predefined, presence of an item in a set can be indicated by setting the corresponding bit. So, there is a class of algorithms where the optimal implementation is expressed in terms of bit manipulation. However, ...


8

Most universities offer four different degree programs that teach programming: IT, computer science, software engineering, and computer engineering. Different schools call them different names. Some schools might just have one degree, but have different specialization tracks within the degree, but the four areas are almost always present in some form. ...


7

In order to tell where your bottleneck is, you have to do some investigation as to the nature of your slowdowns. Also know that the #1 cause for slow Java application performance is not giving the JVM enough RAM. So go through the checklist: Am I constantly hitting the garbage collector? This is the first thing to check with Java applications. Since ...


7

As you're asking for books about computer science, I can recommend some books with basic knowledge which is unlikely to get outdated too soon. Algorithms & Data Structures: The Algorithms Design Manual Structure and Interpretation of Computer Programs (as suggested by Daniel Roseman, freely available) Compilers: Compilers Software-Engineering: The ...


7

With $900 you could get a pretty good system. Some key things to look for: Processor speed: More is better. If you're doing 3D game dev than you'll want at least a quad-core with 2.5+ GHz, if possible 3 or more GHz would be ideal Memory: Again, more is better. I would reccommend at least 4GB, 8 or more would be good. Graphics card: For just regular ...


7

They are not insightful in new ways about human cognition at all. I’m not sure how you reached this conclusion but it’s completely wrong. The opposite is true: algorithms offer the deepest insight into human cognition ever. This is formalised in the Church–Turing thesis. The conjecture is about the computability of functions but it has a very important ...


6

If you're talking about getting a bachelor's degree starting with no previous college education, almost certainly not. Some institutions award 2-year degrees, and by working your tail off you can very possibly finish a 4-year degree in three years (although I took the necessary courseload in precisely 1 term and found out why not to). Assuming you're ...


6

Distributed resources is what defines a grid. Although good answers thus far I believe most of you have missed some of the big key points. To my knowledge there was a committee which has defined protocols to standardize cloud computing. Google, amazon, microsoft, the big name players have all implemented their own cloud solutions to provide SAAS ...


6

Well, there are instructions that don't access the data cache, but it's impossible to access the data cache without using an instruction, so by definition the instruction cache is used more often. If you're talking about which one has fewer cache misses, that's going to be highly program specific. A tight loop that accesses a gigabyte of memory will have ...


5

I asked a similar question over on StackOverflow: How to measure productivity loss from slow PCs running Visual Studio?. It is of course specific to Visual Studio. But the idea (the accepted answer in that case) is that you come up with some numbers to which management and non-technical folk can understand. Measure slow machines as well as fast ...


5

Don't upgrade the hardware, upgrade your IDE to Intellij A hardware upgrade probably isn't going to make much difference given your current specification. Instead, rethink your IDE and look at Intellij IDEA. There is very little learning curve (even keymaps are the same) and you'll be amazed at how much more productive you will become: How are IntelliJ ...


5

The correct answer depends on what you want to do with CS. If you just want to continue programming as a hobby or side project, you may benefit most from simply learning a new programming language. Though programming languages change with time, learning one that is wildly different from what you are used to is a great way to familiarize yourself with ...


5

stares at multiple computer screens 8-10 hours a day Don't! If you're staring at the screen all the time, you're doing it wrong (and your eyes are warning you!). The major problem with monitors (or any objects at ~fixed distance, such as books), is that your eyes are focused at a fixed distance for prolonged time, so the muscles that focus the eye are ...


4

Look to the enterprise. You will find cloud computing on the consumer side, but it is often not as you think of cloud computing. You hit the nail on the head when you mentioned Google Services, also look at all the Web services business popping up, Evernote, Mint.com, etc. They are all in the cloud. If you think of Cloud Computing as an Infrastructure ...


4

I just install the tools I need once (per computer). I put a lot of effort into making my projects as portable as possible. They shouldn't have to depend on a specifically setup or configured environment. Any machine with Visual Studio and [Git/Hg/Svn] client should be able to get the latest source and just run it. I believe this makes collaboration easier, ...


4

Can computers that are not up to the task really be severely detrimental to productivity of programmers? Yes, they can, but then there's the matter of defining just what the "task" is and what tech is useful and what is just a toy / distraction. Speaking for myself, a 60+, old school Unix hacker who works on the backend, I wouldn't get much benefit ...


4

There's no way that one course will make you very good at combinatorics, prob & stats, NT, proofs, formal languages, and the other things you mentioned. Usually, it's multiple courses. Most colleges have a course that covers prerequisite math for CS majors, and they cover some number theory, some combinatorics, and some graph theory. You usually cover ...


4

The problem is you are using 3 bits for m and r, and they must be represented using 4 bits to get unsigned values. (Using just 3 bits, 101 = -3 and 100 = -4, and the result does = 12). So redoing this with 4 bits, one gets: example : 5 * 4 A = 0101 0000 0 // binary of 5 is 0101 S = 1011 0000 0 // 2's complement of 5 is 1011 P = 0000 0100 0 // binary of ...


4

Coming here after the battle, but since there are no accepted answer yet and seeing that @Luke refuses to get the rep he deserves, here is a quick summary of the link he provided. So the full algorithm is available here: http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html The idea is to bootstrap your mesh with a simple method ...



Only top voted, non community-wiki answers of a minimum length are eligible