A bit of context for non-Princeton readers (commenting with a throwaway because I don't want to dox myself).
You can take the CS major as either a Bachelor's or an Engineering degree. Princeton requires all Bachelor's students to do two semesters of "independent work" their junior year, plus a thesis senior years. Engineering students have to do one semester of independent work, but they have to take additional courses and have more specific requirements. (The CS BSE degree is currently unique in not requiring a thesis.)
For many departments, junior independent work is a 20ish page research paper you write over the course of the semester either as part of a seminar or one-on-one with an advisor, so the CS independent work is intended to be roughly equivalent in terms of rigor. It's my understanding that most CS students work on a significant piece of software with a writeup at the end of the semester—often (but not always) in a semester on a single topic (eg computer vision, digital audio, etc) junior fall, and one-on-one with an advisor (or in a lab) junior spring. BSE students will often do their one semester of independent work senior year, in either form.
It's often pretty daunting staring at these requirements—and a lot of the onus is on you, the student, to figure out what you want to do and initiate it—so this advice seems to me to be aimed at students starting to plan their independent work.
Don't take this as gospel—I'm actually not a CS major, somewhat ironically, though I have many friends who are. Just hope this helps to contextualize Kernighan's advice.
20-page paper is what you would need to write up at University of Leeds, UK; so I am not sure what daunting here means, given the fact that you at one of the most prestigious universities of the world?
"daunting: making you feel slightly frightened or worried about your ability to achieve something"
Do you think that students at prestigious universities are somehow immune to feelings like this? Pursuing your first independent project, especially with high standards, can be daunting for anyone.
In case you're not aware, Brian Kernighan worked with Dennis Ritchie and Ken Thompson at Bell Labs. Brian wrote a lot of the Unix text processing utilities, and is the "k" in awk.
"In 1970, Brian Kernighan suggested the name "Unix", a pun on the name "Multics."
His family is from Canada. I had the opportunity to attend a small lecture at U. of Waterloo on "Little Languages" when he was in town in the mid 80's, with about 10 other students. One of my biggest influences.
Some context on the article link. There was a time when CS was a novel area of research. A lot of the experimentation into OS theory was made obsolete by Linux, since you could just tweak an Open Source kernel instead of doing a PhD-length project in schedulers, etc.
Back at Google in NYC, my manager and I had desks near Peter Weinberger, and on the other side of us, way down a hallway was Brian Kernighan's (part-time) desk.
My manager was complaining about awk within earshot of Peter, making embarrassingly sloppy cheap-shot arguments, and rather loudly. I said to him "You know awk stands for Aho (/me points out window), Weinberger (/me points over at Peter) and Kernighan (/me points down toward Brian's desk), right?" My manager kind of ducked his head and quickly dropped his volume.
I never interacted with Kernighan, but everyone said he was very friendly and surprising humble. Weinberger was always very friendly when I interacted with him in the micro-kitchen, but I never worked on a project with him.
On a related topic, after AOL bought Netscape, many of the "refugees" went to Yahoo. There was one little wing with most of the famous server and HTML pioneers sitting next to each other, including Rob McCool and Laura LeMay.
FYI: awk is fine if you don't have perl installed, but perl is 10x faster, and more amenable to modular programming.
Man I'd love to have a two semester course where I could work on a project and get advice from Brian Kernighan. I hope all the Princeton CS students understand how lucky they are
Oh, the vast majority of students definitely are well aware. His classes are in high demand and regularly fill up quickly and spill into wait-lists, come registration time.
It's been about a decade since I attended, but IME I felt there were many undergraduate courses that were competently taught by overqualified luminaries in their fields (meaning, for those examples, you could probably get the same quality education from a much cheaper institution), but Prof. Kernighan's classes stood out as among the 2-3 truly unique and special highlights of a Princeton CS education.
OTOH, there's nothing quite like disappointing professors in their own classes while studying their own eponymous algorithms (sorry Prof. Tarjan... it's not you, it's me).
That’s often the case in research. For my first 6-8 months in my new lab I pretty much spend most of my mental energy finding how to combine my own research interests while fitting in the lab (i.e. do something that my prof would approve). It’s mostly solved now, in part by doing some side project secretly, but the big take away is that politics is actually an important part of how research is done in real life.
You can take the CS major as either a Bachelor's or an Engineering degree. Princeton requires all Bachelor's students to do two semesters of "independent work" their junior year, plus a thesis senior years. Engineering students have to do one semester of independent work, but they have to take additional courses and have more specific requirements. (The CS BSE degree is currently unique in not requiring a thesis.)
For many departments, junior independent work is a 20ish page research paper you write over the course of the semester either as part of a seminar or one-on-one with an advisor, so the CS independent work is intended to be roughly equivalent in terms of rigor. It's my understanding that most CS students work on a significant piece of software with a writeup at the end of the semester—often (but not always) in a semester on a single topic (eg computer vision, digital audio, etc) junior fall, and one-on-one with an advisor (or in a lab) junior spring. BSE students will often do their one semester of independent work senior year, in either form.
It's often pretty daunting staring at these requirements—and a lot of the onus is on you, the student, to figure out what you want to do and initiate it—so this advice seems to me to be aimed at students starting to plan their independent work.
Don't take this as gospel—I'm actually not a CS major, somewhat ironically, though I have many friends who are. Just hope this helps to contextualize Kernighan's advice.