[Novalug] [OT] Ideal C Courses -- WAS The "real low level" ofcomputers
Bryan J Smith
b.j.smith at ieee.org
Tue Mar 30 13:29:38 EDT 2010
Yes, my very first "programming" course in my 2nd to last
semmester in college, the first (of seven) in my computer option
of my EE. There was the 3 hour/week class and the 3 hour/week
lab with it. In the lab we were given a 68k target (I'm sure it
would be PPC today), JTAG, disassembler and other tools. We built
a bootloader, modified firmware image and other things,
C based, with some C++ objects. Threading was touched,
but like C++ (and Fortran in other classes), more for exposure
since it was in-the-field.
If you didn't know C, you were expected to take it as a non-program,
1 credit (3 hour/week, typically on Saturday) to learn the C syntax.
Yes, no "programming language" in the program for computer
engineering. Only two "programming" courses - one "computer
organization" and one "data structures.". The other five courses
were semiconductor, DSP (really a second semester of linear
from EE), a second semmester of design (from EE, focused
on synthesis tools, as well as VHDL/Verilog), OS design (Tannebaum et al)
and a second applications (much more advanced than the first
semester all engineers take - the diffyQ kicked my rear and my
instructor didn't believe in giving "A" grades - "that's what
your other courses were for").
This is the major difference between engineering and science/math,
CS falling into the latter, and ECE falling into the former. One
teaches you to learn with a problem while the other teaches
you to learn proper. There are not many more than 100 ABET
accredited institutions in the US for ECE/CE, but over 500
(and closer to 1000 now) that are of different CS accreditations.
It's a completely different mindset, hence why I was a fool to
try to introduce it (my mistake and my apologies to the list).
I do not present myself as someone who is a programming language
expert, an uber object method guru or someone than can attest
to semmantics and efficiency in programming or development.
But I know how to teach "computer organization," and do understand
well below that, and how it affects organization, ISA design
and other things. Hence why I feel very strongly about not
focusing on 2G, but sticking to a useable 3G with C. It's a distraction
to teach 2G when all one needs is to look at disassembled code
from a modern C target and understand the organization
it is driving. Teach the concepts with real-world problems, make
someone solve it - instead of giving a full course on each, little
nugget proper. That's long been the engineering view.
P.S. I also have a CS minor with "programming" courses. My
EE w/CE option covered "data structures" in one class versus
3 in my CS minor. I also had an assembler class in CS, whereas
I jumped into "real world" disassembly on a board+JTAG while I
just used C in EE w/CE. My discrete class in CS used no math
remotely to the level near my EE linear and CE DSP classes.
My Alma Mater's ACM Programming team is comprised of largely
EE/CE majors, with a few CS every now and then. It was one
of the driving factors in merging CS under engineering, and
changing the program. That was done after I left, but I know
there is a huge difference between CS and CS when it's based
in an EE college.
Bryan J Smith - mailto:b.j.smith at ieee.org
Sent via BlackBerry from T-Mobile
From: "Jon LaBadie" <novalugml at jgcomp.com>
Date: Tue, 30 Mar 2010 10:53:18
To: <novalug at calypso.tux.org>
Subject: Re: [Novalug] [OT] Ideal C Courses -- WAS The "real low level" of
On Mon, Mar 29, 2010 at 10:32:09AM -0700, Bryan J. Smith wrote:
> A good C course should cover all the computer organization you need.
> Ideally, it makes a survey of at least three (3) ISA targets and how threading
> works on each.
Over the last 25 I've taught at least 10 different intro C courses
and a like number of "advanced" C topics courses. All of the intro
courses have been syntax-based, meaning that "how to program" was
assumed, not taught. Certainly they did not qualify as "good C courses"
according to the above definition.
Multi-processing/threading was not covered in any of the intro courses.
In the advanced courses that did cover the topic of threading the thrust
was "here is how to use several library routines". Again, basically
syntax. Any computer organization and "how threading works on ..."
at most covered a single or generic architecture.
Have you come across any intro C courses that cover computer organization
or advanced courses that meet your criteria?
Jon H. LaBadie jon at jgcomp.com
12027 Creekbend Drive (703) 787-0884
Reston, VA 20194 (703) 787-0922 (fax)
Novalug mailing list
Novalug at calypso.tux.org
More information about the Novalug