Tag Archives: computer science

The Technology Job Market is Strong

Technology: It’s Where the Jobs Are by Arik Hesseldahl, Business Week:

Here’s a hint for high school graduates or college students still majoring in indecision: Put down that guitar or book of poetry and pick up a laptop. Study computer science or engineering

Seattle added a net 7,800 jobs [in 2006], followed by the New York and Washington (D.C.) metro areas, which added more than 6,000 jobs apiece. The fastest-growing area on a percentage basis was the combined metro area of Riverside-San Bernardino, Calif., which saw its tech-employment figures grow by 12%.

The highest concentration of technology workers – 286 for every 1,000 workers – was in, no surprise, Silicon Valley. Boulder, Colo., came in second, with 230, and Huntsville, Ala.; Durham, N.C.; and Washington rounded out the top five in density.

Now for the answer to the question on everyone’s mind: Where are the highest salaries? That would be Silicon Valley, where the average tech worker is paid $144,000 a year. That’s nearly double the $80,000 national average for tech jobs.

More than 850,000 IT jobs will be added during the 10-year period ending in 2016, which would be a rise of 24%. Add all the jobs that will replace retiring workers, and the total increase could be a tidy 1.6 million. That means one job in every 19 created over the course of the next decade will be in technology.

And while demand for tech-savvy employees is certainly multiplying, another survey, this one from the Computing Research Assn. and released in March, found a 20% drop in the number of students completing degrees in computer-related fields, and the number of students enrolling in these programs is the lowest it’s been in 10 years, as far back as the data go.

Related: Engineering Graduates Again in Great ShapeWhat Graduates Should Know About an IT CareerIT Employment Hits New High AgainThe IT Job Marketposts on technology, science and engineering careers

How Computers Boot Up

How Computers Boot Up

Things start rolling when you press the power button on the computer (no! do tell!). Once the motherboard is powered up it initializes its own firmware – the chipset and other tidbits – and tries to get the CPU running. If things fail at this point (e.g., the CPU is busted or missing) then you will likely have a system that looks completely dead except for rotating fans. A few motherboards manage to emit beeps for an absent or faulty CPU, but the zombie-with-fans state is the most common scenario based on my experience. Sometimes USB or other devices can cause this to happen: unplugging all non-essential devices is a possible cure for a system that was working and suddenly appears dead like this. You can then single out the culprit device by elimination.

If all is well the CPU starts running. In a multi-processor or multi-core system one CPU is dynamically chosen to be the bootstrap processor (BSP) that runs all of the BIOS and kernel initialization code. The remaining processors, called application processors (AP) at this point, remain halted until later on when they are explicitly activated by the kernel. Intel CPUs have been evolving over the years but they’re fully backwards compatible, so modern CPUs can behave like the original 1978 Intel 8086, which is exactly what they do after power up. In this primitive power up state the processor is in real mode with memory paging disabled. This is like ancient MS-DOS where only 1 MB of memory can be addressed and any code can write to any place in memory – there’s no notion of protection or privilege.

Related: Harvard Course on Understanding Computers and the InternetProgramming RubyBabbage Difference Engine In Lego

Engineering Graduates Again in Great Shape

Once again engineering and computer science graduates are receiving the highest starting salaries. Previous posts: Lucrative college degrees (2006)starting salaries for engineers (2005)High Pay for Engineering Graduates 2007.

According to a survey, these are the top-paying majors for 2007-08 bachelor degree graduates:
$63,616 — Chemical engineering (up 6.5%)
$59,962 — Computer engineering
$59,873 — Computer science (up 14.7%)
$58,252 — Industrial/manufacturing engineering
$57,821 — Mechanical engineering (up 5.7%)
$57,999 — Aerospace/aeronautical/astronautical engineering

Source: Spring Survey, National Association of Colleges and Employers

Engineering Jobs Top U.S. Skills Shortage List

