home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.sys.mac.programmer:14098 misc.education:3132 soc.college:3616
- Newsgroups: comp.sys.mac.programmer,misc.education,soc.college
- Path: sparky!uunet!wupost!gumby!destroyer!terminator!potts
- From: potts@itl.itd.umich.edu (Paul Potts)
- Subject: Re: Computer Science Programs
- Message-ID: <1992Aug17.203053.26144@terminator.cc.umich.edu>
- Sender: news@terminator.cc.umich.edu (Usenet Owner)
- Organization: Instructional Technology Laboratory, University of Michigan
- References: <1992Aug15.031756.24965@athena.mit.edu> <1992Aug15.02132.10817@ms.uky.edu> <Bt4x5K.9vI@usenet.ucs.indiana.edu>
- Date: Mon, 17 Aug 1992 20:30:53 GMT
- Lines: 150
-
- I thought I'd throw my two cents' worth in as well.
-
- My degree was in English, not Computer Science, but I took a minor in Computer
- Science at the College of Wooster in Wooster, OH. *I do not recommend going
- to Wooster for Computer Science! The program was weak when I attended, and
- has gone downhill since then.*
-
- The first programming course I took was CS151, introduction to Pascal
- programming. I had a fairly wide hobbyist-level knowledge of programming
- (BASIC, a little Pascal, some Z-80 and 6502 assembly language, some
- experimentation with Forth and other languages) before that, so I
- coasted through 151 pretty easily. I asked the instructor if I could skip
- classes as long as I handed in assignments and showed up for exams. He agreed,
- so that's what I did. The important lessons from 151 were the beginnings of
- structured programming, data structures, and beginning to work with such
- concepts as abstract data types and hiding implementation. That much was
- useful.
-
- CS152, the following semester, was the "weeding-out" semester where we learned
- how to design reasonable-sized programs. Half the class failed or dropped.
- The rest of us worked our asses off. The instructor graded based on design
- considerations, style, and whether your code actually functioned. As I recall,
- a good top-down design was worth more than a fully debugged piece of crap.
- We got the rudiments of algorithms, data structures, linked lists, trees, and
- recursion; brute-force methods, stacks, queues, etc. We had a great deal of
- fun writing programs to solve the "Knight's Tour" chess problem on various-
- sized grids, and then running them simultaneously to bring the school's
- VAX 11-750 to its knees. We learned a lot that semester: one of the lessons
- was "here's how to stay up for 72 hours straight." Unfortunately I can't do
- that anymore; fortunately I generally don't need to.
-
- A word on languages: I am very suspicious of courses that claim to teach
- *just* a language. That seems rather useless. CS151 taught Pascal and
- some of the basics of programming; after that semester, it was presumed
- that we were bright enough to learn new computer languages on our own. I
- believe that approach paid off well. Instead of being taught languages,
- we were given various assignments which required us to learn a language
- and development environment as a matter of course. This is more realistic.
-
- At the time, on my own I was discovering the campus Macintosh network, just
- being put into place, and the joys of hacking PostScript code by connecting
- a terminal directly to our dorm LaserWriter. Programming languages for the
- Mac were still scarce, but I eventually got into THINK C on my own and learned
- C. My ability to learn things on my own was encouraged and strengthened by
- my academic work. *This ability has been far more valuable to me than the
- actual content of anything I learned in a computer science class; coupled
- with the general principles of how computers actually work, it formed the
- real value of my undergraduate work in Computer Science.*
-
- From there, I took assembly language. This was, on the theoretical side, a
- basic introduction to machine architectures, registers, floating-point,
- etc.; on the hands-on side, we wrote code, culminating in an assembler
- (in assembly language) for the VAX 11-750. This was a rather large project:
- my final code was quite a bundle of printout (during punchy late-night
- debugging sessions we once tore off all the tractor edges to our printouts,
- tied them together, and created a giant spiderweb around the computer atrium).
- The combination of theoretical and hands-on experience was what made this
- worthwhile for me. As in the other languages, the instructor took something
- of a hands-off role in our actual code. We learned that from the documentation
- and a text. It was interesting spending half the night debugging assembly
- code, and then realizing that we had to spend the next half of the night
- cramming to study for a test, which was on the more theoretical aspects
- of machine-level programming.
-
- The next course was Operating Systems. This was a textbook class on how
- Operating Systems work; the hands-on part consisted of learning MC68000
- assembly language and writing a preemptive scheduler and basic I/O services
- for a single-board computer, using a cross assembler on the VAX. We got
- occasional technical assistance from the instructor, but for the most part
- we were on our own with the 68000 documentation. The instructor was aware
- of the Macintosh and so the mechanism we used was the A-line trap-dispatching
- mechanism. This gave us hands-on experience with the 68000, and also an
- undertanding of interrupts, supervisor and user modes, priorities, etc.
- Again, we studied theory by day and practice by night. It was a great
- course.
-
- From there, I went into a somewhat disappointing course on programming
- languages. This was a theory and overview course, looking at a numer of
- languages, commonalities between them, efficiencies of implementation,
- syntax and semantics, formal notations for semantics, etc. I don't remember
- that much about it, except that we didn't do much programming.
-
- My next course was Algorithms, which was a classic textbook course using
- Sedgewick; it focused largely on sorts and searches. I was learning Macintosh
- programming in C at the time, and implementing some of my assigments in C,
- so in one case I handed in an assignment several months late, but with a
- complete graphical user interface, running as a Macintosh application rather
- than a VAX executable or Mac Pascal program.
-
- That was about it for the minor; I also took a little 1/4 credit Fortran
- course, and dropped it; I sat in on a more advanced computer architecture
- course while working as an intern, but didn't get to finish it (this was
- essentially a logic design class, where one of the projects involved
- writing a simulation of a processor by constructing a microcode interpreter).
-
- One of the main reasons that I didn't get a major was math. (Aside from
- being indecisive about which I loved more, Computer Science or English; I'm
- still debating that). The Computer Science program at Wooster required
- differential equations, linear algebra, discrete math, two semesters
- of calculus; I was barely able to make it through calculus. I attribute
- this partially to a poor high school math education and partially to a
- lack of ambition to do the work required. I did not have the drive or interest
- to take all that math, or perhaps even the ability. I don't think that that
- much math was necessary for me to make good use of my courses; I would prefer
- to do software design than optimization, and user interfaces to simulation.
- I couldn't model a Fourier transform or do a stress analysis of a bridge, but
- I could figure out where an algorithm or piece of code was too slow, and make
- it faster. In my job now I don't have a use for the math that I didn't take,
- whereas the writing skills I developed have been very useful.
-
- Today I have written a decent amount of code for the Mac, both XCMDs and
- applications; I am learning C++ and writing code for the PC; I use Hypercard
- and Toolbook to develop instrutional software. No one taught me C++; no
- one taught me Toolbook; the skills I developed at learning new techniques
- and languages have instead been very useful. If you get an education in
- Computer Science now, your instructors can't know what language or
- architecture or processor or class library or operating system you will be
- working with in ten years; you can't know. The importance lies in your ability
- to learn and thus, be flexible and able to adapt.
-
- I do have the urge to go back and take more computer science; I would like
- to study AI, and I'd like to learn LISP. I would like to get into theory of
- computation a bit as well, which I never took. My problem is that I am
- somewhat happy where I am, and the University doesn't love to teach people
- who aren't determined to get another degree. Also, to take more computer
- science, I would probably be required to have more math, but it is
- undergraduate-level math that I lack, and departments can be uptight about
- letting post-graduates take undergraduate course work. I work full time, and
- am not particularly interesting in getting into a degree-seeking program
- where I would be competing with people with much stronger backgrounds, but
- I would like to take certain courses. The next few years will be interesting.
- Perhaps I cheated myself by being less competitive and focusing more on
- real learning than on grades and deadlines, and perhaps there isn't a place
- for me in a competitive graduate program in Computer Science. There is,
- though, a lot more that I want to learn.
-
- I would recommend looking for a program that has both theoretical and hands-
- on experience. Talk to a couple of instructors: if they seem current, and
- knowledgeable, ask to see the syllabus for a current course. Don't take
- courses entitled "programming in C, part 1 through part five." Look for
- some real meat; look around the department and see if you can find a room
- with lots of unshaven young men (and women, if you are lucky enough to have
- any in your program :) staring bleary-eyed at terminals, clearly lacking
- in sleep. If they are guzzling coffee to stay awake and have sleeping bags
- rolled up underneath the table for a catnap during long compiles - you've
- found the right place!
- --
- "It'sVerySad / toSeeTheAncientAndDistinguishedGameThatUsedToBe / aModelOf
- DecorumAndTranquilityBecomeLikeAnyOtherSportABattlegroundForRivalIdeologies
- toSlugItOutWithGlee." (from _Chess_). -potts@itl.itd.umich.edu-
-