The Weblog of Titus Barik has been moved from a dedicated server at Layered Tech to a virtual private server (VPS) on Linode. I’ve mostly been hesistant towards VPS solutions due to possible performance issues, but the Linode $100,000 Giveaway was too tempting to resist. I’m now happily running on a single Linode 512.
When preparing for my Professional Engineering exam, I found that there were little to no resources concerning the NCEES Computer Engineering exam; partly, I think this is because Computer Engineering largely falls under industry exemption, so obtaining a license isn’t necessarily a requirement for career advancement.
I may get some heat for this, but my recommendation for studying is to simply work every sample problem in the PE Electrical and Computer: Computer Engineering Sample Questions and Solutions. I’ve been told that the sample exam is representative of the types of questions found in the actual exam. Working additional problems beyond this will give you only marginal benefit. Your time can be spent more effectively by learning where the material is in all of your resources instead.
With that said, here are the recommended books that you should have with you on exam day:
- Digital Design: Principles and Practices Package by John F. Wakerly. You absolutely need this book to pass, whether you’re an expert on this subject or not. It covers a significant portion of the exam content, namely Hardware (25%), and Numeric and Nonnumeric Formats (5%). I was honestly surprised at how much coverage this book gives considering that it isn’t all that thick.
- Computer Organization and Design: The Hardware/Software Interface by David A. Patterson and John L. Hennessy. Same recommendation as above. This book is invaluable. It covers 35% of the exam. The remaining 35% of the exam is scattered amongst many topics, and are covered with the remaining texts.
- Operating Systems: Internals and Design Principles by William Stallings or Operating System Concepts by Abraham Silberschatz.
- For real-time systems, use one of the above texts. A dedicated book on real-time systems is a waste of money given the exam material.
- Software Engineering by Ian Sommerville. You don’t actually need to know much about Software Engineering, but you’ll miss a very easy portion of the exam if you don’t have definitions for configuration management, software development life cycles, and so on.
- Network Security: Private Communication in a Public World by Charlie Kaufman or Cryptography and Network Security: Principles and Practice by Wililam Stallings.
- Any undergraduate book on Circuit Analysis, although this may not be necessary if you’re comfortable with basic application of Kirchoff’s laws and applying them to operational amplifiers and such.
- Upgrading and Repairing PCs by Scott William Mueller. You can skip out on this book if you’re willing to miss a few esoteric definitional questions.
- For Error Control Coding (ECC) questions, either guess or use the Wakerly text mentioned above for the basic ECC rules. If you get a weird question on ECC, you’ll likely miss it anyway, even with a good ECC reference.
- Same with Information Theory. It’s 2.5% and not worth having a resource.
I make some assumptions. For instance, you should already know how to program in some language, you should already have some coding experience with either VHDL or Verilog, and you should know all of the basic data structures from your undergraduate curriculum.
Some general guidelines:
- The exam lags reality. Some of the questions are obsolete and no longer used in practice.
- If you instantly see one of the answers as a possible multiple choice option, write it down but then mark the problem so that you can come back to it. The exam tends to be loaded with red herrings. I’ve found that I needed to work most problems twice because of this.
- Advanced math isn’t needed. It’s a Computer Engineering exam, after all. But you should know boolean logic inside and out, and have De Morgan’s laws down cold. Don’t stress about calculus or differential equations or anything like that.
- Don’t bring too many references. It’s a waste of time. You have six minutes per question anyway.
- Thus, it is much more important to know where to find the answer to the question than actual knowing the answer to a question. You may not know the internals of all the flip-flops, but you should instantly know which book and chapter you need to turn to.
- Computer Engineering questions are notorious for being solved by brute-force, more so than other disciplines because your only options are 0 or 1.
- Truth tables are your friend, and the sample space is small enough to where you can sometimes exhaustively solve the problem without having a clue as to what the circuit does.
- As such, don’t bother with Karnaugh maps. Since the exam is multiple choice, you can just write out everything as a sum of products, even if there are redundancies, and then plug in 1 or 0 for the different variables until it spits out what you want.
- Don’t try to understand timing diagrams during the exam. Figure out what the circuit is, then go to the appropriate reference for explanation for what all the pins correspond to. If the question tells you it’s a DRAM diagram, then it’s a classic DRAM diagram. You need not worry about the exam question varying pins or reversing active high / active low to confuse you.