quality of education
Matthew Leverton

So the university I attend is offering a course on Allegro this fall. I was digging around on the site to see if they had been using it in other classes. Turns out one professor is.

The initialization function that students are required to call ends with this gem:

1/* you don't need to do this, but on some platforms (eg. Windows) things
2* will be drawn more quickly if you always acquire the screen before
3* trying to draw onto it.
4*/
5acquire_screen();
6 
7/* set transparent text */
8text_mode(-1);
9return 1;
10}
11 
12 
13void wait_for_keypress()
14{
15/* you must always release bitmaps before calling any input functions */
16release_screen(); // seems optional; slows down next operations
17readkey();
18acquire_screen(); // but adding this speeds it up again
19}

I think it's time to change my profile location to Zimbabwe.

kazzmir

Set i_love_bill to 1 to get some really awesome performance out of Allegro.

le_y_mistar

tell the prof who you are, i bet he knows of you.

23yrold3yrold

I'm still trying to wrap my head around the fact that universities have begun teaching Allegro. Maybe I should send my resume to the local campus ...

Matthew Leverton

Name: Chris

Talents: I can cut wood.

Experience: 200,000 posts on a.cc.

Myrdos

23yrold: Heh, I think I'm the only person at the U of M who knows what Allegro is. Anytime they want students to do something with graphics, they reach for Java.

I graduated with a BSc in 2005, and I remember being annoyed that you seemed to know more C++ than I did. :-/

Goalie Ca

I had friends in high school who knew what allegro was (how i learned of it actually). And friends in university know of it as well.. but not all.

I must say though.. cs profs can make really horrible coders.

Rampage
Quote:

I'm still trying to wrap my head around the fact that universities have begun teaching Allegro.

When I was at school (some 4 years ago) a teacher asked us to do a graphic processing program using Allegro. I helped around 60 people to set it up under Linux, but none of them kept using it. They were interested in getting the grade, not in game programming. At least I made some money out of the worst slackers.

[edit]

3000th post! :D

GullRaDriel

That's .. horrible, depressing, disgusting !

Samuel Henderson

The only other person who used allegro at the high school I attended was the person responsible for unleashing me upon this community (and for teaching me the fundamentals of C over the course of a couple lunch hours ;D)

In college the only person I have known to use allegro is bamccaig, whom I unleashed upon the a.cc community ;D

James Stanley

Speaking of Quality of Education, shouldn't the title of this thread have a few capitals in it? ;D

MiquelFire
Quote:

Speaking of Quality of Education, shouldn't the title of this thread have a few capitals in it? ;D

Maybe Matt's shift key wasn't working when he type it up? :P

Inphernic

I planned to use Allegro in one C++ programming course I held when I was in the school, figured something like a simple particle system would be perfect as a practical and interesting 'project' for the course. I planned something like:

  • specifying what is needed, 'modelling' the problem

  • how to simplify the problem

  • introduction to objects

  • modelling the needed objects

  • implementing the objects

  • running a 'simulation' in console

  • quick introduction to DirectX (and Allegro)

  • usage of external libraries

  • getting the particles on the screen

  • creating a library

When I had the first session, I was greeted to a class nearly full of "what's int main".. :'( We were left somewhere around the 3rd/4th bullet point before we ran out of time.

Trezker

Those who can, do. Those who can't, teach. ^_^

Kris Asick

I'm reminded of a Turbo Pascal course my mother took when she first went to university years ago. She dropped the course halfway through. About two or three years later I look over the material she was assigned for her first month and am able to complete the entire workload in one day.

Since then, I recall my programming classes in high school, and how only 10% of the students in each class actually realized how to properly do it, 70% took a whole class to do something which took the first 10% a fraction of the time, and the remaining 20% dropped out or stopped coming to classes 'cause they assumed it would be a bird course.

I remember one of my friends used to dispute the teacher in his programming class every day. (Which is not hard when your teacher spells byte "bite".) One day the teacher argued back that if he thinks he can do better then he should teach the class... my friend was tempted to actually do so. ;D