Engineering positions are the most difficult jobs to fill for U.S. employers, according to Manpower Inc.’s 2008 Talent Shortage Survey released April 24. Of 2,000 U.S. firms responding, 22% said they had difficulty filling positions, ranking engineers, machinists/machine operators and skilled manual trades as the top three toughest positions to fill, respectively

Grads’ job prospects weakening by degrees

In one year, the former hydraulic repairman will have a bachelor’s degree in mechanical engineering from Purdue University Calumet. And, as far as he can tell, he can write his own ticket.

“I’m finding jobs pulling at me left and right,” he said last week at a manufacturing industry job fair at the college. “The professors told us there’s such a demand, if you go to a job fair, you can walk out with a job.”

Vela, 35, happens to be in a field where demand remains strong, despite the uneven economy. Overall starting wages for mechanical engineering grads will be up 3.4 percent this year, with an average salary offer of $56,429, according to the National Association of Colleges and Employers. For many other college grads looking for a job at this time of year, the prospects are not as sweet.

Related: Career Center report high increase in demand for computer science graduatesIT Employment Hits New High AgainS&P 500 CEOs – Again Engineering Graduates Lead

Starting salaries: What the future holds (UK)
Continue reading

Interview with Donald Knuth

Interview with Donald Knuth by Andrew Binstock, April 2008:

I currently use Ubuntu Linux, on a standalone laptop—it has no Internet connection. I occasionally carry flash memory drives between this machine and the Macs that I use for network surfing and graphics; but I trust my family jewels only to Linux. Incidentally, with Linux I much prefer the keyboard focus that I can get with classic FVWM to the GNOME and KDE environments that other people seem to like better. To each his own.

I’m basically advising young people to listen to themselves rather than to others, and I’m one of the others. Almost every biography of every person whom you would like to emulate will say that he or she did many things against the “conventional wisdom” of the day.

Still, I hate to duck your questions even though I also hate to offend other people’s sensibilities – given that software methodology has always been akin to religion. With the caveat that there’s no reason anybody should care about the opinions of a computer scientist/mathematician like me regarding software development, let me just say that almost everything I’ve ever heard associated with the term “extreme programming” sounds like exactly the wrong way to go…with one exception. The exception is the idea of working in teams and reading each other’s code. That idea is crucial, and it might even mask out all the terrible aspects of extreme programming that alarm me.

I also must confess to a strong bias against the fashion for reusable code. To me, “re-editable code” is much, much better than an untouchable black box or toolkit. I could go on and on about this. If you’re totally convinced that reusable code is wonderful, I probably won’t be able to sway you anyway, but you’ll never convince me that reusable code isn’t mostly a menace.

Related: Donald Knuth – Computer ScientistProgrammers at WorkPreparing Computer Science Students for JobsTeach Yourself Programming in Ten YearsCurious Cat Ubuntu posts

Is Computer Science a Science?

Is computer science a science?

Most people seem to apply a certain litmus test of sorts to determine if something is a science. Something is a science if

(1) it uses the scientific method (i.e., empirical research and observation)
(2) it involves studying “fundamental principles” of the natural or physical world

(1) is, I think, a bit easier to address. I use the scientific method all the time in my work: I form hypotheses about how a particular system or algorithm should behave, develop experiments to test the hypothesis, gather data, analyze, etc. Several commenters to the first post in the series discuss the same thing. Joe, for instance, says this about his work: “One of the things I’ve noticed as a developer/engineer for the last 20 years is that I use the techniques of science all the time, only I’m not studying “nature” (be it the physics world, chemicals, biology, or people). I’m applying the disciplines and the scientific process to stuff that other people have done.” (I’ll get back to this point in a minute.)

Related: Computer Science as ScienceComputer Science PhD OverviewWho Killed the Software Engineer?Electrical Engineering vs. Computer Science 🙂

Computer Science Unplugged

