Abraham Liao on Computer Engineering in 2012

The interview below is a part of a series on New Secondary Division Courses for 2012. Abraham Liao discusses his upcoming course, Computer Engineering. Read the course description here.

1. You’ve been with ATDP over the years as a student, a TA, and an instructor. What did you find most valuable about your ATDP courses as a kid, and how does that experience inform the way you will teach this summer?

I took every Computer Science class I could at ATDP: The Internet Classroom, Advanced Internet Classroom, and programming classes in Boxer and Scheme.  Computer science as a serious area of study was not in my public school curriculum, so being able to learn about a subject I loved during the summer was fantastic.  In that way, ATDP offered knowledge that I could not attain elsewhere, and it has always been a goal of mine to offer a unique experience at ATDP that isn’t available elsewhere.

2. You also teach Introduction to Java at ATDP — should former Java or TIC (now called The Craft of Web Design) students consider taking Computer Engineering with you this summer? What kind of computer experience do you expect students to have when entering this course?

They absolutely should – as long as they are interested in computer hardware!  Computer Engineering will cover topics that are distinct from Java and web design, so students who have taken CS courses at ATDP will not find the class redundant in knowledge.  While knowledge of programming will help, students aren’t expected to have any previous experience in computer science.  Algebra, specifically familiarity with exponents and variables, is the only knowledge students are expected to have coming into the course.  Other than that, students should be familiar using a computer and the Internet and be interested in learning how things work.

3. How will students be able to use what they learn in your class in their future studies? What practical skills will they gain?

Besides learning how a computer works, I think one of the main skills students will gain is the ability to abstract away details when necessary.  There is a fairly large project in the course, and it is not necessary or recommended to try and grasp it all at once.  Instead, it’s better to work on specific areas and build up, and once whole blocks are built you can assume that it works (after testing!) and shift your focus to other elements.  It’s like building and driving a racecar – when you are driving the finished product, you really shouldn’t be worrying about all the nuts and bolts, as you may get distracted and crash.  This concept in computer science is called abstraction, and the ability to separate categories and concepts from implementation is useful in many fields of study.

4. Describe a topic or activity that you can’t wait to do with the kids this summer.

A lot of things done in hardware and low levels accomplish complex functionality with simple and elegant solutions – signed binary addition/subtraction, FPGAs, self-clocking signals, etc.  These things blew my mind the first time I learned about them, and hopefully it’ll have the same effect on the kids.  The technology we use on a daily basis is so fast and works so well, and all of it is built on clever concepts and designs that are completely hidden to the end user.

5. Other thoughts on why this is going to be a great class?

This is the stuff that Steve Wozniak (the co-founder of Apple Computers) was so interested in during his youth.  Back in the 70s, there weren’t computers that you could just buy and plug in and surf the Internet on.  Not only did the Internet not exist, but most people who tinkered with computers had a deep understanding of the underlying architecture inside a computer, simply because that was the amount of knowledge you needed to possess to do fun or useful things with a computer.

Also, it’s sort of confounding how computers are such an integral part of 21st century society, yet very few of us actually know how they work, from the bottom up.