If programming classes out of random educational institutions have taught me anything, it's that such classes are not meant for people who want to program for a living, and that you can tell if you're going to make an excellent programmer or not because you can fix the mistakes the teacher makes! 8-)

--- Kris Asick (Gemini)
--- http://www.pixelships.com

Onewing

This is really interesting and surprisingly, for me, on topic. :)

I just heard they are trying to create a bit of game development curriculum (well, they have been trying and failing miserably) at the University where I went. Guess what library they are going to use to teach the first class (which, I guess is junior level). Allegro!

And guess what book they are going to use to teach it. ::)

So, this is where I started talking to the guy I heard second-hand about this from. I said most people on a.cc ("what's a.cc?" he says) would not recommend that book, although the third edition might be better. He asks me what would be better. I started to think about it and then I said, "well, I don't really know what's better for learning allegro book-wise." I thought about it more and then said, "but, are we trying to teach them game development or allegro?" If I were a.cc, I figure I'd say it's more important learning the methodology behind code snippets rather than bluntly giving the code snippets in a given library. I suggested the students should be able to use whatever library they want, if they even want to use a library. This would be much more pratical.

I asked who was going to teach this class and that it shouldn't be any body here. They need to bring in someone who is familiar with the industry. This is the reason the previous attempts keep failing. Someone nearby mentioned I should apply to teach the class. Although I admit I was flattered, I remember the saying above "those who can't do, teach." I have no professional experience either, it wouldn't make sense for me to teach. Don't get me wrong, next to game development, teaching has always been my second choice, that's just something for the future to decide.

In a completely unrelated note, it was mentioned the University is trying to get Sid Meier (creator of Civilization games) to come and give a speech. I thought this was ludicrous, considering there isn't a game developer in any of the surrounding states. However, the University does have friends in high places in Wal-Mart, which could persuade things. Just a little random tid-bit.

Neil Black

I took a programming class in high school... QBASIC. Within two weeks I was at the top of the class. A week later I was at the bottom. Boredom got me, especially when almost the entire class got stuck on arrays. By the end of the semester I had passed the teacher. He didn't know how to draw a line (I think the SCREEN 13 thing confused him), and I was making short RPGs using GET and PUT to throw graphics to the screen ;D Now, what little I know in C and Allegro amazes him. I hope to finish a short RPG, which I may or may not release online, to show him how far I've come since he first taught me what a variable is.

OICW
ML said:

Name: Chris

Talents: I can cut wood.

Experience: 200,000 posts on a.cc.

Oh this totally cracked me down ;D

Anyway the OP seems like a bad joke.

23yrold3yrold

Pfft; I haven't cut wood in 2 years. :P

Quote:

23yrold: Heh, I think I'm the only person at the U of M who knows what Allegro is.

/updates resume

Talents: totally way better than that David McCallum guy you shouldn't hire instead of me.

Dustin Dettmer
Possumdude0 said:

A week later I was at the bottom. Boredom got me, especially when almost the entire class got stuck on arrays.

This happened to me in an intro C++ class. The teacher had us making this really tedious and incredibly boring command line 'teacher grade-book' app.

