--- On Fri, 10/7/11, Bob Pendleton <bob@xxxxxxxxxxxxx> wrote: > From: Bob Pendleton <bob@xxxxxxxxxxxxx> > I went to school way back in the dark > ages starting college in fall > 1971. I then went back to graduate school in starting in > January 1981. ---8< snip snip --- It's been a while. I know I've missed a few things. I started Coding in High School. First in Basic on Pet and C64/C128. I actually didn't have a computer at home but was hooked on it when in High School. I got my first computer In grade 10 or 11. A 286 machine with VGA card. Through the High School I got my hands on Turbo 'C' compiler and started figuring out how to program. Self taugh 'C' which was slow and often painful. I had a brilliant book which had a lot of examples to learn from but in hind sight, having a mentor would have allowed me to progress so much faster. And that was the huge problem. Access to knowledge. At the time, dial up BBS systems were still very much the main way to connect to other people electronically. Internet was still not all that accessable. Even through University, access to the internet was still mainly through some BBS or dial up service. I went to U of T(oronto). Comp. Sci. wise their course is not bad. I do have a few gripes with them. (or at least when I went there between 1990-94.) 1. Universities can be too academic. UofT developed their own language called Turing; and later OOT, Object Oriented Turing. I guess it is an alright language to "learn" from but the language is purely academic. It has zero real world use. 1.1 It was interpreted or compiled. The interpreted environment and editor was frustrating to use. The compiler would compile to c code. And hopefully the c code would compile properly. I had to use it for a embedded systems course and more of then than not, it would brick the UofT developed embedded system. Frustration and little progress on assigments was very common for me. 2. Universities had these sun systems with dumb terminals. These were horrid to use. When it came time to finishing an assignment the machines would feel like the squirrel has been worn out. Many assignments were hardly finished. When there was no load on the system it worked ok. But once there were too many users doing compiles and all, it was completely unusable. Often the sys admin would go around asking people to shut down any processes they could space because the main computer was running out. So sad. Linux was just starting up at the time and only one course offered to support those who want to use Linux from home. At the time I couldn't get Linux to work on my machine at home. Bad hardware support for Linux. So I HAD to use the f*ed up Sun system at school. No option for a DOS or Win3.1 (I think) users at the time. 3. It was the typical lecture with tutorials model. Then go off do your assignments. No one did roll call. The university probably didn't care so much. You paid your tuition. If you don't go to class, it's not their problem; they got your money already. 4. There were only about 6 classes in total over the 4 years that stressed programming to any degree. So when those classed did come about there were quite a few students that were struggling because they haven't done enough actual programming to survive. A lot of those classes were the 4th year courses. And funnily enough, you weren't using Turing in those classes, they required 'C'. There was only one learn 'C' course in year 2 and that was suppose to be sufficient. 5. One class pissed me off royally and it was a coding class. If you couldn't get your first assignment working right, you would be hooped on the following assignments because the following assignments would build up on where you left off. The prof would not provide a code base for the first assignment so that you can actually move onto the second, third, ... assignments. So if you had a doosy of a bug on the first one that was preventing you from moving onto the next one, good luck on passing the course. I was in that situation. And to top it off, you still have other courses to spend time on. Falling behind in a situation like this kills you. 6. Focus on math. In UofT computer science was either in the math department or in the engineering department. The campus I went to had only the math option. So a lot of math courses were needed. I really hated the theoretical math courses. I couldn't see how they really applied to the real world. The other math courses would have been great if it weren't for the profs. I don't know, math dudes are a different bunch. 6.1 There was one course in programming where we had to 'prove' an algorithm correct using math principles like proof by induction or something like that. Mid-term comes around and practically EVERYONE didn't answer the proof question. Like I said, Universities can be too academic. Professor wasn't happy about that though. I don't care, I've never had to do something like in the real world. My boss doesn't want me to waste time on proofs either. 7. Profs may know their stuff but some were pretty awful as teachers. I remember my dad mention that in Holland, where he grew up, you would have research professors and teaching professors. Teaching professors were taught how to teach. So the professor you get in lectures and all would have gone through some courses on how to do that. Over here, I don't think they need to go through any training to teach. Or a little training and then dumped into deep end to see if they sink or swim. It's not like for an actual teacher who teaches in elementary or high school here where to become a teacher there, it is a 4 year course or something. I think university professors would benefit greatly from some sort of teaching course. (This may not be true for all universities.) 8. All the FUN courses are in 3rd or 4th year. :( I did get my job working for a company that makes software for the mining industry. The software covers the gamut of what a company needs to do to mine a deposit from start to finish. The Degree helped me get the interview but the code I wrote on my own got me the job over the other applicants. The code I wrote was what interested me at the time. Writing computer games. Never really managed to get anywhere though because of my limited resources and all. I recently looked at some of the code I showed my boss... Ick! They hired me on that?!? You learn a lot on the job. In University I had to take... Math: - Calculus two years or more. I've not had to use derivatives or integration since. Mostly High School level math is needed more. - Algebra two years or more. Very little had ot be used at work. Simple 3D math for 3D rendering. Mostly High School level algebra at most which is mostly enough for the 3D rendering work. I have still no idea what an Eigen value can be used for in real life. - Statistics two years or more. There is one product that has some university level stats requirements. But otherwise, the rest, nada. - Discrete Math (Proving and stuff.) Never had to use it in the real world. - Chaos. Fun course. Finally understood how a Mandelbrot set is made. Final exam was an ass kicker though. Comp Sci: - General two years or more. Covers the basics like data types and algorithms. Very useful even though we were stuck with Turing. A lot of the time there was no coding involved anyway. Just exercises. - AI. One or two products at work uses AI techniques. Nothing really too fancy though. It's similar to a chess program where you try something and compute a result. Use some heuristics to eliminate decision trees to speed things up. All in all not really difficult stuff. The only difficulty is the amount of data you have to work with and how long it might take. - Rendering. Somewhat relavant to what I do at work. But we use 3rd party libs to help out for the most part. We rarely need to be so low level that it's down at the bare metal so of thing. - Database. General info mainly. Again actual database program was some home made jobby I think or some god awful freeware thing. I can't remember. I only remember having to run it once and never again. Learnt a bit of SQL and database management and design but real world use? Some of it is useful but I didn't learn any real world database products so what I've learnt is not directly useful. - Networking. One of the courses where I did not like the prof. I passed it, and that's good enough for me. Covered the low level stuff and technical problems that come with computer to computer communication. Not much actual coding though. - Algorithms. I know of BigO, LittleO and all that. In the my job, Big O is all you really need to know about. You don't need to get too detailed about it though. Just need to know that an algorithm will be O(N) or O(logN)ish but no one is going to ask for a detailed analysis. Boss only wants an improvement, he doesn't care what O() it is. But the course at least introduced some more involved data structures and their uses. - Language processors (compilers/interpreters/etc.) I really hated the prof. The course was interesting though. Covered lexers and parsers and we had to modify an existing compiler to a fictional machine by adding new features. Optionals: (UofT requires a certain amount of credits to be outside of the degree requirements) Physics, Dutch, Art History. Hind sight: I wish I had an internet as it is today back then to find out solutions to very simple, but at the time being so green, bafflingly difficult problems. I'm the only coder among my friends and family so no connections to help with the problems. Rather annoying. I wish some courses were easier to get to. All the really fun courses were 3rd or 4th year courses which had a prerequisite of some 'filter' course. 'Filter' course to weed out/discourage students from pursuing the degree. The most coding I learnt from was a book call "Turbo C Bible". It had examples for everything and that's where I learnt a lot of 'C' coding. The book is now very old and it shows. I haven't seen much documentation since that was like the one in that book. Examples were simple and to the point without too much extra stuff. And it was clear. Now I google a lot. StackOverflow.com has been helpful a few times. Microsoft's MSDN helps but I'm often not a fan of their examples. CodeProject.com has helped a few times. Some online forums have helped a little like gamedev.net and idevgames.com (apple centric) Having a very good IDE for development helped hugely for me. Turbo C spoiled me with a pretty good editor (for the time), project management and debugger. I don't think I'd be as far if I was stuck with makefiles, notepad and no debugger. IMO Flexible due dates are detrimental to a student. Give them a hard date and dock everything that is late. Why? Forces the student to concentrate on the current assignment and not one they should have finished already. I didn't have a problem with due dates except for one time when my digital watch battery was half alive. Ended up being late for class. However a friend of mine is so bad at maintaining a schedule and used to beg for extensions. As a result he ended up with a pile of work and nothing helped him get out from under it. It was a problem of his own making but it caused him to suffer. Don't let your students suffer. If anything, offer a bonus assigment or something to help the students who are lagging to make up some mistakes. Testing is important IMO. You don't know how well a student is doing otherwise. I know some fellow students were basically living off the work of others. During a test they have to stand on their own. Those who have done the work, should do well. Those who are free riding should be lacking. In almost all my classes, we just had a mid term exam and a final exam. I'm wondering if that is enough or it should be a bit more often. I.E. 3 smaller exams and a final instead of a semi bit mid term and a big final. But in some of my classes the amount of effor that goes into an exam is quite a bit so probably not practical to do it any other way. Assignments were needed though. Programmers/students are a lazy bunch. You have to get them to do something in order for them to learn something. I don't know what UofT is like now though. Things will have changed since. Robbert de Groot --------------------- To unsubscribe go to http://gameprogrammer.com/mailinglist.html