Is it just me, or do the AP Comp Sci classes really SUCK?

Started by
27 comments, last by Promit 22 years, 1 month ago
I think what makes me most angry is that they don''t teach the function sprintf. I think that sprintf is possibly the most useful function in the world. I can''t count how many times i''ve wanted a sprintf in VB...

I have a dedicated CS department at my HS, but the teachers know next to nothing about C++. I am good friends with both teachers, but I know more C++ and VB than them, and I know it, and they know it and admit it. They are just the typical math teacher who likes computers sort of people. But then again, most people fully qualified in C++ won''t take a job at an HS at that sort of salary...

quote:
Like the AP and Oluseyi said there is a method to the madness sometimes and classes tend to focus on understanding fundamental concepts. Just watch out for some teachers, I had a college professor in CS101 who was lets call it misinformed. She was teaching linked lists and when she dynamically allocated memory for it she never released it. When i brought this up she said she''d have to "check it out". She came back the next day and announced to the class that u did indeed have to release allocated memory when u were done with it. It just really got me that she actually had to go check (go home at that), combined with the fact she had a degree in CS (and if i remember right a masters). Scary isn''t it???

Are there words in existence to express just how incredibly bad that is?

-----------------------------
Direct3D vs. OpenGL
The sad thing about artificial intelligence is that it lacks artifice and therefore intelligence.

Democracy is where you say what you want and do what you''re told.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Advertisement
quote:Original post by Promit
I think what makes me most angry is that they don''t teach the function sprintf. I think that sprintf is possibly the most useful function in the world.

snprintf is better. std::stringstream is even better.

[ GDNet Start Here | GDNet Search Tool | GDNet FAQ | MS RTFM [MSDN] | SGI STL Docs | Google! ]
Thanks to Kylotan for the idea!
My AP Computer Science "teacher" doesn''t know C++. In fact, he doesn''t understand computer science. Don''t ask me how he majored in it. I''ve got a ways to go before I will be willing to call myself a good programmer. But I''m sure I passed this guy a long time ago.

I finish all the labs on the first day they are asigned, and then do nothing - well, except maybe homework for other classes (and I talk to other people in the class, who don''t code because they use the CTRL+C, CTRL+V technique). Needless to say, I get bored. So one day I brought in a disk with an A* demonstration I had written previously, and ran it. He was curious, so I told him what the program did. I told him I used A*. He hadn''t heard of it. However, he said, "This is interesting, because we''re discussing shortest-path algorithms in my graduate class right now. I''d be interested to see the source code for that." Well, since I''m such a nice guy, I printed the source and gave it to him! At least this way it''ll take some effort to plagiarize off of me!

This guy doesn''t understand a linked list, or any of the standard libraries. In fact, he had never even heard of printf!

You may ask, "How does he teach?" Well, there''s a teacher from a neighboring town who did him the favor of giving him a copy of a CD full of powerpoint presentations covering the AP Compsci syllabus. This is the extent of his teaching.

At the beginning of the year, I was a nice guy. People would ask me for help; I''d give it to them. I''d try to explain things to them (because he sure as hell wasn''t), but they''d get frustrated with me, and say "Ok, you''re just confusing me. Gimme some code!" After a few days of this, I gave up, and when people asked me for help, I''d tell them to go away. Somehow, they managed to pull off the feat of creating working programs. I guess it''s just a coincidence that their whole side of the room had identical code.

The "Marine biology" case study is written in C++. After going through the Powerpoint presentation presenting the "Aquafish" class, one student asked, "So what''s a class?" It''s funny, since he never taught the class.

Nobody in the class understands what a class is. Few people understand the difference between floating point and integer types. Nobody (except me) understands the difference between signed and unsigned types. Etc. Etc. Etc.

My biggest problem with the AP syllabus is that it doesn''t teach a damn thing about the language. It just gives you a couple of code snippets, and expects you to create working code. Most people, not understanding what things do, simply copy the demonstration code, and, through trial-and-error, the population manages to find a working program, which it them distributes among its members. (It''s a victory for genetic algorithms!) Perhaps if the class understood C++, they might be able to write code.

In teaching C++, I strongly believe that the absics of the language should be taught, and individual examples should then be given. As it stands, the reverse is done. examples are given, and then, months later, these "secret codees" are explained. This is the wrong way to go about it. Explain what a function is before having people use it. Most people in the class didn''t even understand that a function can be treated as a value. When I told people that functions in C++ were like functions in math class, some light bulbs went off. It''s a shame the teacher couldn''t even get that much across.

I could go through my entire plan for revamping the AP Compsci course, but I know that posting it here wouldn''t accomplish much; I''d - to abuse the cliché - be preaching to the choir. You know how to program. You know how to teach. It''s a shame that these "professionals" don''t. This raises a major concern of mine: If these people got Computer Science degrees, and still don''t know how to code, then what''s the point in taking CompSci?! My teacher is in a graduate course; I started learning C++ as a hobby last summer, and I can run circles around him. I hope college won''t be as big a waste of money for me.
as for your freaking out about getline, they want to store the line into the apstring using the istream that is sent to it, otherwise anotherassignment operator would have to be written (it really does serve a purpose).