I asked her if I could make it cool (so I'd be motivated to actually do it) with some kind of snazzy gui.

She told me I should start with the basics and work my way up, and that she would fail me if I did that.

OICW

Dustin: that I'd handle to her another C++ project of my own to show her I'm not at basic level.

Dustin Dettmer

She just wanted me to conform and be able to tell me that i was somehow suboptimal.

OICW

Her fight...

nonnus29

I'm totally disillusioned with the quality of education at the university I go to now. This past semester has been horrid. I had a programming languages survey course that amounted to learning how procedural features are used in Ada. We have a compiler course but it's not offered because the crappy cs dept doesn't have anyone who can teach it.

They have gfx class and from what I've heard people are making interactive 3d demos in it. And this class is taught by an 'instructor' with an MS, not a phd.

Phd's are effing stupid. From what I've seen they can't code and can't teach. You have to go to a name school to find profs that are worth a shit.

Goalie Ca

Over the past year or so I started to think that the problem was not the proffs at all.

There are only few people who are gifted, brilliant, and genius! Then there are those who are bright and can learn and do quite well in any situation.

These people are too few in number. It would be nice if you could send the smartest to the best schools and the best opportunities but economics does not favour that. Rather, there are 10x as many people just looking for some degree and some job and could not get through a more thorough and rigorous program. The correct solution would be to seperate students based on ability and potential (and interest). The present solution: dumb it down and focus on quantity of students getting through (edit: and teach them trade-like skills, as in how to use software package A-Z) ie: it becomes high school all over again. (edit: for the cycle to be complete the students become professors)

They say masters is the new bachelors. In many ways this is true. In order to get a basic grounding in first principles you pretty much have to do masters. In order to get some of the more technical jobs, grad school is the only solution. This is the road i'm going down, but I am doing it because I love research and I feel in some way like i have only scratched the surface in terms of basic fundamental knowledge. This feeling is very satisfying because it means my supervisor for my undergrad research did something very right. (edit: Learning to create knowledge is very important as well!)

Neil Black
Dustin Dettmer said:

She told me I should start with the basics and work my way up, and that she would fail me if I did that.

My teacher let us do stuff like that. We had a project, near the middle of the year, and my group (with my knowledgeable guidance) made a text adventure that included a map. It even had a little "you are here" icon.

Later in the year, not for class but just on my own, I made a Simon game, just to prove to my teacher that you can use the mouse in QBASIC.

EDIT:
My main interest in programming is games, although I don't think I'll find a job in the game industry right out of college. I'm planning on getting a fairly good job for an inexperienced programmer who's just finished school, and keeping my eye out for the job I want.

HoHo
Quote:

One day the teacher argued back that if he thinks he can do better then he should teach the class... my friend was tempted to actually do so.

I actually did that. I tought my fellow classmates and my computer teacher for a couple of months in 12'th grade ;D

In general I agree, it is almost impossible to learn anything programming related at school. Only thing I learned was how to use QBasic built-in help, from there on I was way ahead of the class and in a couple of months I knew a lot more than my teachers. In university we had a C++ exam where you had to parse some XML-like file and do some DB like actions with it. You had 5 hours to code it, my program was done in 1h and I spent 1.5h commenting the thing because I thought there will be more tasks coming. When the professor finally saw my program he didn't even ask me to run it, he just sent me away without asking any questions and gave me an 'A'. Probably because I threw everything I knew about STL into that program ;D

Neil Walker
Quote:

Those who can, do. Those who can't, teach. ^_^

Well, I wouldn't mind teaching at the Danish school where they having a stripping contest to get the best canteen seat.

http://blog.tv2.dk/blogzilla/entry94529.html

Myrdos
Quote:

totally way better than that David McCallum guy you shouldn't hire instead of me.

A futile effort. No-one can resist the super Dave.*

*With the possible exception of all those companies I sent resumes to. But apart from them, NO ONE!

Johan Halmén
BAF

Most of the time, my C++ class is full of sheer boredom. I don't even care enough to correct the teacher anymore.

For example, today we were taught that this is the magic solution to header file problems:

#ifndef
#include <iostream>
#include "blah.h"
// etc
#endif

... Yes. That is what he wrote. No arguments to ifndef. Not to mention it should be in the header, not the source file. He did mention preprocessor, but called it magic. He also said it was relevant when you link with object files that already have the files included. I was too tired to try and comprehend the stupidity of that, so I just sat their doing other work.

It amazes me how ugly the coding style they push on us is. I lost half a letter grade on a programming assignment because I named my index variable 'i' instead of 'idx' or 'ind.' They take off points if you spell 'cur' instead of 'curr.' They thought I was crazy for taking two programming courses next semester to get them over with, they told me I would never be able to do both. ::)

Also, we wrote some type of List class as an introduction to lists. Want to know how we accessed the list? list.FirstPosition(); list.NextPosition(); until we get there/done iterating, then call list.Retrieve(); to get the value.

The course makes me die inside a little more every day I go to it. If there wasn't a mandatory attendance policy I would be skipping it.

And, every day I sit there, most of the people hate programming. People drop it all the time, one person even just dropped it (there is one more class before the final). If they can't handle this programming class, what kind of code are they going to write?

Just for kicks, here is the List class programming lab source (it's all framed out, it's just fill in the blanks. ::) also, the code I did fill in I had to conform to their esoteric coding style.):

1//Specification file: list.h
2 
3const int MAX_LENGTH = 100; //maximum # of slots in the list
4 
5typedef int ItemType; //type of value stored in the list
6 
7class ListClass
8{
9public:
10
11 ListClass(); //default constructor
12 //Purpose: Initializes a list object to an empty list
13 //Post: list's length is 0
14
15 bool IsFull() const;
16 //Purpose: Indicates whether or not the list is full
17 //Post: Returns true if list is full and false, otherwise
18
19 void Insert(ItemType item);
20 //Purpose: Inserts item into the list
21 //Pre: List is not full
22 //Post: item has been inserted at the end of the current list
23 
24 void Find(ItemType item, bool& inList);
25 //Purpose: Determines whether or not item is in the list
26 //Pre: item is assigned a value
27 //Post: If item is in the list then inList returns as true and currPos contains
28 // the index of the 1st occurence of item in the list, otherwise,
29 // inList is false and currPos is set at length
30 
31 void Delete();
32 //Purpose: Deletes an item from the list
33 //Pre: Method Find has been called to find the item to delete, and the
34 // that item is in the list
35 //Post: The 1st occurrence of item has been deleted from the list
36 
37 void FirstPosition();
38 //Purpose: Moves to the beginning of the list
39 //Post: currPos is 0
40 
41 void NextPosition();
42 //Purpose: Moves to the next element in the list
43 //Post: currPos has been incremented by 1
44 
45 bool EndOfList() const;
46 //Purpose: Determines if at the end of the list
47 //Post: Returns true if at the end of the list, and false, otherwise
48 
49 ItemType Retrieve() const;
50 //Purpose: Returns the current item in the list
51 //Pre: EndOfList is false
52 //Post: Returns the item at currPos
53 
54 ItemType Largest() const;
55 ItemType Smallest() const;
56 
57 // Note: Copy the private data members below and paste them AS
58 // A COMMENT at the top of the implementation file for your reference.
59 
60 
61private:
62 ItemType values[MAX_LENGTH]; //stores the items in the list
63 
64 int length; //# of values currently in the list
65
66 int currPos; //position of current element
67};

1#include "list.h"
2 
3ListClass::ListClass()
4{
5 length = 0;
6}
7 
8bool ListClass::IsFull() const
9{
10 return length >= MAX_LENGTH;
11}
12 
13void ListClass::Insert(ItemType item)
14{
15 values[length] = item;
16 
17 length++;
18}
19 
20void ListClass::Find(ItemType item, bool& inList)
21{
22 inList = false;
23 for(int idx = 0; idx < length && !inList; idx++)
24 if(values[idx] == item)
25 {
26 currPos = idx;
27 inList = true;
28 }
29}
30 
31void ListClass::Delete()
32{
33 values[currPos] = values[length - 1];
34 length--;
35}
36 
37void ListClass::FirstPosition()
38{
39 currPos = 0;
40}
41 
42void ListClass::NextPosition()
43{
44 currPos++;
45}
46 
47bool ListClass::EndOfList() const
48{
49 return (currPos == length);
50}
51 
52ItemType ListClass::Retrieve() const
53{
54 return values[currPos];
55}
56 
57ItemType ListClass::Largest() const
58{
59 ItemType largest = values[0];
60 
61 for(int idx = 1; idx < length; idx++)
62 if(values[idx] > largest)
63 largest = values[idx];
64 
65 return largest;
66}
67 
68ItemType ListClass::Smallest() const
69{
70 ItemType smallest = values[0];
71 
72 for(int idx = 1; idx < length; idx++)
73 if(values[idx] < smallest)
74 smallest = values[idx];
75 
76 return smallest;
77}

1#include "list.h"
2#include <iostream>
3#include <fstream>
4#include <cstdlib>
5 
6using namespace std;
7 
8void PrintList(ListClass list, char ch);
9 
10int main()
11{
12 ListClass listA, listB;
13 ItemType val1, val2, val3;
14 bool found;
15 ifstream din1, din2;
16 
17 din1.open("list.dat");
18 
19 // Insert code here to read the values from the file and insert them into listA
20 // Be sure to test for end of file and a full list
21 din1 >> val1;
22 while(din1 && !listA.IsFull())
23 {
24 listA.Insert(val1);
25 din1 >> val1;
26 }
27 
28 if(listA.IsFull())
29 cout << "list is full.\n";
30 
31 // Print values stored in listA by calling the client function PrintList
32 PrintList(listA,'A');
33 
34 din2.open("list2.dat");
35
36 // Insert code here to read the values from the file and insert them into listB
37 // Be sure to test for end of file and a full list
38 din2 >> val1;
39 while(din2 && !listB.IsFull())
40 {
41 listB.Insert(val1);
42 din2 >> val1;
43 }
44 
45 if(listB.IsFull())
46 cout << "list is full.\n";
47 
48 
49 // Print values stored in listB by calling the client function PrintList
50 PrintList(listB,'B');
51 
52 cout << "Enter a value to delete from listB: ";
53 cin >> val3;
54 
55 // Call member function Find to see if val3 is in listB
56 listB.Find(val3, found);
57 
58 // If val3 is in listB , then call member function Delete to delete it otherwise
59 // print an error message
60 if(found)
61 listB.Delete();
62 else
63 cout << val3 << " not found.\n";
64 
65 
66 // Print values stored in listB by calling the client function PrintList
67 PrintList(listB,'B');
68 
69 cout << "Enter a value to delete from listA: ";
70 cin >> val3;
71 
72 
73 // Fill in the code to delete ALL occurances of val3 from listA
74 listA.Find(val3, found);
75 while(found)
76 {
77 listA.Delete();
78 listA.Find(val3, found);
79 }
80 
81 
82
83 // Print values stored in listA by calling the client function PrintList
84 PrintList(listA,'A');
85 
86 // Find and print the largest and smallest values in listA
87 cout << "Largest in listA: " << listA.Largest() << endl;
88 cout << "Smallest in listA: " << listA.Smallest() << endl;
89 
90 
91 // Find and print the largest and smallest values in listB
92 cout << "Largest in listB: " << listB.Largest() << endl;
93 cout << "Smallest in listB: " << listB.Smallest() << endl;
94 
95 
96 return 0;
97}
98 
99void PrintList(ListClass list, char ch)
100{
101 // Prints the values currently stored in the list by traversing the list
102 // from beginning to end
103 ItemType val;
104 
105 cout << "List" << ch << endl;
106 
107 // Traverse and print the values stored in the list
108 list.FirstPosition();
109 
110 while(!list.EndOfList())
111 {
112 val = list.Retrieve();
113 
114 cout << val << endl;
115 
116 list.NextPosition();
117 }
118 
119 system("pause");
120 cout << endl;
121}

I usually try to fix the code up as much as I can get away with. Meh...

[edit]
Oh yeah, I get reprimanded for using "unfriendly not readable" code conventions such as "return length >= MAX_LENGTH;" or "blah += 3" - they say this is harder to read. :'(

Richard Phipps

Sometimes reading things like this makes me glad I never studied programming at university. :)

Trezker

Things like this makes me realize how awesome the schools I have attended are.
I can't recall ever having a sucky teacher in programming.

Matthew Leverton

Maybe you were just a n00b? ;D

ReyBrujo

Don't tell me they also ask to buy evert's friend book?

Myrdos

BAF: I feel for you. Years ago I took a course almost exactly like that one, except that I didn't know any C++ beforehand. It took me years to unlearn all the bad habits and misinformation. He even used the word magic when describing "using namespace std". We were told how to split the code into multiple files, but we didn't create proper classes. Oh no.

We had some crazy forward declarations and typedefs and structs, and if one file wants to access another file's functions, it does it with the friend keyword.

Quote:

If they can't handle this programming class, what kind of code are they going to write?

1int ReadDump(char *fl[], data_t *D, MODE mode, int off)
2{
3 static dump_t null;
4 FILE *f = 0;
5 double t = 0, tmax;
6 unsigned long i, ti, line, id = 0, lost;
7 char buf[0x1000], *p, *e, j, c;
8 int l = 0, h, m;
9 size_t num = 0;
10 void *tmp;
11 
12 if ((f = fopen(fl[1], "r")) == 0) {
13 fprintf(stderr, "error opening %s\n", fl[1]);
14 return 0;
15 }
16 
17 line = 0;
18 while (c = 0, line++, !feof(f) && !ferror(f)) {
19 if (!fgets(buf, sizeof buf, f) || feof(f) || ferror(f)) break;
20 if (*buf == '\n') continue;
21 
22 if (!(t = strtod(buf, &e)) && e == buf) { c = 1; goto e1; }
23 if (!(p = skips(buf, " id ", 1))) {
24 if (!(p = skips(buf, "frag ", 1))) { c = 1; goto e1; }
25 }
26 if (!(id = strtoul(p, &e, 10)) && e == p) { c = 1; goto e1; }
27 if (!(p = skips(buf, " udp ", 1)))
28 if (!(p = skips(buf, "UDP, length:", 1)))
29 if (!(p = skips(buf, "UDP, length", 1))) { c = 1; goto e1; }
30 if (!(l = strtoul(p, &e, 10)) && e == p) c = 1;
31 
32e1: if (c) {
33 fprintf(stderr, "malformed input (%s, %lu)\n", fl[1], line);
34 continue;
35 }

Thought I'd post some of the code I've been reading.* Most compsci students/graduates I know can't program worth beans. Some of them haven't done any programming in years. In fact, many of them hate programming and try to avoid it as much as possible. They don't take programming classes, or if they have to, they either don't do the assignments or cheat.

*Not my own code!!!

Rampage
Quote:

And, every day I sit there, most of the people hate programming. People drop it all the time, one person even just dropped it (there is one more class before the final). If they can't handle this programming class, what kind of code are they going to write?

I think it's better that they drop a bad programming class. A good teacher could have been able to get them interested, one who knows what programming is really about.

Dustin Dettmer

Good programming teachers don't exist.

Rampage
Quote:

Good programming teachers don't exist.

They do. I've met at least two.

Albin Engström
Dustin Dettmer said:

Good programming teachers don't exist.

I hope they do! i'm having my first programming class next week.. :-/

Edward Sheets

Have any of you taken online classes? I wonder if some of the online degree programs are any good. I haven't actully seen any computer science classes online but I've seen plenty of IT courses. (University of Phoenix, etc.)

Looking through some of the job postings over at gamedev, I've noticed that they don't always demand that you have a CS degree but that you be proficient in certain programming languages or be familiar with certain software. It would be interesting to know what percentage of professional game programmers (and professional programmers in general) have a relevant degree. It certainly couldn't hurt to have that degree to show off on the resume. It's sad to hear that so many people are experiencing programming classes where the teachers are clueless.

Arthur Kalliokoski
Quote:

And, every day I sit there, most of the people hate programming. People drop it all the time, one person even just dropped it (there is one more class before the final). If they can't handle this programming class, what kind of code are they going to write?

I really hated math after several years of elementary school math classes taught by farm housewives. A few years later, after a couple of math classes taught by people with math doctorates, I did math problems for fun.

Thread #591232. Printed from Allegro.cc