Skip to main content

Teaching programming to EE students

It's that time again. Time to teach second year EE on programming. This is their first formal course on programming. Perhaps, this is also their last time? I had only one formal course on programming and that was FORTRAN. Anyway, what should I teach?

We already decided that it's object oriented and C++ is going to be used as the language. Walter Savitch's "Problem Solving in C++" is the textbook. There were a lot of discussion before we came to that decision. Unfortunately, I didn't make notes (and am to lazy to write them down). Every year I re-think about it. (Perhaps, it's time to write the arguments down?) Here's an issue that came my mind recently.

High vs low-level programming

UML or higher level "coding." This is great, but I am afraid that my students would not understand low level coding. Remember that they are EE, engineers. They are not computer scientists. They may have to work with devices with low level programming, such as (micro)controllers and stuff. That's why we picked C++. It's not the best language to teach programming, but it can go to low level or high level.

I was looking at Michael Lynn's presentation (on Cisco IOS shellcode) the other day. (It was a huge fiasco.) Many parts of the description have codes in assembly language. Do I have to teach assembly language to my students? (Perhaps in a "core ware-like" game? Suggestion?) How many of you still play (work) with assembly language? Should I even bother? They'll learn it themselves. (Then, what's the purpose of me teaching them programming if they can learn it themselves?)

The most important thing is I have to teach them the logic of programming. BTW, how do I test logic? I want to know if they have the "foundation of programming," but not language-specific (or even paradigm-specific). Should I test them with pseudo code? Flow chart? Stories?

Anyway ... I wish I am allowed to teach programming with perl :)

Comments

Anonymous said…
pak budi, dimana saya bisa mendapatkan presentasi nya michael lynn ttg cisco bugs itu ?

tksh -=adnan=-
Budi Rahardjo said…
Adnan, bagaimana kalau saya emailkan saja? Kemana harus saya emailkan (via japri saja)?
Anonymous said…
pak budi, saya merekomendasikan beberapa situs yg menyediakan soal" cerita problem solving ^_^ :

- acm.uva.es/problemset
- ace.delos.com/usacogate
- www.topcoder.com/tc
DianTN said…
IMHO, pemrograman akan tergantung dari model komputasi device yang akan diprogram. Model komputasi bersifat independen terhadap bahasa pemrograman yang akan digunakan. Contohnya, model komputasi object oriented bisa juga ditulis dengan bahasa C, atau bahkan assembly.

Untuk EE students, saya menyarankan agar mereka dapat menguasai bagaimana meng-capture model komputasi ke dalam bahasa pemrograman tsb.
- state-machine -> c, java, perl, dsb.
- dataflow -> c, vhdl
- oo -> c, c++.
Anonymous said…
email saya adnan_itb@yahoo.com. makasih banyak ya pak budi.. wassalam -=adnan=-
Sumodirjo said…
kayaknya komen diatas spam ya pak? blog temen saya juga kayaknya ada yang kena. BTW, kalau perl jangan lah pak, kelihatannya terlalu "aneh" apalagi kalau benar2 baru kenal programming. Tapi ya entah kalau pak Budi mengasumsikan bahwa anak2 EE(apalagi ITB) bisa menyerap dengan cepat. Kalau Python bagaimana pak? tapi mungkin terlalu mudah untuk calon engineer;-) BTW, minta presentasinya michael lynn juga dong pak. nanti saya email japri.
Old Monkey said…
Di Universitas saya , first year programming language kita belajar
Haskell i.e dulu Miranda