Student Advice on 21-127

Here is the email that I sent out that generated the responses from the 2004 freshmen.

Mark and I are trying an experiment this year: we are letting students who scored 75% or above on the Discrete Math Exam (mailed to new freshmen in their orientation packets) place out of 21-127 after they pass 15-211. Last year I believe the policy was these students could take 15-211 immediately, but still had to take 21-127 concurrently.

Of course, they have the option of declining this offer and taking 21-127 here. So, a few students are asking me "Is it a good idea to skip 21-127?" I don't know, so I said I'd poll last year's freshmen to find out.

I am basically asking that subset of you who did well on the Discrete Math last year (the folks that were allowed to take 15-211 in the Fall) to tell me whether they got much out of taking 21-127. Of course, I'll appreciate comments from everyone who wants to weigh-in on this topic. I will make these comments public to the freshmen (so mind your ps and qs), BUT I WILL STRIP OFF EVERYONE'S NAME, so the responses are anonymous.

As a second question, I'd like to hear from folks about how important 21-127 is in both 15-211 and 15-251. I just want to understand this relationship better. I will not post these parts of the responses.

So, if you have a few free moments, please drop me some email on any of these topics.

Rich Pattis

Next are the responses I've received so far, which I've split into two groups. The first group mostly addresses whether you should skip 21-127; the second group addresses the relationship among 21-127, 15-211, and 15-251 (which were so interesting that regardless of what it says above in the email, I've included them here). These responses often had direct bearing on the "should I take 21-127" question.

This is not a scientific poll; whoever wanted to respond emailed me; those who didn't, didn't. You'll see many points of view: it is obvious that no one recommendation is right for all students (and not even which one is right for you as an individual).

I guess the closest summary I can give is, if you scored well but did not take a formal discrete math class, you still might want to consider taking 21-127; if you scored well and took a formal discrete math class (with proofs) that covered the topics in 21-127, you could skip it. Of course, you can discuss it with me via email, online (see my previous email for days/times), or when you show up for registration.


Skipping 21-127 comments

I don't think freshman should be allowed to skip 127. 127 is the first really hard class that SCS freshman all have to take together. Even for someone like me who had a ton of discrete math background before coming, the challenges in 127 reinforced how absolutely necessary it is to be able to work in small (or large) groups to solve problems together. If they don't learn it first semester it is only going to hurt more while taking 251.

Definitely useful to take the course. Freshman year has enough difficulties already and the class is useful for 15-251.

I think 21-127 is completely useless, as taught by ..... (redacted: someone other than Adamchik). We pretty much learned everything again (or, in most cases, for the first time) in 251... Can't say I gained anything from 127 (but I did gain a lot from 251). I dunno... I think that's a good idea that you're allowing people to skip, especially when they've done well on the exam. I personally found it useless (even though I did badly on the exam) since I had to learn everything over next semester (in 21-251) anyway.

I think 21-127 is a little basic for students who score well on the Discrete Math test- I often found myself knowing a lot of what we were being taught already. Lectures were often boring, and 3 lectures + 2 recitations, or 5 hrs of class time per week for a 9 unit class, was excessive. That said, it was useful, and it really got me into a computer science frame of mind. If it were possible to have a 21-127 mini, that covers the "more difficult" part of the course and only touches on topics like induction (that they spend weeks on in 21-127), I think that would be a great alternative. Or, I don't know, give a pretest for each couple weeks, and if you do well on the pretest, you can skip the next couple weeks of class and the next test. I don't know if that would work at all, but I think it'd be preferable to having a class that is "mandatory" but a lot of students don't attend because it's easy/boring. Some of my friends did that, and it just got them started with bad class-skipping habits. As for students who are wondering if they should skip 21-127, I think they should, if they felt confident about the discrete math pretest.

Well, I was a point away from being allowed to take take 211 in the fall. I would not skip 21-127 because it helped me in 251. However, the people who place extremely well in the discrete math exam might be well off enough to just skip 21-127.

Well, I did not pass out of Discrete Math because I had no discrete math experience. However, I do not think that 21127 is a really beneficial class. I stopped going to class because I just didnt understand the material. There may be some benefit for taking this class in preparation for 15251 and 15211, but 15251 covers pretty much everything in 21127 so you wont miss anything. I did well enough in 15251 to get an A without really understanding 21127 material so it is very possible to get by without it.

I think that taking 21-127 and 15-211 together is a good idea, because the topics go hand in hand and they reinforce each other. I don't think the discrete math exam is an accurate measurement for placing out of 21-127. Even though its questions represent the topics learned in 21-127, it doesn't give the problem solving practice the course gives. If a student struggled on the discrete math exam to get 75%, then s/he probably should take 21-127, on the other hand, if a student breezed through the packet, then s/he probably already has enough knowledge to go on to 15-251. 21-127 is essential for 15-251, but getting a good grade in 15-211 does not depend very much on it.

I think 21-127 should be mandatory since it makes a great first-year course to "get wet" in the pool of computer science.

I was one of the students who took 21-127 and 15-211 concurrently in F04. I didn't find 21-127 that difficult, though others certainly did. In my experience, 21-127 served as a very helpful transition from my high school mathematics courses (algebra, calculus, etc.) into the type of theory-based mathematics that CMU expects of us. Also, though I did well on the discrete mathematics test (19/20), it was only because the questions on that test can be reasoned out by common sense. Most of the material in 21-127 was new to me, and I am glad now to have learned it. In short: I would recommend the course wholeheartedly if you haven't taken a discrete math course already.

As for your question, unless the student knows exactly what he or she is doing, I wouldn't recommend skipping 127 just because it provides a sound introduction to the level of mathematics that is standard in computer science. I did have the option of ditching 127 last year, but I took it anyways after consulting with Jim. Although the class itself was frustrating at the beginning (because I had no clue what the professor was talking about), in the long run, it laid a solid foundation for the upcoming 251. I would also suggest that the level of difficulty of the discrete math exam be significantly elevated; I definitely should NOT have scored above the limit.

I thought the lecturers and my TA were very hard to follow, so I did not learn anything from them, and since grading was so lenient and eratic I felt no need to study the material on my own. Thus I did not learn any of the subject matter. This was utterly unimportant for 211, which I took concurrently and enjoyed very much, because although 127 is a prerequisite for 211 the two classes seemed to have little in common with each other. When I took 251, another one of my favorite classes, I learned everything that I should have learned in 127 and more. In the end I guess I am glad I took 127 because it took few hours and still padded my GPA. But other than that I would have wanted to skip it.

To me, 21-127 really wasn't an extremely useful course. Nothing in 15-211 seemed to really have any need for 21-127, besides perhaps being able to understand the notation on slides and parsing them effectively. Anything that was unclear in lecture was explained, however, so it wouldn't have been much of an issue if I hadn't had 21-127 first. Likewise, 15-251 didn't gain much benefit from 21-127 either, at least not in my opinion. Our professors for 15-251 even described the class in the first days as being "self-contained" and not really needing prior experience, which confused me a bit. I suppose 21-127 did give a brief introduction to discrete math principles and maybe made me think a little differently, but 15-251 did it so much better and gave me a much better appreciation (and understanding) of the material.

If you are confident in your math ability, I would say that you should be able to skip 21-127 without much difficulty in later classes. However, that being said, I would advise that you re-evaluate your abilities in math. One important thing that I always see people miss is that you have to be able to construct a reasonable and solid proof, or to be able to collect their ideas and formally express them. Just being able to say that you "know the answer, and I could explain it if I had to, but it's too much work and it's a waste of my time" is not enough. There's a difference between "knowing" how to do binary search and actually doing it correctly; no one wants to know how smart you are if you can't produce usable results. If you have experience with proofs, good, formal proofs, then 127 may be a less productive use of time. If you're concurrently taking Analysis, then 127 may definitely be a less productive use of time. I was actually planning on skipping 127, but stopped just short of taking the final and testing out. I definitely didn't learn nothing from the class; there's always something there to improve on. But if you honestly believe that your foundation in formal mathematics is strong enough that you would benefit greater with another class (especially Analysis), then go for it.


The relationship between 21-127, 15-211, and 15-251 comments

Not having been a member of the subset who scored 75% or higher on the placement exam, I will not weigh in on the first topic. As for the second question, I think that 21-127 was very important for 251 (because I had not had discrete math before), but not very important for 211. I scored 12/20 on the placement exam, but still feel that I could have taken 211 first semester and done well.

...And not a lot of 127 or 251 content was needed for 211...

21-127 wasn't much help in 211 until we started doing graph theory. Since we had a little intro in 127 and did some proofs, it made it easier in 211 to see how some of the algorithms worked whenever we went over them. As for 251, I probably would have DIED if it weren't for 127 at least introducing me to this kind of math. Getting experience writing proofs and learning techniques to approach problems was really essential.

And as for the relation between 21-127 and 15-251 and 15-211, it seems like 15-251 might as well be called "21-127 part 2". 15-251 had a little overlap, but if you didn't know the things from 21-127, you'd get lost. 21-127 didn't seem as necessary for 15-211.

I don't really think 21-127 is needed for 211 but it does help in 251. However, i found that the courses 211 and 251 fit together very nicely, in that occasionally we'd do the same things (ex. DFAs).

I do not think that I did well enough on the discrete math exam to skip into 211. I think 127 was an important course for 2 reasons. Firstly, it introduced me to many interesting topics, some of which were not really covered in 251. Secondly, it prepared me for 251 very well. It gave me background in some topics (like induction, sets) and it also prepared me for working a long time on difficult problem sets. And, although the curriculum for 251 is such that there really is no prior knowledge assumed, I still think it was extremely beneficial to enter the class with the appropriate background. As for 211, I didn't really see 127 material apply itself at all, except maybe correctness proofs of some algorithms which were done inductively but could have been understood nonetheless.

I took 15-211 and 21-127 concurrently during my first semester. The concepts that we learned in 21-127 were not neccessary in 15-211 because they were thouroughly explained in 15-211 as well. However, I feel that I would not have been properly prepared for 15-251 in the next semester without 21-127, since I had never taken a similar course in high school or anywhere else. If I had any experience in the subject of discrete math at all (such as Governor's school or a high school class) then I would have felt that 21-127 was a waste of time.

I feel pretty neutral about having taken 21-127. I did learn from the course, but not an immense amount. 15-251 is more or less 127 on steroids in terms of advanced material and harder workload. I don't think I was worse off by having taken 127 though.

21-127 helped significantly with 15-251. As for 15-211, I don't think it helped at all. I do still think it should be mandatory since it makes a great first-year course to "get wet" in the pool of computer science.

While I think the concepts covered in 21-127 laid an important discreet math framework for 15-211 and 15-251, I did not find the course to be very valuable as a whole. The most important aspects are brought up again in 15-251, and the less important ones are not at all critical to understanding the material in 15-211 and 15-251. The pace of 21-127 as a whole is pretty slow. I think the best resolution would be to make 21-127 a mini-course and excise the least important material.

I think 21-127 is a good start for learning the presentation of proofs, at least for preparing 15-251.

I believe that 21-127 is pretty essential not for 15-211 but for 15-251. Although 15-251 "does not assume any mathematical background other than your high school math", it is an extremely challenging course which would be made even harder if we did not do 21-127 the previous semester. The pace of 15-251 is very fast and I would definitely recommend students this year to take 21-127 even if they score 75% or above in the discrete math exam.

As for the necessity of 21-127 in future classes: the way that our 15-211 class was taught, mathematical proofs of algorithm performance weren't expected of us nor were they given in class, so, in that sense, 21-127 wasn't really necessary for much of anything we did in 15-211. As for 15-251... (whimpers at memory)... suffice it to say that you can use any help you can get for 15-251. Some, myself included, referred to 15-251 as "Concepts II" (after 21-127), and, indeed, most of the content of 21-127 is covered in 15-251. However, I believe that, had I not gained an understanding of these principles in 21-127, I would not have fared nearly as well in 15-251. So, again, in short: 21-127 is not necessarily needed for either class, but gives you a solid foundation to take 15-251.

As for 15-251 and 15-211, I saw very little in 211 that had to do with 127. There were few discrete concepts in 211 that directly applied to concepts in 127, but the mindset still has to be there. 251 is another story. If you do poorly in 127, or are borderline, then 251 will probably be a bit difficult for you. I've seen a lot of people flounder in that class, because there aren't any more step-by-step instructions to just follow.