Tag Archives: programming

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

Programmers at Work

Programmers at Work: Interviews With 19 Programmers Who Shaped the Computer Industry. Peter Norvig, Director of Research at Google had written a very positive review of it on Amazon

If you want to know what programmers do, the best thing is to read their code, but failing that (or in addition to that) you need to read interviews like this. I wish someone would do another book like this covering programmers of the last 15 years, but this one has a very good selection of programmers from the early PC era, and the interviews are very well-done: they let the programmer speak, yet the interviewer keeps them on track.

The author of the book, Susan Lammers, is now publishing the interviews and new discussions online. For example: Butler Lampson 1986/2008 Reflections

Lampson: Everything should be made as simple as possible. But to do that you have to master complexity.

Lampson: A beautiful program is like a beautiful theorem: It does the job elegantly. It has a simple and perspicuous structure; people say, “Oh, yes. I see that’s the way to do it.”

via: Confessions of a Science Librarian

Related: Founders at Work (Wozniak and more)Donald Knuth, Computer ScientistProgramming Grads Meet a Skills Gap in the Real WorldLean Software DevelopmentA Career in Computer Programming

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?

DNA Seen Through the Eyes of a Coder

Great paper looking at DNA from the perspective of a computer programmer. DNA seen through the eyes of a coder by Bert Hubert:

The language of DNA is digital, but not binary. Where binary encoding has 0 and 1 to work with (2 – hence the ‘bi’nary), DNA has 4 positions, T, C, G and A. Whereas a digital byte is mostly 8 binary digits, a DNA ‘byte’ (called a ‘codon’) has three digits. Because each digit can have 4 values instead of 2, an DNA codon has 64 possible values, compared to a binary byte which has 256.

A typical example of a DNA codon is ‘GCC’, which encodes the amino acid Alanine. A larger number of these amino acids combined are called a ‘polypeptide’ or ‘protein’, and these are chemically active in making a living being.

Furthermore, 97% of your DNA is commented out. DNA is linear and read from start to end. The parts that should not be decoded are marked very clearly, much like C comments. The 3% that is used directly form the so called ‘exons’. The comments, that come ‘inbetween’ are called ‘introns’.

Related: RNA Interference WebcastHiring Software DevelopersDonald Knuth, Computer Scientist

Open Source: The Scientific Model Applied to Programming

xo-laptop: On the Open-Sourcing of Business – interesting post worth reading, though I disagree with some points:

There is no obligation to “give back” anything, though it often makes sense to participate in the community based on a particular open-source project. However, that is a strategic decision for you to make. Your sole obligation is to respect the license terms.

There is a difference between your sole legal obligation and your sole obligation. I agree legally all you are obliged to do is comply with the legal requirements. That does not mean that is your sole obligation. I don’t see any problem making money in efforts involving open source efforts but I do believe that as that happens an obligation (perhaps not legal but real none-the-less) grows to give back to the community (Google’s summer of code is a great example of giving back). Most open source efforts require that any additions you make to the software be given back to the community (those involved in open souce know this, I add this just for the information of those not familiar with open source practices). Legal obligations are the minimum you can be forced to do, not the only obligations one has. Great quote (emphasis mine):

I think the best is one I have often seen expressed by Linus Torvalds, and it was one of the explanations I gave in a talk to the New York City Linux User Group in a talk in December, 1999.

Simply put, free and open-source software is just the scientific model applied to programming: free sharing of work open collaboration; open publication; peer review; recognition of the best work, with priority given to the first to do a meaningful new piece of work; and so forth. As a programmer, it is the best arena in which to work. There are no secrets; the work must stand on its own.

Another great post on this topic: What Business Can Learn from Open Source.

Related: Open Source for LEGO MindstormsYoung Scientists Design Open-Source Program at NASAOpen-Source BiotechPublishers Continue to Fight Open Access to Science

Programming with Pictures

Programming with Pictures

Carnegie Mellon University’s Randy Pausch…argues, many computer science departments are a quarter century behind on adapting their instructional methods for the purpose of attracting and retaining students, continuing to teach the gateway course to the field — introductory programming — just as they did 25 years ago.