Computer Science Unplugged offers a free, interesting collection of activities designed to teach the fundamentals of computer science without requiring a computer. Because they’re independent of any particular hardware or software, Unplugged activities can be used anywhere, and the ideas they contain will never go out of date. Unplugged activities have been trialled and refined over 15 years in classrooms and out-of-school programs around the world maintained by the University of Canterbury in Christchurch New Zealand.

Topics include: Binary Numbers, Text Compression, Error Detection, Searching Algorithms, Sorting Algorithms, Steiner Trees and Public Key Encryption.

Related: Leadership Initiatives for Teaching and TechnologyFun k-12 Science and Engineering LearningEducation Resources for Science and Engineeringk-12 Engineering Education

Google Summer of Code Projects

Over the last three years Google Summer of Code has provided 1500 students from 90 countries the chance to work on open source projects. Each participant will receive $4,500 as a stipend. Student applications will be accepted from March 24th to March 31st.

Details on the software projects are available now. Given the short time that the application is actually open getting a start looking for projects that interest you might be wise.

externs.com offers listings of science internships and engineering internships.

Related: Preparing Computer Science Students for JobsOpen Source for LEGO Mindstorms Open Source: The Scientific Model Applied to Programmingposts on fellowships and scholarships

Easy File Sync Over the Internet

Dropbox aims to simplifying file backup, sync, and sharing for the world. Like other Y Combinator startups it is small and focused – 3 MIT computer science alums. Watch a web presentation that shows a very useful looking service. It is in private beta now – you can register to be notified when it is open for public launch.

Y Combinator: “We care more about how smart you are than how old you are, and more about the quality of your ideas than whether you have a formal business plan.” You have until April 2nd to apply for funding for the current cycle.

Related: Google and Paul Graham’s Latest EssaySix Principles for Making New Things by Paul Graham

Google Summer of Code 2008

Over the last three years Google Summer of Code has provided 1500 students from 90 countries the chance to work on open source projects. It also has provide some great software and software enhancements to the open source community. Google has increased their funding by another $1 million. Each participant will receive $4,500 as a stipend.

I don’t understand why they have such a short window of opportunity to apply – but this is how they do it every year. They are accepting applications from open source projects, to act as mentoring organizations, through March 13th. Student applications will be accepted from March 24th to March 31st. See Google’s announcement.

externs.com offers listings of science internships and engineering internships.

Related: Preparing Computer Science Students for JobsIT Employment Hits New High AgainA Career in Computer ProgrammingHoward Hughes Medical Institute Summer Research JobsThe Joy of Workposts on fellowships and scholarships

Who Killed the Software Engineer?

Computer Science Education: Where Are the Software Engineers of Tomorrow? by Dr. Robert B.K. Dewar and Dr. Edmond Schonberg

Over the last few years we have noticed worrisome trends in CS education. The following represents a summary of those trends:
1. Mathematics requirements in CS programs are shrinking.
2. The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals.

As faculty members at New York University for decades, we have regretted the introduction of Java as a first language of instruction for most computer science majors. We have seen how this choice has weakened the formation of our students, as reflected in their performance in systems and architecture courses.

Every programmer must be comfortable with functional programming and with the important notion of referential transparency. Even though most programmers find imperative programming more intuitive, they must recognize that in many contexts that a functional, stateless style is clear, natural, easy to understand, and efficient to boot.

An additional benefit of the practice of Lisp is that the program is written in what amounts to abstract syntax, namely the internal representation that most compilers use between parsing and code generation. Knowing Lisp is thus an excellent preparation for any software work that involves language processing.

This is an excellent article: any CS students or those considering careers as programmers definitely should read this. Also read: Computer Science Education.

via: Who Killed the Software Engineer?

Dewar, a professor emeritus of computer science at New York University, believes that U.S. colleges are turning out programmers who are – there’s no nice way to say this – essentially incompetent.

Related: A Career in Computer ProgrammingProgramming Grads Meet a Skills Gap in the Real WorldProgramming RubyWhat you Need to Know to Be a Computer Game ProgrammerHiring Software DevelopersWhat Ails India’s Software Engineers?