aa for strncat, an operaator is much more suer friendly to a n00b that a function with a parameter, you can see that the += will concatonate without having to know anything about about the class (thus promoting information hiding, an inportant cs concept incase you didnt know).

If you want to complain about something, wait till you get to the Marine biology case study, which this far in (just finished unit 7) is just just bad code (very slow for large test data for many steps).

You are really harsh on your teachers. You need to look at the whole situation before you start bashing. Teaching Computer Science/Programming courses in High School is still a farely new program. The average High School teacher has not been in school for about 10 - 15 yrs. You can''t expect the teachers to be as up-to-date as you are. They do their best to learn the material, and teach the best they can. School systems cannot afford to hire dedicated Comp Sci teachers for these classes, so they ask anyone interested if they would pick it up. Naturally the math teachers are looked to first. Give them the benefit of the doubt.

Technology moves at such a pace that not everyone can keep up. Most college professors have been out of industry for some time, so they don''t know the latest greatest techniques. STL is one of these techniques. And Comp Sci is not all about programming. A complete Computer Science program teaches all around knowledge of systems architecture, CPU architecture, Operating Systems, software design and modeling, and finally programming.

Oluseyi, as a tutor you are an extension of the professors. Your methods can be detremental in two ways: 1. The student is coming to you because he doesn''t fully understand what the professor is asking. He/she may not fully understand what a char * is, even at the 230 level, and it is your job a tutor to help them. By telling him to use std::string instead of char *, that student may not get his question answered. 2. Also by saying to them use this and tell the professor I said so, you are disrespecting that particular professor. Professor''s ask students to do things a certain way for a reason. They are trying to teach concepts, not implementations.

Without understanding of the concepts, optimization is next to impossible. There is a reason why the professor is having you use char * strings instead of std::string. By understanding how to do string manipulation with a char *, you can better appreciate what std::string does for you. An no, not every programmer may understand it as well as you do, and you can''t expect them to either. Promit, the AP classes, apstring, apvector, apmatrix, etc..., are not perfect implementations, they are used to demonstrate concepts. Look at every tutorial you see here, all of the authors use code that is clear to the concept, but not the best implementation.

Be fair to your teachers, they are most likely learning along with you.

-----------------------------
kevin@mayday-anime.com
http://games.mayday-anime.com
-----------------------------kevin@mayday-anime.comhttp://www.mayday-anime.com
quote:Original post by grasshopa55
Oluseyi, as a tutor you are an extension of the professors. Your methods can be detremental in two ways: 1. The student is coming to you because he doesn''t fully understand what the professor is asking. He/she may not fully understand what a char * is, even at the 230 level, and it is your job a tutor to help them. By telling him to use std::string instead of char *, that student may not get his question answered. 2. Also by saying to them use this and tell the professor I said so, you are disrespecting that particular professor. Professor''s ask students to do things a certain way for a reason. They are trying to teach concepts, not implementations.

It wouldn''t be such an issue if the classes themselves didn''t stress the STL. The textbook is titled Data Structures Using STL. So use STL. Please note that I have never come across a student who didn''t understand how to use his char *s in 230 (they all understand how to allocate memory and find the string length, etc). When I do, I''ll encourage him to consider history as a major.

I was tutoring some 500-level students the other day (they had to implement UNIX shells), and with them it was pure C. char *s all the way!

As for disrespecting professors, fuck ''em. I''m subservient and they know it, so if they didn''t want me to be a "bad influence" they should never have allowed me to be a tutor.

Obviously, sympathy is not my strong point. If someone wants an explanation of char *s, I''ll be happy to give it to them. But if they''re simply supposed to implement a student record system which needs to contain names, addresses and other labels, use std::string so I can help you with other more complex issues.
I can''t believe anyone would use char* when they have the STL available to them. Man I love the STL string, best thing I''ve ever found out from a net tutorial ever!
Some times you just don’t have access to STL.
On learning proper techniques of programming I still think it is best to start off with a simple language like LOGO and then take those concepts to other languages.
quote:Original post by Anonymous Poster
Some times you just don’t have access to STL.
On learning proper techniques of programming I still think it is best to start off with a simple language like LOGO and then take those concepts to other languages.


That reminds me. Once upon a time, many years ago, a project for my fifth grade class (or some grade level around there) was to make a LogoWriter program for a state-wide competition (if you won, there was a national competition too). It was called MediaFair I think. But in any case, LogoWriter was pretty amazing (man, all the sudden I''m getting flashbacks to ''flippage'' and turtle commands.. heh). We made a very cool choice-based adventure-type game (I think it was called Search for the Lost Atocha) about finding a treasure on the sea floor. We entered it into the competition, and they disqualified us because they said that LogoWriter wasn''t programming (or something of that nature). The project that ended up winning was a HyperCard program (smirk).

Okay, this has nothing to do with this thread, but since I got hit with these memories when I read the post, I couldn''t resist sharing my story.

-pirate_dau

This topic is closed to new replies.

Advertisement