About 10 percent of the nation’s colleges now use Alice, an open-source, graphical software program available free online that allows users to learn the very basics of programming — concepts like iteration, if statements and methods — while making 3-D animations. Alice’s growth within college computer science departments has been impressive: Most colleges only began incorporating Alice in their introductory CS0 or CS1 courses within the past 18 months, since the release of an accompanying textbook.

But the software, currently readable to users in plain old English (a major drawback for many faculty who of course teach programming in standard computer languages like Java and C++), is potentially poised to penetrate far more colleges in 2008, when Alice 3.0 comes out in Java — featuring, this time around, sophisticated graphics, made available free by Electronic Arts Inc., from “The Sims,” the best-selling PC video game of all time. (And significantly, Pausch adds, one of the few games more popular with girls than boys. Computer science, he notes drily, has the unfortunate distinction of being the only discipline in the sciences to actually face declining female enrollments percentage-wise in the last 25 years).

Interesting. Related: Computer Science EducationA Career in Computer ProgrammingMicrosoft Wants More Engineering StudentsSo You want to be a Computer Game Programmer?software development posts on our management blog

Update: The Last Lecture Book by Randy Pausch

A Career in Computer Programming

Why a Career in Computer Programming Doesn’t Suck (A Response)

Programmers need to be lifelong learners. I’m not sure what else to tell you. Lots of people change their professions. It’s not too late for you. Alternatively, you could find a job using a stable technology that you enjoy. Maybe you should find somewhere that will let you use C or C++, both of which are unlikely to disappear anytime soon.

To the readers, pick a field that’s compatible with your own nature. You’ll be much happier. If you find that you’ve chosen the wrong field, change it. It’s just a job. Find something you actually enjoy, even if it means a massive career change. It’s better to be poorly-paid and happy than highly-paid and miserable.

Related: Hiring Software DevelopersWant to be a Computer Game Programmer?Engineering Graduates Get Top Salary Offers (CS is close)

Interview of Steve Wozniak

Excellent interview of Steve Wozniak from Founders at Work: Stories of Startups’ Early Days by Jessica Livingston, to be published in a few months.

I said, “No, I’m never going to leave Hewlett-Packard. It’s my job for life. It’s the best company because it’s so good to engineers.” It really treated us like we were a community and family, and everyone cared about everyone else. Engineers—bottom of the org chart people—could come up with the ideas that would be the next hot products for the company. Everything was open to thought, discussion and innovation. So I would never leave Hewlett-Packard. I was going to be an engineer for life there.

Sounds like Google today, see: How Google Works focused on engineering and Enginners at Google Make Decisions.
Continue reading

Donald Knuth – Computer Scientist

photo of Donald Knuth playing his home organ

Love at First Byte by Kara Platoni:

In the early ’60s, publisher Addison-Wesley invited Knuth to write a book on compiler design. Knuth eagerly drafted 3,000 pages by hand before someone at the publishing house informed him that would make an impossibly long book. The project was reconceived as the seven-volume The Art of Computer Programming. Although Knuth has written other books in the interim, this would become his life’s work. The first three volumes were published in 1968, 1969 and 1973. Volume 4 has been in the works nearly 30 years.

Its subject, combinatorial algorithms, or computational procedures that encompass vast numbers of possibilities, hardly existed when Knuth began the series. Now the topic grows faster than anyone could reasonably chronicle it. “He says if everyone else stopped doing work he would catch up better,” deadpans Jill Knuth, his wife of nearly 45 years.

Art of Computer Programming, Volume 1: Fundamental AlgorithmsArt of Computer Programming, Volume 2: Seminumerical AlgorithmsArt of Computer Programming, Volume 3: Sorting and Searching

Usually a lone wolf, Knuth collaborated on his typography programs with some of the world’s best typographers and his students. He produced two software programs, the TeX typesetting system and the METAFONT alphabet design system, which he released to the public domain. The programs are used for the bulk of scientific publishing today. “He made everybody’s life so much better and made the scholarly work so much more beautiful,” Papadimitriou says. “He has exported a lot of good will for computer science.”

See photo:

He likes to hide jokes in the index, as in Volume 3, where “royalties, use of” leads you to a page with an illustration of an organ-pipe array, a little wink to the 16-rank organ that dominates his home. He plays four-hands music with Jill, who swears that the neighbors tend to complain that the music emanating from their house is in fact not loud enough.

Related: