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 | */ |
| 5 | acquire_screen(); |
| 6 | |
| 7 | /* set transparent text */ |
| 8 | text_mode(-1); |
| 9 | return 1; |
| 10 | } |
| 11 | |
| 12 | |
| 13 | void wait_for_keypress() |
| 14 | { |
| 15 | /* you must always release bitmaps before calling any input functions */ |
| 16 | release_screen(); // seems optional; slows down next operations |
| 17 | readkey(); |
| 18 | acquire_screen(); // but adding this speeds it up again |
| 19 | } |
I think it's time to change my profile location to Zimbabwe.
Set i_love_bill to 1 to get some really awesome performance out of Allegro.
tell the prof who you are, i bet he knows of you.
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 ...
Name: Chris
Talents: I can cut wood.
Experience: 200,000 posts on a.cc.
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.
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.
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!
That's .. horrible, depressing, disgusting !
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
)
In college the only person I have known to use allegro is bamccaig, whom I unleashed upon the a.cc community
Speaking of Quality of Education, shouldn't the title of this thread have a few capitals in it?
Speaking of Quality of Education, shouldn't the title of this thread have a few capitals in it?
Maybe Matt's shift key wasn't working when he type it up?
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.
Those who can, do. Those who can't, teach. ^_^
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. 
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! 
--- Kris Asick (Gemini)
--- http://www.pixelships.com
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.
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
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.
Name: Chris
Talents: I can cut wood.
Experience: 200,000 posts on a.cc.
Oh this totally cracked me down 
Anyway the OP seems like a bad joke.
Pfft; I haven't cut wood in 2 years.
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.
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.
Dustin: that I'd handle to her another C++ project of my own to show her I'm not at basic level.
She just wanted me to conform and be able to tell me that i was somehow suboptimal.
Her fight...
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.
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!)
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.
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 
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
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.
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!
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 | |
| 3 | const int MAX_LENGTH = 100; //maximum # of slots in the list |
| 4 | |
| 5 | typedef int ItemType; //type of value stored in the list |
| 6 | |
| 7 | class ListClass |
| 8 | { |
| 9 | public: |
| 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 | |
| 61 | private: |
| 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 | |
| 3 | ListClass::ListClass() |
| 4 | { |
| 5 | length = 0; |
| 6 | } |
| 7 | |
| 8 | bool ListClass::IsFull() const |
| 9 | { |
| 10 | return length >= MAX_LENGTH; |
| 11 | } |
| 12 | |
| 13 | void ListClass::Insert(ItemType item) |
| 14 | { |
| 15 | values[length] = item; |
| 16 | |
| 17 | length++; |
| 18 | } |
| 19 | |
| 20 | void 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 | |
| 31 | void ListClass::Delete() |
| 32 | { |
| 33 | values[currPos] = values[length - 1]; |
| 34 | length--; |
| 35 | } |
| 36 | |
| 37 | void ListClass::FirstPosition() |
| 38 | { |
| 39 | currPos = 0; |
| 40 | } |
| 41 | |
| 42 | void ListClass::NextPosition() |
| 43 | { |
| 44 | currPos++; |
| 45 | } |
| 46 | |
| 47 | bool ListClass::EndOfList() const |
| 48 | { |
| 49 | return (currPos == length); |
| 50 | } |
| 51 | |
| 52 | ItemType ListClass::Retrieve() const |
| 53 | { |
| 54 | return values[currPos]; |
| 55 | } |
| 56 | |
| 57 | ItemType 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 | |
| 68 | ItemType 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 | |
| 6 | using namespace std; |
| 7 | |
| 8 | void PrintList(ListClass list, char ch); |
| 9 | |
| 10 | int 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 | |
| 99 | void 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.
Sometimes reading things like this makes me glad I never studied programming at university.
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.
Maybe you were just a n00b?
Don't tell me they also ask to buy evert's friend book?
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.
If they can't handle this programming class, what kind of code are they going to write?
| 1 | int 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 | |
| 32 | e1: 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!!!
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.
Good programming teachers don't exist.
Good programming teachers don't exist.
They do. I've met at least two.
Good programming teachers don't exist.
I hope they do! i'm having my first programming class next week..
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.
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.