Clements, John  

Computer Science

2.64/4.00

61 evaluations


CPE 102


Sophomore
N/A
Required (Major)
Nov 2005
Havnt finished 102 with John yet but figured i would add him before everyone is done registering for winter2005. Class was made up of 5 programs(150 points, 10 labs(50 points), lecture and lab midterms (100 each) and a final (250). The labs are kind of hard to finish in the time given but arent worth very many points and its easy to get 4/5 even if you dont finish. Programs are all graded reasonably but make sure to read the specification closely. No surprises on the written or the lab midterms so if you generally know whats happening in class youll be fine. We spent most of the quarter talking about the same subject (Lists) but most everything has related to that somehow. He is very good at understanding peoples questions in class and presents the material clearly. Iv only been to office hours once but when i went he was able to fix the problem with my program despite me giving him very little to work off. I dont have any complaints about this class or how he taught it.


Freshman
A
Required (Major)
Mar 2008
Clements has a unique style of teaching, which was effective for me, but probably not for some people. He clearly knows the material. It is true that he asks the students a lot of questions and he doesnt give you a direct answer when you ask him questions, but this is because he wants you to find it out on your own so you actually learn the material. This actually helps when it comes to writing programs or on lab quizzes/tests when you can't ask those questions.


Freshman
A
Required (Major)
Jun 2008
(oh, how I wish I could have *some* sort of formatting for these reviews; well, openratings is OSS) ---- Anyway. Clements is quite a different cat. Whether you love him or hate him depends a bit on your personality. For me, I continually grew in my affection of him (no, not that way!) last quarter as I took 103. Aside from being a total programmer goober, Clements' language of choice is (I believe) Haskell, which is a... well, go look it up. 101 trained us to be the classic C programmer - concerned with every little bit and using terrible hacks that may save a little bit of processing time, but leads to some really nasty bugs. Clements, more than the actual material in the class (which I feel I learned quite well), taught me a different way of thinking, which has lead me to actually *enjoy* programming, when it's in a language like Python. _INSTRUCTION_: Clements tends to use either nonsensical things (gloobers and the such), or simple objects that we understand innately (like apples and pears). This frees us up to concentrate on the actual subject at hand, rather than the details of things we don't really need to know at that point. He also has an incredible memory (he knew my name by the 2nd class, and everyone's by the end of the 2nd week), and uses it to a teaching advantage. Although it may seem to some that he calls upon random people, it is actually carefully thought out; he changes who he calls on so that the question you are receiving is always a bit of a stretch for you - not incredibly easy nor impossibly hard. The fairly infrequent times he misjudges can provide a bit of awkwardness, though; don't take him if you're not comfortable saying "I have no idea.". _ASSIGNMENTS_: Clements did a very good job of giving us assignments that were *interesting*. To me, how hard a problem is has no effect on how well I do on it (unless it's harder than I can handle, of course) - my grade pretty much always reflects how intriguing I find the problem. While Mammen had his students recreating standard library functions, we were designing Connect-4 and Minesweeper. There was one project that I could tell came from Mammen, and I couldn't force myself to do it, though it was the project on iterators, and I am quite comfortable with them. _ASSISTANCE_: Clements' two 102 classes shared a Google Group, through which we all communicated. When we had problems, we would ask them there, if they were not already answered, and most of the time, we would be able to answer each others' questions without needing him at all. He monitored it very closely, though, and made sure to step in when someone said something incorrect or we just needed assistance from _him_. Despite the rest of the CSC department's paranoia of us helping each other (threatening expulsion for mentioning the project to each other!), things went just fine there; no one ever spoonfed or gave complete answers - pseudocode and metasyntatic variables abounded. _LAST_NOTE_: Clements does what he thinks is right whether or not the rest of the department is in agreement with him. This can be both good and bad. For example, Gharibyan had to teach us a standardized way of implementing linked lists because we all learned different ways. Personally, though, I'm ok with having been taught Clements' way, because I much prefer it. I can pick up on new things fairly easily and store a bit of programming knowledge in my head, but not everyone will benefit from this.


Freshman
A
Required (Major)
Jun 2011
Professor Clements was a great instructor and is very intelligent. I enjoy the class participation in the lectures as well. I recommend him.


Freshman
B
Required (Major)
Jun 2011
First of all, professor clements knows his stuff. He knows a lot about programming and he tries to convey it in an easy way to understand. I loved his grading policy because he made programs 50% of your grade which is correct in my opinion since this is a programming class. It is true that there are a lot of test cases you have to make, but i found them useful sometimes because it really helped me come up with a solution to the problem by seeing the desired results first. My only complaint about clements is that he doesnt help you a lot when you ask him for help. I mean he tries to help you in a way that makes you think more, which is good i guess but sometimes his help is just useless and you are still stuck where you were before he "helped" you. Overall though, clements is a decent professor who knows his stuff, but he does have some flaws. Also, he is very hyper in my opinion all the time...


Sophomore
A
Required (Major)
Jul 2012
Great teacher, his teaching style is pretty abstract compared to the nuts and bolts methods of some other professors, but I think that's par for any CPE course beyond 123. He can be a little hard to understand sometimes, and his lab time is not helpful, but if you go to his office hours he will spend the time to explain things to you. Take him if you can!

CSC 102


Sophomore
C
Required (Major)
Dec 2007
This guy doesn't teach! He will ask the class questions about stuff we haven't learned yet instead of telling us how to do it. If you ask him a question he will not give you a clear answer, I don't know how many times i heard "No... well yes kind of.... well in a way but..." and then he will answer your question with another question. This guy is the WORST professor/teacher I have ever had from kindergarten all the way to now my sophomore year of college.


Junior
C
Required (Major)
Jan 2008
Clements is an interesting teacher, but the way he comes across doesn't work well for teaching. First, he (ah...) stammers quite a bit and (ah...) has the annoying habit of (ah...) taking pauses and saying (ah...) in the middle of a statment, which makes him hard to follow in class. I think he recognizes this and tries to go through the class asking people questions on the subject matter to make sure they're still awake and paying attention. Unfortunately, he often asks question on subject matter we're about to go over and don't necessarily have any foreknowledge of. This often led to different students coming up with answers that weren't what he was looking for and kept asking until he finally gave up and told us the specific answer he was looking for. He used two different programming environments, moving from his obviously preferred Dr. Scheme to the more commonly used Eclipse, and the students were forced to modify the habits they had developed in one to a completely different system of file management, some modified syntax for testing, and a different method for running programs halfway through the class in addition to everything else we were learning. Fortunately, he is a big help and goes over alot if you're willing to meet him on his office hours. Overall, I don't recommend taking his CPE-102 course.


Sophomore
B
Required (Major)
Jan 2008
Dr. Clements came to class everyday with absolutely nothing. This is because he doesn't read off power points, or give you handouts to read on your own outside of class like most other instructors will do. Each lecture, he reviews the topics discussed the previous class, and then begins the next topic by asking questions. These questions lead to a solution on how to solve a problem or go about writing code in a program. I'm not sure why I see others complaining about this. My past experience with CPE and CSC courses involves alot of sleeping and taking notes that I cannot follow along with. Clements presents the material in a way that you actually LEARN it, not just memorize different strategies off of notes and quizzes. I realized this when it came time for the first midterm and I sat down to try and study for it. But as I looked through my notes, I realized that I knew and could reproduce all of it simply from memory. For the first time in college, I didn't study for a single quiz, exam or even the final, and I received a B+ in the class. Mind you that this is coming from a student who had to retake CPE 101, and who has struggled since day one with computer science and programming. Dr. Clements class changed all that in a single quarter. His examples are usually rediculous like doubling the size of a duck or how to represent the data structure of list of carrots and farm animals. But these 2nd-grade-level examples are what helped me understand the basics first, before moving on to real life situations. I not only learned object-oriented programming, but I got a much better understanding of programming as a whole. Clements will go around the room asking each person questions. He will not move forward until the class figures it out and answers the question. I found that this style of teaching kept my attention throughout the entire lecture, and made me LEARN the material. Dr. Clements is probably the best instructor I've had so far.


Junior
N/A
Required (Major)
Feb 2008
Arbitrary grading, a complete lack of any class structure, and the little problem that he HATES Java and decided that we should learn LISP style coding instead created problems. He means well but I felt that he put in the bare minimum effort he could while still qualifying as teaching.


Freshman
N/A
Required (Major)
Feb 2008
Professor Clements is NOT A BAD professor, he just not the best. He is highly eccentric, passionate, and sincere about helping his students. The guy wants you to do well but but he won't simply give you the answer, however he will teach you the concept. Of course, if you bug him enough he might give you the answer but don't bet on it. He is a little arrogant about certain like his test cases which he knows never fails, proved him wrong! and he doesn't always answer your questions especially during exams but he will answer your question during office hours if you honestly give an effort before hand and not just expect him to tell you the code. Look he not my favorite professor but I believe if you study the material and do your assignments ALONE you will past him. I am current between an a- b+ pending my final exam score.


Freshman
B
Required (Major)
Apr 2008
This guys is pretty damn crazy. And im pretty sure he has A.D.D. Overall not a great nor horrible professor.


Freshman
A
Required (Major)
Apr 2008
Clements is definately a good professor. He's not my favorite professor, but he's much better than most. He teaches visually, using the board with examples that really help you with retaining the material... For example, he will explain how to write some code using fruits, peons, or shapes. Personally, I thought he deserved much more credit than others are giving him. I had him for an 8 o'clock class and boy, with all his energy and passion for the material it was really easy to stay awake. I really enjoyed his programs for this class aswell. Unlike other professors, Clements had us make programs you could actually use (we wrote connect four and minesweeper programs), and they really weren't that hard... Ocasionally I'd get stuck with programs, but his office hours helped. About his office hours.. in the beginning he might try to intimidate you at his office hours by talking really fast and typing crazy fast. Oh, ps-make sure you pay attention to the lecture about iterators.. it was crazy confusing for me and ended up being the topic for our second lab quiz.. Overall, he's a nice guy, and once you get used to him and his style of teaching, he's great!


Sophomore
A
Required (Major)
Aug 2008
Clements is a Socratic teacher. Many people don't value that because they have never experienced the Socratic method of teaching (rather, their entire lives they have been told what to do). My only problem with Clements is that he showed us program structures like Linked Lists and Stacks, but he never called them that, which was confusing. However, that is 103's job, not 102, so he did nothing wrong. Take Clements if you want something different.


Freshman
N/A
Required (Major)
Nov 2008
Have fun "scheming" in java. Usually you learn java in bluejay, not with a child protected ide called Dr. Scheme. Enjoy hours on end of test cases, in turn the programs are not really logically intensive. One midterm - labs not graded, most people skip his annoying long labs. Final is cummulative, which is basically only about linked lists.


Sophomore
C
Elective
Nov 2008
Lets just say he enjoys a class of all men, or has A D D. 1 midterm, 8 projects (40 percent grade), 1 common final , 2 lab quizes Labs are hard and annoying, not graded. Lectures are kinda awkward, as he will know your name and try to call on you each class period to answer questions. This class is great if you have never programmed in Java, but he does protect you in a DR.Scheme envirmoment that takes ages to compile all of his test cases.


Sophomore
N/A
Required (Major)
Jun 2009
Where to even start... this teacher is a complete spaz and goes to class every day like a heroin addict. Don't expect to be taught anything either, he'll write some scribbles on the board and then ask YOU to answer the questions. He'll also stand there and stare at you for the entire duration of your questioning... it'd be a whole lot easier if he actually TAUGHT people the material. Avoid this hippie. Watching him mumbling and stammering around trying to teach made myself jittery just sitting there.


Freshman
A
Required (Major)
Mar 2010
Clements is a really smart guy. With that said, I would never suggest taking him unless you already know the material. He is a good lecturer, but that is where it stops. He is the most unhelpful professor I have ever had. If you are having a problem or do not understand something he will ask you if you wrote test cases, and then be as vague as possible in explaining the solution. Also, if you take him be ready to spend hours upon hours writing test cases. This man loves test cases like small children love Toys R Us. On multiple occasions I have spent more time writing test cases then I spent writing the actual programs.


Freshman
C
Required (Major)
Apr 2010
Great professor but is very bad at doing his lectures in class. Most of the time I would not understand most of the topics he that he was trying to convey to the class. He also likes asking questions to students during lecture. I think that\'s his way of teaching the class. Just don\'t look like a fool when you answer the questions wrong.


Senior
B
Required (Support)
Jan 2011
I took CPE 102 from John Clements about a year or two ago as a support course for the Math Major. Dr. Clements is the 3rd or 4th CSC instructor I have had to date- I consider him to be the best. Clements' lectures are sometimes a little unclear at the time, he likes to lecture on somewhat abstract ideas rather than just throwing code on the board. He is also not your typical "this is how we construct a binary search tree type of lecturer" but rather the type of lecturer which makes you think about the topic and come to the correct conclusion- somewhat on your own. He does like to call on students in class, his lectures are very interactive. As I mentioned about, his lectures are not always completely clear at the time- but if your experience is anything like mine, you will finish the quarter with a deep conceptual understanding of the material rather than just the formal education of someone who bought a "Sam's teach yourself Java in 24 hours" book from Barnes and Nobles. This instructor is very challanging, his assignments really make you think. But it is all worth it in the end. I highly recommend this instructor.


Sophomore
A
Required (Major)
Mar 2012
Great guy, and definitely knows his stuff -- especially concerning functional programming (he an author of Racket, after all). In my experience, very accommodating to student skill level, so he'll definitely help you out if you're lost, but also encourages more advanced students to challenge themselves. Highly recommended.


Freshman
N/A
Required (Major)
Jun 2012
Honestly, he is NOT a bad teacher. His teaching style is really different then other professors and it did confuse a lot of my peers, but it does make you think and if you are good at computer science you will like his teaching style. His labs are generally not detailed and require a lot of additional thought. He does know his material well, and is usually good at answering questions on the course page. Don't expect help from him during the lab section though, he spends around 90% of the time checking off peoples labs (he checks if it works), and sometimes he doesn't even have time to get to you. I also had him for 123 and it was literally the same thing, except the course (music) was kinda crappy itself so i don't really blame him.

CPE 123


Freshman
C
Required (Major)
Apr 2011
The only assignments I did I copied because he literally cant explain anything and I got a 33% on both the midterm and final due to partial credit...(I probably knew 5% of the material)and would up with a C. Makes about as much sense as this class did. Go Figure.


Freshman
B
Required (Major)
Dec 2011
I truly regret signing up for this class. Although Clements seems like he could be a really good teacher, he needs to rework his curriculum for 123. Too much of the course focuses on very complex audio wave analyses that barely anybody in the class could follow; only people who had experience working with audio technology on a similar level could relate to what was going on. Plus, most of this super advanced stuff he tried teaching us was never implemented into any of the lab without him having to basically give away code to the majority of the clueless class. When Clements taught things that actually had to do with programming, it was easy to follow him and I thought he did a great job at that. The problem is how he teaches the "music" aspect of this class; it could be him, or the material, or both, I still don't know which factor is was and probably never will unless I end up taking him again. Another big problem was the fact that we all had to use Racket, which is a programming language that Clements develops on a team (so basically he wrote the language that the class uses). Nobody who took this class will likely EVER use Racket again. Basically, AVOID taking the Music section of CPE/CSC123. The work that students do in the other sections (Game Design, Robotics, Android, Computational Art) looks a lot more fun and can actually be applied to things in the students' futures (for example, using Flash for game design and the actual development kits for Android). Clements may not be that bad of a teacher, but he sure seemed pretty bad for 123.


Freshman
A
Required (Major)
Jan 2012
Avoid this teacher at all costs! He goes off on random tangents and leaves you to learn Racket on your own. Learning the language wouldn't be difficult if it didnt crash incessantly. Overall this class is boring and a complete waste of time. DONT TAKE THIS!


Freshman
C
Required (Major)
Jan 2012
Well this is an intro to programming music based class but the majority of the class is focused on the music portion for the lecture. When we actually do the programming part on the lab, many times we are confused due to what is being lectured doesn't help us to do the labs. He does give half credit on the labs when you turn it in after the due date. He knows what he is teaching but is not really good at teaching the material and when you ask a question he responds with another question. Since a big part of the class is based on music theory, if you aren't knowledgable in music, you will have a difficult time in the class. If you have no prior programming experience and not fimiliar with music then I recommend you pick another CPE 123 class. Also I'm not sure how singing in class helps you learn programming.


Freshman
B
Required (Major)
Jan 2012
This is a teach yourself class that provides no materials to learn from. If you don't understand something Clements won't explain a concept or process, he will only answer specific questions. He admits he does not like teaching freshman. I learned nothing in his class that will help me with a software eng. degreee, except that passing some classes requires an amazing amount of resourcefulness. I will never take him again.


Freshman
A
Required (Major)
Jan 2015
After having Dr. Clements, I just had to write about him. There are a few things you have to know about him. First and foremost: he is a character. He is bursting with energy and is one of the nicest guys I've ever met. You'll feel his enthusiasm to teach from the first day. Having said that, here are a few other things: 1. He teaches the Music 123 class, so yes, you will have to learn some music theory. I suggest only taking this class if you have a musical background. And yes, you will spend the first few minutes of every class singing, but it's fun and relieves some stress. 2. Clements is a bit scatterbrained. He doesn't stay on course all the time in the lecture, and sometimes he's just all over the place. Having said that, GO TO OFFICE HOURS. Super helpful. 3. Racket is a pretty obscure language. There are going to be people that say its hard or useless, and most of these people are students that already have experience programming. If you don't have any experience, then don't worry. Racket isn't a bad language to learn, it's just very different from most other languages. Overall, it was a fun, low stress class with a very kind and enthusiastic professor.


Freshman
A
Required (Major)
Jun 2016
Professor Clements did a good job at being the first college level computer science teacher I had. In his CPE 123 class we used a language called Racket that he helped develop. Racket is not the best language you will ever encounter because the syntax of it is very confusing and every line of code you write in racket will require many parentheses which can make your code hard to read and confusing. That said it's not that difficult to learn if you read the online textbook he provides. I found that many people in my class skipped doing the readings which is why they didn't understand how to do anything in Racket. Clements will call on people randomly to ask questions about the reading, too, so if you don't want him to think that you are lost or disappoint him it's probably a good idea to do the reading. The reading isn't even that much reading, so it was a mystery why everyone would show up to class having not read. While lecturing Clements can be a little unclear or the lecture material may not stick which could make the quizzes he gave pretty hard. In comparison to the quizzes, the tests were actually pretty easy and I found that I would finish pretty early and do well on them. You don't need to know anything about music going into the class but if you do, then you have a bit of an advantage. The most time consuming part of this class was the final project. Your group is assigned randomly for this project so you should pray you get a good group. Overall, if you read the text you will understand racket and will be able to do well in the class.


Freshman
A
Required (Major)
Dec 2016
Clements is absolutely awful. Impressively bad, frankly. He really struggles with presenting information clearly and he can't stick to a timeline at all. There's nightly reading, often very long, weekly labs, 6 labs, and a large final project. He tends to run behind on grading, but he does enter grades throughout the quarter. Given the variety of CPE 123 classes to choose from, please avoid this one. The language (Racket) is incredibly painful, especially if you have prior coding knowledge. Even if you don't, Racket isn't worth the struggle. The class isn't even music focused. There's some mumbo jumbo about sound and it gets a little physics-y, and it's honestly just gross. Pick a different 123.


Freshman
B
Required (Major)
Jan 2017
Professor Clements definitely knows what he's talking about. He’s also definitely a very quirky guy, one example being how he makes the class sing before the start of every lecture. I appreciate how he gets excited about some topics, showing his genuine interest in the material. Clements cares about his students and wants all of us to succeed. He is easy to talk to and a nice guy overall. The CPE 123 Music class took an interesting approach to teaching programming. As a complete beginner at the beginning of the quarter, the course both confused and overwhelmed me at the start. I didn’t know what was going on, and some classmates who already had years of experience seemed obviously bored. But I tried my best to keep up and feel I now have a good idea of what programming is like. The HtDP text we learn from draws heavily on the design recipe, which I thought was a useful thing to teach to beginners. One of the drawbacks of this course is the language it’s taught in, Racket. As a complete beginner, it proved to be a strange language to start in but eventually I began picking up on it. I’ll probably never use Racket again after this class though. I definitely enjoyed the music component of the class, as he teaches a little on the basics of music theory which I found interesting. Clements seems to get a lot of hate, but I don't think he deserves all of it.

CSC 123


Freshman
A
Required (Major)
Jan 2011
Lectures usually goes over exactly what you would need to know to work on the lab and is generally clear and concise. He would often assign \"singing\" because it was a Music related class but many found it pointless (I found it amusing). Once in lab, this teacher loves test cases which are annoying and frivolous but be prepared to do them if you are going to take this class. If you\'re taking this class for Music CPE 123, try to avoid it. The music content is horrible and programs produced here are junk compared to stuff you see from the Mobile class or other classes. I would take this teacher again for a different course as he was very supportive and understanding but the programming language Scheme and the Music class made my first CPE class feel like it sucked.


Freshman
N/A
Required (Major)
Nov 2011
This class is about 15% programming and 85% music/physics/waves etc. KNOW WHAT YOU'RE GETTING YOURSELF INTO. Its a hard class believe it or not, especially after week 7. Clements is usually good about helping students during labs but does NOT like to answer questions; he's the kind of professor that would rather keep asking you questions until you either give up or get it right. Most of the help is given online through a website, which can be nice and acts as a student forum, but many of the things talked about in this class are hard to get through it. It was an okay class, but I would have much rather chosen a different 123 course than music; it just doesn't work if you're not amazing at the aforementioned things.


Freshman
C
Required (Major)
Feb 2012
Ok teacher, but very, very difficult and annoying class. He recognizes student difficulties very late (in my opinion).


Junior
A
Required (Major)
Dec 2013
I could go on a rant about Racket or complain about the fact that Clements likes to push his views about functional programming and which internet browser is better on his students, but when it comes down to it, Clements is a great teacher who knows what he's doing. He explains things well, he knows his stuff, and even has cut down on the music portion of the course to focus more on programming and the process of software design. This made for both an informative and enjoyable class. If you want to learn programming and you love music, I'd say take his course.


Freshman
A
Required (Major)
Dec 2013
I agree with the rating below me. Racket was rather annoying, but I was happy with the programming concepts I learned. Dr. Clements is very intelligent and he knows what he is talking about. At the beginning of the year I felt he did not really explain much, but he got better. That being said, he doesn't spoonfeed you the answers. However, he will push you in the right direction if you are struggling; just ask for help early. He's not one of those teachers that gets irritated if you ask; he genuinely cares about his students. He has a rather unique and silly way of teaching the concepts. If you really like something different that isn't just book learning, take this class.


Freshman
A
Required (Major)
Jan 2014
Pandasaurus is a creature from the Mesozoic times, He eats dogs and he eats cats but he won't be my valentine, I have asked him every year and he turns me down consistently, Now I'm wearing eau de carrion maybe he will talk to me. Clements was a fantastic teacher overall but can go through the material very fast leaving students confused.


Freshman
C
Required (Major)
Feb 2014
As most Computer Scientists/Engineers, I had no previous programming experience before attending Cal Poly. I was actually expecting the 123 course to use Python as the programming language but instead the 123 classes are divided into sections - Art, Music, Game Development, iOS, and maybe another but I can't remember. Professor Clements uses a language that he helped developed (which is actually pretty cool but not the language itself) - Dr. Racket. His course is for the Music Section and unless you have a musical background you might not enjoy this class. CSC 123 is pretty much only for freshman, so I can't really ask you to take another professor as freshman get blocked into their courses their first quarter here at Cal Poly. What I can tell you, is that you should definitely ask a lot of questions during lecture because he does not address anything by himself. He's not that good at explaining the concepts we should be learning. What I did like from Professor Clements was that when you ask him a question, he doesn't answer you directly but instead goes in "circles" and pretty much just haves you figure it out by yourself. (Which in my opinion, is a good way to learn but it also definitely is annoying when all you want is that little help on one line of code and he doesn't help you!!) Just make sure to stay caught up on the readings and go to office hours (which I didn't do). The final project is basically any music project you might want to do (equalizer, song, etc.) It was fun but I didn't enjoy it as much.


Freshman
B
Required (Major)
May 2014
I had him for the introductory course for CPE and CS majors, but I have coded before, and I think it was my prior experience that helped me a ton. We were the music subsection, and the language we used was very strange and I don't think a good beginning language. That being said, Clements was so funny to watch. He has these spastic motions and a slightly red face so he looks tipsy sometimes. There was no homework, a bit of reading, but he provided an online textbook which was nice. His tests expected you to know some music theory, which was strange, but he taught it well enough. There are also a few labs and a couple group projects which are mostly annoying instead of difficult. Not so good on answering clarifying questions because he'd usually go off on another tangent, but he's a smart guy and he cares about the students. In class often he'd write out big chunks of code, so make sure to pay attention


Freshman
B
Required (Major)
May 2014
Clements is a nice person, but severely lacks teaching ability. He doesn't lecture on Racket at all, instead spending an hour singing and discussing music theory. Racket is a pointless language you will never use, and Clements won't help you understand it.


Freshman
A
Required (Major)
Dec 2014
Clements is a pretty good teacher. He has a bunch of energy and his mannerisms are quite funny. He makes everyone sing some silly song at the beginning of each class which is fun and helps lighten everyone up, although I guess if you don't like singing that's a negative. He's really enthusiastic about Racket, which is the programming language we learned in his class, so that's a really good thing! Some people don't like Racket, and that's understandable because it's another one of those things where your classmates around you are constantly asking, "When are we ever going to use this is real life?" but honestly it's always good to learn a new language, and the textbook (Free and Online) teaches it in a really good way and you can apply what you learn about designing Racket programs to other programming languages. The style of the class was that we'd generally read a section of the textbook before class and Clements would call on random people to explain what they had read. After that he would lecture a little on it and then a bit on music related things. Sometimes the material he presented wouldn't make too much sense, and although he is very helpful when you ask him questions at office hours or during class, be sure to write down what he says otherwise you might not remember it all. Overall, I'd take Clements again, it was a lot of fun to be in his class!


Freshman
B
Required (Major)
Jan 2015
Clements is a really good guy. He's definitely a character, and you will get what I mean after taking him. I think he gets a bad rap for not always conveying material super well, and I suppose this is true but it is probably a byproduct of the fact that the guy is super smart. Sometimes his mind just goes faster than his mouth can make sense. He also loves to get on computing/music related tangents. I never have a problem with a teacher if they are at least one of A) good at teaching B) reasonable C) nice. He is certainly the latter two and he is not a bad teacher. You can really do yourself in if you have no programming experience and don't do the readings. They are a must to help comprehend some stuff from his lectures. Also found his midterm very difficult because it covered some things that seemed super minor and random in class and I didn't take many notes on them. Final was easy though, and it shouldn't be hard to do fine in his class if you get a decent group for the project.


Freshman
A
Required (Major)
May 2015
Dr. Clements is an awesome. His music 123 class was very up-beat. In fact, I've never him seen sit down; he jumps in class and has his own kind of stand-up desk in his office. Maybe some people find it distracting, though I thought it added to an engaging atmosphere while he wrote example Racket programs in lecture on the overhead projector. This kept us thinking and asking questions. Racket might seem disorganized at first glance, though I believe it helped me understand recursion more compared with the way I learned it from high school java programming. TLDR: Dr. Clements recently he gave an Ignite Talk about yeast. He is very approachable and eager to help. Take his class, you'll learn a lot and you'll enjoy it.

CSC 202


Freshman
N/A
Required (Major)
May 2017
CSC 202 is a pathetic excuse for a class. For something as important as data structures (especially when there was a 103 class that was supposed to be great), I cannot believe they let someone like Clements design the curriculum. The guy is so smart but can't teach to save his life. 90% of the lectures was basically him trying to figure out how to explain something, leaving everyone confused unless they had a solid programming background. Lab/Project specs were so unclear and hard to understand and a lot of what should have been on them ended up being posted in Piazza and if you miss it, you're screwed and probably have to re-do a lot of your code. He grades the labs by hand during the lab time, except he shows up to lab 15 minutes late and gets around to about 2 people by the end. I'm fairly new to programming and love it so far. But I can confidently say that I have learned nothing. Basically his class is utter horse shit wtf

CPE 430


Senior
A
Required (Major)
Jun 2008
Generally a pretty good teacher. He has a couple of things going for him: one, he is palpably enthusiastic about the material, which is good. He is a little high-strung, to be sure. His style might not appeal to everyone, but I appreciated it. And he generally did a good job conveying the material--the programming languages series used to be a three-quarter sequence, but at some point The Powers That Be shortened it to a two-quarter sequence, and sometimes I felt that important points had to be glossed over out of a necessity to get to everything. One thing I definitely appreciated was that the material presented in lecture led directly to the labs and homeworks, which was reflected in the midterm and final. There's a good, logical progression there, and there's few surprises if you know the material. All in all, this was a pretty good class. I don't know whether to recommend him over Keen as I've never had Keen, but Clements kept it entertaining. The vast majority of the points (55%) are from the programs, which range in difficulty but generally aren't too bad. There are 40% from the midterm and final (20% apiece) and an additional 5% assigned based on the "instructor's whim". Just go to class and speak up when he calls on you and you ought to be fine (oh, yeah, Clements will call on random people, just like Staley does, so be prepared).

CSC 430


Senior
A
Required (Major)
Dec 2008
Fantastic lecturer. Incredibly helpful during lab. If you want to learn the material in this class you will have no problem getting an A.


Senior
B
Required (Major)
Feb 2009
Dr. Clements is an odd duck. He's visibly twitchy, most of the time, and it'd be really nice if you could blame him for his ridiculous assignments. But you can't, because he genuinely doesn't understand why his students have so much trouble doing them. He'll bend over backwards for them most of the time to provide any and all help that he can, but that's not the problem. The problem is you'll spend more time in this class then any other sans perhaps a fairly difficult Staley class. My classmates and I regularly lost sleep, pounding away ten or twelve hours a day in lab just trying to do get everything done. Should you avoid Dr. Clements? It's hard to say, I mean if you have a lot of time you'll learn plenty, but many people are hit by the wayside while Clements gives them a funny look because he doesn't know why everyone doesn't just do all the work. Of course after seeing him program I can see why it doesn't take HIM very long, but not everyone is hopped up on magical programming coffee.


Junior
A
Required (Major)
Aug 2009
Professor Clements just makes me smile. Also, he's brilliant - I've heard his name come up a few times in industry due to work he's done, and that's always neat to know you're being taught by someone who knows what's up. Pretty much I recommend him for any class, regardless of his actual teaching abilities. I won't say he's straight up the best prof I've ever had, but I absolutely left the classroom in such a good mood every day (even if I spent the whole class time going whaaat?). His assignments are fair, and I learned a TON. One of the best at Cal Poly (which is saying something - there are some gems here) - take a class from him and you won't be sorry!


Senior
B
Required (Major)
Jan 2010
He\'s a great teacher because he makes his lectures very involved and keeps you awake by calling on you(even at 8am in the morning). He teaches a lot different than most other teachers but I really like his style of teaching. The class is based mostly on the projects which are pretty hard. You definitely want to attend every lecture and lab because what he talks about it lecture applies to the projects and exams. Also the labs are pretty much a small part of the project which you can ask others for help on. I would suggest taking this class with him (although I don\'t know how keen teaches the class)


Senior
B
Required (Major)
Feb 2010
While Professor Clements may have a bit of a quarky personality, he is a solid teacher. However, it is very easy to fall behind in his class and as a result, you may spend an excessive amount of additional hours programming just to figure out how to do something. However, office hours are great for talking to him and catching up in the material as well as getting help on programs as he\'ll often point you in the right direction. Pay attention in class and ask questions during office hours and you should be fine.


Senior
A
Required (Major)
Feb 2011
Dr. Clements was one of my all-time favorite professors at Cal Poly. His lectures are fast-paced and filled with enthusiasm. I was excited to come to every 430 lecture just to hear his profound comments on programming and languages.


Senior
A
Required (Major)
Feb 2011
Wow. Dr. Clements is fantastic. It is true what some of the other reviews say--he spends a large portion of the lecture asking questions of students. However, contrary to what others say, this is in fact a well-recognized teaching method. And it works very well for Dr. Clements. Plus, his lectures are TOTALLY entertaining! As for helpfulness, he's incredibly so. He's sometimes quite direct--he'll tell you exactly what he thinks of your idea.


5th Year Senior
A
Required (Major)
Mar 2011
Dr Clements is a fantastic teacher. He's very quirky, but this just makes him more interesting in my opinion. He's incredibly passionate about the material and will go way out of his way to help you understand it - if you don't get his initial explanation, he will try every tactic he can think of until he figures out the best way to help you learn. His speaking style is quite idiosyncratic so some may have a hard time understanding him. If you're unsure, go talk with him in his office sometime and you'll immediately get a good sense of how he talks. I found him very clear and easy to listen to. I heard that his 430 is harder than Dr. Keen's but I found it very manageable. There are 8 programs, each of which only take about 10-15 hours max and you get at least a week for them. That is, they only take that long if you listen to his advice and write good test cases. The labs directly relate to the concepts you need to know to keep up with the class and to do the programs easily. On top of all the other good things, Dr. Clements is also incredibly fair. His grading and class policies are some of the most fair and balanced I have ever seen. He's always open to discussion as well. If you get the chance to take Dr. Clements, do so and give him your full attention. You'll learn way more than you ever expected.


Graduate Student
A
Required (Major)
Mar 2011
Very helpful and knowledgeable.


Senior
B
Required (Major)
Apr 2011
Student: "You've just shaken the foundations of everything we know." Dr. Clements: "Good! That's good!" (he is awesome)


Junior
A
Required (Major)
Dec 2011
I took Dr. Clements for three full courses, and he is easily the best professor I have ever had. His lectures are engaging, entertaining, and his emphasis on functional programming has literally changed my life. My warning to other students: don't take Dr. Clements if you don't want to seriously learn and think on your own. Dr. Clements won't answer your questions for you if he thinks you have the ability to reason it out for yourself. And this is a good thing! I thought it was silly to write Java programs in DrRacket in CSC 102 when I was familiar with Eclipse, but after years of programming you'll come to realize that Racket is a really really really nice language, and that most other languages wish they had the features Racket has (how about, the easiest built-in web server ever?). When I took him for compilers, he actually let students write their compiler in whatever language they wanted, with the main choices being Racket, F#, Scala, and Haskell, and we later gave presentations to the rest of the class on how our code worked. Dr. Clements is truly an inspiring professor. He's open to new ideas, gives insightful feedback, and drinks enough coffee to be alert and awake at all times. Clements is the man!


Senior
C
Required (Major)
Mar 2012
Clements really knows his stuff. The projects for this class are in Racket, and can be really time consuming. That said, if you ask him specific questions in lab when you are stuck on something he can be really helpful in getting you past the problem.


Graduate Student
N/A
Elective
Jul 2012
Dr. Clements is fantastic. I would not pass up an opportunity to take a class from him. His lectures are beyond entertaining -- his energy and enthusiasm for his class and subject material and utterly contagious.


Junior
A
Required (Major)
Mar 2015
Really good teacher, took him in Spring Quarter for Programming languages 1 and enjoyed the class. The class is very straightforward because his lectures are very clear and well-paced, and the book and his lecture pretty much tells you everything you need to do for programs. Class was expected for a 400 CS class and easy if you knew what you were doing and listened to his lectures.


Senior
D
Required (Major)
Jun 2015
Interesting material; however Clements is very inefficient in office hours helping students and also the lab.

PSC 662


Graduate Student
A
Elective
Nov 2016
Prof cried today.... What a weirdo hahahah get a grip of your life.